Add classes for visitor traversal
[cql-java-moved-to-github.git] / spec / cql_files / stdLauncher.js
1 // Customer: Library of Congress
2 // Version : DHTML Trigger 2.1
3 var popUpURL = "//www.foreseeresults.com/survey/display"; // base URL to the survey
4 var ckAlreadyShown = triggerParms["ascookie"]; // name of the persistent/session cookie
5 var ckLoyaltyCount = triggerParms["lfcookie"]; // name of the loyalty count cookie
6 var fullURL=null;
7 var oldURL=null;
8 var fsr_browser =null;
9 var winOptions = "width= 1,height= 1,top= 4000,left= 4000,resizable=yes,scrollbars=yes";
10 var persistentExpires = new Date(); // persistent cookie expiration
11 persistentExpires.setTime(persistentExpires.getTime() + (triggerParms["rw"]*60*1000));
12 function ForeCStdGetCookie (name) {
13         var arg = name + "=";
14         var alen = arg.length;
15         var clen = document.cookie.length;
16         var i = 0;
17         while (i < clen) {
18                 var j = i + alen;
19                 if (document.cookie.substring(i, j) == arg) {
20                         return ForeCStdGetCookieVal (j);
21                 }
22                 i = document.cookie.indexOf(" ", i) + 1;
23                 if (i == 0) {
24                         break;
25                 }
26         }
27         return null;
28 }
29 function fsr_IEshowWindow() {
30         if (eval("document.all.fsr_window").filters.revealTrans.status == 0) {
31                 eval("document.all.fsr_window").filters.revealTrans.transition = 23 ;
32                 eval("document.all.fsr_window").filters.revealTrans.Apply();
33                 eval("document.all.fsr_window").style.visibility = 'visible';
34                 eval("document.all.fsr_window").filters.revealTrans.Play();
35         } else {
36                 eval("document.all.fsr_window").style.visibility = 'visible';
37         }
38 }
39 function fsr_hideWindow() {
40                 if (fsr_browser=="fsr_ie"){
41                         if (eval("document.all.fsr_window").filters.revealTrans.status == 0)  {
42                                 eval("document.all.fsr_window").filters.revealTrans.transition = 23;
43                                 eval("document.all.fsr_window").filters.revealTrans.Apply();
44                                 eval("document.all.fsr_window").style.visibility = 'hidden';
45                                 eval("document.all.fsr_window").filters.revealTrans.Play();
46                         } else {
47                                 eval("document.all.fsr_window").style.visibility = 'hidden';
48                         }
49                 } else {
50                         document.getElementById("fsr_window").style.visibility = 'hidden';
51                 }
52 }
53 function fsr_showWindow() {
54         document.getElementById("fsr_window").style.visibility = 'visible';
55 }
56 function ForeCStdSetCookie (name, value) {
57         var argv = ForeCStdSetCookie.arguments;
58         var argc = ForeCStdSetCookie.arguments.length;
59         var expires = (argc > 2) ? argv[2] : null;
60         var path = (argc > 3) ? argv[3] : null;
61         var domain = (argc > 4) ? argv[4] : null;
62         var secure = (argc > 5) ? argv[5] : false;
63         document.cookie = name + "=" + escape (value) +
64         ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
65         ((path == null) ? "" : ("; path=" + path)) +
66         ((domain == null) ? "" : ("; domain=" + domain)) +
67         ((secure == true) ? "; secure" : "");
68 }
69 function ForeCStdGetCookieVal(offset) {
70         var endstr = document.cookie.indexOf (";", offset);
71         if (endstr == -1) {
72                 endstr = document.cookie.length;
73         }
74         return unescape(document.cookie.substring(offset, endstr));
75 }
76 function specialEscape(str) {
77         var translated = "";
78         var i;
79         var found = 0;
80         for(i = 0; (found = str.indexOf('+', found)) != -1; ) {
81                 translated += str.substring(i, found) + "%2B";
82                 i = found + 1;
83                 found++;
84         }
85         translated += str.substring(i, str.length);
86         return translated;
87 }
88 function Pop(){
89         var myPopUp = window.open(fullURL, 'survey',winOptions);
90         if (  myPopUp && myPopUp.open && !myPopUp.closed) {
91                 if (triggerParms["pu"] == 1){
92                         self.focus();
93                 } else {
94                         myPopUp.focus();
95                 }
96         }
97 }
98 function checkMAC(){
99         if(navigator.platform.indexOf("Win32") >= 0){
100                 return false;
101         } else {
102                 return true;
103         }
104 }
105 function currentLocationExcluded() {
106         var parentURLPath = window.location.pathname;//location path
107         for(key in excludeList) {
108                 if(parentURLPath.indexOf(excludeList[key]) != -1) {
109                         return true;
110                 }
111         }
112         return false;
113 }
114 function Poll() {
115         //sme
116         if(triggerParms["dt"] == 1) {
117                 return;
118         }
119         if(currentLocationExcluded()) {
120                 return;
121         }
122         var stickyCounter = ForeCStdGetCookie(ckLoyaltyCount); // check counter cookie
123         var alreadyShown = ForeCStdGetCookie(ckAlreadyShown); // check if we already have shown survey
124         var pageCount;
125         var randNum = Math.random();
126         randNum *= 100;
127         if (stickyCounter == null) {
128                 pageCount = 1;
129                 ForeCStdSetCookie(ckLoyaltyCount, pageCount, null,'/',triggerParms["domain"]);
130                 stickyCounter = ForeCStdGetCookie(ckLoyaltyCount);
131         }
132         if (stickyCounter != null) {
133                 pageCount = stickyCounter;
134                 if(pageCount >= triggerParms["lf"]) {
135                         if(alreadyShown == null) {
136                                 if (triggerParms["rso"] == 1 && triggerParms["aro"] == 1) {
137                                         triggerParms["sp"] = 100.0; // Update Ssample percentage
138                                 }
139                                 if(randNum <= triggerParms["sp"]) {
140                                         var fsr_mac= checkMAC();
141                                         fsr_browser="fsr_nn6";
142                                         if(document.all){
143                                                 fsr_browser = "fsr_ie";
144                                         }
145                                         if(document.layers) {
146                                                 fsr_browser = "fsr_nn";
147                                         }
148                                         fullURL = popUpURL + "?" + "width=" + triggerParms["width"] +
149                                         "&height=" + triggerParms["height"] +
150                                         "&cid=" + specialEscape(escape(triggerParms["cid"])) + "&mid=" + specialEscape(escape(triggerParms["mid"]));
151                                         if ((triggerParms["omb"] ) != null) {
152                                                 fullURL += "&omb=" + escape(triggerParms["omb"]);
153                                         }
154                                         if ((triggerParms["cmetrics"] ) != null) {
155                                                 fullURL += "&cmetrics=" + escape(triggerParms["cmetrics"]);
156                                         }
157                                         if (triggerParms["olpu"] == 1) {
158                                                 fullURL += "&olpu=1";
159                                         }
160                                         if (triggerParms["rso"] == 1) {
161                                                 fullURL += "&rso=1&rct=" + triggerParms["rct"] + "&rds=" + triggerParms["rds"] + "&mrd=" + triggerParms["mrd"] + "&rws=" + triggerParms["rw"];
162                                         }
163                                         if (triggerParms["capturePageView"] == 1) {
164                                                 triggerParms["cpp_3"] = "PageView:"+ pageCount; // customer parameter 3 - Page View
165                                         }
166                                         if ((triggerParms["midexp"] ) != null) {
167                                                 fullURL += "&ndc=1&fsexp=5256000&midexp=" + triggerParms["midexp"];
168                                         }
169                                         var customerParams = "";
170                                         for(paramKey in triggerParms) {
171                                                 if(paramKey.substring(0,3) == "cpp"){
172                                                         fullURL += "&" + paramKey + "=" + escape(triggerParms[paramKey]);
173                                                 }
174                                         }
175                                         oldURL=fullURL;
176                                         fullURL+= "&cpp_4=" + escape("popupStats:window=normal browser="+fsr_browser+" mac="+ fsr_mac);
177                                         if (triggerParms["rso"] != 1) {
178                                                 if(triggerParms["npc"] == 1) {
179                                                         ForeCStdSetCookie(ckAlreadyShown, 'true',null,'/',triggerParms["domain"]);
180                                                 } else {
181                                                         ForeCStdSetCookie(ckAlreadyShown, 'true', persistentExpires,'/',triggerParms["domain"]);
182                                                 }
183                                         }
184                                         var myPopUp = window.open(fullURL, 'survey',winOptions);
185                                         if (  myPopUp && myPopUp.open && !myPopUp.closed) {
186                                                 if (triggerParms["pu"] == 1){
187                                                         self.focus();
188                                                 } else {
189                                                         myPopUp.focus(); //focusing on survey window
190                                                 }
191                                         } else {
192                                                 if (fsr_mac==false && (fsr_browser != "fsr_nn") && (triggerParms["dhtml"] == 1)) {
193                                                         fullURL=oldURL;
194                                                         fullURL+= "&cpp_4=" + escape("popupStats:window=dhtml browser="+fsr_browser+" mac="+ fsr_mac);
195                                                         fsr_sw = screen.width;
196                                                         fsr_sh = screen.height;
197                                                         fsr_left = (fsr_sw -triggerParms["dhtmlWidth"])/2;
198                                                         fsr_top =Math.min((fsr_sh - triggerParms["dhtmlHeight"])/2,150);
199                                                         document.write( "<div id=\"fsr_window\" style=\"position:absolute; width:1px; height:1px; z-index:1; left:"+fsr_left+"px; top:"+fsr_top+"px; visibility: hidden; filter:revealTrans(Duration=0.5, Transition=23);\" >"
200                                                         +"<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#CCCCCC\"><tr><td>"
201                                                         +"<iframe id=\"cframe\" src="+"\""+triggerParms["dhtmlURL"]+"?fullURL="+fullURL+"\" width="+triggerParms["dhtmlWidth"]+" height="+triggerParms["dhtmlHeight"]+"></iframe>"
202                                                         +"</td></tr></table>"
203                                                         +"</td></tr></table></div>");
204                                                         if (fsr_browser == "fsr_ie") {
205                                                                 fsr_IEshowWindow();
206                                                         } else {
207                                                                 fsr_showWindow();
208                                                         }
209                                                 }
210                                         }
211                                 }
212                         }
213                 }
214                 pageCount++;
215                 ForeCStdSetCookie(ckLoyaltyCount, pageCount, null,'/',triggerParms["domain"]);
216         }
217 }
218 function callpoll(){
219          if ( ValidIP()== 0 )
220          {
221                 Poll();
222          }
223
224 }
225
226 function ValidIP() {
227                 var arrRegExp = new Array(2);
228
229                 arrRegExp[0] = /^10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/
230                 arrRegExp[1] = /^140\.147\.131\.[0-9]{1,3}$/
231                 //arrRegExp[2] = /^172\.16\.[0-9]{1,3}\.[0-9]{1,3}$/
232                 //arrRegExp[3] = /^172\.16\.[0-9]{1,3}\.[0-9]{1,3}$/
233                 //arrRegExp[4] = /^172\.17\.[0-9]{1,3}\.[0-9]{1,3}$/
234                 //arrRegExp[5] = /^172\.18\.[0-9]{1,3}\.[0-9]{1,3}$/
235                 //arrRegExp[6] = /^172\.19\.[0-9]{1,3}\.[0-9]{1,3}$/
236                 //arrRegExp[7] = /^172\.20\.[0-9]{1,3}\.[0-9]{1,3}$/
237                 //arrRegExp[8] = /^172\.21\.[0-9]{1,3}\.[0-9]{1,3}$/
238                 //arrRegExp[9] = /^172\.22\.[0-9]{1,3}\.[0-9]{1,3}$/
239                 //arrRegExp[10] = /^172\.23\.[0-9]{1,3}\.[0-9]{1,3}$/
240                 //arrRegExp[11] = /^172\.24\.[0-9]{1,3}\.[0-9]{1,3}$/
241                 //arrRegExp[12] = /^172\.25\.[0-9]{1,3}\.[0-9]{1,3}$/
242                 //arrRegExp[13] = /^172\.26\.[0-9]{1,3}\.[0-9]{1,3}$/
243                 //arrRegExp[14] = /^172\.27\.[0-9]{1,3}\.[0-9]{1,3}$/
244                 //arrRegExp[15] = /^172\.28\.[0-9]{1,3}\.[0-9]{1,3}$/
245                 //arrRegExp[16] = /^172\.29\.[0-9]{1,3}\.[0-9]{1,3}$/
246                 //arrRegExp[17] = /^172\.30\.[0-9]{1,3}\.[0-9]{1,3}$/
247                 //arrRegExp[18] = /^172\.31\.[0-9]{1,3}\.[0-9]{1,3}$/
248
249                 var intMatch = 0;
250                 for(var i = 0; i < arrRegExp.length; i++){
251                         if(arrRegExp[i].test(strIP)){
252                                 intMatch = 1;
253                                 break;
254                         }
255                 }
256
257                 return intMatch;
258 }