(function($){var JPECR=function(sender,options){var settings=$.extend({debug:false},$.fn.jpecr.defaults,options);if(settings.debug){alert('DEBUGGING IS ENABLED, TO TURN THIS OFF, DO NOT PASS THE "debug : true" OPTION WHEN USING THIS PLUGIN');}
var vars={modalOverlay:$('<div id="'+settings.modalOverlayId+'" />'),modal:$('<div id="'+settings.modalId+'" />'),modalContent:$('<div id="jpecrModalContent" />'),saveButton:$('<a href="javascript:void(0);" class="button">Save</a>'),cancelButton:$('<a href="javascript:void(0);" class="button">Cancel</a>')}
var element=$(sender);element.data('jpecr:vars',vars);element.removeClass('no-js').addClass('jpecr');vars.modalOverlay.hide();vars.modal.hide();$('body').append(vars.modalOverlay);vars.modal.append(vars.modalContent);vars.modalOverlay.append(vars.modal);var buttonContainer=$('<div class="buttons" />');vars.modal.append(buttonContainer);buttonContainer.append(vars.cancelButton);buttonContainer.append(vars.saveButton);vars.modal.append($('<p style="text-align: right;"><a href="http://www.wolf-software.com/downloads/packages/jpecr-package/" target="_blank">Solution by Wolf Software</a></p>'));vars.saveButton.click(function(){save();});vars.cancelButton.click(function(){cancel();});if(settings.displayButtonSelector!=null){$(settings.displayButtonSelector).attr('href','javascript:void(0);');$(settings.displayButtonSelector).click(function(){checkData(true);});}
var checkData=function(forceModalDisplay){if(settings.debug){alert('REQUESTING DATA...');}
$.ajax({type:settings.requestType,url:settings.requestPath,cache:false,dataType:"json",success:function(data){if(settings.debug){alert("DATA RECIEVED:\n"+data);}
displayModal(data,forceModalDisplay);},error:function(jqXHR,textStatus,errorThrown){if(settings.debug){alert("ERROR THROWN:\n"+errorThrown);}}}).done(settings.requestCompleteCallback());};var displayModal=function(data,forceDisplay){if(forceDisplay||requiresConsent(data)){if(settings.debug){alert('DISPLAYING MODAL... forced: '+forceDisplay);}
vars.modalContent.html(settings.modalText);var table=$('<table cellspacing="0" cellpadding="0" width="560" />');table.html('<thead><tr><th>Title</th><th>Description</th><th>Consent</th><th>Permanent?</th></tr></thead><tbody></tbody>');var tbody=table.children('tbody');$.each(data,function(index,value){var tr=$('<tr />');tr.html('<td>'+value.title+'</td><td>'+value.description+'<br />'+moreInfo(value.more_info,value.link)+'</td><td><input type="radio" id="'+value.name+'_consent_yes" name="'+value.name+'_consent" value="0"'+checkedOutput(value.consent,true)+' /><label for="'+value.name+'_consent_yes">Yes</label><input type="radio" id="'+value.name+'_consent_no" name="'+value.name+'_consent" value="1"'+checkedOutput(value.consent,false)+' /><label for="'+value.name+'_consent_no">No</label></td><td><input type="checkbox" name="'+value.name+'"'+checkedOutput(value.permanent,true)+' /></td>');tbody.append(tr);});vars.modalContent.append(table);if(!forceDisplay){vars.cancelButton.hide();}else{vars.cancelButton.show();}
vars.modalOverlay.fadeIn(settings.modalSpeed / 2,function(){vars.modal.fadeIn(settings.modalSpeed / 2);});}else{if(settings.debug){alert('MODAL DISPLAY NOT REQUIRED');}}};var requiresConsent=function(data){var hasNullOrUndefined=false;$.each(data,function(index,value){var consent=value.consent;var permanent=value.permanent;if(typeof consent==='undefined'||consent==null||typeof permanent==='undefined'||permanent==null){hasNullOrUndefined=true;}});return hasNullOrUndefined;};var checkedOutput=function(value,trueValue){if(value==trueValue){return' checked';}else{return'';}}
var moreInfo=function(value,isLink){if(!isLink){return value;}else{return'<a href="'+value+'" target="'+settings.moreInfoTarget+'">More Info</a>';}};var valid=function(cookiedata){if(settings.debug){alert('VALIDATING');}
var isValid=true;for(cookie in cookiedata){if(cookiedata[cookie]['consent']==null){isValid=false;}}
if(!isValid){var message=$('<span class="jpecrError">Please select either yes or no for all cookies.</span>');$('#'+settings.modalId+' .buttons').prepend(message);}else{$('#'+settings.modalId+' .buttons').find('span').remove();}
return isValid;};var cancel=function(){if(settings.debug){alert('CANCELLING');}
closeModal(false);};var closeModal=function(reload){if(settings.debug){alert('CLOSING MODAL... reload = '+reload);}
vars.modalOverlay.fadeOut(settings.modalSpeed);vars.modal.fadeOut(settings.modalSpeed);if(reload){location.reload(true);}};var getData=function(){var cookiedata=Array();vars.modalContent.find('table tbody tr').each(function(){var consentControls=$(this).find('input[type=radio]');var permanentControl=$(this).find('input[type=checkbox]');var name=permanentControl.attr('name');var consent=checkForConsent(consentControls);var permanent=permanentControl.is(':checked');var cookie={name:name,consent:consent,permanent:permanent};cookiedata.push(cookie);});return cookiedata;}
var save=function(){var cookiedata=getData();if(!valid(cookiedata)){return;}else{if(settings.debug){alert('SENDING DATA...\nSOURCE: '+eval('('+array2json(cookiedata)+')')+'\nENCODED: cookiedata='+array2json(cookiedata));}
$.ajax({type:settings.responseType,url:settings.responsePath,cache:false,data:"cookiedata="+array2json(cookiedata),success:function(response){if(settings.debug){alert("DATA SENT:\n"+response);}
closeModal(true);},error:function(jqXHR,textStatus,errorThrown){if(settings.debug){alert("ERROR THROWN:\n"+errorThrown);}}}).done(settings.requestCompleteCallback());}};var checkForConsent=function(radioButtons){var retVal=null;var yesControl=$(radioButtons[0]);var noControl=$(radioButtons[1]);if(yesControl.is(':checked')){retVal=true;}else if(noControl.is(':checked')){retVal=false;}
return retVal;};var array2json=function(arr){var parts=[];var is_list=(Object.prototype.toString.apply(arr)==='[object Array]');for(var key in arr){var value=arr[key];if(typeof value=="object"){if(is_list)parts.push(array2json(value));else parts[key]=array2json(value);}else{var str="";if(!is_list)str='"'+key+'":';if(typeof value=="number")str+=value;else if(value===false)str+='false';else if(value===true)str+='true';else str+='"'+value+'"';parts.push(str);}}
var json=parts.join(",");if(is_list)return'['+json+']';return'{'+json+'}';};if(settings.checkOnPageLoad){checkData(false);}
if(settings.keepAlive!=false){$.fn.jpecr.startKeepAlive(settings.keepAlive*60*1000);}
return this;};$.fn.jpecr=function(options){var element=$(this);if(element.data('jpecr'))return element.data('jpecr');var jpecr=new JPECR(this,options);element.data('jpecr',jpecr);};$.fn.jpecr.startKeepAlive=function(timeout){if($.fn.jpecr.keepAliveInterval!=null){$.fn.jpecr.stopKeepAlive();}
$.fn.jpecr.keepAliveInterval=setInterval('$.fn.jpecr.keepAlive('+timeout+');',timeout,'javascript');};$.fn.jpecr.stopKeepAlive=function(){clearInterval($.fn.jpecr.keepAliveInterval);$.fn.jpecr.keepAliveInterval=null;};$.fn.jpecr.keepAlive=function(timeout){$.ajax({type:"GET",url:$.fn.jpecr.keepAlivePath,cache:false,success:function(data){return true;},error:function(jqXHR,textStatus,errorThrown){return false;}});};$.fn.jpecr.keepAliveInterval=null;$.fn.jpecr.keepAlivePath='/assets/pecr/keepalive.php';function in_array(needle,haystack){for(var i in haystack){if(haystack[i]==needle)return true;}
return false;}
var EU=new Array("AD","AL","AT","BA","BE","BG","BY","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GI","GR","HR","HU","IS","IT","LI","LT","LU","LV","MC","MD","ME","MK","MT","NL","NO","PL","PT","RO","RS","RU","SE","SI","SK","SM","TR","UA","VA")
var CC=geoip_country_code();var OPL=false;if(in_array(CC,EU))OPL=true;if(OPL){$.fn.jpecr.defaults={checkOnPageLoad:true,requestPath:'/assets/pecr/pecr.php',requestType:'GET',modalOverlayId:'jpecrModalOverlay',modalId:'jpecrModal',modalSpeed:500,modalText:'<h1>Cookies</h1><p>Also known as browser cookies or tracking cookies, cookies are small, often encrypted text files, located in browser directories. They are used by us to help our users navigate this website efficiently and perform certain functions. Due to their core role of enhancing or enabling usability or site processes, disabling cookies may prevent users from using certain parts of this website.</p><p>For more information about cookies, visit <a href="http://www.allaboutcookies.org" target="_blank">http://www.allaboutcookies.org</a>.</p><p>Please make your selections below to tell us which cookies we are allowed to place on your computer.</p>',moreInfoTarget:'_blank',responsePath:'/assets/pecr/pecr.php',responseType:'POST',requestCompleteCallback:function(){return;},responseCompleteCallback:function(){return;},displayButtonSelector:null,keepAlive:false,};}
else{$.fn.jpecr.defaults={checkOnPageLoad:false,requestPath:'/assets/pecr/pecr.php',requestType:'GET',modalOverlayId:'jpecrModalOverlay',modalId:'jpecrModal',modalSpeed:500,modalText:'<h1>Cookies</h1><p>Also known as browser cookies or tracking cookies, cookies are small, often encrypted text files, located in browser directories. They are used by us to help our users navigate this website efficiently and perform certain functions. Due to their core role of enhancing or enabling usability or site processes, disabling cookies may prevent users from using certain parts of this website.</p><p>For more information about cookies, visit <a href="http://www.allaboutcookies.org" target="_blank">http://www.allaboutcookies.org</a>.</p><p>Please make your selections below to tell us which cookies we are allowed to place on your computer.</p>',moreInfoTarget:'_blank',responsePath:'/assets/pecr/pecr.php',responseType:'POST',requestCompleteCallback:function(){return;},responseCompleteCallback:function(){return;},displayButtonSelector:null,keepAlive:false,};}})(jQuery);