﻿var Capacent={};Capacent.Common={Util:{safecall:function(fn){try{fn()}catch(ex){}},attachEvent:function(element,eventName,fn){var eventNameWithOn='on'+eventName;if(typeof element.addEventListener!='undefined'){element.addEventListener(eventName,fn,false)}else if(typeof element.document!='undefined'&&typeof element.document.addEventListener!='undefined'){element.document.addEventListener(eventName,fn,false)}else if(typeof element.attachEvent!='undefined'){element.attachEvent(eventNameWithOn,fn)}else{if(typeof element[eventNameWithOn]=='function'){var existing=element[eventNameWithOn];element[eventNameWithOn]=function(){existing();fn()}}else{element[eventNameWithOn]=fn}}},onloadExternal:function(mywindow,fn){this.attachEvent(mywindow,'load',fn)},onload:function(fn){this.onloadExternal(window,fn)},isMSIE:function(){return/msie/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent)},isMSIE6:function(){return/msie 6/i.test(navigator.userAgent)}},Css:{registerexternal:function(mywindow,styleText){var styleElement=mywindow.document.createElement("style");styleElement.type="text/css";if(styleElement.styleSheet){styleElement.styleSheet.cssText=styleText}else{styleElement.appendChild(mywindow.document.createTextNode(styleText))}mywindow.document.getElementsByTagName("head")[0].appendChild(styleElement)},register:function(styleText){this.registerexternal(window,styleText)},addClass:function(element,className){return element.className+=" "+className},removeClass:function(element,className){if(typeof element.className!='undefined'&&element.className!=null){element.className=element.className.replace(className,"")}},hasClass:function(element,className){return element.className.match(new RegExp('(\\s|^)'+className+'(\\s|$)'))}},Cookie:{set:function(n,v,days){var e='',d;if(days){d=new Date();d.setTime(d.getTime()+(days*86400000));e="; expires="+d.toGMTString()}document.cookie=n+"="+v+e+"; path=/"},get:function(n){var match=n+"=",c='',ca=document.cookie.split(';'),i;for(i=0;i<ca.length;i++){if(typeof c===undefined||c==null){continue}c=ca[i].replace(/[ ]*(.+)[ ]*/g,"$1");if(c.indexOf(match)===0){return c.substring(match.length,c.length)}}return null},del:function(n){this.set(n,"",-1)}},Ajax:{get:function(url,callback){if(typeof XMLHttpRequest==="undefined"){XMLHttpRequest=function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){};try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){};try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){};try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){};throw new Error("This browser does not support XMLHttpRequest.");}}var request=new XMLHttpRequest();request.open('GET',url,true);request.onreadystatechange=function(){if(request.readyState==4){callback(request.responseText)}};request.send("")}},Parser:{keyvalue:function(text){var result={};var lines=text.match(/(?:^|\n)[ ]*(\w+[ ]*:[ ]*.+)[^\n]*/g);for(var i=0;i<lines.length;i++){var variable=lines[i].match(/^\s*(\w+)[ ]*:[ ]*(.+?)\s*$/g);result[RegExp.$1]=RegExp.$2}return result},replace:function(str,keyvalues){for(var key in keyvalues){str=str.replace(new RegExp("\{"+key+"\}","g"),keyvalues[key])}return str}}};Capacent.PopUp={Settings:{CustomStyle:{PopupBackgroundColor:'#ccc',PopupBorderColor:'#fff',PopupBorderSize:'3px',PopupWidth:'550px',PopupWidthNegativeHalf:'-250px',PopupHeight:'320px',TitleBackgroundColor:'#1E35FF',TitleText:'Capacent pop-up',OverlayOpacity:'0.8',OverlayOpacityIE:'80',ContentHeaderColor:'#000',ContentTextColor:'#000',ContentLinkColor:'#478BD8',ButtonParticipateUrl:"http://google.com",ButtonParticipateText:"Participate",ButtonParticipateLaterText:"Participate later",ButtonRejectText:"Reject"},ConfigurationUrl:"/CapacentPopUp/Configuration.txt",ContentUrl:"/CapacentPopUp/Content.txt",CssTemplateUrl:"/CapacentPopUp/main.css",ContentPageUrl:"/CapacentPopUp/content.htm",CookieName:"__capacentPopUp",QuarantinePeriodAfterRejectionDays:null,QuarantinePeriodAfterParticipationDays:null,PercentageToBeInvited:null,RejectIfCloseButtonClicked:false,CssTemplate:null,PopupDivsTemplate:"<div class='capacent-overlay'></div><div class='capacent-popup'><iframe scrolling='no' frameborder='0' src='{frameSrc}'></iframe></div>",ContentAddedLinks:'<div style="text-align:center"><a class="participate" href="{ButtonParticipateUrl}">{ButtonParticipateText}</a><a class="participate-later" href="#participate-later">{ButtonParticipateLaterText}</a><a class="reject" href="#reject">{ButtonRejectText}</a><br /></div>',Content:null,UseCache:true,ShowAlways:false,readAsync:function(onCompleted){var self=this;if(self.UseCache==false){var r=Math.random();self.ConfigurationUrl+="?r="+r;self.CssTemplateUrl+="?r="+r;self.ContentUrl+="?r="+r}var configurationLoaded=false;var cssTemplateLoaded=false;var contentLoaded=false;var ensureLoaded=function(){if(configurationLoaded&&cssTemplateLoaded&&contentLoaded){onCompleted()}};Capacent.Common.Ajax.get(this.ConfigurationUrl,function(response){var keyvalue=Capacent.Common.Parser.keyvalue(response);self.QuarantinePeriodAfterParticipationDays=new Number(keyvalue["QuarantinePeriodAfterParticipationDays"]);self.QuarantinePeriodAfterRejectionDays=new Number(keyvalue["QuarantinePeriodAfterRejectionDays"]);self.PercentageToBeInvited=new Number(keyvalue["PercentageToBeInvited"]);if(typeof keyvalue["RejectIfCloseButtonClicked"]!='undefined'){var rejectIfCloseButtonClicked=keyvalue["RejectIfCloseButtonClicked"].toLowerCase();self.RejectIfCloseButtonClicked=rejectIfCloseButtonClicked=="true"||rejectIfCloseButtonClicked=="yes"}for(var customStyleName in self.CustomStyle){if(typeof keyvalue[customStyleName]!='undefined'){self.CustomStyle[customStyleName]=keyvalue[customStyleName]}}self.__calculateInCustomStyle();configurationLoaded=true;ensureLoaded()});Capacent.Common.Ajax.get(this.CssTemplateUrl,function(response){self.CssTemplate=response;cssTemplateLoaded=true;ensureLoaded()});Capacent.Common.Ajax.get(this.ContentUrl,function(response){self.Content=response;contentLoaded=true;ensureLoaded()})},__calculateInCustomStyle:function(){this.CustomStyle.OverlayOpacityIE=new String(new Number(this.CustomStyle.OverlayOpacity)*100);if(this.CustomStyle.PopupWidth.match(/(\d+)(.*)/)){var popupWidth=new Number(RegExp.$1);var popupUnit=RegExp.$2==""?"px":RegExp.$2;this.CustomStyle.PopupWidthNegativeHalf="-"+Math.round(popupWidth/2)+popupUnit}},getCss:function(){var css=Capacent.Common.Parser.replace(this.CssTemplate,this.CustomStyle);return css},getContent:function(){var addedLinks=Capacent.Common.Parser.replace(this.ContentAddedLinks,this.CustomStyle);return this.Content+addedLinks},getPopupDivsTemplate:function(){var parameters={frameSrc:this.ContentPageUrl};return Capacent.Common.Parser.replace(this.PopupDivsTemplate,parameters)}},Respondent:{canBeInvited:function(){if(Math.random()*100<Capacent.PopUp.Settings.PercentageToBeInvited){if(this.isInQuarantine()){return false}return true}},markAsParticipated:function(){Capacent.Common.Cookie.set(Capacent.PopUp.Settings.CookieName,"participated",Capacent.PopUp.Settings.QuarantinePeriodAfterParticipationDays)},markAsRejected:function(){Capacent.Common.Cookie.set(Capacent.PopUp.Settings.CookieName,"rejected",Capacent.PopUp.Settings.QuarantinePeriodAfterRejectionDays)},isInQuarantine:function(){var coookieValue=Capacent.Common.Cookie.get(Capacent.PopUp.Settings.CookieName);if(coookieValue!='undefined'&&coookieValue!=null){return coookieValue=="participated"||coookieValue=="rejected"}return false}},ContentFrame:{Window:null,__onRejectClick:function(){Capacent.PopUp.Respondent.markAsRejected();Capacent.PopUp.hide();return false},__onCloseClick:function(){if(Capacent.PopUp.Settings.RejectIfCloseButtonClicked){Capacent.PopUp.Respondent.markAsRejected()}Capacent.PopUp.hide();return false},__onParticipateLaterClick:function(){Capacent.PopUp.hide();return false},__onParticipateClick:function(){Capacent.PopUp.Respondent.markAsParticipated();setTimeout(function(){Capacent.PopUp.hide()},200)},init:function(params){var self=this;self.Window=params.Window;Capacent.Common.Util.onloadExternal(params.Window,function(){var body=self.Window.document.getElementById(params.BodyId);var root=self.Window.document.getElementById(params.RootId);var title=self.Window.document.getElementById(params.TitleId);Capacent.Common.Css.registerexternal(self.Window,Capacent.PopUp.Settings.getCss());root.innerHTML=Capacent.PopUp.Settings.getContent();title.innerHTML=Capacent.PopUp.Settings.CustomStyle.TitleText;var elements=self.Window.document.getElementsByTagName("a");var c=elements.length;for(var i=0;i<c;i++){var e=elements[i];if(Capacent.Common.Css.hasClass(e,"reject")){Capacent.Common.Util.attachEvent(e,"click",self.__onRejectClick)}else if(Capacent.Common.Css.hasClass(e,"close")){Capacent.Common.Util.attachEvent(e,"click",self.__onCloseClick)}else if(Capacent.Common.Css.hasClass(e,"participate-later")){Capacent.Common.Util.attachEvent(e,"click",self.__onParticipateLaterClick)}else{if(Capacent.Common.Css.hasClass(e,"participate")){Capacent.Common.Util.attachEvent(e,"click",self.__onParticipateClick)}if(e.tagName.toLowerCase()=='a'){e.target="_blank"}}}})}},init:function(){var self=this;this.Settings.readAsync(function(){if(self.Settings.ShowAlways||self.Respondent.canBeInvited()){self.show()}})},__divPopup:null,show:function(){var self=this;Capacent.Common.Css.register(self.Settings.getCss());self.__divPopup=document.createElement('div');self.__divPopup.innerHTML=self.Settings.getPopupDivsTemplate();document.body.appendChild(self.__divPopup);if(Capacent.Common.Util.isMSIE()){self.__divPopup.style.display="none";setTimeout(function(){self.__divPopup.style.display=""},10)}Capacent.Common.Css.addClass(document.body,'capacent-popup-mode')},hide:function(){Capacent.Common.Css.removeClass(document.body,'capacent-popup-mode');if(this.__divPopup!=null){this.__divPopup.innerHTML=""}}};Capacent.Common.Util.onload(function(){var location=window.location.href;var showAlwaysMode=(/capacentpopup=show/i).test(location);var debugMode=(/capacentpopup=(debug|true)/i).test(location);Capacent.PopUp.Settings.ShowAlways=(showAlwaysMode||debugMode);Capacent.PopUp.Settings.UseCache=(debugMode==false);Capacent.PopUp.init()});
