// *** PAGE SPECIFIC VARIABLES *** //

var activeConnectAreaId = "";
var cityList;
var dnisList;
var cityListXmlDom;
var cityListXmlUrl;
var adCodeListXmlDom;
var adCodeListXmlUrl;
var connectButtonSrc;
var connectButtonInactiveSrc;
var inputTextElement;
var campaign;
var adcodeObj;

var connectArea;
var landingRightside;
var disclaimer;
var header;
var footerWords;
var seo;

var displayAreaNonTrial;
var landingRightsideNonTrial;
var disclaimerNonTrial;
var flashAreaNonTrial;
var headerNonTrial;
var landingFlashNonTrial;
var landingFlashBackupNonTrial;
var footerWordsNonTrial;
var seoNonTrial;

var isCampaignDisplayed;
var landingFlashCurrent;

// *** PAGE SPECIFIC FUNCTIONS *** //

// init function called after page has loaded
function init()
{
    // initialize required variables
    locale = getLocale();

    defaultAdCode = getDefaultAdCode(locale);
    
    id = evalParamAndCookieValue("id", id);
    
    setAdCodeAndContext();
    setActiveConnectAreaId();
    
    connectArea = document.getElementById("connectArea");
    connectArea.style.visibility = "hidden";
    displayAreaNonTrial = document.getElementById(activeConnectAreaId).style.backgroundImage;
    
    landingRightside = document.getElementById("landingRightside");
    landingRightside.style.visibility = "hidden";
    landingRightsideNonTrial = landingRightside.innerHTML;  
    	
    disclaimer = document.getElementById("disclaimer");
    disclaimer.style.visibility = "hidden";
    disclaimerNonTrial = disclaimer.innerHTML; 

    header = document.getElementById("header");
    header.style.visibility = "hidden";
    headerNonTrial = header.style.background; 

    footerWords = document.getElementById("footerWords");
    footerWords.style.visibility = "hidden";
    footerWordsNonTrial = footerWords.innerHTML; 
    
    seo = document.getElementById("copyBox");
    seo.style.visibility = "hidden";
    seoNonTrial = seo.innerHTML; 

    flashAreaNonTrial = document.getElementById("flashArea").innerHTML;

    isCampaignDisplayed = false;

    // setup campaign
    var requestAdcode = getURLParamValue("a");

    checkAdcodeAndRender(adCode, locale);

    // logic to render the "connectArea"
    renderConnectArea();
    
    setCookieIdAndSessionId();
}

function checkAdcodeAndRender(adcode, locale) {
    if (adcodeServiceUrl)
    {
    	var submitUrl = adcodeServiceUrl + "?companyId=" + companyId + "&userId=" + userId  
    						+ "&groupId=" + groupId + "&locale=" + locale + "&adcode="+adcode;
    	jQuery.get(submitUrl, {}, function(data) {
        	adcodeObj = data.adcode;
        	renderLocaleElements();
        	renderCampaignElements();
        }, "json");
    }
}
    
// use to properly render the 'connect area' of the page
function renderConnectArea()
{
    if (activeConnectAreaId == "phoneNumberDisplay")
    {
        // activate connect area phone number display only for windows/firefox users
        var phoneNumberDisplay = document.getElementById(activeConnectAreaId);
        if (phoneNumberDisplay)
        {
            // unhide connect area
            phoneNumberDisplay.className = "connect_sm";
        }
        
        // set pageId/pageEventId
        pageId = "14";
        pageEventId = "0";
        
    }

    // send tracker update
    trackerUpdate(pageId, pageEventId);
}

// use to properly render locale based elements 
function renderLocaleElements()
{
    var localeFlagPic = document.getElementById(activeConnectAreaId + ".localeFlagPic");
    var localeLink = document.getElementById(activeConnectAreaId + ".localeLink");
    var advertisedNumber = document.getElementById(activeConnectAreaId + ".advertisedNumber");
    
    switch (locale)
    {
        case "en_US":
            if (localeFlagPic) localeFlagPic.src = "/voiceLL-theme/images/flag_connect_US.gif";
            if (localeLink) localeLink.innerHTML = "Switch to Canada";
            if (advertisedNumber) advertisedNumber.innerHTML = getAdvertisedNumber();
            break;
        case "en_CA":
            if (localeFlagPic) localeFlagPic.src = "/voiceLL-theme/images/flag_connect_CA.gif";
            if (localeLink) localeLink.innerHTML = "Switch to USA";
            if (advertisedNumber) advertisedNumber.innerHTML = getAdvertisedNumber();
            break;
        case "es_US":
            if (localeFlagPic) localeFlagPic.style.visibility = "hidden";
            if (localeLink) localeLink.style.visibility = "hidden";
            if (advertisedNumber) advertisedNumber.innerHTML = getAdvertisedNumber();
            break;
        default:
            break;
    }
}

function renderCampaignElements() {
    // campaign rendering
	var campaign = adcodeObj.campaign;
    if(campaign && campaign.available) {
    	
    	var content = campaign.content;
    	var landingFlash = landingFlashNonTrial;
    	if(content.landingFlashAreaUrl) {
    		landingFlash = content.landingFlashAreaUrl;
    	}
    	
    	if(landingFlashCurrent != landingFlash) {
    		
    		var landingFlashBackup = landingFlashBackupNonTrial;
    		if(content.landingFlashAreaBackupUrl) {
    			landingFlashBackup = content.landingFlashAreaBackupUrl;
    		}
    		// 	flash area 
    		var flashArea = document.getElementById("flashArea");
		
    		if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
    			alert("This page requires AC_RunActiveContent.js.");
    		} else {
    			var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
    			if(hasRightVersion) {  // if we've detected an acceptable version
    				// embed the flash movie
    				var c = AC_FL_GetContent(
//				AC_FL_RunContent(
   						'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,24,0',
   						'width', '404',
   						'height', '278',
						'src', landingFlash,
						'quality', 'high',
						'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
						'align', 'middle',
						'play', 'true',
						'loop', 'true',
						'scale', 'showall',
						'wmode', 'transparent',
						'devicefont', 'false',
						'id', 'sample1',
						'name', 'sample1',
						'menu', 'true',
						'allowScriptAccess','sameDomain',
						'allowFullScreen','false',
						'movie', landingFlash,
						'salign', 'center'
						); //end AC code
					flashArea.innerHTML = c;
				} else {  // flash is too old or we can't detect the plugin
					flashArea.innerHTML = '<a href="http://www.macromedia.com/go/getflash/"><img src="'+landingFlashBackup+'" width="404" height="278" border="0" /></a>';
				}
    		}
    		landingFlashCurrent = landingFlash;
		}
    	// header
		if(content.headerUrl) {
			header.style.backgroundImage = "url("+content.headerUrl+")";
		}

    	// display area
		if(content.burstBackgroundUrl) {
	        var displayArea = document.getElementById(activeConnectAreaId);
	    	displayArea.style.backgroundImage = "url(" + content.burstBackgroundUrl + ")";
	    	var hardPhoneArea = document.getElementById("hardPhoneArea");
	    	hardPhoneArea.style.backgroundImage = "url()";
	    	var phoneConnectImg = document.getElementById("phoneConnectImg");
	    	if(phoneConnectImg) {
	    		phoneConnectImg.style.visibility = "hidden";
	    	}
		}
    	
    	// landingRightside
    	if(content.landingRightSideContent) {
    		landingRightside.innerHTML = content.landingRightSideContent;
    	}
    	
    	// disclaimer
        if(content.disclaimerContent) {
        	disclaimer.innerHTML = content.disclaimerContent;
        }

    	// footer
		if(content.footerWordsUrl) {
			footerWords.innerHTML= "<img src=\""+content.footerWordsUrl+"\" alt=\"\" style=\"display:block;\"/>";
		}

    	// seo
        if(content.seoContent) {
        	seo.innerHTML = content.seoContent;
        }

        isCampaignDisplayed = true;
    }
    else {
    	restoreNonTrialElements();
    }
    
    disclaimer.style.visibility = "visible";
    connectArea.style.visibility = "visible";
    landingRightside.style.visibility = "visible";
    header.style.visibility = "visible";
    footerWords.style.visibility = "visible";
    seo.style.visibility = "visible";
}

function restoreNonTrialElements() {
	if(isCampaignDisplayed) {
		landingRightside.innerHTML = landingRightsideNonTrial;
		disclaimer.innerHTML = disclaimerNonTrial;
		seo.innerHTML = seoNonTrial;
		footerWords.innerHTML = footerWordsNonTrial;
		header.style.background = headerNonTrial;

		var displayArea = document.getElementById(activeConnectAreaId);
		displayArea.style.backgroundImage = displayAreaNonTrial;

		var flashArea = document.getElementById("flashArea");
		flashArea.innerHTML = flashAreaNonTrial;
		isCampaignDisplayed = false;
	}
}

// use to set the activeConnectAreaId variable
function setActiveConnectAreaId()
{
    activeConnectAreaId = "phoneNumberDisplay"; // TEMPORARILY set to display PHONE NUMBER ONLY
}

// use to flip locale between en_US and en_CA
function clickChangeLocale()
{
    switch (locale)
    {
        case "en_US":
            locale = "en_CA";
            pageEventId = "8";
            trackerUpdate(pageId, pageEventId);
            break;
        case "en_CA":
            locale = "en_US";
            pageEventId = "9";
            trackerUpdate(pageId, pageEventId);
            break;
        default:
            break;
    }
    saveCookie("locale", locale);
    checkAdcodeAndRender(adCode, locale);
}

// use to get the advertised number
function getAdvertisedNumber()
{
    var advertisedNumber;
    if (locale == "en_US" || locale == "en_CA" || locale == "es_US") {
    	if(adcodeObj) {
    		advertisedNumber = adcodeObj.phoneNumber;
    	}
    	
    	if(!advertisedNumber || advertisedNumber.length == 0) {
            // adcode not found
            if(locale == "en_US") {
            	advertisedNumber = '1-877-902-9777';
            }
            else if(locale == "en_CA") {
            	advertisedNumber = '1-877-402-1999';
            }
            else if(locale == "es_US") {
            	advertisedNumber = '1-877-592-5282';
            }
    	}
    }
    return advertisedNumber;
}

// use to set adCode and context variables
function setAdCodeAndContext()
{
    adCode = getURLParamValue("a");
    context = getURLParamValue("context");
    var fromClickthru = getCookie("fromClickthru");
    oldAdCode = adCode;
    
    if ((adCode == null && context == null) || fromClickthru == null)
    {
        adCode = defaultAdCode; // default adCode when there's non in the url or its not coming from clickthru
        context = defaultContext;
    } else if (adCode.length < 1) {        
        adCode = defaultAdCode; // default adCode when there's non in the url or its not coming from clickthru
        context = defaultContext;
    } else if (context == null) {
        context = defaultContext;
    }
    
    // set fromClickthru cookie to be only for current browser session
    if (fromClickthru != null) setCookie("fromClickthru", "1", "", "/", "", ""); // remember only for current session

    // set different adCode if originating from a list of kown domain
    var newAdCode = setAdCodeBasedOnDomain(document.referrer, adCode, locale);
    
    if (newAdCode != adCode && adCode == defaultAdCode)
    {
        adCode = newAdCode;
    }
    
    // save locale info
    saveCookie("context", context);
}

// use to subscribe user's email address
function subscribe(email, gender)
{
    var product = 30;
    var myLocale = 0; // default
    var emailValue = email.replace(/^\s\s*/, "").replace(/\s\s*$/, ""); // trim the email
    var sGender='';
    if(gender!=0) {
    	sGender=gender==1?'M':'F';
    }

    switch (locale)
    {
        case "en":
            myLocale = 0;
            break;
        case "fr_CA":
            myLocale = 1;
            break;
        case "en_CA":
            myLocale = 2;
            break;
        case "en_AU":
            myLocale = 3;
            break;
        case "en_GB":
            myLocale = 4;
            break;
        case "en_US":
            myLocale = 5;
            break;
        case "fr_FR":
            myLocale = 6;
            break;
        case "es_US":
            myLocale = 7;
            break;
        case "es_CA":
            myLocale = 8;
            break;
        default:
            break;
    }

    if (isValidEmail(emailValue)) sendSubscribeRequest(emailValue.toUpperCase(), product, sGender, myLocale);

    //pageEventId = "1";
    //trackerUpdate(pageId, pageEventId);
}

// use to send unsubscription request
function sendSubscribeRequest(email, product, gender, locale)
{
    var url = utilityUrl + "?tool=requestTypeSubscribe&product=" + product + "&gender=" + gender + "&locale=" + locale + "&email=" + email;
    httpPost(url);
}

// simple email validator
function isValidEmail(str)
{
    var at = "@";
    var dot = ".";
    var lstr = str.length - 1;

    // empty string
    if (str.length < 1) return false;

    // multiple "@"
    if (str.indexOf(at) != str.lastIndexOf(at)) return false;

    // missing "@", "@" at the start or "@" at the end
    if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) return false;

    // missing ".", "." at the start or "." at the end
    if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) return false;

    // missing "." after the "@"
    if (str.indexOf(dot, str.indexOf(at)) == -1) return false;

     // contains blank, ";", "\"" or "\'"
     if (str.indexOf(" ") != -1 || str.indexOf(";") != -1 || str.indexOf("\"") != -1 || str.indexOf("\'") != -1) return false;

     return true;
}

// *** USE JQUERY TO START THE INIT() FUNCTION AFTER THE PAGE LOADS COMPLETELY *** //

jQuery(document).ready(function() {
    init();
});

