// ----------------------------------------------------------------------
// Get these values from pzn_category_inc, to be consistent.
var constSFHome;
var constSFInsurance;
var constSFAuto;
var constSFAutoQuote;

var constDefaultMSG = "NO_RESPONSE";
var maxDelayTimeMS = 3000;
var maxURL_Length = 1024;

var sfDefaultFlashImagePath = "/_images/homepage/images/nonFlashHero.jpg";
var sfDefaultFlashHeroStoryId = "3";

var defaultPageImagePath;
var defaultImageAltText;
var sfDefaultFlashAltText = "Save on insurance and get more out of life";

var divWTClickImageContent;
var trackImageId;
var trackImageOnPageURI;
// var sfTrackOnHome = "/index.asp";
// var sfTrackOnInsurance = "/insurance/insurance.asp";
// var sfTrackOnAutoPage = "/insurance/auto_insurance/auto_insurance.asp";

var sfDefaultPage;
var sfPagePZNDivId;
var treTimer;
// these are sensitive flags, please be careful:
var imageDisplayed = false;
var treTimer2;
var imageDisplayed2 = false;
// ----------------------------------------------------------------------

function prepareDefaultImageHTML(sfPage) {
	var brandingAreaDIV;
	if (sfPage == constSFHome) {
		brandingAreaDIV = "<div id=\"targetingContent\"><img id=\"HomePage_Default\" src=\"" + defaultPageImagePath + "\" alt=\"" + defaultImageAltText + "\" /></div>";
	}
	else if (sfPage == constSFInsurance) {
		brandingAreaDIV = "<div id=\"heroLarge\"><img id=\"InsCategoryPage_Default\" src=\"" + defaultPageImagePath + "\" alt=\"" + defaultImageAltText + "\" /></div>";
	}
	else if (sfPage == constSFAuto) { // auto insurance
		brandingAreaDIV = "<div id=\"heroSmall\"><img id=\"AutoInsPage_Default\" src=\"" + defaultPageImagePath + "\" alt=\"" + defaultImageAltText + "\" /></div>";
	}
	// add the if condition for AutoQuote page.
	else if (sfPage == constSFAutoQuote) { // auto rate quote
		brandingAreaDIV = "<div id=\"heroSmall\"><img id=\"GetAutoQuotePage_Default\" src=\"" + defaultPageImagePath + "\" alt=\"" + defaultImageAltText + "\" /></div>";
	}
	else { // always default shoule be Home page?
		// check here..
		brandingAreaDIV = "<div id=\"targetingContent\"><img id=\"HomePage_Default\" src=\"" + defaultPageImagePath + "\" alt=\"" + defaultImageAltText + "\" /></div>";
	}
	return brandingAreaDIV;
}

function fetchFlashImageHTML(flashId) {
	var defaultFlashHeroImageHTML = "<IMG SRC='" + sfDefaultFlashImagePath + "' WIDTH='728' HEIGHT='298' ALT='" + sfDefaultFlashAltText + "'>";
	return defaultFlashHeroImageHTML;
}
// ----------------------------------------------------------------------

function createWTDiv(innerText) {
	trackImageId = getImageId(innerText);
	_tag.dcsMultiTrack('DCS.dcsuri', trackImageOnPageURI, 'WT.ad', trackImageId);
}

function onPznImageClick(){
	_tag.dcsMultiTrack('DCS.dcsuri', trackImageOnPageURI, 'WT.ac', trackImageId);
	return false;
}

// --------------------------------------------------------------------

function getImageId(innerText) {
	var indexOfIMG = innerText.toLowerCase().indexOf("<img");
	var balImgTxt;
	if (indexOfIMG >= 0) {
		balImgTxt = innerText.substring(indexOfIMG+1); // wont affect here.
		var indexOfID = balImgTxt.toLowerCase().indexOf("id=");
		var balInnerText;
		if (indexOfID >= 0)  {
			balInnerText = balImgTxt.substring(indexOfID+3); // remove id=
			var endOfID = balInnerText.toLowerCase().indexOf(" ");
			var rtImageID = balInnerText.substring(0, endOfID);
			if (rtImageID.indexOf("'") >= 0) {
				rtImageID = rtImageID.replace("'", "").replace("'", "");
			}
			else {
				rtImageID = rtImageID.replace("\"", "").replace("\"", "");
			}
			return (rtImageID);
		}
	}
	return("NO_IMAGE_ID_FOUND");
}

function insertOnClickScript(innerText) {
	var insScript = " onClick=\"onPznImageClick()\" ";
	var indexOfHREF = innerText.toLowerCase().indexOf("href=");
	if (indexOfHREF > 0 ) {
		var part1Text = innerText.substring(0, indexOfHREF);
		var part2Text = innerText.substring(indexOfHREF);
		var returnText = part1Text + insScript + part2Text;
		return returnText;
	}
	return innerText;
}

function trimAll(sString) {
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

// ----------------------------------------------------------------------
// The contents of this file are for error case handlings
// Default Image show -up
// 1. Delayed Response
// 2. Default rule = No response
// 3. Any other issue faced with communication
// ----------------------------------------------------------------------
// start of code for time-out image display

function startTRETimeOut(maxDelayTimeInMilliSec) {	
	treTimer = setTimeout("handleDelayedTREResponse()", maxDelayTimeInMilliSec);
}

function stopTRETimeOut() {
	clearTimeout(treTimer);
	imageDisplayed = true; // this is the only change
}

function handleDelayedTREResponse() {
	if (!imageDisplayed) {
		imageDisplayed = true;
		document.getElementById(sfPagePZNDivId).innerHTML = "";
		var defaultImageResponse = prepareDefaultImageHTML(sfDefaultPage);
		createWTDiv(defaultImageResponse);
		document.getElementById(sfPagePZNDivId).innerHTML= defaultImageResponse;
	}
}

// for second timer setting:
function startTRETimeOut2(maxDelayTimeInMilliSec) {	
	treTimer2 = setTimeout("handleDelayedTREResponse2()", maxDelayTimeInMilliSec);
}

function stopTRETimeOut2() {
	clearTimeout(treTimer2);
	imageDisplayed2 = true; // this is the only change
}

function handleDelayedTREResponse2() {
	if (!imageDisplayed2) {
		imageDisplayed2 = true;
		// alert("handleDelayedTREResponse2: Default hero story has to be displayed");
		
		// load the default image // pznRegularCall(); No Call to load
		handleDelayedTREResponse();
		
		pznFlashHeroStoryCall(sfDefaultFlashHeroStoryId);
		
	}
}
// ----------------------------------------------------------------------

function showDefaultImage(treResponseMSG) {
	if ( treResponseMSG.indexOf(constDefaultMSG) >= 0  )
	{
		return true;
	}
	else
	{
		return false;
	}
}
// ----------------------------------------------------------------------

function getBalDivInnerHTML(innerText, remDivID) {
	var indexOfDiv = innerText.toLowerCase().indexOf("<div");
	var indexOfRemDivID = innerText.indexOf(remDivID);
	var endOfDiv = innerText.toLowerCase().indexOf("</div>");
	if (indexOfDiv >= 0) {
		if ( (indexOfRemDivID > indexOfDiv) && (indexOfRemDivID < endOfDiv) ) {
			return (innerText.substring(endOfDiv+6));
		}
	}
	return (innerText);	
}

// ----------------------------------------------------------------------
function getTimeSeconds()
{
	var dt = new Date();
	var h =dt.getHours();
	var m =dt.getMinutes();
	var s =dt.getSeconds();
	return ( s + (((h * 60) + m) * 60) );
}

// ----------------------------------------------------------------------
// This file is for XHTML validations
// All the pzn URL values are read and the URL is created here.
// --------------------------------------------------------------------
function getPZNQueryString(vpageLoc, vrefURL, vcpIsCustomer, vcpIsfirsttime,  vcpLastvisitedsess, vcpLastvisited, vreqQueryString){
	var pznFinalURL;
	pznFinalURL = "&" + vpageLoc + "&" + vrefURL + "&" + vcpIsCustomer + "&" + vcpIsfirsttime + "&" + vcpLastvisitedsess + "&" + vcpLastvisited + "&" + vreqQueryString;
	return pznFinalURL;
}

function getPZNQueryString(vpageLoc, vPzn_TS, vrefURL, vcpIsCustomer, vcpIsfirsttime,  vcpLastvisitedsess, vcpLastvisited, vreqQueryString){
	var pznFinalURL;
	pznFinalURL = "&" + vpageLoc + "&" + vPzn_TS + "&" + vrefURL + "&" + vcpIsCustomer + "&" + vcpIsfirsttime + "&" + vcpLastvisitedsess + "&" + vcpLastvisited + "&" + vreqQueryString;
	return pznFinalURL;
}

function checkForURLMaxLength(orgURLReqString){
	var retURL_Req;
	if (orgURLReqString.length <= maxURL_Length) {
		retURL_Req = orgURLReqString;
	}
	else {
		retURL_Req = orgURLReqString.substring(0, maxURL_Length);
	}
	return retURL_Req;
}

function insertENV_CMSHostURL(responseHTMLSnippet, cmsEnvHostURL) {
	var indexOfImageSRC_Main = responseHTMLSnippet.toLowerCase().indexOf("src");
	var partMain1;
	var partMain2;
	if (indexOfImageSRC_Main > 0) {
		partMain1 = responseHTMLSnippet.substring(0, indexOfImageSRC_Main);
		partMain2 = responseHTMLSnippet.substring(indexOfImageSRC_Main);
	}
	else {
		return responseHTMLSnippet;
	}
	
	// "/ewcmb2c/groups"
	var indexOfSlashEWCMB = partMain2.toLowerCase().indexOf("/ewcmb");
	var part1Ret;
	var part2Ret;
	var returnSnippet;
	if (indexOfSlashEWCMB > 0) {
		part1Ret = partMain2.substring(0, indexOfSlashEWCMB);
		part2Ret = partMain2.substring(indexOfSlashEWCMB);
		returnSnippet = partMain1 + part1Ret + cmsEnvHostURL + part2Ret;
	}
	else {
		return responseHTMLSnippet;
	}
	return returnSnippet;
}

// ----------------------------------------------------------------------------
// All these are JSON Call Specific functions:
// ----------------------------------------------------------------------------
// Constructor -- pass a REST request URL to the constructor
//
function JSONscriptRequest(fullUrl) {
    // REST request path
    this.fullUrl = fullUrl; 
    // Keep IE from caching requests
    this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
    // Get the DOM location to put the script tag
    this.headLoc = document.getElementsByTagName("head").item(0);
    // Generate a unique script tag id
    this.scriptId = 'JscriptId' + JSONscriptRequest.scriptCounter++;
}

// Static script ID counter
JSONscriptRequest.scriptCounter = 1;

// buildScriptTag method
//
JSONscriptRequest.prototype.buildScriptTag = function () {

    // Create the script tag
    this.scriptObj = document.createElement("script");
    
    // Add script object attributes
    this.scriptObj.setAttribute("type", "text/javascript");
    this.scriptObj.setAttribute("charset", "utf-8");
    // this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
    this.scriptObj.setAttribute("src", this.fullUrl);
    this.scriptObj.setAttribute("id", this.scriptId);
}
 
// removeScriptTag method
// 
JSONscriptRequest.prototype.removeScriptTag = function () {
    // Destroy the script tag
    this.headLoc.removeChild(this.scriptObj);  
}

// addScriptTag method
//
JSONscriptRequest.prototype.addScriptTag = function () {
    // Create the script tag
    this.headLoc.appendChild(this.scriptObj);
}

