//Survey script
//version 2009_10_20_1043
var verveEpopUpType = 2; //1 = popamatic, 2 = interstital
//var verveEgSurveyName = "Which_Survey_2099";  //E.g. name+survey
var verveEgSurveyName;
var verveEgDefaultLocationNumber = 1;  //Default


if (document.URL == 'http://www.whichdigitalstore.co.uk/') verveEgDefaultLocationNumber = 13;
if (document.title == 'Reviews') verveEgDefaultLocationNumber = 21;
if (document.title == 'Mobile phone reviews - Which? Reviews') verveEgDefaultLocationNumber = 22;
if (document.title == 'Money - Which? Reviews') verveEgDefaultLocationNumber = 23;
if (document.title == 'Travel and outdoors - Which? Reviews') verveEgDefaultLocationNumber = 24;
if (document.title == 'Reliability - Desktop PCs - Computing - Which? Reviews') verveEgDefaultLocationNumber = 25;
if (document.title == 'Gardening - Which? Reviews') verveEgDefaultLocationNumber = 26;
if (document.title == 'Health and beauty - Which? Reviews') verveEgDefaultLocationNumber = 27;
if (document.title == 'Best photo printer brands - Computing - Which? Reviews') verveEgDefaultLocationNumber = 28;
if (document.title == 'Heating, water and energy - Which? Reviews') verveEgDefaultLocationNumber = 29;
if (document.title == 'Which? Books and Magazines') verveEgDefaultLocationNumber = 30;
if (document.title == 'About Which?') verveEgDefaultLocationNumber = 31;
if (document.title == 'Advice') verveEgDefaultLocationNumber = 32;
if (document.title == 'How to buy the best laptop - Computing - Which? Advice') verveEgDefaultLocationNumber = 33;
if (document.title == 'Buying a new TV - TV, music and radio - Which? Advice') verveEgDefaultLocationNumber = 34;
if (document.title == 'Which pizza chains make the best pizzas? - Food and health - Which? Advice') verveEgDefaultLocationNumber = 35;
if (document.title == 'Your car - Which? Advice') verveEgDefaultLocationNumber = 36;
if (document.title == 'Choosing and buying the best digital camera - Photography and video - Which? Advice') verveEgDefaultLocationNumber = 37;
if (document.title == 'Cash Isa reviews - Which? Reviews') verveEgDefaultLocationNumber = 38;
if (document.title == 'Anti-wrinkle eye creams - Health and beauty - Which? Reviews') verveEgDefaultLocationNumber = 39;
if (document.title == 'Best Buy competition - Audio - Which? Reviews') verveEgDefaultLocationNumber = 40;
if (document.title == 'Digital radio reviews - Which? Reviews') verveEgDefaultLocationNumber = 41;
if (document.title == 'Family tree software package reviews - Which? Reviews') verveEgDefaultLocationNumber = 42;
if (document.title == 'Best TV brands - TV and DVD - Which? Reviews') verveEgDefaultLocationNumber = 43;
if (document.title == 'Washing-up liquid - Laundry and cleaning - Which? Reviews') verveEgDefaultLocationNumber = 44;
if (document.title == 'Set top box reviews - Which? Reviews') verveEgDefaultLocationNumber = 45;
if (document.title == 'Home cinema system reviews - Which? Reviews') verveEgDefaultLocationNumber = 46;
if (document.title == 'Kettle reviews - Which? Reviews') verveEgDefaultLocationNumber = 47;
if (document.title == 'Anti-wrinkle eye creams - Health and beauty - Which? Reviews') verveEgDefaultLocationNumber = 48;
if (document.title == 'Most reliable car brands 2009 - Cars and motoring - Which? Reviews') verveEgDefaultLocationNumber = 49;
if (document.title == 'Litres to gallons converter - Your car - Which? Advice') verveEgDefaultLocationNumber = 50;
if (document.title == 'Computing - Which? Advice') verveEgDefaultLocationNumber = 51;
if (document.title == 'Say no to 0845 and 0870 - Avoid 0870 and premium-rate numbers - Your money - Which? Advice') verveEgDefaultLocationNumber = 52;




var verveElang=9;                                                  //Default to English

var verveEgPopupHeight = 540;
var verveEgPopupWidth = 650;
var verveEgIntervalURL = 'http://www.verveengine.com/which/2nd.js'; // use job number in name, note different domain to client

var verveEgPopupURL = 'http://static.which.net/static/virtual-survey/index.html';

var verveEgCookiePersistence = 30*24*60*60*1000; //set to 1000 if 30 day cookie not required. 10 milliseconds for testing

// time allowed for loading external interval script
var verveEgIntervalRetry = 500; // 500 milliseconds
var verveEgIntervalTimeout = 5000; // 5 seconds

//do noth change-----------------------------------------------
var verveEgInterval = 0;     //default 0, will be changed externally
var verveEgIntervalID;
var verveEgIntervalAttempts = 0; // DO NOT CHANGE
var verveEsurveyLater, currentTime, verveEsurveyLaterStart;

var verveEgPu; //global variable for popup window itself, init to undefined
var verveEgSWidth = 0; 
var verveEgSHeight = 0; 
var verveEgWWidth = 0; 
var verveEgWHeight = 0;

var verveEgOS = 3;
var verveEgCook = 3;

verveEgetScreenDimensions();
verveEgetOS();
verveEcookiesEnabled();

var verveEgrandomnum = (new Date()).getTime();
verveEgrandomnum = Math.round(Math.abs(Math.sin(verveEgrandomnum) * 1000000)) % 1000;
var verveEgHitSample = false;

if (!window.onload){

  window.onload = function(){
    verveEattachRemoteScript();
  }

}else{

  curr_onload = window.onload;

  window.onload = function() {
    curr_onload();
    verveEattachRemoteScript();
  }
}

function verveEbase64_encode (s) {

  var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split("");

  var r = ""; 
  var p = ""; 
  var c = s.length % 3;
  
  if (c > 0) { 
    for (; c < 3; c++) { 
      p += '='; 
      s += "\0"; 
    } 
  }
 
  for (c = 0; c < s.length; c += 3) {
 
    if (c > 0 && (c / 3 * 4) % 76 == 0) { 
      r += "\r\n"; 
    }
 
    var n = (s.charCodeAt(c) << 16) + (s.charCodeAt(c+1) << 8) + s.charCodeAt(c+2);
 
    n = [(n >>> 18) & 63, (n >>> 12) & 63, (n >>> 6) & 63, n & 63];
 
    r += base64chars[n[0]] + base64chars[n[1]] + base64chars[n[2]] + base64chars[n[3]];
  }
  return r.substring(0, r.length - p.length) + p;
}

function verveEfGetCookieVal (offset) {

  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1){
    endstr = document.cookie.length;
  }
  return unescape(document.cookie.substring(offset, endstr));
}

function verveEfGetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;

  while (i < clen) {

    var j = i + alen;
    if (document.cookie.substring(i, j) == arg){
      return verveEfGetCookieVal (j);
    }
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0){
      break;
    }
  }
  return null;
}

function getMyCookieInfo () {

                var e = "";
                var u = "";
                var a = "";
               var arg = "at=";
                var alen = arg.length;
                var clen = document.cookie.length;          
                var i = 0;
                while (i < clen) {

                var j = i + alen;

                if (document.cookie.substring(i, j) == arg){

                                  var endstr = document.cookie.indexOf (";", j);
                                  if (endstr == -1){

                                                endstr = document.cookie.length;

                                  }

                                 
                                 var cookieDough = unescape(document.cookie.substring(j, endstr));
                                  var argLen = arg.length;
                                  var cookieLen = cookieDough.length;
                                var cookieDataArray = cookieDough.split("&");
                                  for ( var l=0; l<cookieDataArray.length; l++ ) {

                                                  if ( cookieDataArray[l].substring(0,2) == "e=" ) {
                                                                  e = cookieDataArray[l].substring(2,cookieDataArray[l].length);
                                                  } else if ( cookieDataArray[l].substring(0,2) == "a=" ) {
                                                                  a = cookieDataArray[l].substring(2,cookieDataArray[l].length);
                                                  } else if ( cookieDataArray[l].substring(0,2) == "u=" ) {
                                                                u = cookieDataArray[l].substring(2,cookieDataArray[l].length);
                                                  }
                                  }

                                  var result = a + "," + u + "," + e;
                                  return( result );
    }
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0){
             var result = "a=No Cookie" + "," + "u=No Cookie" + "," + "e=No Cookie";
             return( result );
             break;
          }
  }
  return null;
}

//COOKIE_USERNAME_WOL=

function verveEfSetCookie (name, value) {
  var argv = verveEfSetCookie.arguments;
  var argc = verveEfSetCookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
}

function verveEfCheckIntervalFile() {
  try {
    verveEsetSampleIntervalRemote();

    if (verveEgInterval != 0 && verveEgDefaultLocationNumber != 97) {
                  verveEgSurveyName = getMySurveyName();
      verveEgHitSample = ((verveEgrandomnum + 1) * verveEgInterval /1000 <= 1) && verveEgCook != "2" && verveEfGetCookie(verveEgSurveyName) != 1;
    }
    clearInterval(verveEgIntervalID);
    if (verveEgHitSample){
      verveEfixLinks();
    }

  }
  catch (e) {

    verveEgIntervalAttempts++;
    if ((verveEgIntervalAttempts * verveEgIntervalRetry) >  verveEgIntervalTimeout) {

      clearInterval(verveEgIntervalID);

    }
  }
}

function verveEsetSampleInterval(remoteInterval) {
  verveEgInterval = remoteInterval;
}

function verveEattachRemoteScript(){
  var remoteScript=document.createElement('script');
  remoteScript.id = 'verveEtrs';
  remoteScript.setAttribute('type','text/javascript');
  remoteScript.setAttribute('src',verveEgIntervalURL);
  var hd=document.getElementsByTagName('head')[0];
  hd.appendChild(remoteScript);

  //if (verveEgCook != "2") verveEsurveyLater = verveEfGetCookie("Do_Survey_Later");
  //if (verveEsurveyLater){
  //  currentTime = new Date().getTime();
  //  if ( ((currentTime - verveEsurveyLater) / 1000) > 300) verveEsurveyLaterStart = 1; //5 mins have passed
  //}

  verveEgIntervalID = setInterval("verveEfCheckIntervalFile()",verveEgIntervalRetry);

}

function verveEattachDoPop(targetElement){

  // check to see if the element has already got an onclick event handler
  if (!targetElement.onclick)
  {
    targetElement.onclick = function() {
      verveEfDoPop(verveEgDefaultLocationNumber,this);
    }
  } else {
    targetElement.curr_on = targetElement.onclick;
    targetElement.onclick = function() {
      verveEfDoPop(verveEgDefaultLocationNumber,this);
      this.curr_on();
    }
  }

  //Rewrite link text for screenreader
  if (targetElement.innerHTML){ 
    targetElement.innerHTML = targetElement.innerHTML + '<span style="position: absolute; left: -3000px"> - This link will take you to a survey invite before this page</span>';
  }

  var titleText;
  if (verveEpopUpType == 2) titleText = "This link will take you to a page asking you to participate in a survey";

  // check to see if the element has already got a title attribute
  if (targetElement.title != ""){
  
    targetElement.title = targetElement.title + "." + titleText;
  
  } else {
  
    targetElement.title = titleText;
  
  }
}

function verveEfixLinks(){
  // iterate through all anchor links on the page
  var docPs = document.getElementsByTagName("a");

  for(var i=0;i<docPs.length;i++){

    if (verveEpopUpType == 2 && (docPs[i].href && (docPs[i].protocol == "http:" || docPs[i].protocol == "https:" ) && !docPs[i].target && !docPs[i].onclick) && docPs[i].className != "thickbox" && docPs[i].id != "om-login-tn"){

      verveEattachDoPop(docPs[i]);

    }

    //Override for location 9 to remove onclick restriction
    if (verveEpopUpType == 2 && verveEgDefaultLocationNumber == 9 && (docPs[i].href && (docPs[i].protocol == "http:" || docPs[i].protocol == "https:" )) && !docPs[i].target && docPs[i].className != "thickbox" && docPs[i].id != "om-login-tn"){

      verveEattachDoPop(docPs[i]);

    }
    
   }
}

// takes mandatory location number argument; -1 to use default
function verveEfDoPop(uC, pLink) {
                var surveyLoc = getMySurveyLoc();
                var surveyName = getMySurveyName();
                var userData = getMyCookieInfo();

                var userArray = userData.split(",");
                var vA = verveEbase64_encode ( userArray[0].substring(2,userArray[0].length) );
                var vU = userArray[1].substring(2,userArray[1].length);
                var vE = verveEbase64_encode ( userArray[2].substring(2,userArray[2].length) );
                var vS = verveEbase64_encode ( surveyLoc );
                var vSn = verveEbase64_encode ( surveyName );

  if (uC == -1) {
    uC = verveEgDefaultLocationNumber;
  }

  var xLink = verveEbase64_encode (pLink.href);
 
  if (verveEgHitSample && verveEfGetCookie(verveEgSurveyName) != 1) {

    if (verveEpopUpType == 2){

      pLink.href = verveEgPopupURL+"?oh="+xLink+"&c="+verveEgDefaultLocationNumber+"&u="+vU+"&a="+vA+"&e="+vE+"&s="+vS+"&sn="+vSn;

      var expdate = new Date();
      expdate.setTime(expdate.getTime() + (verveEgCookiePersistence));
      verveEfSetCookie(verveEgSurveyName,"1",expdate,"/");
    }
  }
}

function verveEgetScreenDimensions(){

  // size of screen
  if (window.screen) {
    verveEgSWidth = window.screen.width; 
    verveEgSHeight = window.screen.height;
  }
  
  // size of browser window, excluding chrome.
  if (typeof( window.innerWidth ) == 'number' ) { //Non-IE
    verveEgWWidth = window.innerWidth;
    verveEgWHeight = window.innerHeight;
  } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight) ) { //IE 6+ in 'standards compliant mode'
    verveEgWWidth = document.documentElement.clientWidth;
    verveEgWHeight = document.documentElement.clientHeight;
  
  } else if (document.body && (document.body.clientWidth || document.body.clientHeight) ) { //IE 4 compatible
    verveEgWWidth = document.body.clientWidth;
    verveEgWHeight = document.body.clientHeight;
  }

}

function verveEgetOS(){
  // operating system
  if (navigator.userAgent.match(/Windows/)) verveEgOS=1;
  if (navigator.userAgent.match(/Macintosh/)) verveEgOS=2;
}

function verveEcookiesEnabled(){

  verveEfSetCookie("VerveEcookieenabledcheck","1");
  if (verveEfGetCookie("VerveEcookieenabledcheck") == 1){
    verveEgCook = 1;
  } else {
    verveEgCook = 2;
  }
}
