// Date last modified =  20101026
// Modified by =  JW

var lpMTagConfig = {
	'lpServer' : 'sales.liveperson.net',
	'lpNumber' : '57472748',
	'lpProtocol' : (document.location.toString().indexOf('https:')==0) ? 'https' : 'http',
	'lpTagLoaded' : false,
	'pageStartTime' : (new Date()).getTime(), //pageStartTime is set with a timestamp as soon as the page starts loading
	'pageWindowName' : "Adobe Window", //used to fix bug with very large pageWindowName causing POST requests
	'defaultUnit' : 'service',
	'defaultLanguage' : 'english'
};
if (typeof(lpMTagConfig.lpTagSrv) == 'undefined') {
	lpMTagConfig.lpTagSrv = lpMTagConfig.lpServer;
}
lpMTagConfig.deploymentConfigPath = lpMTagConfig.lpTagSrv+'/visitor/addons/deploy.asp';

lpMTagConfig.lpLoadScripts = function(){
	lpAddMonitorTag(lpMTagConfig.lpProtocol + '://' + lpMTagConfig.deploymentConfigPath + '?site=' + lpMTagConfig.lpNumber + '&d_id=' + lpMTagConfig.deploymentID);
}

function lpAddMonitorTag(src) { 
	if (!lpMTagConfig.lpTagLoaded) {if (typeof(src) == 'undefined' || typeof(src) == 'object') {if (lpMTagConfig.lpMTagSrc) {src = lpMTagConfig.lpMTagSrc;}else {if (lpMTagConfig.lpTagSrv) {src = lpMTagConfig.lpProtocol + '://' +lpMTagConfig.lpTagSrv + '/hcp/html/mTag.js';}else {src = '/hcp/html/mTag.js';};};};if (src.indexOf('http') != 0) {src = lpMTagConfig.lpProtocol + '://' + lpMTagConfig.lpServer + src + '?site=' + lpMTagConfig.lpNumber;} else {if (src.indexOf('site=') < 0) {if (src.indexOf('?') < 0) {src = src + '?';} else{src = src + '&';} src = src + 'site=' + lpMTagConfig.lpNumber;  };};var s = document.createElement('script');s.setAttribute('type', 'text/javascript');s.setAttribute('charset', 'iso-8859-1');s.setAttribute('src', src);document.getElementsByTagName('head').item(0).appendChild(s);}
}
		
//The code below send a PAGEVAR to LP with the time [in seconds] it took the page to load. Code is executed in the onload event
lpMTagConfig.calculateSentPageTime = function () {
	var t = (new Date()).getTime() - lpMTagConfig.pageStartTime;
	lpAddVars('page','pageLoadTime', Math.round(t/1000)+' sec');
};

//Variables Arrays - By Scope
if (typeof(lpMTagConfig.pageVar)=='undefined') { lpMTagConfig.pageVar = []; }
if (typeof(lpMTagConfig.sessionVar)=='undefined') { lpMTagConfig.sessionVar = []; }
if (typeof(lpMTagConfig.visitorVar)=='undefined') { lpMTagConfig.visitorVar = []; }
//Extra actions to be taken once the code executes
if (typeof(lpMTagConfig.onLoadCode)=='undefined') { lpMTagConfig.onLoadCode = []; }
//Dynamic Buttons Array
if(typeof(lpMTagConfig.dynButton)=='undefined') { lpMTagConfig.dynButton = []; }
// This need to be add to afterStartPage will work
if(typeof(lpMTagConfig.ifVisitorCode)=='undefined') {lpMTagConfig.ifVisitorCode = []; }

var _lang = "";

// Function that sends variables to LP - By Scope
function lpAddVars(scope,name,value) {
	if (name.indexOf('OrderTotal')!=-1 || name.indexOf('OrderNumber')!=-1){
		if  (value=='' || value==0) return; // pass 0 value to all but OrderTotal
		else lpMTagConfig.sendCookies = false
	}	
	value=lpTrimSpaces(value.toString());
//Remove cut long variables names and values. Trims suffix of the variable name above the 25th character onwards
	if (name.length>50) { 
		name=name.substr(0,50);
	}
    if (value.length>50) { // Trims suffix of the variable value above the 50th character onwards
		value=value.substr(0,50);
	}
	switch (scope){
		case 'page': lpMTagConfig.pageVar[lpMTagConfig.pageVar.length] = escape(name)+'='+escape(value); break;
		case 'session': lpMTagConfig.sessionVar[lpMTagConfig.sessionVar.length] = escape(name)+'='+escape(value); break;
		case 'visitor': lpMTagConfig.visitorVar[lpMTagConfig.visitorVar.length] = escape(name)+'='+escape(value); break;
	}	
}

// Preventing long cookie transfer for IE based browsers.
function onloadEMT() { 
	var LPcookieLengthTest=document.cookie;
	if (lpMTag.lpBrowser == 'IE' && LPcookieLengthTest.length>1000){
		lpMTagConfig.sendCookies=false;
	}
}

//The Trim function returns a text value with the leading and trailing spaces removed
function lpTrimSpaces(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,'');
}

//Omit a specific cookie from the list of cookies that is being sent to LP with the monitor
lpMTagConfig.GetPageCookies = function () {
var cookies = document.cookie;
if ((typeof(cookies) == "undefined") || (cookies == null)) {
            cookies = "";
}
cookies = cookies.replace(/COOKIENAME=[a-zA-Z0-9\-!]*;?/,"");
return cookies;
};

// Generate random 10 character string
chars = "1234567890"; //character set to use for random string or number
var lpUniqueString = "CH";
for(x=0;x<8;x++) //the 8 indicates the length of the random string or number to generate
{
	i = Math.floor(Math.random() * 10); //number of characters within character set above
	lpUniqueString += chars.charAt(i);
}

// The unit variable purpose is to route the chat or call to the designated skill. <LOB> should be replaced with the skill name, i.e. : sales
try{
   var myMetaTags = document.getElementsByTagName('meta');
   for(var i=0;i<myMetaTags.length;i++) {
	 try{
		 if(myMetaTags[i].getAttribute('http-equiv') == "Content-Language") { 	
		 	_lang = myMetaTags[i].getAttribute('content', 2);
		 }	   
	 } catch(ex) {
	 }
   }
   if(_lang == "") {
	   for(var i=0;i<myMetaTags.length;i++) {
		 try{
             var myMetaTag = myMetaTags[i].outerHTML;
			 if(myMetaTag.indexOf('http-equiv') != -1) {
			    if (myMetaTag.indexOf('Content-Language') != -1) {	
					 //alert("1:" + myMetaTag);	 
			 	     myMetaTag = myMetaTag.replace("<META http-equiv=Content-Language content=","");		 	
					 //alert("2:" + myMetaTag);	 
			 	     myMetaTag = myMetaTag.replace(">","");	
					 myMetaTag = myMetaTag.replace(/\n/,"");
					 myMetaTag = myMetaTag.replace(/\r/,"");
					 //alert("3:" + myMetaTag);	 					 	 	
					_lang = myMetaTag;
				}
			  }	   
		 } catch(ex) {
		 }
	   }
   }

if (typeof(lpUnit)=='undefined') var lpUnit='service';
if (typeof(lpLanguage)=='undefined') var lpLanguage='english';

if(_lang == "en-us") {	
	lpLanguage='english';
} else if (_lang == "en-gb") {
	    lpLanguage = 'english';
    var lpUnit='service-uk';
} else if (_lang == "de") {	
	lpLanguage='german';
} else if (_lang == "fr-fr") {	
	lpLanguage='french';	
} 
//alert("lpLanguage:" + lpLanguage);

if(typeof(lpAddVars)!="undefined"){
	lpAddVars('page','unit',lpUnit);
	lpAddVars('session','language',lpLanguage);
	lpAddVars('visitor','lpUniqueString',lpUniqueString);
}
lpMTagConfig.defaultInvite = "chat-" + lpUnit + "-" +lpLanguage;
} catch(e) {
	alert(e.message);
}

// Creating button override object
if (typeof(lpMTagConfig.db2)=='undefined') {
	lpMTagConfig.db2 = new Object();
}

// Button override ///////////////////////////////////////////
lpMTagConfig.db2.dbStart = function (btname)
{
    try{
      //keep the name, so we can destroy it later if needed
	  if(typeof(lpMTagConfig.arrCurrentButtons)=='undefined')
		lpMTagConfig.arrCurrentButtons = [];
	
       	lpMTagConfig.arrCurrentButtons[lpMTagConfig.arrCurrentButtons.length] = btname;
   }catch(e){}
   
   return true;
}

/*
Below code is for the new Support Contact pages to allow for having different buttons with different names 
appearing on the page depending on user selection.
*/
function reloadMTag(vars, buttons){
	var i=0;
	lpMTagConfig.pageVar = new Array();
    lpMTagConfig.sessionVar = new Array();
    lpMTagConfig.visitorVar = new Array();
    lpMTagConfig.dynButton = new Array();
 
    //remove existing buttons
	if(typeof(lpMTagConfig.arrCurrentButtons)!="undefined" && lpMTagConfig.arrCurrentButtons.length>0){
		for(i=0;i<lpMTagConfig.arrCurrentButtons.length;i++){
			internalBt = eval(lpMTagConfig.arrCurrentButtons[i]);
			if(internalBt!=null) {
				 delete internalBt;
			}
		}
	}
	
    //remove mTag.js
	if ($('lpScriptTag')) $('lpScriptTag').remove();
	if (typeof(lpMTag)!='undefined') {
               clearTimeout(lpMTag.lpLoopTimer);             
    }
    
	//recreate button array	
	if(buttons !=null ){
		lpMTagConfig.dynButton = buttons;
	}
	
	//re-populate vars
	if(vars.vars !=null && vars.vars.length>0){
		for(i=0;i<vars.vars.length;i++){
			lpAddVars(vars.vars[i].scope, vars.vars[i].name, vars.vars[i].value);
		}
	}
	
	lpMTagConfig.lpTagLoaded = false;		
    lpAddMonitorTag();
}

// Immediate Data submission function
function lpSendData(varscope,varname,varvalue) {
	if(typeof(lpMTag)!='undefined' && typeof(lpMTag.lpSendData)!='undefined')
		lpMTag.lpSendData(varscope.toUpperCase() +'VAR!'+ varname + '=' + varvalue, true);
}

function lpSendDataPage(variable,varname){
 if(typeof(lpMTag)!='undefined' && typeof(lpMTag.lpSendData)!='undefined'){
  lpMTag.lpSendData('PAGEVAR!'+ variable + '=' + varname, true);}
}

//Prevent Invitation shown off page
lpMTagConfig.lpInvitePreventOffpage = true; // <true/false>  Can be change to false.

// The unit variable purpose is to route the chat or call to the designated skill. <LOB> should be replaced with the skill name, i.e. : sales

try{
	if (typeof(lpUnit)=='undefined') { var lpUnit=lpMTagConfig.defaultUnit; }
	lpMTagConfig.deploymentID=lpUnit;
	if(typeof(lpAddVars)!='undefined') { lpAddVars('page','unit',lpUnit); }
	
	if (typeof(lpLanguage)=='undefined') { var lpLanguage=lpMTagConfig.defaultLanguage; }
	if(typeof(lpAddVars)!='undefined') { lpAddVars('page','language',lpLanguage); }
	
	lpMTagConfig.defaultInvite='chat'+'-'+lpUnit+'-'+lpLanguage;
}catch(e){}

lpMTagConfig.onLoadCode[lpMTagConfig.onLoadCode.length] = onloadEMT;

//Scan dynButton and removes buttons which doesnt have Div on the page
lpMTagConfig.onLoadCode[lpMTagConfig.onLoadCode.length] = function () {
	if(typeof(lpMTagConfig.dynButton)!='undefined') {
		for (i=0;i<lpMTagConfig.dynButton.length;i++){
			if (typeof(lpMTagConfig.dynButton[i].pid)!='undefined' && document.getElementById(lpMTagConfig.dynButton[i].pid) == null) {
					lpMTagConfig.dynButton.splice(i,1);
					i--;
			}
		}
	}
};

//The folowing functions will be load after the page will finish loading
lpMTagConfig.onLoadAll = function () {
	lpMTagConfig.calculateSentPageTime();
	lpMTagConfig.lpLoadScripts();
};

if (window.attachEvent) { 
	window.attachEvent('onload',lpMTagConfig.onLoadAll); 
} else {
	window.addEventListener('load',lpMTagConfig.onLoadAll,false);
}

//creating button object - add to mtagconfig before button code
if(typeof(lpMTagConfig.db1)=="undefined"){
      lpMTagConfig.db1 = new Object();
}

// LP Button Code
lpMTagConfig.dynButton[lpMTagConfig.dynButton.length] = {'name':'chat-'+lpUnit+'-'+lpLanguage,'pid':'lpChatDynamicButtonDiv_Image','afterStartPage': true,'ovr':'lpMTagConfig.db1'};
lpMTagConfig.dynButton[lpMTagConfig.dynButton.length] = {'name':'chat-'+lpUnit+'-'+lpLanguage+'-contact-1','pid':'lpChatDynamicButtonDiv_Image_Contact','afterStartPage': true,'ovr':'lpMTagConfig.db1'};
