﻿//Domain Addresses
var JHM = 'JHM.ORG';
var JhmCanada = 'JHMCANADA.ORG';
var JhmUK = 'JHMUK.ORG';
var LocalHost = 'FILE:';
//USD($) to AltValues values
var CanadianDollar = 'C$';

//Query Variables
var GenComProductCatalogProductList = 'GenComProductCatalogProductList';
var GenComProductCatalogProductView = 'GenComProductCatalogProductView';
var GenComProductCatalogCartContents = 'GenComProductCatalogCartContents';
var GenCommerceShoppingCartCheckoutCustomerInfo = 'GenCommerceShoppingCartCheckoutCustomerInfo';
var GenComProductCatalogOrderSummary = 'GenComProductCatalogOrderSummary';
var GenComProductCatalog = 'GenComProductCatalog';
var SmartForm = 'SmartForm';

//Method to get QueryString Values by KEY
function getQuerystring(key, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}

//Method to get Section of Website user is currently viewing
function getPageType() {
    if (getQuerystring('type') == 'Commerce' && getQuerystring('mod') == 'GenComProductCatalog') {
        switch (getQuerystring('tier')) {
            case '2':
                return GenComProductCatalogProductList;
                break;

            case '3':
                return GenComProductCatalogProductView;
                break;

            case '4':
                return GenComProductCatalogCartContents;
                break;

            case '6':
                return GenCommerceShoppingCartCheckoutCustomerInfo;
                break;

            case '7':
                return GenComProductCatalogOrderSummary;

            default:
                return GenComProductCatalog;
                break;
        }

    }
    if (getQuerystring('type') == 'forms' && getQuerystring('mod') == 'Smart+Forms' && getQuerystring('tier') == '1') {
        return SmartForm;
    }
    return -1;
}


function AlterDDL(list, removeText, removeValue, addText, addValue, removeAll) {
    // Getting dropdownlist
    var dropdownList = list;

    //Removing Values
    if (removeAll || (removeText != "" && removeText != null && removeValue != "" && removeValue != null)) {
        for (var i = 0; i < dropdownList.options.length; ++i) {

            if (removeAll || (dropdownList.options[i].text == removeText && dropdownList.options[i].value == removeValue)) {
                if (removeAll) { dropdownList.options.length = 0; }
                else {
                    //Bug found in FireFox
                    //dropdownList.options.remove(i);
                    dropdownList.remove(i);
                }
            }
        }
    }

    // Add an Option object to Drop Down/List Box
    // Assign new text and value to Select Box list
    // Create an Option object
    if (addText != "" && addText != null && addValue != "" && addValue != null) {
        var opt = document.createElement("option");
        dropdownList.options.add(opt);
        opt.text = addText;
        opt.value = addValue;

        //Creating string array of current Text and Values ie: 'Text|Value'
        var ddlArray = new Array();
        for (var i = 0; i < dropdownList.options.length; ++i) {
            ddlArray[i] = dropdownList.options[i].text + "|" + dropdownList.options[i].value;
        }

        //Sort List
        dropdownList.options.length = 0;
        ddlArray.sort();

        //Creating DropDownList Array
        for (i = 0; i < ddlArray.length; ++i) {
            var option = ddlArray[i].split("|");
            var text = option[0];
            var value = option[1];

            var tempOpt = document.createElement("option");
            tempOpt.text = text;
            tempOpt.value = value;
            dropdownList.options.add(tempOpt);
        }
    }
}

function RunDynamicSiteScript(domain) {
    try {
        AlterTitle(domain);
        AlterCss(domain);
        AlterFlash(domain);
        AlterElements(domain);
    }
    catch (err) {
        //alert(err);
    }
}

function AlterTitle(domain) {
    switch (domain) {
        case JHM:
            AddTitle('John Hagee Ministries');
            break;

        case JhmCanada:
            AddTitle('John Hagee Ministries CANADA');
            break;

        case JhmUK:
            AddTitle('John Hagee Ministries UK');
            break;

        default:
            AddTitle('John Hagee Ministries');
            break;
    }
}

function AddTitle(title) {
    var jhmTitle = 'John Hagee Ministries';
    var oldTitle = document.title.substr(0, document.title.length - jhmTitle.length);
    document.title = oldTitle + ' ' + title;
}

function AddCss(cssFileName) {
    var headID = document.getElementsByTagName("head")[0];
    var cssNode = document.createElement('link');
    cssNode.type = 'text/css';
    cssNode.rel = 'stylesheet';
    cssNode.href = cssFileName;
    cssNode.media = 'screen';
    headID.appendChild(cssNode);
}

function AddJavascript(jsFileName) {
    var headID = document.getElementsByTagName("head")[0];
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.src = jsFileName;
    headID.appendChild(newScript);
    //alert(newScript.src);
}

function AlterCss(domain) {

    switch (domain) {
        case JHM:
            AddCss('/media/homepage_style_sheets/JHM-layout_05052008/wrapper_001.css');
            break;

        case JhmCanada:
            AddCss('/media/homepage_style_sheets/JHM-layout_05052008/wrapper_001.css');
            break;

        case JhmUK:
            AddCss('/media/homepage_style_sheets/JHM-layout_05052008/wrapper_001.css');
            break;

        default:
            AddCss('http://www.jhm.org/media/homepage_style_sheets/JHM-layout_05052008/wrapper_001.css');
            break;
    }

}

function AlterFlash(domain) {
    switch (domain) {
        case JHM:
            AddFlash('BannerFlash', BannerFlashCode('/Media/MediaManager/banner001.swf', 'banner001', domain));
            //AddFlash('TVOffers', BannerFlashCode('/Media/MediaManager/tv_offers.swf', 'tv_offers', domain));
            break;

        case JhmCanada:
            AddFlash('BannerFlash', BannerFlashCode('/Media/MediaManager/banner001.swf', 'banner001', domain));
            //AddFlash('TVOffers', BannerFlashCode('/Media/MediaManager/tv_offers.swf', 'tv_offers', domain));
            break;

        case JhmUK:
            AddFlash('BannerFlash', BannerFlashCode('/Media/MediaManager/banner001.swf', 'banner001', domain));
            //AddFlash('TVOffers', BannerFlashCode('/Media/MediaManager/tv_offers.swf', 'tv_offers', domain));
            break;

        default:
            AddFlash('BannerFlash', BannerFlashCode('http://www.jhm.org/Media/MediaManager/banner001.swf', 'banner001', 'www.jhm.org'));
            //AddFlash('TVOffers', BannerFlashCode('http://www.jhm.org/Media/MediaManager/tv_offers.swf', 'tv_offers', 'www.jhm.org'));
            break;
    }
}

function BannerFlashCode(flashFile, name, domain) {
    var flashEmbedString = '<object id="' + name + '" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"';
    flashEmbedString += 'height="150" width="800" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">';
    flashEmbedString += '<param name="_cx" value="21167">';
    flashEmbedString += '<param name="_cy" value="3969">';
    flashEmbedString += '<param name="FlashVars" value="Domain=' + domain + '">';
    flashEmbedString += '<param name="Movie" value="' + flashFile + '?Domain=' + domain + '">';
    flashEmbedString += '<param name="Src" value="' + flashFile + '?Domain=' + domain + '">';
    flashEmbedString += '<param name="WMode" value="Transparent">';
    flashEmbedString += '<param name="Play" value="-1">';
    flashEmbedString += '<param name="Loop" value="-1">';
    flashEmbedString += '<param name="Quality" value="High">';
    flashEmbedString += '<param name="SAlign" value="">';
    flashEmbedString += '<param name="Menu" value="-1">';
    flashEmbedString += '<param name="Base" value="">';
    flashEmbedString += '<param name="AllowScriptAccess" value="always">';
    flashEmbedString += '<param name="Scale" value="ShowAll">';
    flashEmbedString += '<param name="DeviceFont" value="0">';
    flashEmbedString += '<param name="EmbedMovie" value="0">';
    flashEmbedString += '<param name="BGColor" value="">';
    flashEmbedString += '<param name="SWRemote" value="">';
    flashEmbedString += '<param name="MovieData" value="">';
    flashEmbedString += '<param name="SeamlessTabbing" value="1">';
    flashEmbedString += '<param name="Profile" value="0">';
    flashEmbedString += '<param name="ProfileAddress" value="">';
    flashEmbedString += '<param name="ProfilePort" value="0">';
    flashEmbedString += '<param name="AllowNetworking" value="all">';
    flashEmbedString += '<param name="AllowFullScreen" value="false">';
    flashEmbedString += '<embed src="' + flashFile + '?Domain=' + domain + '" quality="high" wmode="transparent"';
    flashEmbedString += 'width="800" height="150" name="' + name + '" align="middle" allowscriptaccess="always"';
    flashEmbedString += 'allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" />';
    flashEmbedString += '</object>';
    return flashEmbedString;
    alert(flashEmbedString);

    //NOTE: Original flash code (Banner001)
    //   <div class="top_banner">
    //        <object id="banner001" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
    //            height="150" width="800" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
    //            <param name="_cx" value="21167">
    //            <param name="_cy" value="3969">
    //            <param name="FlashVars" value="">
    //            <param name="Movie" value="/Media/MediaManager/banner001.swf">
    //            <param name="Src" value="/Media/MediaManager/banner001.swf">
    //            <param name="WMode" value="Transparent">
    //            <param name="Play" value="-1">
    //            <param name="Loop" value="-1">
    //            <param name="Quality" value="High">
    //            <param name="SAlign" value="">
    //            <param name="Menu" value="-1">
    //            <param name="Base" value="">
    //            <param name="AllowScriptAccess" value="always">
    //            <param name="Scale" value="ShowAll">
    //            <param name="DeviceFont" value="0">
    //            <param name="EmbedMovie" value="0">
    //            <param name="BGColor" value="">
    //            <param name="SWRemote" value="">
    //            <param name="MovieData" value="">
    //            <param name="SeamlessTabbing" value="1">
    //            <param name="Profile" value="0">
    //            <param name="ProfileAddress" value="">
    //            <param name="ProfilePort" value="0">
    //            <param name="AllowNetworking" value="all">
    //            <param name="AllowFullScreen" value="false">
    //            <embed src="/Media/MediaManager/banner001.swf" quality="high" wmode="transparent"
    //                width="800" height="150" name="banner001" align="middle" allowscriptaccess="always"
    //                allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" />
    //        </object>
    //    </div>
}

function TVOffersFlashCode(flashFile, name, domain) {
    var flashEmbedString = '<object id="' + name + '" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"';
    flashEmbedString += 'height="167" width="300" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">';
    flashEmbedString += '<param name="FlashVars" value="Domain=' + domain + '">';
    flashEmbedString += '<param name="Movie" value="' + flashFile + '">';
    flashEmbedString += '<param name="Src" value="' + flashFile + '">';
    flashEmbedString += '<param name="WMode" value="Transparent">';
    flashEmbedString += '<param name="Play" value="-1">';
    flashEmbedString += '<param name="Loop" value="-1">';
    flashEmbedString += '<param name="Quality" value="High">';
    flashEmbedString += '<param name="SAlign" value="">';
    flashEmbedString += '<param name="Menu" value="-1">';
    flashEmbedString += '<param name="Base" value="">';
    flashEmbedString += '<param name="AllowScriptAccess" value="always">';
    flashEmbedString += '<param name="Scale" value="ShowAll">';
    flashEmbedString += '<param name="DeviceFont" value="0">';
    flashEmbedString += '<param name="EmbedMovie" value="0">';
    flashEmbedString += '<param name="BGColor" value="">';
    flashEmbedString += '<param name="SWRemote" value="">';
    flashEmbedString += '<param name="MovieData" value="">';
    flashEmbedString += '<param name="SeamlessTabbing" value="1">';
    flashEmbedString += '<param name="Profile" value="0">';
    flashEmbedString += '<param name="ProfileAddress" value="">';
    flashEmbedString += '<param name="ProfilePort" value="0">';
    flashEmbedString += '<param name="AllowNetworking" value="all">';
    flashEmbedString += '<param name="AllowFullScreen" value="false">';
    flashEmbedString += '<embed src="' + flashFile + '" quality="high" ';
    flashEmbedString += 'wmode="transparent" width="300" height="167" name="' + name + '" allowscriptaccess="always"';
    flashEmbedString += 'allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" />';
    flashEmbedString += '</object>';
    return flashEmbedString;
    alert(flashEmbedString);

    //NOTE: Original flash code (TV Offerings)
    //<div class="html_body_right_menu_item_title">
    //    <object id="tv_offers" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
    //        height="167" width="300" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
    //        <param name="Movie" value="https://www.jhm.org/Media/MediaManager/tv_offers.swf">
    //        <param name="Src" value="https://www.jhm.org/Media/MediaManager/tv_offers.swf">
    //        <param name="WMode" value="Transparent">
    //        <param name="Play" value="-1">
    //        <param name="Loop" value="-1">
    //        <param name="Quality" value="High">
    //        <param name="SAlign" value="">
    //        <param name="Menu" value="-1">
    //        <param name="Base" value="">
    //        <param name="AllowScriptAccess" value="always">
    //        <param name="Scale" value="ShowAll">
    //        <param name="DeviceFont" value="0">
    //        <param name="EmbedMovie" value="0">
    //        <param name="BGColor" value="">
    //        <param name="SWRemote" value="">
    //        <param name="MovieData" value="">
    //        <param name="SeamlessTabbing" value="1">
    //        <param name="Profile" value="0">
    //        <param name="ProfileAddress" value="">
    //        <param name="ProfilePort" value="0">
    //        <param name="AllowNetworking" value="all">
    //        <param name="AllowFullScreen" value="false">
    //        <embed src="https://www.jhm.org/Media/MediaManager/tv_offers.swf" quality="high"
    //            wmode="transparent" width="300" height="167" name="tv_offers" allowscriptaccess="always"
    //            allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" />
    //    </object>
    //</div>
}

function AddFlash(divId, flashEmbedString) {
    var flashDiv = document.getElementById(divId);
    if (flashDiv != null && flashDiv != undefined) {
        flashDiv.innerHTML = flashEmbedString;
        //alert(flashDiv.innerHTML);

    }
}


function AlterElements(domain) {
    switch (getPageType()) {
        case GenComProductCatalogProductList:
            switch (domain) {
                case JHM:
                    ShowCountryMessage(domain);
                    break;

                case JhmCanada:
                    ShowCountryMessage(domain);
                    AlterUSD('$', ' CDN', 1);
                    break;

                case JhmUK:
                    ShowCountryMessage(domain);
                    break;

                case LocalHost:
                    alert('here');
                    AlterUSD('$', ' CDN', 1);
                    break;

                default:
                    break;
            }
            break;

        case GenComProductCatalogProductView:
            switch (domain) {
                case JHM:
                    ShowCountryMessage(domain);
                    break;

                case JhmCanada:
                    ShowCountryMessage(domain);
                    AlterUSD('$', ' CDN', 1);
                    break;

                case JhmUK:
                    ShowCountryMessage(domain);
                    break;

                case LocalHost:
                    ShowCountryMessage(domain);
                    AlterUSD('$', ' CDN', 1);
                    break;

                default:
                    ShowCountryMessage(domain);
                    break;
            }
            break;

        case GenComProductCatalogCartContents:
            GetCartContents();

            switch (domain) {
                case JHM:
                    break;

                case JhmCanada:
                    AlterUSD('$', ' CDN', 1);
                    break;

                case JhmUK:
                    break;

                case LocalHost:
                    AlterUSD('$', ' CDN', 1);
                    break;

                default:
                    break;
            }
            break;

        case GenCommerceShoppingCartCheckoutCustomerInfo:
            //alert('is downloadable content only? ' + (sessvars.IsDownloadableContentOnly != undefined));
            if (sessvars.IsDownloadableContentOnly != undefined && sessvars.IsDownloadableContentOnly) {
                AlterDDL(window.document.eComCheckOut.ShippingValue, 'Shipping and Handling - Ground ($10.00)', '10.00||Shipping and Handling - Ground', null, null, false);
                AlterDDL(window.document.eComCheckOut.ShippingValue, 'Shipping and Handling - International ($20.00)', '20.00||Shipping and Handling - International', null, null, false);
                AlterDDL(window.document.eComCheckOut.ShippingValue, 'Shipping and Handling - Standard ($5.00)', '5.00||Shipping and Handling - Standard', null, null, false);
            }
            else {
                AlterDDL(window.document.eComCheckOut.ShippingValue, 'Downloadable Only - No Shipping ($0.00)', '0.00||Downloadable Only - No Shipping', null, null, false);

            }


            switch (domain) {
                case JHM:
                    AlterDDL(window.document.eComCheckOut.BillingCountry, 'Canada', 'CA', null, null, false);
                    AlterDDL(window.document.eComCheckOut.ShippingCountry, 'Canada', 'CA', null, null, false);
                    //NOTE: Do we need to do the same for State and change to provence in DDL and label?
                    //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                    break;

                case JhmCanada:
                    //AlterDDL(window.document.eComCheckOut.BillingCountry, 'United States of America', 'US', 'Canada', 'CA', false);
                    //AlterDDL(window.document.eComCheckOut.ShippingCountry, 'United States of America', 'US', 'Canada', 'CA', false);

                    //NOTE: Start Remove All Countries In List
                    AlterDDL(window.document.eComCheckOut.BillingCountry, null, null, null, null, true);
                    AlterDDL(window.document.eComCheckOut.ShippingCountry, null, null, null, null, true);
                    //End Remove All Countries In List

                    //NOTE: Add Canada Back To List
                    AlterDDL(window.document.eComCheckOut.BillingCountry, null, null, 'Canada', 'CA', false);
                    AlterDDL(window.document.eComCheckOut.ShippingCountry, null, null, 'Canada', 'CA', false);



                    //NOTE: Start Remove All States In List
                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, null, null, true);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, null, null, true);
                    //End End Remove All States In List

                    //NOTE: Start Adding Canada Provinces
                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, '----Select A Province----', '----Select A Province----', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, '----Select A Province----', '----Select A Province----', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Ontario', 'ON', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Ontario', 'ON', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Quebec', 'QC', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Quebec', 'QC', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Nova Scotia', 'NS', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Nova Scotia', 'NS', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'New Brunswick', 'NB', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'New Brunswick', 'NB', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Manitoba', 'MB', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Manitoba', 'MB', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'British Columbia', 'BC', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'British Columbia', 'BC', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Prince Edward Island', 'PE', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Prince Edward Island', 'PE', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Saskatchewan', 'QC', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Saskatchewan', 'QC', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Alberta', 'AB', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Alberta', 'AB', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Newfoundland and Labrador', 'NL', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Newfoundland and Labrador', 'NL', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Northwest Territories', 'NT', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Northwest Territories', 'NT', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Nunavut', 'NU', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Nunavut', 'NU', false);

                    AlterDDL(window.document.eComCheckOut.BillingState, null, null, 'Yukon', 'YT', false);
                    AlterDDL(window.document.eComCheckOut.ShippingState, null, null, 'Yukon', 'YT', false);
                    //End Adding Canada Provinces

                    AlterDDL(window.document.eComCheckOut.CardType, null, null,null, null, true);

                    AlterDDL(window.document.eComCheckOut.CardType, null, null, '----Select Card Type----', '----Select Card Type----', false);
                    AlterDDL(window.document.eComCheckOut.CardType, null, null, 'Mastercard', 'Mastercard', false);
                    AlterDDL(window.document.eComCheckOut.CardType, null, null, 'Visa', 'Visa', false);


                    AlterDDL(window.document.eComCheckOut.ShippingValue, null, null, null, null, true);
                    AlterDDL(window.document.eComCheckOut.ShippingValue, null, null, '----Select Shipping----', '----Select Shipping----', false);
                    AlterDDL(window.document.eComCheckOut.ShippingValue, null, null, '=======================', '=======================', false);
                    AlterDDL(window.document.eComCheckOut.ShippingValue, null, null, 'Shipping and Handling - Ground ($10.00)', '10.00 Shipping and Handling - Ground', false);
                    AlterDDL(window.document.eComCheckOut.ShippingValue, null, null, 'Shipping and Handling - International ($20.00)', '20.00 Shipping and Handling - International', false);
                    AlterDDL(window.document.eComCheckOut.ShippingValue, null, null, 'Shipping and Handling - Standard ($8.00)', '8.00 Shipping and Handling - Standard', false);

                    //Value='10.00||Shipping and Handling - Ground' Text='Shipping and Handling - Ground ($10.00)'
                    //Value='20.00||Shipping and Handling - International' Text='Shipping and Handling - International ($20.00)'
                    //Value='8.00||Shipping and Handling - Standard' Text='Shipping and Handling - Standard ($8.00)'

                    ShippingState


                    break;

                case JhmUK:
                    //NOTE: Do we need to do the same for State and change to provence in DDL and label?
                    //NOTE: Do we still want to have a message on top saying UK customers need to go to UK site?
                    break;

                default:
                    AlterDDL(window.document.eComCheckOut.BillingCountry, 'Canada', 'CA', null, null, false);
                    AlterDDL(window.document.eComCheckOut.ShippingCountry, 'Canada', 'CA', null, null, false);
                    //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                    break;
            }
            break;

        case GenComProductCatalogOrderSummary:
            switch (domain) {
                case JHM:
                    VerifyShipping();
                    break;

                case JhmCanada:
                    AlterUSD('$', ' CDN', 1);
                    VerifyShipping();
                    break;

                case JhmUK:
                    VerifyShipping();
                    break;

                case LocalHost:
                    AlterUSD('$', ' CDN', 1);
                    VerifyShipping();
                    break;

                default:
                    VerifyShipping();
                    //NOTE: Need to verify shipping is accurate IE if INTER they need higher rate... this should be dynamic i think xml/rss feed?
                    break;
            }
            break;

        case GenComProductCatalog:
            switch (domain) {
                case JHM:

                case JhmCanada:

                case JhmUK:

                default:
                    ShowCountryMessage(domain);
                    //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                    break;
            }
            break;

        case SmartForm:
            switch (domain) {
                case JHM:
                    AlterDDL(frmSmart.SF_Billing_Country, 'Canada', 'CA', null, null, false);
                    ShowCountryMessage(domain);
                    break;

                case JhmCanada:
                    //AlterDDL(frmSmart.SF_Billing_Country, 'United States', 'USA', 'Canada', 'CA', false);
                    //NOTE: Start Remove All Countries In List
                    AlterDDL(frmSmart.SF_Billing_Country, null, null, null, null, true);
                    //End Remove All Countries In List

                    //NOTE: Add Canada Back To List
                    AlterDDL(frmSmart.SF_Billing_Country, null, null, 'Canada', 'CA', false);

                    //NOTE: Start Remove All States In List
                    AlterDDL(frmSmart.SF_Billing_State, null, null, null, null, true);
                    //End Remove All States In List

                    //NOTE: Start Adding Canada Provinces
                    AlterDDL(frmSmart.SF_Billing_State, null, null, '----Select A Province----', '----Select A Province----', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Ontario', 'ON', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Quebec', 'QC', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Nova Scotia', 'NS', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'New Brunswick', 'NB', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Manitoba', 'MB', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'British Columbia', 'BC', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Prince Edward Island', 'PE', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Saskatchewan', 'SK', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Alberta', 'AB', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Newfoundland and Labrador', 'NL', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Northwest Territories', 'NT', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Nunavut', 'NU', false);
                    AlterDDL(frmSmart.SF_Billing_State, null, null, 'Yukon', 'YT', false);

                    //End Adding Canada Provinces

                    //NOTE: Remove all card types from list
                    AlterDDL(frmSmart.cc_type2, null, null, null, null, true);

                    AlterDDL(frmSmart.cc_type2, null, null, '-----Select Card Type-----', '-----Select Card Type-----', false);
                    AlterDDL(frmSmart.cc_type2, null, null, 'Mastercard', 'Mastercard', false);
                    AlterDDL(frmSmart.cc_type2, null, null, 'Visa', 'Visa', false);
                    
                    //Add required * to state/province
                    $("<div style='position:relative; overflow:hidden; color:red; left:190px; top:55px;'>*</div>").appendTo("input#SF_Billing_AddressLine2");
                    $("font:contains('State')").html('Province');
                    
                    AlterUSD('$', ' CDN', 1);
                    ShowCountryMessage(domain);
                    //NOTE: Do we need to do the same for State and change to provence in DDL and label?
                    //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                    break;

                case JhmUK:
                    ShowCountryMessage(domain);
                    //NOTE: Do we need to do the same for State and change to provence in DDL and label?
                    //NOTE: Do we still want to have a message on top saying UK customers need to go to UK site?
                    break;

                case LocalHost:
                    AlterDDL(frmSmart.SF_Billing_Country, 'United States', 'USA', 'Canada', 'CA', false);
                    AlterUSD('$', ' CDN', 1);
                    ShowCountryMessage(domain);
                    //NOTE: Do we need to do the same for State and change to provence in DDL and label?
                    //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                    break;

                default:
                    ShowCountryMessage(domain);
                    AlterDDL(frmSmart.SF_Billing_Country, 'Canada', 'CA', null, null, false);
                    //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                    break;
            }
            break;

    }
}

function GetCartContents() {
    var s = '<strong>Product Number:</strong>&nbsp;';
    var nbsp = '&nbsp;';
    var j = 0;
    sessvars.CartContents = new Array;
    for (i = 0; i < document.getElementsByTagName('div').length; i++) {
        if (document.getElementsByTagName('div')[i].innerHTML.toLowerCase().search(s.toLowerCase()) != -1) {
            sessvars.CartContents[j] = document.getElementsByTagName('div')[i].innerHTML.toLowerCase().split(nbsp.toLowerCase())[1];
            j++;
        }

    }
    IsDownloadableContentOnly();

    //alert(sessvars.IsDownloadableContentOnly);
}

function IsDownloadableContentOnly() {
    var bool = true;
    if (sessvars.CartContents.length != 0) {
        for (i = 0; i < sessvars.CartContents.length; ++i) {
            if (sessvars.CartContents[i].substr(0, 1) != 'f' && sessvars.CartContents[i].substr(0, 1) != 'F') { bool = false; }
        }
    }
    else {
        bool = false;
    }
    sessvars.IsDownloadableContentOnly = bool;
}

function ShowCountryMessage(domain) {
    var div = document.getElementById('CountryMessage');
    if (div != null && div != undefined) {
        switch (domain) {
            case JHM:
                //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                div.innerHTML = '<div><b><span style="COLOR: red">ATTENTION</span>: <u>Canadian Customers</u>&nbsp;-&nbsp;<a href="http://www.jhmcanada.org">Click Here To Go Our Canadian Website</a></b></div></br></br><div><b><span style="COLOR: red">ATTENTION</span>: <u>European Customers</u></b></br>We would recommend that on-line orders from Europe be made with the UK office.  Please contact our offices in the UK at +44 (0) 1793 862146 to place your order.&nbsp;Please accept our apologies for any inconvenience this has caused.</div>';
                //div.innerHTML += '<div>Due to circumstances beyond our control, orders being shipped to Canada cannot be processed online.&nbsp; We are diligently working on the problem and are excited to announce that we are also working on a website specifically dedicated to our Canadian customers.&nbsp; In the meantime, we invite you to call our office in Canada at 877-454-6226 to place your order or visit our office located at 50 Gervais Dr., Toronto, Ontario M3C 1Z3 where all walk-in purchases are discounted 20%.&nbsp; Please accept our apologies for any inconvenience this has caused. <br></div>';
                div.innerHTML += '<div><br>&nbsp;</div>';
                break;

            case JhmCanada:
                break;

            case JhmUK:
                //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                div.innerHTML = '<div><b><span style="COLOR: red">ATTENTION</span>: <u>Canadian Customers</u></b><br></div>';
                div.innerHTML += '<div>Due to circumstances beyond our control, orders being shipped to Canada cannot be processed online.&nbsp; We are diligently working on the problem and are excited to announce that we are also working on a website specifically dedicated to our Canadian customers.&nbsp; In the meantime, we invite you to call our office in Canada at 877-454-6226 to place your order or visit our office located at 50 Gervais Dr., Toronto, Ontario M3C 1Z3 where all walk-in purchases are discounted 20%.&nbsp; Please accept our apologies for any inconvenience this has caused. <br></div>';
                div.innerHTML += '<div><br>&nbsp;</div>';
                break;

            default:
                //NOTE: Do we still want to have a message on top saying Canada customers need to go to Canada site?
                div.innerHTML = '<div><b><span style="COLOR: red">ATTENTION</span>: <u>Canadian Customers</u></b><br></div>';
                div.innerHTML += '<div>Due to circumstances beyond our control, orders being shipped to Canada cannot be processed online.&nbsp; We are diligently working on the problem and are excited to announce that we are also working on a website specifically dedicated to our Canadian customers.&nbsp; In the meantime, we invite you to call our office in Canada at 877-454-6226 to place your order or visit our office located at 50 Gervais Dr., Toronto, Ontario M3C 1Z3 where all walk-in purchases are discounted 20%.&nbsp; Please accept our apologies for any inconvenience this has caused. <br></div>';
                div.innerHTML += '<div><br>&nbsp;</div>';
                break;
        }
    }
}

function VerifyShipping() {
    VerifyShippingIsAccurate();
}

function AlterUSD(prefix, suffix, conversionRate) {
    if (conversionRate == null) { conversionRate = 1; }

    var regEx = /(\$([0-9|,|.]+))/ig;

    var arrUSD = document.getElementsByTagName('body')[0].innerHTML.match(regEx);
    var uniqueArr = new Array;
    var uniqueCount = 0;
    for (i = 0; i < arrUSD.length; i++) {
        var contains = false;
        for (j = 0; j < uniqueArr.length; j++) {
            if (uniqueArr[j] == arrUSD[i]) {
                contains = true;
            }
        }
        if (!contains) {
            uniqueArr[uniqueCount] = arrUSD[i];
            uniqueCount++;
        }
    }

    for (i = 0; i < uniqueArr.length; i++) {

        var replaceTxt = uniqueArr[i];
        var re = '/\\' + uniqueArr[i] + '/g';

        replaceTxt = replaceTxt.replace(/\$/g, prefix) + suffix;
        document.getElementsByTagName('body')[0].innerHTML = document.getElementsByTagName('body')[0].innerHTML.replace(eval(re), replaceTxt);

    }
}





function ShippingShouldBeZero(shouldBeZero) {
    var s1 = '<STRONG>Tax:</STRONG>&nbsp;';
    var s2 = '<STRONG>Shipping:</STRONG>&nbsp;';
    var nbsp = '&nbsp;';
    for (i = 0; i <= document.getElementsByTagName('div').length; ++i) {

        //Make sure shipping div exists by
        if (document.getElementsByTagName('div')[i].innerHTML.toLowerCase().search(s1.toLowerCase()) != -1 &&
        document.getElementsByTagName('div')[i + 1].innerHTML.toLowerCase().search(s2.toLowerCase()) == -1) {
            if (!shouldBeZero) {
                RedirectToShoppingCartForShippingChange();
            }
            break;
        }

        if (document.getElementsByTagName('div')[i].innerHTML.toLowerCase().search(s2.toLowerCase()) != -1) {
            var lastFour = document.getElementsByTagName('div')[i].innerHTML.toLowerCase().split(nbsp.toLowerCase())[1];

            if (shouldBeZero && lastFour != '$0.00') {
                RedirectToShoppingCartForShippingChange();
                break;
            }

            if (!shouldBeZero && lastFour == '$0.00') {
                RedirectToShoppingCartForShippingChange();
                break;
            }
        }

    }
}

function VerifyShippingIsAccurate() {
    //NOTE: Need to verify shipping is accurate IE if INTER they need higher rate... this should be dynamic i think xml/rss feed?

    switch (sessvars.IsDownloadableContentOnly) {
        case false:
            {
                ShippingShouldBeZero(false);
                break;
            }
        case true:
            {
                ShippingShouldBeZero(true);
                break;
            }
        default:
            {
                ShippingShouldBeZero(false);
                break;
            }
    }

}

function RedirectToShoppingCartForShippingChange() {
    alert('Please verify shipping amount');

    var currentURL = document.location.href;
    //NOTE: Send user back to Shopping Cart view to allow them to choose the correct shipping amount
    var redirectURL = currentURL.substr(0, currentURL.length - 1) + '6';
    window.location = redirectURL;
}

function GetDomain() {
    var a = new String(window.location);
    a = a.replace('http://', '');
    a = a.replace('https://', '');
    a = a.replace('www.', '');
    a = a.substring(0, a.indexOf('/'));
    //alert(a.toUpperCase());
    return a.toUpperCase();
}

RunDynamicSiteScript(GetDomain());

