﻿var timer;
var complete = 0; //true or false variable
var lookedup = false;
var carttimer;
var omnituretag = 'tedbakernewprod';

//Banner Hacks
window.onload = function () {
    var img = document.createElement('img');
    //var link = document.createElement('a');
    //link.setAttribute('onclick', 'openPopup("http://www.tedbaker.com/tedevent.htm","width=500, height=440, scrollbars=0","TedEvent");');
    img.setAttribute('src', 'http://www.tedbaker.com/images/banners/freedeliveryUKSS12.gif');
    img.setAttribute('alt', 'Free standard UK delivery for orders over £250');
    img.setAttribute('style', 'float:left;');
    //link.appendChild(img);

    var linkything = jQuery("<img src='http://www.tedbaker.com/images/banners/freedeliveryUKSS12.gif' style='float:left;' />")
    linkything.insertBefore('#updProductDetail');

    var contentbannercontainer = document.getElementById('maincont');
    if (contentbannercontainer) {
        contentbannercontainer.insertBefore(img, contentbannercontainer.childNodes[0]);
    }
}

/*window.onload = function () {
var img = document.createElement('img');
img.setAttribute('src', 'http://www.tedbaker.com/images/banners/UK_freedelivery_jan12.gif');
img.setAttribute('alt', 'Free standard UK delivery');
img.setAttribute('style', 'float:left;');

var linkything = jQuery("<img src='http://www.tedbaker.com/images/banners/UK_freedelivery_jan12.gif' style='float:left;' />")

linkything.insertBefore('#updProductDetail');

var hobannercontainer = document.getElementById('ho');
var pibannercontainer = document.getElementById('pintro');
var plbannercontainer = document.getElementById('plist');
var pdbannercontainer = document.getElementById('pdetail');
var slbannercontainer = document.getElementById('sl');
var mabannercontainer = document.getElementById('myaccount');
var smbannercontainer = document.getElementById('sm');
var csbannercontainer = document.getElementById('cs');
var cmbannercontainer = document.getElementById('contactmedia');
var sbbannercontainer = document.getElementById('sb');

if (hobannercontainer) {
hobannercontainer.insertBefore(img, hobannercontainer.childNodes[0]);
}
if (pibannercontainer) {
pibannercontainer.insertBefore(img, pibannercontainer.childNodes[0]);
}
if (plbannercontainer) {
plbannercontainer.insertBefore(img, plbannercontainer.childNodes[0]);
}
if (slbannercontainer) {
slbannercontainer.insertBefore(img, slbannercontainer.childNodes[0]);
}
if (mabannercontainer) {
mabannercontainer.insertBefore(img, mabannercontainer.childNodes[0]);
}
if (smbannercontainer) {
smbannercontainer.insertBefore(img, smbannercontainer.childNodes[0]);
}
if (csbannercontainer) {
csbannercontainer.insertBefore(img, csbannercontainer.childNodes[0]);
}
if (cmbannercontainer) {
cmbannercontainer.insertBefore(img, cmbannercontainer.childNodes[0]);
}
}*/

//End

function chkClick(chk) {
    if (chk.checked) {
        complete++;
    } else {
        complete--;
    }
}

function MM_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) { d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p); }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}

function SwapVis(hideitem, showitem) {
    try {
        MM_findObj(hideitem).style.display = 'none';
        MM_findObj(showitem).style.display = '';
    } catch (e) { }
}

function ShowHide(item, show) {
    try {
        var itemObj = MM_findObj(item);
        if (show) {
            itemObj.style.display = '';
        }
        else {
            itemObj.style.display = 'none';
        }
    } catch (e) { }
}

function timedRefresh(interval) {
    timer = setTimeout("location.reload(true); clearTimeout(timer);", interval);
}


function openclose(triggerid, itemid, showhide, hidetrigger, openedtext, closedtext) {
    var trigger = MM_findObj(triggerid);
    var item = MM_findObj(itemid);
    if (MM_findObj(triggerid).getAttribute('disabled') != 'disabled') {
        if (hidetrigger) {
            trigger.setAttribute('disabled', 'disabled');
        }
        var currentclass = trigger.className;
        if (currentclass.indexOf('opened') > -1) {
            if (showhide != '') {
                MM_findObj(showhide).setAttribute('disabled', 'disabled');
            }
            Effect.BlindUp(item, { duration: 0.5, afterFinish: function () {
                trigger.removeAttribute('disabled');
                trigger.className = trigger.className.replace('opened', 'closed');
                //alert(openedtext.length);
                if (openedtext.length > 1) {
                    trigger.innerHTML = openedtext;
                    trigger.title = openedtext;
                }
            }
            });
        }
        else {
            trigger.className = trigger.className.replace('closed', 'opened');
            //alert(openedtext.length);
            if (closedtext.length > 0) {
                trigger.innerHTML = closedtext;
                trigger.title = closedtext;
            }
            Effect.BlindDown(item, { duration: 0.5, afterFinish: function () {
                if (showhide != '') { MM_findObj(showhide).removeAttribute('disabled'); }
                trigger.removeAttribute('disabled');
            }
            });
        }
    }
}

function showBasket() {
    clearTimeout(carttimer);
    jQuery('#MCStretch').slideToggle();
    jQuery('#MCOpenClose').toggleClass('opened closed');
    if (jQuery('#MCOpenClose').hasClass('opened')) {
        s.events = 'scView'; void (s.t());
    }
}



var filterOptions = { CLOSED_FILTER_TEXT: 'SHOW FILTER OPTIONS', OPENED_FILTER_TEXT: 'HIDE FILTER OPTIONS', triggerid: 'showfiltersb', panelid: 'filtercont', speed: 800 };

function ShowFilters() {
    jQuery('#' + filterOptions.triggerid).toggleClass('opened closed');
    jQuery('#' + filterOptions.panelid).slideToggle(filterOptions.speed);
    setFilterText();
    SetupScrollTracker();
}

function setFilterText() {
    jQuery('#' + filterOptions.triggerid + '.opened').html(filterOptions.OPENED_FILTER_TEXT);
    jQuery('#' + filterOptions.triggerid + '.closed').html(filterOptions.CLOSED_FILTER_TEXT);
}


var scrolltrackerbuffer;
function SetupScrollTracker() {
    var floatpos = jQuery("#filterfloat").offset();
    var menuYloc = floatpos.top * -1;
    var filterheight;
    jQuery(window).scroll(function () {
        offset = menuYloc + jQuery(document).scrollTop();
        if ((offset) > floatpos.top) {
            jQuery("#filterfloat").addClass("ready");
            filterheight = jQuery("#filterfloat").height();
            jQuery('#filtercont').css('height', filterheight);
            jQuery("#filterfloat").css('top', ((jQuery("#filterfloat").height()) * -1) + 35 + "px");
            jQuery("#filtertab").show();
        }
        else {
            jQuery("#filterfloat").removeClass("ready");
            jQuery("#filtertab").hide();
            filterheight = jQuery("#filterfloat").height();
            jQuery('#filtercont').css('height', filterheight);
            jQuery("#filterfloat").css('top', "0px");
            jQuery('#filtercont').css('height', '');
        }
    });
}

function ToggleFilters() {
    if ((jQuery(document).scrollTop() - jQuery("#filterfloat").offset().top) > 30) {
        jQuery("#filterfloat").animate({ top: "0px" }, { duration: 500, queue: false });
    }
    else { jQuery("#filterfloat").animate({ top: ((jQuery("#filterfloat").height()) * -1) + 35 + "px" }, { duration: 500, queue: false }); }
}

function ShrinkFilters() {
    jQuery("#filterfloat .filters").slideUp(1);
    jQuery("#filtertab").show();
}

function ExpandFilters(hideButton) {
    jQuery("#filterfloat .filters").slideDown(500);
    if (hideButton) { jQuery("#filtertab").hide(); }
}

function bounceCart(isasync) {
    try {
        if (isasync) {
            bounceTheCart();
        } else {
            Event.observe(window, 'load', bounceTheCart, false);
        }
    } catch (e) {
        alert(e.message);
    }
}

function bounceTheCart() {
    TogglePanel('MCOpenClose', 'MCStretch', 'slide', 8, '', '');
    carttimer = setTimeout("TogglePanel('MCOpenClose','MCStretch','slide',8,'','');", 8000);
}

function TogglePanel(triggerid, itemid, effect, speed, openedtext, closedtext) {
    var length = (speed / 10);
    var trigger = MM_findObj(triggerid);
    var item = MM_findObj(itemid);
    var currentclass;
    if (trigger) {
        currentclass = trigger.className;
    } else {
        currentclass = '';
    }
    /*** Start Effect ***/
    Effect.toggle(item, effect, { duration: length, beforeStart: function () {
        /*** Change class and text of trigger ***/
        if (currentclass.indexOf('opened') > -1) {
            trigger.className = trigger.className.replace('opened', 'closed');
            //alert('closing');
            if (openedtext.length > 1) {
                trigger.innerHTML = openedtext;
                trigger.title = openedtext;
            }
        }
        else {
            trigger.className = trigger.className.replace('closed', 'opened');
            //alert('opening');
            if (closedtext.length > 1) {
                trigger.innerHTML = closedtext;
                trigger.title = closedtext;
            }
        }
    }
    });
}


function textCounter(textboxid, messageid, maxlimit) {
    var textbox = MM_findObj(textboxid);
    var message = MM_findObj(messageid);
    if (textbox.value.length > maxlimit) {// if too long...trim it!
        textbox.value = textbox.value.substring(0, maxlimit);
        // otherwise, update 'characters left' counter
    }
    else { message.innerHTML = "(" + (maxlimit - textbox.value.length) + " characters remaining)"; }
}



function toggleeffect(elem, effect, dur) {
    var length = (dur / 10);
    //alert(length);
    Effect.toggle(MM_findObj(elem), effect, { duration: length });
}

function setupDraggable(elem, handle) {
    MM_findObj(elem).style.zIndex = 10000;
    new Draggable(MM_findObj(elem), { handle: MM_findObj(handle) });
    MM_findObj(handle).style.cursor = 'move';
}

var sliderValuesChanged = false;
function setupPriceSlider(minid, maxid, minrangeval, maxrangeval, minsetval, maxsetval, ctrlPrefix, updateBuiltQs, fBtn) {

    var handles = [(MM_findObj(ctrlPrefix + 'pshandlel')), (MM_findObj(ctrlPrefix + 'pshandler'))];
    var values = [minsetval, maxsetval];
    MM_findObj(ctrlPrefix + 'psrange').innerHTML = "&pound;" + Math.round(minsetval) + "  -  " + "&pound;" + Math.round(maxsetval);
    minid = ctrlPrefix + minid;
    maxid = ctrlPrefix + maxid;
    var slider = new Control.Slider(handles, MM_findObj(ctrlPrefix + 'pstrack'), {
        range: $R(minrangeval, maxrangeval, false),
        step: 1,
        restricted: true,
        sliderValue: values,
        onSlide: function (values) {
            sliderValuesChanged = true;
            (MM_findObj(minid)).value = Math.round(values[0]);
            (MM_findObj(maxid)).value = Math.round(values[1]);
            MM_findObj(ctrlPrefix + 'psrange').innerHTML = "£" + Math.round(values[0]) + "  -  " + "£" + Math.round(values[1]);
            if (updateBuiltQs) { setPriceQs(); }
            if (fBtn != null) {
                if (Math.round(values[0]) != minrangeval || Math.round(values[1]) != maxrangeval) {
                    if (slctFltrCnt[fBtn] == null || slctFltrCnt[fBtn] == 0) {
                        selectedCountChange(fBtn, 1);
                    }
                } else {
                    if (slctFltrCnt[fBtn] == null) {
                        selectedCountChange(fBtn, 0);
                    } else if (slctFltrCnt[fBtn] == 1) {
                        selectedCountChange(fBtn, -1);
                    }
                }
            }
        }
    });
}

/*** Product Functions ***/


function filterByPrice(btn, ctrlprefix, QS_PRICE_FROM, QS_PRICE_TO, RedirectURL) {
    try {
        var minPrice = MM_findObj(ctrlprefix + QS_PRICE_FROM).value;
        var maxPrice = MM_findObj(ctrlprefix + QS_PRICE_TO).value;
        filterManager.setValue(QS_PRICE_FROM, [minPrice]);
        filterManager.setValue(QS_PRICE_TO, [maxPrice]);
        filterManager.fireEvents();
        //    var redirecturl = RedirectURL;
        //    if (redirecturl.indexOf("%7b") >0) {
        //        redirecturl = redirecturl.replace("%7b0%7d", minPrice);
        //        redirecturl = redirecturl.replace("%7b1%7d", maxPrice);
        //    }else{
        //        redirecturl = redirecturl.replace("{0}", minPrice);
        //        redirecturl = redirecturl.replace("{1}", maxPrice);
        //    }
        //    btn.href=redirecturl;
    } catch (e) {
        alert(e.message);
    }
}

function fadeoutin(action, setid, setcount, buttonid, hidden, altbuttonid) {
    if (MM_findObj(buttonid).getAttribute('disabled') != 'disabled') {
        var currentset = parseInt(MM_findObj(hidden).value);
        var settofade = setid + "_" + currentset;
        var nextsettofade = setid + "_" + (currentset + 1);
        var previoussettofade = setid + "_" + (currentset - 1);
        MM_findObj(altbuttonid).setAttribute('disabled', 'disabled');
        MM_findObj(buttonid).setAttribute('disabled', 'disabled');
        if (action == 'next') {
            if (currentset < setcount) {
                Effect.Fade((MM_findObj(settofade)), { duration: 0.5, afterFinish: function () {
                    currentset++;
                    if (currentset < setcount) {
                        MM_findObj(buttonid).removeAttribute('disabled');
                    }
                    (MM_findObj(hidden)).value = currentset;
                    Effect.Appear((MM_findObj(nextsettofade)), { duration: 0.5 });
                }
                });
            }
            if (currentset >= 1) {
                MM_findObj(altbuttonid).removeAttribute('disabled');
            }
        }
        if (action == 'previous') {
            if (currentset > 1) {
                Effect.Fade((MM_findObj(settofade)), { duration: 0.5, afterFinish: function () {
                    currentset--;
                    if (currentset > 1) {
                        MM_findObj(buttonid).removeAttribute('disabled');
                    }
                    MM_findObj(hidden).value = currentset;
                    Effect.Appear((MM_findObj(previoussettofade)), { duration: 0.5 });
                }
                });
            }
            if (currentset <= setcount) {
                MM_findObj(altbuttonid).removeAttribute('disabled');
            }
        }
    }
}

function ResetCarousel(hidden) {
    var element = jQuery('#' + hidden);
    if (element) { element.val(1); }
}
function ResetCarosel(hidden) {
    ResetCarousel(hidden);
}
//Newsletter
function checkEmail(chkemail, chkevents, chkoffers, chknews) {
    if (chkemail.checked) {
        chkevents.checked = true;
        chkoffers.checked = true;
        chknews.checked = true;
        checkNews(chknews);
    }
    else {
        chkevents.checked = false;
        chkoffers.checked = false;
        chknews.checked = false;
        checkNews(chknews);
    }
}
function checkNews(chknews) {
    if (chknews.checked) {
        Effect.BlindDown((MM_findObj('regnewsc')), { duration: 0.5 });
    }
    else {
        Effect.BlindUp((MM_findObj('regnewsc')), { duration: 0.5 });
    }
}
function checkMobile(chkmobile, txtmobile) {
    if (chkmobile.checked) {
        if (txtmobile.value.length == 0) {
            clearTimeout(timer);
            //alert(txtmobile.value.length);
            chkmobile.checked = false;
            jQuery("#nomobile").fadeToggle("fast");
        }
        else {
            jQuery("#nomobile").hide();
            complete++;
        }
    }
    else { if (complete > 0) { complete--; } }
}
function checkMobileLength(chkmobile, txtmobile) {
    if (txtmobile.value.length == 0) {
        chkmobile.checked = false;
    }
}
function newsletterSwapVisibility(showId, hideId, stage, validationGroup) {
    var showMePane = MM_findObj(showId);
    var hideMePane = MM_findObj(hideId);
    var isOk = true;
    if (stage == 1) { //need to validate
        for (i = 0; i < Page_Validators.length; i++) {
            if (validationGroup == Page_Validators[i].validationGroup) {
                ValidatorValidate(Page_Validators[i]);
                if (!Page_Validators[i].isvalid) {
                    isOk = false;
                }
            }
        }
    }

    if (isOk) { hideValidationSummaries('newsletter'); } else { showValidationSummaries('newsletter'); }

    if (isOk && (showMePane) && (hideMePane)) {
        showMePane.style.display = '';
        hideMePane.style.display = 'none';
        return false;
    } else {
        return false;
    }
}
function showValidationSummaries(valGroup) {
    setValidationSummaries(valGroup, '');
}
function hideValidationSummaries(valGroup) {
    setValidationSummaries(valGroup, 'none');
}
function setValidationSummaries(valGroup, displayVal) {
    var summaries = getElementsByClassName(document, "div", "errorsum");
    for (i = 0; i < summaries.length; i++) {
        if (summaries[i] && (summaries[i].getAttribute('valgrp') == null || summaries[i].getAttribute('valgrp') == (valGroup))) {
            summaries[i].style.display = displayVal;
        }
    }
}
function configureValidationSummaries(valGroup) {
    var isValid = false;
    if (typeof (Page_ClientValidate) == 'function') {
        isValid = Page_ClientValidate(valGroup);
    }

    if (isValid) {
        hideValidationSummaries(valGroup);
    } else {
        showValidationSummaries(valGroup);
    }
}
/** product image hover **/
function setimgtimer(hpanelid, imgSrcId) {
    timer = setTimeout("ShowHoverImg('" + hpanelid + "','" + imgSrcId + "');", 300);
}
function ShowHoverImg(hpanelid, imgSrcId) {
    //CHECK IEMENUFIX.JS
    var img;
    MM_findObj(hpanelid).style.display = '';
    img = MM_findObj(imgSrcId);
    img.src = img.getAttribute("prdsrc");
    img.src = img.src.replace("pllarge", "plhover");
}
function clearimgtimer(hpanelid) {
    clearTimeout(timer);
}
function closehover(hpanelid) {
    timer = setTimeout("hidehoverpanel('" + hpanelid + "');", 300);
}
function hidehoverpanel(hpanelid) {
    //CHECK IEMENUFIX.JS
    MM_findObj(hpanelid).style.display = 'none';
}
function showhover(hpanelid) {
    clearTimeout(timer);
    MM_findObj(hpanelid).style.display = "";
}

/** swatch click **/
var isInHover = true;
function swatchClick(styCode, colourId, prefix, isSale, isNew, newImageUrl, price, altImageUrl) {

    var mainImg = getSwatchControl("img", styCode, "imgprod", prefix);
    var swatchContainer = getSwatchControl("div", styCode, "swcont", prefix);
    var saleSwatchContainer = getSwatchControl("div", styCode, "saleswcont", prefix);
    var saleImg = getSwatchControl("img", styCode, "sale", prefix);
    var newImg = getSwatchControl("img", styCode, "new", prefix);
    var priceCtrl = getSwatchControl("span", styCode, "price", prefix);
    var slctdColour = getSwatchControl("input", styCode, "slctd", prefix);
    var clkSwatch = getSwatchControl("img", styCode, "swtch-" + colourId, prefix);
    var detailsLnk = getSwatchControl("a", styCode, "pdlink", prefix);
    var labelLnk = getSwatchControl("a", styCode, "labellink", prefix);
    if (prefix == '-') {
        var hoverSwatch = getSwatchControl("img", styCode, "swtch-" + colourId, "-hvr-");
        if (hoverSwatch != null) {
            isInHover = false;
            hoverSwatch.onclick();
            isInHover = true;
        }
    }
    var curActiveSwatch;
    if (swatchContainer) {
        curActiveSwatch = getElementsByClassName(swatchContainer, "img", "active_swatch");
    }
    if ((!curActiveSwatch) && (saleSwatchContainer)) {
        curActiveSwatch = getElementsByClassName(saleSwatchContainer, "img", "active_swatch");
    }
    setNewArrivalState(isNew, newImg);
    setSaleState(isSale, swatchContainer, saleSwatchContainer, saleImg, newImg);
    // if we're hovering then set the src directly, otherwise set the prdsrc attribute so it doesn't get loaded every time.
    setMainImg(mainImg, newImageUrl, (prefix == '-hvr-') && !isInHover);
    //set hover image
    jQuery(mainImg).next('img').attr('src', altImageUrl);
    setActiveSwatch(curActiveSwatch, clkSwatch);
    setActivePrice(priceCtrl, price);

    slctdColour.value = colourId;
    setProductDetailsUrl(labelLnk, colourId);
    setProductDetailsUrl(detailsLnk, colourId);

    setProductDetailsjavascript(labelLnk, colourId);
    setProductDetailsjavascript(detailsLnk, colourId);

}

function setProductDetailsjavascript(detailsLnk, colourId) {
    var newQsPart = "colRef:'" + colourId + "'";
    if (!detailsLnk) { return; }
    var onclicktxt = jQuery(detailsLnk).attr('onclick');
    var jsonString;
    if (onclicktxt && onclicktxt != '') {
        var jsonStart = onclicktxt.indexOf('{path');
        var jsonEnd = onclicktxt.indexOf('}');
        jsonString = onclicktxt.substring(jsonStart, (jsonEnd + 1));

        var jsonObject = eval("(" + jsonString + ")");

        jQuery(detailsLnk).unbind('.bensspecialevent');
        jQuery(detailsLnk).bind('click.bensspecialevent', { extradat: jsonObject }, function (e) {
            pageTrack(this, 'browse');
            e.data.extradat.colRef = colourId;
            return loadProductDetail(e.data.extradat);
        });
    }
}

function getSwatchControl(tagName, styCode, ctrlName, prefix) {
    return getElementsByAttributeAndValue(document, tagName, "swctrl", styCode + prefix + ctrlName)[0];
}
function setNewArrivalState(isJustIn, imgJustin) {
    if ((isJustIn) && (imgJustin)) {
        imgJustin.style.display = '';
    }
}
function setSaleState(isSale, swatchContainer, saleSwatchContainer, imgSale, imgNew) {
    if (isSale) { //swap the active tab
        if (swatchContainer) {
            swatchContainer.className = 'tab inactive_tab';
        }
        if (saleSwatchContainer) {
            saleSwatchContainer.className = 'tab active_tab';
            if (imgSale) {
                imgSale.style.display = '';
            }
            if (imgNew) {
                imgNew.style.display = 'none';
            }
        }
    } else {
        if (imgSale) {
            imgSale.style.display = 'none';
        }
        if (swatchContainer) {
            swatchContainer.className = 'tab active_tab';
        }
        if (saleSwatchContainer) {
            saleSwatchContainer.className = 'tab inactive_tab';
        }
    }
}
function setMainImg(mainImg, newImageUrl, doNotPreload) {
    if ((mainImg) && (newImageUrl.length > 0)) { //swap imgUrl
        if (doNotPreload) {
            mainImg.setAttribute("prdsrc", newImageUrl);
        } else {
            mainImg.src = newImageUrl;
        }
    }
}
function setActiveSwatch(curActiveSwatch, clkSwatch) {
    if (clkSwatch) {
        jQuery(clkSwatch).closest('.ctabs').find('.active_swatch').each(function () {
            jQuery(this).removeClass('active_swatch');
        });
        clkSwatch.className = 'active_swatch';
    }
}
function setActivePrice(priceCtrl, priceText) {
    if (priceCtrl != null) {
        priceCtrl.innerHTML = priceText;
    }
}

function setProductDetailsUrl(detailsLnk, colourId) {
    var newQsPart = 'colourRef=' + colourId;
    if (!detailsLnk) { return; }
    if (detailsLnk.href.indexOf('colourRef=') > 0) {
        detailsLnk.href = detailsLnk.href.replace(/colourRef=[0-9]+-[A-Z %20]+/g, newQsPart);
    } else {
        detailsLnk.href += '?' + newQsPart;
    }
}

/* Gift Voucher Selection */
var subtotals = new Array(100);
function changeVoucherQuantity(ddId, removeId, subTotalId, unitPrice, grandTotalId, currency) {
    var dd;
    var removeLink;
    var subTotalCtrl;
    var subTotal;
    var quantity;
    try {
        dd = MM_findObj(ddId);
        removeLink = MM_findObj(removeId);
        subTotalCtrl = MM_findObj(subTotalId);
        quantity = dd.value;
        if (quantity > 0) {
            subTotalCtrl.style.display = "inline";
            removeLink.style.display = "inline";
        } else {
            subTotalCtrl.style.display = "none";
            removeLink.style.display = "none";
        }
        subTotal = quantity * unitPrice;
        subtotals[ddId] = subTotal;
        subTotalCtrl.innerHTML = currency + subTotal;
        recalculateGiftVoucherTotal(grandTotalId, currency);
    } catch (e) {
        //voucher quantity click error 
        alert(e.message);
    }
}

function recalculateGiftVoucherTotal(grandTotalId, currency) {
    var tot = 0;
    var grandTotal;
    grandTotal = MM_findObj(grandTotalId);

    var id;
    for (id in subtotals) {
        if (typeof (subtotals[id]) == 'number') {
            tot += subtotals[id];
        }
    }
    grandTotal.innerHTML = currency + tot;
}

/* Vertical Scrolling */
function scrollVertical(value, element, slider) {
    element.scrollTop = Math.round(value / slider.maximum * (element.scrollHeight - element.offsetHeight));
}

function checkscrollable(element, scrollatheight) {
    MM_findObj('scrollable').scrollTop = 0;
    var elheight = MM_findObj(element).offsetHeight;
    if (elheight < scrollatheight) {
        MM_findObj('scrollbar').style.display = "none";
    }
    else {
        MM_findObj('scrollbar').style.display = "";
        setupscrollbar();
    }
}
function setupscrollbar() {
    var slider1 = new Control.Slider('handle', 'track', {
        axis: 'vertical',
        onSlide: function (v) { scrollVertical(v, $('scrollable'), slider1); },
        onChange: function (v) { scrollVertical(v, $('scrollable'), slider1); }
    });
}

/* TABS */

/** 
if count > 1 then add onclicks 
set active tab to active tab
**/
function registerTabs(namingcontainer, tabcount, activetab) {
    var tabcontainer;
    var tabactionbutton;
    if (tabcount == 1) {
        tabcontainer = MM_findObj(namingcontainer + '_tabc_' + activetab);
        tabactionbutton = MM_findObj(namingcontainer + '_tab_' + activetab);
        SetTabBtnActive(tabactionbutton, namingcontainer, tabcount, activetab);
        SetTabVisibility(tabcontainer);
    } else if (tabcount > 1) {
        var i;
        for (i = 1; i <= tabcount; i++) {
            tabcontainer = MM_findObj(namingcontainer + '_tabc_' + i);
            tabactionbutton = MM_findObj(namingcontainer + '_tab_' + i);
            SetTabClick(tabactionbutton, namingcontainer, tabcount, i);
            if (activetab == i) {
                SetTabBtnActive(tabactionbutton);
                SetTabVisibility(tabcontainer);
            }
        }
    }
}

function SetTabBtnActive(tabactionbutton) {
    var button = (tabactionbutton);
    button.className = "active";
}

function SetTabClick(tabactionbutton, namingcontainer, tabcount, currenttab) {
    var button = (tabactionbutton);
    if (button) {
        //
        button.setAttribute("namingcontainer", namingcontainer);
        button.setAttribute("currenttab", currenttab);
        button.setAttribute("tabcount", tabcount);
        button.onclick = function () { showTabByBtnId(button.id); };
    }
}
function showTabByBtnId(buttonId) {
    var button = MM_findObj(buttonId);
    showtab(button.getAttribute("namingcontainer"), button.getAttribute("currenttab"), button.getAttribute("tabcount"));
}
function SetTabVisibility(tabcontainer) {
    if (tabcontainer) {
        tabcontainer.style.display = '';
    }
}

/** End new tab **/

function showtab(namingcontainer, tab, tabcount) {
    var tabclicked = namingcontainer + '_tab_' + tab;
    var tabtoshow = namingcontainer + '_tabc_' + tab;
    var objtabs;
    for (i = 1; i < (tabcount + 1); i++) {
        try {
            var tabs = namingcontainer + '_tab_' + i;
            var tabtoclear = namingcontainer + '_tabc_' + i;
            objtabs = MM_findObj(tabs);
            if (objtabs) {
                objtabs.className = '';
                MM_findObj(tabtoclear).style.display = "none";
            }
        } catch (e) { }
    }
    MM_findObj(tabclicked).className += ' active';
    MM_findObj(tabtoshow).style.display = "";
    return false;
}

function postBackHiddenField(hiddenFieldID, hiddenFieldValue) {
    //alert('changing hidden field');
    var hiddenField = MM_findObj(hiddenFieldID);
    if (hiddenField) {
        hiddenField.value = hiddenFieldValue;
        __doPostBack(hiddenFieldID, '');
    }
}

//function to show other stores if other is selected
function showOtherStoresDropDown(panelid, checkboxid, storeddlId) {
    try {
        var panel = MM_findObj(panelid);
        var chk = MM_findObj(checkboxid);
        var ddlStore = MM_findObj(storeddlId);
        if (chk.checked) {
            panel.style.display = "";
            ddlStore.style.display = "";
        } else {
            panel.style.display = "none";
            ddlStore.style.display = "none";
        }

    } catch (e) { }
}
//function to show postcode search button if UK only
function showpclookup(list, button, address, postcode, instructions, results) {
    try {
        var buttonobj = MM_findObj(button);
        var addressobj = MM_findObj(address);
        var instructionsobj = MM_findObj(instructions);
        var postcodeobj = MM_findObj(postcode);
        var resultsobj = MM_findObj(results);
        if (MM_findObj(list).value != "") {
            if ((MM_findObj(list).value == "GB") || (MM_findObj(list).value == "JE") || (MM_findObj(list).value == "GG")) {
                if (buttonobj) { buttonobj.style.display = ""; }
                if (addressobj) { addressobj.style.display = "none"; }
                if (instructionsobj) { instructionsobj.style.display = ""; }
                if (postcodeobj) { postcodeobj.style.display = ""; }
            }
            else {
                if (buttonobj) { buttonobj.style.display = "none"; }
                if (addressobj) { addressobj.style.display = ""; }
                if (instructionsobj) { instructionsobj.style.display = "none"; }
                if (postcodeobj) { postcodeobj.style.display = ""; }
                if (resultsobj) { resultsobj.style.display = "none"; }
            }
        }
        else {
            if (buttonobj) { buttonobj.style.display = "none"; }
            if (addressobj) { addressobj.style.display = "none"; }
            if (instructionsobj) { instructionsobj.style.display = "none"; }
            if (postcodeobj) { postcodeobj.style.display = "none"; }
        }
    }
    catch (e) { alert('showpclookup: ' + e); }
}

function OpenSendWLForm(panelid, buttonid) {
    MM_findObj(buttonid).style.display = "none";
    Effect.BlindDown(MM_findObj(panelid), { duration: 0.5 });
}


/** helper method to find elements by class name **/

function getElementsByClassName(oElm, strTagName, strClassName) {
    return getElementsByAttributeAndValue(oElm, strTagName, "class", strClassName);
}

function getElementsByAttributeAndValue(oElm, strTagName, strAttName, strAttValue) {
    if (!oElm) { return; }
    var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = [];
    strAttValue = strAttValue.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strAttValue + "(\\s|$)");
    var oElement;
    var i;
    for (i = 0; i < arrElements.length; i++) {
        oElement = arrElements[i];
        if (oRegExp.test(oElement.getAttribute(strAttName))) {
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements);
}

function getElementsByIdList(elementIdArray) {
    var arrReturnElements = [];
    var foundObj;
    var i;
    for (i = 0; i < elementIdArray.length; i++) {
        foundObj = MM_findObj(elementIdArray[i]);
        if (foundObj) {
            arrReturnElements.push(foundObj);
        }
    }
    return (arrReturnElements);
}
var selectBox = true;
function changedCheckState(selectLinkList, checkIdList) {
    var checkboxes = getElementsByIdList(checkIdList);
    if (checkboxes) {
        var i;
        for (i = 0; i < checkboxes.length; i++) {
            checkboxes[i].checked = selectBox;
        }
    }
    if (!selectBox) {
        text = 'SELECT ALL';
    } else {
        text = 'DESELECT ALL';
    }
    selectBox = !selectBox;
    if (selectLinkList) {
        var j;
        for (j = 0; j < selectLinkList.length; j++) {
            var link = MM_findObj(selectLinkList[j]);
            link.innerHTML = text;
        }
    }
}

/** Show / Hide Size Guide **/

function showProductGuide(pnlId, ifrmId) {
    try {
        MM_findObj(pnlId).style.display = '';
        var ifrm = MM_findObj(ifrmId);
        if (ifrm) {
            var src = ifrm.getAttribute("ppsrc");
            if (src) {
                ifrm.setAttribute("src", src);
            }
        }
    } catch (e) { alert(e); }
}
function hideProductGuide(pnlId) {
    try {
        MM_findObj(pnlId).style.display = 'none';
    } catch (e) { }
}

/** End  SG **/

/** jump menu **/
function applySearch(dropdownId) {
    var dropDown = MM_findObj(dropdownId);
    var redirecturl = dropDown[dropDown.selectedIndex].value;
    window.location = redirecturl + '#' + filterManager.getFilterHash();
}
function applySearchWithBase(dropdownId, baseUrl) {
    var dropDown = MM_findObj(dropdownId);
    var redirecturl = dropDown[dropDown.selectedIndex].value;
    if (!baseUrl) {
        baseUrl = '';
    }
    window.location = baseUrl + redirecturl;
}

function popCurrencies(hid) {
    if (MM_findObj(hid).value == "") {
        postBackHiddenField(hid, 'true');
    }
}

/** searching **/

function StripDoubleSlashes(inputstr) {
    var outputstr = inputstr;
    while (outputstr.match('//')) {
        outputstr = outputstr.replace('//', '/');
    }
    return outputstr;
}

function PerformSearch(baseUrl, searchtextboxId, dropdownId) {
    //alert('searching');
    var base = baseUrl;
    var searchTerm = escape(MM_findObj(searchtextboxId).value);
    var department = MM_findObj(dropdownId).value;
    var redirecturl = '';
    if (!(department) || (department.toLowerCase() != '/About_Us/FAQs/'.toLowerCase())) {
        redirecturl = base + department + 'search.aspx';
        redirecturl = StripDoubleSlashes(redirecturl).replace(':/', '://');
        redirecturl = redirecturl + '?term=' + searchTerm;
        window.location = redirecturl.toLowerCase();
    } else {
    redirecturl = base + '/FAQs/Questions.aspx';
        redirecturl = StripDoubleSlashes(redirecturl).replace(':/', '://');
        redirecturl = redirecturl + '?term=' + searchTerm;
        window.location = redirecturl.toLowerCase();
    }
}
function PerformFaqSearch(baseUrl, searchtextboxId, dropdownId) {
    var base = baseUrl;
    var searchTerm = escape(MM_findObj(searchtextboxId).value);
    var department = MM_findObj(dropdownId).value;
    window.location = (base + department + 'questions.aspx?term=' + searchTerm).toLowerCase();
}


var registeredActiveMutual;
function setMutualExclusiveStyle(classname, objId, group) {
    setMutualExclusiveStyle(classname, objId, group, '', false);
}

function setMutualExclusiveStyle(classname, objId, group, appendToOldClassName) {
    var objectToChange;
    var oldObject;
    var registeredActiveMutualItem;
    var index;
    var appendOnNew = false;
    try {
        objectToChange = MM_findObj(objId);
        if (registeredActiveMutual && registeredActiveMutual.length > 0) {
            index = groupIndex(group);
            if (index > -1) {
                registeredActiveMutualItem = registeredActiveMutual[index];
            }
        }

        if (registeredActiveMutualItem != null && objId == registeredActiveMutualItem.objectDOMId) { return; }

        if (registeredActiveMutualItem) {
            oldObject = MM_findObj(registeredActiveMutualItem.objectDOMId);
            oldObject.className = registeredActiveMutualItem.oldClassName;
            registeredActiveMutualItem.objectDOMId = objId;
            registeredActiveMutualItem.oldClassName = objectToChange.className;
            if (appendToOldClassName && appendToOldClassName != '' && registeredActiveMutualItem.oldClassName.indexOf(appendToOldClassName) < 0) {
                registeredActiveMutualItem.oldClassName = registeredActiveMutualItem.oldClassName + ' ' + appendToOldClassName;
            }
            registeredActiveMutual[index] = registeredActiveMutualItem;
        } else {
            var cn = objectToChange.className;
            if (appendToOldClassName && appendToOldClassName != '') {
                cn = cn + ' ' + appendToOldClassName;
            }
            registeredActiveMutualItem = { objectDOMId: objId, oldClassName: cn, group: group };
            if (!(registeredActiveMutual)) {
                registeredActiveMutual = [registeredActiveMutualItem];
            } else {
                registeredActiveMutual[registeredActiveMutual.length] = registeredActiveMutualItem;
            }
        }
        objectToChange.className = classname;
    } catch (e) {
        alert(e.message);
    }
}

function groupIndex(group) {
    if (!registeredActiveMutual) { return -1; }
    var i = -1;
    for (i = 0; i < registeredActiveMutual.length; i++) {
        if (registeredActiveMutual[i] && registeredActiveMutual[i].group == group) {
            return i;
        }
    }
    return -1;
}
function setMutualExclusiveStyleWithEffect(classname, pnlId, lnkId, group) {
    var index = groupIndex(group);
    if (index > -1) {
        if (registeredActiveMutual[index] != null && pnlId == registeredActiveMutual[index].objectDOMId) { return; }
        TogglePanel(lnkId, registeredActiveMutual[index].objectDOMId, 'slide', 4, '', '');
    }
    setMutualExclusiveStyle(classname, pnlId, group);
    TogglePanel(lnkId, pnlId, 'slide', 4, '', '');
}

var builtUpString;
var filterApplyBtn;
var fltrPageBase;
var priceFltr;
var priceFrmt;
var minPriceCtrl;
var maxPriceCtrl;
var slctFltrCnt;
function setFilterApplyBtn(btnId, fltrPageBase, qsBase, priceFrmt, priceFltr, minPriceCtrl, maxPriceCtrl) {
    filterApplyBtn = MM_findObj(btnId);
    //alert(filterApplyBtn);
    this.fltrPageBase = fltrPageBase;
    builtUpString = qsBase;
    this.priceFrmt = priceFrmt;
    this.priceFltr = priceFltr;
    this.minPriceCtrl = minPriceCtrl;
    this.maxPriceCtrl = maxPriceCtrl;
}
function addToQs(filter, lnkFltrId) {
    builtUpString = builtUpString + "&" + filter.toLowerCase();
    setBuiltUpUrl();
    selectedCountChange(lnkFltrId, 1);
}
function removeFromQs(filter, lnkFltrId) {
    builtUpString = builtUpString.replace("&" + filter.toLowerCase(), '');
    setBuiltUpUrl();
    selectedCountChange(lnkFltrId, -1);
}
function setBuiltUpUrl() {
    try {
        //sort the querystring parameters
        if (builtUpString.length > 0) {
            var qsArray = builtUpString.split("&");
            qsArray.sort(function (x, y) {
                var a = String(x).toUpperCase();
                var b = String(y).toUpperCase();
                if (a > b) { return 1; }
                if (a < b) { return -1; }
                return 0;
            });
            builtUpString = qsArray.join("&");
        }
        //end
        if (builtUpString.length > 0) {
            if (priceFltr != null && priceFltr.length > 0) {
                if (priceFltr.indexOf('&') == 0) {
                    filterApplyBtn.href = fltrPageBase + '?' + builtUpString.substring(1) + priceFltr;
                } else {
                    filterApplyBtn.href = fltrPageBase + '?' + builtUpString.substring(1) + '&' + priceFltr;
                }
            } else {
                filterApplyBtn.href = fltrPageBase + '?' + builtUpString.substring(1);
            }
        } else {
            if (priceFltr != null && priceFltr.length > 0) {
                if (priceFltr.indexOf('&') == 0) {
                    filterApplyBtn.href = fltrPageBase + '?' + priceFltr.substring(1);
                } else {
                    filterApplyBtn.href = fltrPageBase + '?' + priceFltr;
                }
            } else {
                filterApplyBtn.href = fltrPageBase;
            }
        }
    } catch (e) {
        alert('setBuiltUpUrl:' + e.message);
    }
}
function setSelectedCount(lnkFltrId, qty) {
    if (slctFltrCnt == null) {
        slctFltrCnt = [];
    }
    if (slctFltrCnt[lnkFltrId] == null) {
        slctFltrCnt[lnkFltrId] = qty;
    }
}
function selectedCountChange(lnkFltrId, qty) {
    var lnkFltr = MM_findObj(lnkFltrId);
    var oldQty = slctFltrCnt[lnkFltrId];
    var newQty = slctFltrCnt[lnkFltrId] + qty;
    if (oldQty != null) {
        var rami;
        if (registeredActiveMutual) {
            for (i = 0; i < registeredActiveMutual.length; i++) {
                if (registeredActiveMutual[i]) {
                    if (registeredActiveMutual[i].group == 'filtersb') {
                        rami = registeredActiveMutual[i];
                    }
                }
            }
        }
        if ((rami) && (newQty == 0)) {
            rami.oldClassName = rami.oldClassName.replace(' selected', '');
        } else if ((rami) && (oldQty == 0)) {
            rami.oldClassName += ' selected';
        }
        slctFltrCnt[lnkFltrId] = newQty;
    } else {
        slctFltrCnt[lnkFltrId] = qty;
    }
}
function toggleFilterCheck(checked, filter, lnkFltrId) {
    if (checked) {
        addToQs(filter, lnkFltrId);
    } else {
        removeFromQs(filter, lnkFltrId);
    }
}
function setPriceQs() {
    if (sliderValuesChanged) {
        var minPrice = MM_findObj(minPriceCtrl).value;
        var maxPrice = MM_findObj(maxPriceCtrl).value;
        var newQs = priceFrmt.replace("%7b0%7d", minPrice);
        newQs = newQs.replace("%7b1%7d", maxPrice);
        priceFltr = '&' + newQs;
        setBuiltUpUrl();
    }
}

function checkShipTo(option) {
    if (option) {
        var lblErrorId = option.getAttribute("shiptoerrorlbl");
        var lblError = MM_findObj(lblErrorId);
        if (lblError) {
            lblError.style.display = 'none';
            var availableList = option.getAttribute("shiptolist");
            if ((availableList.indexOf(option[option.selectedIndex].value) < 0)) {
                lblError.style.display = '';
            }
        }
    }
}

function updateDeliveryCost(myid, lPrice) {
    var rbl = MM_findObj(myid);
    var lblPrice = MM_findObj(lPrice);

    td = rbl.getElementsByTagName("TD");
    rdo = rbl.getElementsByTagName("INPUT");
    var x;
    for (x = 0; x < td.length; x++) {
        if (rdo[x].checked == true) {
            lblPrice.innerHTML = '£' + rdo[x].value.split('|')[1];
        }
    }
}

String.prototype.count = function (char) {
    return this.split(char).length - 1;
};


function PositionModal(modalid, modalheight) {
    var windowheight = window.innerHeight;
    if (windowheight == undefined) { windowheight = document.body.clientHeight; }
    var remainder = windowheight - modalheight;
    remainder = remainder / 2;
    if (remainder < 100) { MM_findObj(modalid).style.top = remainder + "px"; }
    else { MM_findObj(modalid).style.top = "100px"; }
    if (remainder < 0) { MM_findObj(modalid).style.top = "0px"; }
}

function openAccordionPanel(accordionId) {
    jQuery('h2[rel=' + accordionId + ']').trigger("click");
}

/** CHECKOUT **/
var completeSteps;
function markStepAsComplete(lblId) {
    if (!completeSteps) {
        completeSteps = [lblId];
    } else {
        var inArrayAlready = false;
        var i;
        for (i = 0; i < completeSteps.length; i++) {
            if (completeSteps[i] == lblId) { inArrayAlready = true; }
        }
        if (!inArrayAlready) {
            completeSteps[completeSteps.length] = lblId;
        }
    }
}
function applyCompleteClassName(lblId) {
    if (!isStepComplete(lblId)) {
        var lbl = MM_findObj(lblId);
        if (lbl.className.indexOf('complete') < 0) { lbl.className += ' complete'; }
    }
}
function applyAllCompletedSteps() {
    if (!completeSteps) { return; }
    var i;
    for (i = 0; i < completeSteps.length; i++) {
        var lbl = MM_findObj(completeSteps[i]);
        if (lbl.className.indexOf('complete') < 0) { lbl.className += ' complete'; }
    }
}
function isStepComplete(lblId) {
    if (!completeSteps) { return false; }
    var inArrayAlready = false;
    var i;
    for (i = 0; i < completeSteps.length; i++) {
        if (completeSteps[i] == lblId) { inArrayAlready = true; }
    }
    return inArrayAlready;
}

function CheckNLetter(sender, args) {
    if (complete > 0) {
        args.IsValid = true;
    }
    else {
        args.IsValid = false;
    }
}

function showPanelIfChecked(chkBoxId, elementToShowId) {
    var checkbox = MM_findObj(chkBoxId);
    var elementToShow = MM_findObj(elementToShowId);
    if (checkbox.checked) {
        elementToShow.style.display = '';
    } else {
        elementToShow.style.display = 'none';
    }
}
function setSwatchClicksForStore(inStoreStock, classname, activeclassname) {
    var links = getElementsByClassName(document, "a", classname);
    var activelinks = getElementsByClassName(document, "a", activeclassname);
    if (links) {
        setSwatchClicks(inStoreStock, links);
    }
    if (activelinks) {
        setSwatchClicks(inStoreStock, activelinks);
    }
}
function setSwatchClicks(inStoreStock, links) {
    var i;
    for (i = 0; i < links.length; i++) {
        if ((!(links[i].hash)) && (inStoreStock)) {
            links[i].hash = '#store';
        } else if ((links[i].hash == '#store') && (inStoreStock)) {
            links[i].hash = '#online';
        }
    }
}
/*** BazaarVoice Height Hack ***/
function checkBVWRCont() {
    var elheight = MM_findObj('BVSubmissionContainer').offsetHeight;
    //alert(elheight);
    if (elheight > 300) {
        MM_findObj('bvfakec').style.height = elheight + "px";
        MM_findObj('bvcont').style.top = "-" + (elheight + 90) + "px";
    }
}

/** ASP.NET Validation Injection **/

var aspPage_ClientValidate;
var clientscriptIfFailed;
var clientscriptIfFailedSet;
function hijackValidation() {
    if (typeof (Page_ClientValidate) != "undefined" && aspPage_ClientValidate == null) {
        aspPage_ClientValidate = Page_ClientValidate;
        Page_ClientValidate = LpPage_ClientValidate;
    }
}

function LpPage_ClientValidate(validationGroup) {
    var valid = aspPage_ClientValidate(validationGroup);

    try {
        UpdateLivePersonErrorVariables();
        if (!valid) {
            s.eventList = "event6";
            try {
                GenerateOmnitureValidationSummary();
                void (s.t());
            } catch (e) {
                //alert(e);      
            }
            //alert(1); 
            if (clientscriptIfFailedSet) { eval(clientscriptIfFailed); }
        } else {
            s.eventList = "event5";
            void (s.t());
        }
    } catch (ex) {
        //alert(e);
    }

    return valid;
}

function UpdateLivePersonErrorVariables() {
    var messages = '';
    var errorCount = 0;
    var i;
    for (i = 0; i < Page_Validators.length; i++) {
        if (Page_Validators[i] != null && !Page_Validators[i].isvalid) {
            messages = messages + ";" + Page_Validators[i].errormessage;
            errorCount++;
        }
    }

    if (errorCount > 0) { messages = messages.substring(1); }
    lpAddVars('page', 'ErrorName', messages);
    lpAddVars('page', 'ErrorCounter', errorCount);
}

function GenerateOmnitureValidationSummary() {
    for (i = 0; i < Page_Validators.length; i++) {
        var val = Page_Validators[i];
        try {
            if (!val.isvalid && val.controltovalidate) {
                var form_name = val.validationGroup;
                var label_name = getElementsByAttributeAndValue(document, "label", "for", val.controltovalidate);
                var control_name;
                if (label_name && label_name.length > 0) {
                    control_name = label_name[0].textContent.replace('*', '').trim();
                } else {
                    control_name = val.controltovalidate.substring(val.controltovalidate.lastIndexOf('_') + 1).replace('Txt', '').replace('Tb', '').replace('ddl', '').trim();
                }
                var element_error = control_name + ': ' + val.title;
                s.sendFormEvent('e', '" + s.pageName + "', '" + form_name + "', '" + element_error + "');
            }
        } catch (e) {
        }
    }
}

/** Open Popup **/

//function to nicely open popup

function openPopup(destination, options, name) {
    try {
        var newoptions;
        newoptions = options.replace('scrollbars=true', 'scrollbars=1');
        window.open(destination, name, newoptions);
    } catch (e) {
    }
}


function disableAnchor(obj, disable) {
    if (obj != null) {
        if (disable) {
            var href = obj.getAttribute("href");
            var onclick = obj.getAttribute("onclick");
            //First we store previous value in a new attribute 
            obj.setAttribute('disabled', 'disabled');
            if (href && href != "" && href != null) {
                obj.setAttribute('href_bak', href);
            }
            if (onclick != null) {
                obj.setAttribute('onclick_back', onclick);
                obj.removeAttribute('onclick');
            }
            obj.removeAttribute('href');
        }
        else {
            var hrefBack = obj.getAttribute("href_bak");
            var onclickBack = obj.getAttribute("onclick_back");
            obj.removeAttribute('disabled');
            if (onclickBack != null) {
                obj.setAttribute('onclick', onclickBack);
                obj.removeAttribute('onclick_back');
            }
            if (hrefBack != null) {
                obj.setAttribute('href', hrefBack);
                obj.removeAttribute('href_bak');
            }
        }
    }
}

function moveCoStepCond(prevStepLblId, ctrlContainerId, sectionContainerId, activatingHlId, stepLblId, pageName) {
    if (isStepComplete(prevStepLblId)) {
        moveCoStep(ctrlContainerId, sectionContainerId, activatingHlId, stepLblId, pageName);
    }
}

function moveCoStep(ctrlContainerId, sectionContainerId, activatingHlId, stepLblId, pageName) {
    setMutualExclusiveStyleWithEffect('cotostretch', ctrlContainerId, stepLblId, 'co');
    setMutualExclusiveStyle('step current', activatingHlId, 'costeps');
    setMutualExclusiveStyle('step current', stepLblId, 'costeps');
    setMutualExclusiveStyle('sectiontop current', sectionContainerId, 'copnl', 'edit');
    applyAllCompletedSteps();

    try {
        s.pageName = pageName;
        void (s.t());
    } catch (e) { }
}


function pageTrack(hyperlink, trackref) {
    var newurl;
    newurl = hyperlink.href;
    if (newurl.indexOf("?") >= 0) { //i have a querystring
        newurl = newurl + '&pfm=' + trackref;
    }
    else { newurl = newurl + '?pfm=' + trackref; }
    hyperlink.href = newurl;
    //document.location = newurl;
}

function linkCode(category, obj) {
    var s = s_gi(omnituretag);
    s.linkTrackVars = 'eVar38';
    s.linkTrackEvents = 'event25';
    s.eVar38 = category;
    s.events = 'event25';
    s.tl(obj, 'o', '360 View');
}

function omnitrack(obj, eventID, linkName) {
    var s = s_gi(omnituretag);
    s.linkTrackEvents = eventID;
    s.events = eventID;
    s.tl(obj, 'o', linkName);
}
function openThreeSixtyPopUp(url, title, pricetext, brandimg, category, obj) {
    var htmlheader = "<h2>" + title + "</h2><div class='price'>" + pricetext + "</div><img align='top' style='border-width: 0px;' src='" + brandimg + "'>";
    jQuery('#ajaxcont .tstitle').html(htmlheader);
    jQuery('#tsif').attr('src', url);
    jQuery('#tsif').attr('width', 635);
    jQuery('#tsif').attr('height', 550);
    jQuery('#ajaxcont').removeClass('catwalk');
    jQuery('#ajaxcont').css('top', (jQuery(window).scrollTop() + 20) + 'px');
    jQuery('#tsPopUp').css('height', jQuery(document).height() + 'px');
    jQuery('#tsPopUp').fadeIn("slow");
    linkCode(category, obj);
}
function openCatWalkPopUp(url, title, pricetext, brandimg, category, obj) {
    var htmlheader = "<h2>" + title + "</h2><div class='price'>" + pricetext + "</div><img align='top' style='border-width: 0px;' src='" + brandimg + "'>";
    jQuery('#ajaxcont .tstitle').html(htmlheader);
    jQuery('#tsif').attr('src', url);
    jQuery('#tsif').attr('width', 458);
    jQuery('#tsif').attr('height', 626);
    jQuery('#ajaxcont').addClass('catwalk');
    jQuery('#ajaxcont').css('top', (jQuery(window).scrollTop() + 20) + 'px');
    jQuery('#tsPopUp').css('height', jQuery(document).height() + 'px');
    jQuery('#tsPopUp').fadeIn("slow");    
    linkCode(category, obj);
}
function HideThreeSixtyPopUp() {
    jQuery('#tsif').attr('src', "");
    jQuery('#tsPopUp').fadeOut('slow');
}
function ShowRegionPopUp() {
    jQuery('#RegionPopUp').fadeIn('slow');
}
function HideRegionPopUp() {
    jQuery('#RegionPopUp').fadeOut('slow');
}

function ChangeMap(region) {
    jQuery('#worldmap').removeClass().addClass(region);
}

function Required(elementid, messageid) {
    if (jQuery('#' + elementid).val() == '') {
        jQuery('#' + messageid).show();
        return false;
    }
    jQuery('#' + messageid).hide();
    return true;
}

function PageLoadManager() {
    var actions = new Hashtable();
    var keylessActions = [];
    this.setLoadAction = function (key, action) {
        if (key == '') {
            keylessActions.push(action);
        }
        else {
            actions.put(key, action);
        }
    };

    this.getLoadActions = function () {
        return keylessActions.concat(actions.values());
    };
}

function QS(value) {
    _value = value;

    this.addQs = function (qs) {
        var hashstr = qs.replace('#', ''); //
        hashstr = hashstr.replace('?', '');

        if (hashstr && hashstr.length > 0) {
            _value += '&' + hashstr;
        }
    };

    this.ParseQs = function () {
        var form_data = [];
        var hashstr = _value.replace('#', ''); //
        hashstr = hashstr.replace('?', '');
        jQuery.each(hashstr.split('&'), function (i, value) {
            value = value.split("=");
            if (value[0] && value[1]) { form_data[value[0]] = (value[1]).replace("+-+", "&"); }
        });
        return form_data;
    };

    this.parseToHashtable = function () {
        var form_data = new Hashtable();
        var hashstr = _value.replace('#', ''); //
        hashstr = hashstr.replace('?', '');
        jQuery.each(hashstr.split('&'), function (i, value) {
            value = value.split("=");
            if (value[0] && value[1]) {
                var vals = (value[1]).replace("+-+", "&").split(",");
                if (form_data.containsKey(value[0])) {
                    var totalVals = vals.concat(form_data.get(value[0]));
                    form_data.put(value[0], totalVals);
                }
                else { form_data.put(value[0], vals); }
            }
        });
        return form_data;
    };
}

if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str) {
        return this.indexOf(str) == 0;
    };
}

Array.prototype.has = function (v) {
    for (i = 0; i < this.length; i++) {
        if (this[i] == v) { return i; }
    }
    return false;
};

function ProductDetails(str) {
    var StyCodeKey = 'styCode';
    var colRefKey = 'colRef';
    var pathKey = 'path';
    var sizeRefKey = 'sizeRef';
    var fitRefKey = 'fitRef';
    var that = this;
    var hashstr = str.replace('#', '');
    var Keys = [StyCodeKey, colRefKey, pathKey, sizeRefKey, fitRefKey];

    var QsParser = new QS(str);
    var form_data = QsParser.ParseQs();

    function getValue(selector) {
        var val = selector();
        if (val) {
            return val;
        }
        return '';
    }

    this.removeOwnValues = function () {
        var str = '';
        jQuery.each(hashstr.split('&'), function (i, x) {
            splitx = x.split("=");
            var add = true;
            jQuery.each(Keys, function (i, y) {
                if (splitx[0] == y) { add = false; }
            });
            if (add == true) { str += x; }
        });
        if (str == '') { return '-'; }
        else { return str; }
    };

    this.getProductDetailValues = function () {
        return { styCode: form_data.styCode, colRef: form_data.colRef, path: form_data.path, sizeRef: form_data.sizeRef, fitRef: form_data.fitRef };
    };

    this.HasPdInfo = function () {
        return (form_data.styCode && form_data.styCode != '');
    };

    this.getHashString = function (styCode, colRef, path, sizeRef, fitRef) {
        var str = that.removeOwnValues();
        if (str != '') { str += '&'; }
        str += 'styCode=' + styCode;
        if (HasValue(colRef)) { str += '&colRef=' + colRef; }
        if (HasValue(path)) { str += '&path=' + path.replace("&", "+-+"); }
        if (HasValue(sizeRef)) { str += '&sizeRef=' + sizeRef; }
        if (HasValue(fitRef)) { str += '&fitRef=' + fitRef; }
        return str;
    };
}

function HasValue(val) {
    return (val && val != '');
}

function changePage(page) {
    filterManager.changePage(page);
}

var fsz;
function showFSZPopUp(id) {
    fsz = jQuery('#' + id);

    var resizefsz = function () {
        var height = jQuery(window).height();
        if (height > 550) {
            fsz.find('#fszContent').css('height', height - 84 + 'px');
            fsz.find('.ZoomImgContainer').css('height', height - 220 + 'px');
            fsz.find('#pdzoomimages').css('height', height - 200 + 'px');
        }
    };

    resizefsz();
    fsz.show();
    fsz.find('.fszmodal').show();

    jQuery(window).bind('resize.fullScreenZoomEvent', resizefsz);

    var items = fsz.parent().find('.rows a');
    var index = items.index(fsz.parent().find('.rows a.zoomThumbActive'));
    if (index != -1) {
        //'zoomovactiveset'
        var selectedGroup = fsz.parent().find('.ovactiveset').val();
        fsz.find('.zoomovactiveset').val(selectedGroup);
        if (selectedGroup > 1) { fsz.find('.zoomovcont .ovprevious').removeAttr('disabled'); }
        else { fsz.find('.zoomovcont .ovprevious').attr('disabled', 'disabled'); }

        fsz.find('.zoomovcont .rows .row').hide();
        var selected = jQuery(fsz.find('.zoomovcont .rows a')[index]);
        var nextGroup = jQuery(fsz.find('.zoomovcont .rows .row')[parseInt(selectedGroup)]);

        if (nextGroup.length > 0) { fsz.find('.zoomovcont .ovnext').removeAttr('disabled'); }
        else { fsz.find('.zoomovcont .ovnext').attr('disabled', 'disabled'); }
        selected.parent().show();
        selected.trigger('click');
    }
}

function hideFSZPopUp() {
    if (fsz) {
        fsz.fadeOut("slow");
        fsz.find('.fszmodal').fadeOut("slow");
        jQuery(document).unbind('.fullScreenZoomEvent');
    }
}

function switchZoomImage(element, imgUrl, imageno, imageToChange) {
    jQuery(element).parent().find('.zoomThumbActive').removeClass('zoomThumbActive');
    jQuery(element).addClass('zoomThumbActive');
    changeZoomImage(imgUrl, imageno, imageToChange);
}

function changeZoomImage(imgUrl, imageno, fullscreencontainer) {
    fsz = jQuery('#' + fullscreencontainer);
    fsz.find('.fullScreenImgProd').attr("src", imgUrl);
    //update image count
    fsz.find('#zoomimgNo').html(imageno);
}

function updatePdImageNo(imageno, id) {
    jQuery('#' + id).html(imageno);
}

/********************** random padding to see if this fixes ie8 problem (https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=434997) *********************

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse vehicula, arcu non suscipit vulputate, tortor nisl pretium lorem, 
non cursus arcu dui quis nisl. Vestibulum molestie porta nunc et accumsan. In in sem sed odio suscipit sagittis. 
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse potenti. 
Ut auctor neque urna, quis sollicitudin est. Aenean sem tortor, posuere sit amet accumsan eu, blandit ac lacus. 
Vivamus dapibus scelerisque lorem, ac dapibus dui rutrum sed. Donec aliquet, tellus et iaculis cras amet. 

**/

