if (typeof(hcPageID) == "undefined")
 hcPageID=Math.round(Math.random()*9999999999);

if (typeof(lpdbButtonContext) == "undefined")
	lpdbButtonContext = document.title;

if (typeof(lpdbButtonActionURLSuffix) == "undefined") 
	lpdbButtonActionURLSuffix = "";

if (typeof(lpdbRedirectActionURLSuffix) == "undefined") 
	lpdbRedirectActionURLSuffix = "";

if (typeof(lpdbButtonImpressionSuffix) == "undefined") 
	lpdbButtonImpressionSuffix = "";

if (typeof(lpdbButtonName) == "undefined") 
	lpdbButtonName = "Generic";
	
if (typeof(lpdbButtonRoom) == "undefined") 
	lpdbButtonRoom = lpdbButtonName;

if (typeof(lpdbOutcomeDirQualifier) == "undefined") 
	lpdbOutcomeDirQualifier = "";

var lpdbRedirectAttempts;
if (typeof(lpdbRedirectAttempts)=="undefined")
	lpdbRedirectAttempts=10;

var lpdbRedirectTimeout;
if (typeof(lpdbRedirectTimeout)=="undefined")
	lpdbRedirectTimeout=500;

var hcNS = (document.layers) ? true : false;
var hcIE = (document.all) ? true : false;
var hcIE5 = false;
if (hcIE) {
	hcIE5 = navigator.appVersion.indexOf("IE 5.")>=0;
}
var hcDOM = (document.getElementById) ? true : false;
if (hcIE)
	hcDOM = false;
var hcMAC = (navigator.platform) && (navigator.platform.toUpperCase().indexOf("MAC") >= 0);
if (hcNS)
	hcMAC = false;

var hcPointerString = hcIE5 ? "hand" : "pointer";

var lpLocation = document.location.toString();
var lpProtocol = "http";
if ((lpLocation != null) && (lpLocation.indexOf("https:") == 0))
	lpProtocol = "https";

var lpdbImpressionTimeoutSeconds;
if (typeof(lpdbImpressionTimeoutSeconds)=="undefined")
	lpdbImpressionTimeoutSeconds=30;

var lpdbImpressionRefreshFrequency;
if (typeof(lpdbImpressionRefreshFrequency)=="undefined")
	lpdbImpressionRefreshFrequency=5;

var lpdbImpressionFrequency;
if (typeof(lpdbImpressionFrequency)=="undefined")
	lpdbImpressionFrequency=4;

var lpdbButtonImpressionImage;
var lpdbImpressionTimeoutCounter = 0;
var lpdbImpressionRefreshCounter = 0;
var lpdbLastImpressionWidth=-1;

function lpdbButtonImpressionCheckImage() {
	lpdbImpressionTimeoutCounter++;
	lpdbImpressionRefreshCounter++;
	if (lpdbImpressionTimeoutCounter > lpdbImpressionTimeoutSeconds*lpdbImpressionFrequency) {
		if (typeof(lpdbAlternateImageURL) != "undefined" && lpdbAlternateImageURL!=null)			
			return lpdbApplyButtonRule(0);
		else
			return lpdbApplyButtonRule(40);
	}
	var imageWidth = lpdbButtonImpressionImage.width;		
	if (imageWidth >= 40) {
		if (imageWidth != lpdbLastImpressionWidth)
			return lpdbApplyButtonRule(imageWidth); 
		else
			return true;
	} else {
		if ( (lpdbImpressionRefreshCounter >= lpdbImpressionRefreshFrequency) ||
		     (imageWidth==30 && lpdbImpressionRefreshCounter >= lpdbImpressionFrequency/4) ) {
			lpdbButtonImpressionSetSource();
			lpdbImpressionRefreshCounter = 0;
		}
	}
	return false;
}
function lpdbButtonImpressionLoopImage() {
	if (lpdbButtonImpressionCheckImage()) {	
		lpdbCheckRefresh();
		return;
	}	
	setTimeout("lpdbButtonImpressionLoopImage()", 1000.0/lpdbImpressionFrequency);
}

function lpdbCheckRefresh(){
	if (typeof(lpdbRefreshRate) != "undefined" && lpdbRefreshRate > 0)
		setTimeout("lpdbRefresh()", 1000.0*lpdbRefreshRate);
}

function lpdbReset() {
	lpdbImpressionTimeoutCounter = 0;
	lpdbImpressionRefreshCounter = 0;	
}
function lpdbRefresh() {
	lpdbReset();
	lpdbInitDynamicButtonRealtime();
}

function lpdbButtonImpressionSetSource() {
	if (typeof(lpdbDefaultQueryURL) != "undefined") {			
		lpdbImpressionPage = lpProtocol + "://" + lpdbDefaultQueryURL;
	} else if (typeof(lpdbAlternateImageURL) != "undefined" && lpdbAlternateImageURL == 0) {
		lpdbImpressionPage = lpProtocol + "://" + lpServerName + "/hcp/width/img90.gif";
	} else {
		lpdbImpressionPage = lpProtocol + "://" + lpServerName + "/hcp/width/img40.gif";	
	}	
	if (document.layers || document.all)
		lpdbButtonImpressionImage = new Image();
	else if (hcDOM) {
		document.body.removeChild(lpdbButtonImpressionImage);
		lpdbButtonImpressionImage = document.createElement('IMG');
		lpdbButtonImpressionImage.style.visibility = "hidden";
		lpdbButtonImpressionImage.style.position = "absolute";
		lpdbButtonImpressionImage.style.top = "0px";
		lpdbButtonImpressionImage.style.left = "0px";
		document.body.appendChild(lpdbButtonImpressionImage);
	} 
		
	lpdbButtonImpressionImage.src = lpProtocol + "://" + lpServerName + "/hc/" + lpNumber + 
		"/cmd/url/?site=" + lpNumber + 	
		"&SESSIONVAR!impression-query-name="+escape(lpdbButtonName)+
		"&SESSIONVAR!impression-query-room="+escape(lpdbButtonRoom)+
		"&page="+escape(lpdbImpressionPage)+
                "&id=" + hcPageID +
		"&info=button-impression:"+escape(lpdbButtonName)+"("+escape(lpdbButtonContext)+")"+
		lpdbButtonImpressionSuffix +
		"&waitForVisitor=true&d="+(new Date().getTime());	
}
function lpdbButtonImpressionGo() {
	lpdbButtonImpressionSetSource() ;
	lpdbButtonImpressionLoopImage();
}

function lpdbFindButtonImage(name) {
	if (hcDOM) {
		return document.getElementsByTagName("IMG")[name];
	} else if (typeof(document.getElementById)!="undefined") {
		return document.getElementById(name);
	} else {				
		for (var i = 0; i < document.images.length; i++) {
			if (document.images[i].name == name)
				return document.images[i];
		}		
	}
	return null;
}

function lpdbButtonActionFunction() {
	window.open(lpdbEvaluateButtonActionURL(), 'chat' + lpNumber, 'width=472,height=320,status=0,resizable=0,menubar=no,scrollbars=no');
}
function lpdbDoNothingFunction() {
}

function lpdbCustomHandler(width) {
	return false;
}

function lpdbApplyButtonRule(width) {
	var response = false;
	var style = null;
	var hcDynamicIconImage=lpdbFindButtonImage('hcDynamicIcon');
	if (hcDynamicIconImage!=null) {
		style = hcDynamicIconImage.style;
	}
	if (width == 40) {
		//if (style != null)
		//	style.cursor = "default";
		//lpdbButtonAction = lpdbDoNothingFunction;
		response = true;
	} else
	if (width == 50) {
		if (typeof(lpdbButtonImageURL) != "undefined" && lpdbButtonImageURL != null) {
			if (hcDynamicIconImage!=null) 
				hcDynamicIconImage.src = lpdbButtonImageURL;
			if (style != null)
				style.cursor = hcPointerString;
			lpdbButtonAction = lpdbButtonActionFunction;
		}
		if (typeof(lpdbMEname) != "undefined") {
			parent.document.getElementById(lpdbMEname).style.display="block";
			parent.document.getElementById("lpMEguide").style.display="block";
		}
		response = true;
	} else 	if (width == 60) {
		if (typeof(lpdbAlternateButtonBusyImageURL) != "undefined" && lpdbAlternateButtonBusyImageURL != null) {
			if (hcDynamicIconImage!=null) 
				hcDynamicIconImage.src = lpdbAlternateButtonBusyImageURL;
			if (style != null)
				style.cursor = "default";
			lpdbButtonAction = lpdbDoNothingFunction;
		}
		response = true;
	} else 	if (width == 70) {
		if (typeof(lpdbAlternateButtonOfflineImageURL) != "undefined" && lpdbAlternateButtonOfflineImageURL != null) {
			if (hcDynamicIconImage!=null) 
				hcDynamicIconImage.src = lpdbAlternateButtonOfflineImageURL;
			if (style != null)
				style.cursor = "default";
			lpdbButtonAction = lpdbDoNothingFunction;
		}
		response = true;
	} else 	if (width == 80 || width == 0) {
		if (typeof(lpdbAlternateImageURL) != "undefined" && lpdbAlternateImageURL != null) {
			if (hcDynamicIconImage!=null) 
				hcDynamicIconImage.src = lpdbAlternateImageURL;
			if (typeof(lpdbAlternateFunction) != "undefined") {				
				if (style != null) 
					style.cursor = hcPointerString;
				lpdbButtonAction = lpdbAlternateFunction;
			} else {
				if (style != null)
					style.cursor = "default";
				lpdbButtonAction = lpdbDoNothingFunction;
			}
		}
		if (typeof(lpdbDefaultActionURL)!="undefined") {
			lpdbActionURL = lpProtocol + "://" + lpdbDefaultActionURL;
		} else {
			lpdbActionURL = lpProtocol + "://" + lpServerName + 				"/hcp/html/SalesEdition/ServiceTemporarilyUnavailable.html";
		}
		response = true;
	} else if (width == 90) {
		// (a)
		// For a type-1 button implementation with image-name reference
		//  	no need to reload image (no change)
		//	need to make it clickable and connect to action
		if (style != null) 
			style.cursor = hcPointerString;
		lpdbButtonAction = lpdbButtonActionFunction;
		// (b) 
		// For a type-1 button implementation with no image-name reference
		// 	lpdbButtonActionURL is set at the bottom of this script
		// 	nothing else to do 
		response = true;
	} else
		response = lpdbCustomHandler(width);
	
	if (response) {
		lpdbLastImpressionWidth = width;	
	}
	return response;
}

function lpdbInitDynamicButtonRealtime() {
	if ((hcIE) || (hcNS))
		lpdbButtonImpressionImage = new Image();
	else if (hcDOM) {
		lpdbButtonImpressionImage = document.createElement('IMG');
		lpdbButtonImpressionImage.style.visibility = "hidden";
		document.body.appendChild(lpdbButtonImpressionImage);
		lpdbButtonImpressionImage.style.position = "absolute";
		lpdbButtonImpressionImage.style.top = "0px";
		lpdbButtonImpressionImage.style.left = "0px";
	} 
	lpdbButtonAction = lpdbDoNothingFunction;
	setTimeout("lpdbButtonImpressionGo()", 10);
}
if (hcMAC && hcIE)
	{
		document.writeln("<div style='visibility:hidden'><img src='blank' id='lpdbButtonImpressionImage' name='lpdbButtonImpressionImage'></div>");
		lpdbButtonImpressionImage = document.lpdbButtonImpressionImage;
	}
setTimeout("lpdbInitDynamicButtonRealtime()", 10);

if (typeof(lpdbSSL)!="undefined" && lpdbSSL) {
	lpChatProtocol="https";
} else {
	lpChatProtocol="http";
}

function lpdbEvaluateButtonActionURL() {
	var lpdbRedirectActionURL = 
		lpChatProtocol + "://" + lpServerName + "/hc/" + lpNumber + "/?cmd=file&file=visitorWantsToChat&site=" +
	 	lpNumber + ((typeof(lpOfflineURL) != "undefined") ? "&offlineURL=" + 
		escape(lpChatProtocol + "://" + lpOfflineURL) : "") + 		
	        "&SESSIONVAR!chat-button-name="+escape(lpdbButtonName)+
	        "&SESSIONVAR!chat-button-room="+escape(lpdbButtonRoom)+
       	        lpdbRedirectActionURLSuffix +
	        "&referrer=(button%20dynamic-button:"+escape(lpdbButtonName)+"("+escape(lpdbButtonContext)+"))%20"+
		escape(document.location);
	
	var lpdbButtonActionURL = 
		lpProtocol + "://" + lpServerName + "/hc/" + lpNumber + "/cmd/url/?site=" + lpNumber + 		
		"&SESSIONVAR!click-query-name="+escape(lpdbButtonName)+
		"&SESSIONVAR!click-query-room="+escape(lpdbButtonRoom)+
		"&SESSIONVAR!button-outcome-dir="+escape(lpdbOutcomeDirQualifier)+
	        "&page="+escape(lpdbRedirectActionURL) + 					
        	"&id=" + hcPageID +
		"&waitForVisitor=redirectBack&redirectAttempts="+lpdbRedirectAttempts+
		"&redirectTimeout="+lpdbRedirectTimeout+
		lpdbButtonActionURLSuffix+
		"&d="+(new Date().getTime());
	
	return lpdbButtonActionURL;
}

var lpdbActionURL = lpdbEvaluateButtonActionURL();

