 /*
$Date: 2009/10/21 11:49:00 $
$Name: ukconcept_v1_r95 $
$Revision: 1.86 $
$State: Exp $
*/

var debug = false;

//Slide item control functionality for the triple panel leader mod
var cott = {
    timeout: 3750,
    maxLink: 0,
    init: function() {
        var topLink = document.getElementById("toplink");
        var links = topLink.getElementsByTagName("A");
        cott.maxLink = links.length;
        if (links.length == 0) { return; }
        for(var i=0;i<links.length;i++) {
            links[i].style.backgroundColor = '#fff';
            links[i].style.zoom = 1;
            if (i>0) { links[i].style.display = 'none'; }
        }
        setTimeout("cott.rotateLink(2)", cott.timeout); 
    },
    fadeTo: function(obj, lvl) {  
        obj.style.filter = 'alpha(opacity=' + lvl*10 + ')';
        obj.style.opacity = lvl/10;
    },
    rotateLink: function (linkNo) {
        cott.displayNextLink(linkNo);
        var nextLink = linkNo + 1;
        if (nextLink > cott.maxLink) {
            nextLink = 1;
        }
        var t = setTimeout("cott.rotateLink(" + nextLink + ")", cott.timeout);
    },
    displayNextLink: function(linkNo) {
        var lastLink = linkNo-1;
        if (lastLink == 0) {
            lastLink = cott.maxLink;
        }
        cott.fade("cottLink"+lastLink, "cottLink"+linkNo, -9.9);
    },
    fade: function(from, to, stage) {
        if (!document.getElementById(from)) { return; }
        fobj = document.getElementById(from);
        if (!document.getElementById(to)) { return; }
        tobj = document.getElementById(to);
        if (stage < 0) {
            cott.fadeTo(fobj, Math.abs(stage));
        } else if (stage == 10) {
            cott.fadeTo(tobj, 9.9);
        } else if (stage == 0) {
            fobj.style.display = 'none';
            cott.fadeTo(tobj, 1);
            tobj.style.display = 'inline';
        } else {
            cott.fadeTo(tobj, stage);
        }
        if (stage != 10) { 
            var b = setTimeout("cott.fade('" + from + "', '" + to + "', " + parseInt(stage+1) + ")", 40);
        }
    }
};

function buildCottImg(num) {
   var cPar = document.getElementById('card_' + num);
   var cImg = document.getElementById('image_' + num);
   var cPhoto = document.getElementById('photo_' + num);

   var newImg = new Image();
  
   if(navigator.userAgent.indexOf('MSIE') != -1) {
        newImg.setAttribute('src', cImg.href);
        if(cImg.firstChild) {
            newImg.setAttribute('alt', cImg.firstChild.nodeValue);
        }
        cottDelay(100);
   } else {
     try
     {
         newImg.setAttribute('src', cImg);
         newImg.setAttribute('alt', cImg.innerHTML);
         cPhoto.appendChild(newImg);
     }
     catch (e)
     {
         //create html string for new input element
         var sHTML = "<a href=\"" + cPhoto + "\" target=\"_blank\"><img alt=\"" + cImg.innerHTML + "\" src=\"" + cImg + "\"></a>";
          cPhoto.innerHTML = sHTML;
     }
  }
 
   if (cPhoto != null) {
        try
        {
            cPhoto.appendChild(newImg);
        }
        catch (e){}
        cPhoto.removeAttribute("id");
        cImg.parentNode.removeChild(cImg);
   } else {
        try
        {
        newImg.parentNode.replaceChild(newImg,cImg);
        }
        catch (e){}
   }
     return false;
}

function cottDelay(millis) {
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate-date < millis);
}

function displayCottMods(firstMod) {
  modInst = modInst + firstMod;
  if(modInst == -1) {
      modInst = maxCards - 1;
  }

  for (var m=0; m<3; m++) {
     var inst = (modInst + m)%(maxCards);
     var topcard='showcard'+ m;
     var hiddenCardId = "card_" + inst;
     var parentDiv = document.createElement("div");
     var hiddenCard = document.createElement("div");

     if(document.getElementById('image_'+inst)) {
         buildCottImg(inst);

         if(navigator.userAgent.indexOf('MSIE') != -1) {
             cottDelay(200);
         }
     }

     hiddenCard.id = "slot_" + inst;
     hiddenCard.className = "card";
     hiddenCard.innerHTML = (document.getElementById(hiddenCardId).innerHTML);
     parentDiv.appendChild(hiddenCard);
     document.getElementById(topcard).innerHTML = parentDiv.innerHTML;
  }
    return false;
}

function cottInit() {

   displayCottMods(0);
   document.getElementById('topHiddenModules').className="hideCards";
   //document.getElementById('arrows').className="show_arws";
   document.getElementById('showcard0').className="showCards";
   document.getElementById('showcard1').className="showCards";
   document.getElementById('showcard2').className="showCards";
}

//  THIS FUNCTION IS USED TO IMPLEMENT OMNITURE LINK TRACKING
//  REQUIRES OBJECT AND TITLE AS INPUT PARAMETERS
function sendOmnitureLT(obj,linkName) {
    s_265.prop20 = linkName;
    s_265.tl(obj,'o',linkName);
}

//Top Picks Functionality
var bigImg = []
function hideThis(e) {
    this.style.display = "none";
}

function hideAll() {
    for(hi=0; hi<bigImg.length; hi++) {
        if($(bigImg[hi])) {
            $(bigImg[hi]).style.display = "none";
        }
    }
}

function isThisIE() {
    if (getBrowser() == "internetexplorer")
        return 1;
    else
        return 0;
}

function findPosX(obj){
    var curleft=0;
    while (obj.offsetParent){
        curleft+=obj.offsetLeft;
        obj=obj.offsetParent;
    }
    curleft+=obj.offsetLeft;
    return curleft;
}

function findPosY(obj) {
    var curtop = 0;
    while(obj.offsetParent){
        curtop += obj.offsetTop;
        obj=obj.offsetParent;
    }
    curtop+=obj.offsetTop;
    return curtop;
}

var browserIsIE = isThisIE();
function ZoomIn(obj,isCatalogue, thumbsCollection, imageKey, collectionID) {

    if (!isBodyLoaded) {
        return;
    }

    hideAll();
    var url;
    var collectionType = eval('zoomThumbImages' + collectionID + '.type');
    if(!$("div_"+obj.parentNode.id)) {
        tmpDiv                  = document.createElement("div");
        tmpDiv.id               = "div_"+obj.parentNode.id;
        tmpDiv.style.position   = "absolute";
        tmpDiv.onmouseout       = hideThis;
        tmpDiv.className        = "top_pick_big_pic_holder";
        if(isCatalogue == "true" || isCatalogue == true)
            url = "javascript:window.location.href='"+obj.childNodes[1 - browserIsIE].href+"'";
        else
            url = "isopenFullChromeWindow('"+obj.childNodes[1 - browserIsIE].href+"', 'ManufacturerDetails'); return false;";
        tmpDiv.innerHTML        = "<div class=\"module_picture\" onmouseover=\"displayThis(this.parentNode);\"><img onclick=\""+url+"\" alt=\"\" border=\"0\" onmouseout=\"javascript:if(isThisIE()){window.event.cancelBubble=true;}\" src=\""+loadZoomImage(imageKey, thumbsCollection)+"\"/></div>";
        tmpDiv.innerHTML        = tmpDiv.innerHTML + "<div class=\"top_pick_big_pic_description\" onmouseover=\"displayThis(this.parentNode);\">"+obj.parentNode.childNodes[obj.parentNode.childNodes.length-(1+(!isThisIE()))].innerHTML+"</div>";
        document.body.appendChild(tmpDiv);

        // check whether thumb nail gallery is in rows of 3 or 5 and position the left images within the border
        if (collectionType == 'top_picks_five') {
            if (imageKey == "1" || imageKey == "6" || imageKey == "11")
                tmpDiv.style.left   = (findPosX(obj)) + "px";
            else
                tmpDiv.style.left   = (findPosX(obj)-22) + "px";
        } else if (collectionType == 'top_picks_three') {
            if (imageKey == "1" || imageKey == "4" || imageKey == "7")
                tmpDiv.style.left   = (findPosX(obj)) + "px";
            else
                tmpDiv.style.left   = (findPosX(obj)-22) + "px";
        }

        if (isThisIE())
            tmpDiv.style.top = (findPosY(obj.parentNode)-80) + "px";
        else
            tmpDiv.style.top = (findPosY(obj.parentNode)-70) + "px";
            
        tmpDiv.style.display    = "block";
        bigImg[bigImg.length]   = "div_"+obj.parentNode.id;
    } else {
        $("div_"+obj.parentNode.id).style.display   = "block";
    }
}

function displayThis(obj) {
    obj.style.display = 'block';
}

var zoomThumbImages = {
    getCollection: function(zoomImagesString) {
        var result = {};   // The result is a collection of key/value pairs
        var zoomImageCollectionString = zoomImagesString;  //load zoom image versions
        if (!zoomImageCollectionString)
            return result;
        var pairs = zoomImageCollectionString.split("||");
        var splitPair;
        for (var i = 0; i < pairs.length; i++) {   // Load the key/values of the collection  
            splitPair = pairs[i].split("==");
            result[splitPair[0]] = splitPair[1];
        }
        return result;
    },
    type: ""
}

function preloadZoomImages(zoomImagePreloader, zoomThumbImagesCollection) {
    var preloaderCount = 0;
    for (var key in zoomThumbImagesCollection) {
        zoomImagePreloader[preloaderCount] = new Image();
        zoomImagePreloader[preloaderCount].src = zoomThumbImagesCollection[key];
        preloaderCount += 1;
    }
}

function loadZoomImage(imageKey, zoomThumbImagesCollection) {
    if(imageKey != zoomThumbImagesCollection[imageKey])
        return zoomThumbImagesCollection[imageKey];
}

// CORE UTILITY FUNCTION THAT ACTUALLY CREATES THE WINDOW AND GIVES FOCUS TO IT
function isopenWindow(url, name, properties, openerName) {
    if(url == ""){return false;}
    var agent = navigator.userAgent.toLowerCase();
    if (agent.indexOf("win") != -1 && agent.indexOf("aol") !=-1) {
        if (name != null && name.length > 0) {
            var openWinCheck = window.open("about:blank", name, properties);
            if (openWinCheck != null) {
                openWinCheck.close();
            }
        }
    }
    winReference = window.open(url, name, properties);
    winReference.focus();
    if (openerName) self.name = openerName;
        return winReference;
}

// OPEN A FULL-CHROME (ALL GUI ELEMENTS) WINDOW
// THIS IS LIKE USING A TARGET="_BLANK" IN A NORMAL LINK BUT ALLOWS FOCUSSING THE WINDOW
function isopenFullChromeWindow(url, name, openerName) {
    if(url == ""){return false;}
    var agent = navigator.userAgent.toLowerCase();
    var ref = isopenWindow(url, name, 'directories,location,menubar,resizable,scrollbars,status,toolbar');
    return ref;
}

function priceFilter(lo_p,hi_p){
    if(lo_p!='any' && lo_p!='any'){
        var objRegExp  =  /^((\d*)|(\d*\.\d{1,2}))$/;
        var flag1 = objRegExp.test(lo_p);
        var flag2 = objRegExp.test(hi_p);
        flag2 = (hi_p == "0") ? false : objRegExp.test(hi_p);
        
        if(lo_p != "" && !flag1){
            printError("Enter Valid Currency");
            return false;
        } else if(hi_p != "" && !flag2){
            printError("Enter Valid Currency");
            return false;
        } else{
            printError(true);
        }
        if ((lo_p != "" && hi_p != "") && (Number(lo_p) < 0 || Number(hi_p) < 0)){
            printError("Negative values not allowed");
            return false;
        }
        if((lo_p != "" && hi_p != "") &&  (Number(lo_p) >= Number(hi_p))){
            printError("Incorrect Price Range");
            return false;
        } else{
            printError(true);
        }
    }
}

function showMoreFilter(showFilter, moreOptions) {
    filterObj = document.getElementById(showFilter);
    if(!filterObj) return false;

    filterObj.className = "moreFilter";

    var filters = filterObj.getElementsByTagName("li");
    for(var i=0; i < filters.length; i++) {
        filters[i].className = "showFilter";
    }


    moreLink = document.getElementById(moreOptions);
    if(!moreLink) return false;

    if(moreLink.className == "" || moreLink.className == "showFilter") {
        moreLink.className = "linkHide";
        moreLink.style.display = "";
    }
}

var fadeIn;
var fadeOut;

function toggleSub(subId) {
    subObj = document.getElementById(subId);
    if(!subObj) return false;

    var subOl = document.createElement("ul");
    subOl.id = subId + 'a';
    subOl.innerHTML = subObj.innerHTML;
    subObj.parentNode.appendChild(subOl);

    var subHeight = (document.getElementById(subId + 'a').offsetHeight);
    subObj.parentNode.removeChild(subOl);
    fadeIn = {height: {from:5, to:subHeight}};
    fadeOut = {height: {from:subHeight, to:1}};

    if(subObj.parentNode.className == "" || subObj.parentNode.className == "mOut") {
         fadeOpen(subObj, subHeight, fadeIn.height.from); 
         subObj.parentNode.className = "mOver";
    } else {
        fadeClose(subObj, fadeOut.height.to, fadeOut.height.from);
        subObj.parentNode.className = "mOut";
    }
}

function fadeOpen(obj, subHeight, currentHeight) {
    sHeight = subHeight;
    subObj = obj;
    if (currentHeight <= subHeight) {
        height = currentHeight + 20;
        //subObj.className = 'subNavOpen';
        subObj.style.height = height;
        setTimeout("fadeOpen(subObj, sHeight, height)", 0);
    }
}

function fadeClose(obj, subHeight, currentHeight) {
    sHeight = subHeight;
    subObj = obj;
    if (sHeight < currentHeight) {
        height = currentHeight - 20;
        if (height < 20) {
            height = 1;
        }
        //subObj.className = 'subNavClose';
        subObj.style.height = height;
        setTimeout("fadeClose(subObj, sHeight, height)", 0);
    }
}

function displayRotator() {
    if ( document.getElementById('leadRotatorContent') && document.getElementById('LR0')) {
        var leadRC = document.getElementById('leadRotatorContent');
        leadRC.innerHTML = document.getElementById('LR0').innerHTML;

        if (getElementsByClassName('pg_left',leadRC.parentNode,'div').length) {
            if (getElementsByClassName('pg_left',leadRC.parentNode,'div')[0].getElementsByTagName('a')[0]) {
                var leadRCNav = getElementsByClassName('pg_left',leadRC.parentNode,'div')[0].getElementsByTagName('a')[0];
                leadRCNav.onclick = function() {leadRotatorPrevious();};
                leadRCNav.href = "#";
            }
        }

        if (getElementsByClassName('pg_right',leadRC.parentNode,'div').length) {
            if (getElementsByClassName('pg_right',leadRC.parentNode,'div')[0].getElementsByTagName('a')[0]) {
                var leadRCNav = getElementsByClassName('pg_right',leadRC.parentNode,'div')[0].getElementsByTagName('a')[0];
                leadRCNav.onclick = function() {leadRotatorNext();};
                leadRCNav.href = "#";
            }
        }
        document.getElementById('currentFrame').innerHTML = '1';
    }
}

function leadRotatorNext() {
    currentFrame = currentFrame + 1;
    if (currentFrame >= numFrames) {
        currentFrame = 0;
    }
    if (document.getElementById('LR' + currentFrame) && document.getElementById('leadRotatorContent') && document.getElementById('currentFrame')) {
        var HTML = document.getElementById('LR' + currentFrame).innerHTML;
        document.getElementById('leadRotatorContent').innerHTML = HTML;
        document.getElementById('currentFrame').innerHTML = currentFrame + 1;
    }
}

function leadRotatorPrevious() {
    currentFrame = currentFrame - 1;
    if (currentFrame < 0) {
        currentFrame = numFrames - 1;
    }
    if (document.getElementById('LR' + currentFrame) && document.getElementById('leadRotatorContent') && document.getElementById('currentFrame')) {
        var HTML = document.getElementById('LR' + currentFrame).innerHTML;
        document.getElementById('leadRotatorContent').innerHTML = HTML;
        document.getElementById('currentFrame').innerHTML = currentFrame + 1;
    }
}

// JS For product details page
function imagePopup(imgsrc, windowTitle, width, height) {
    var imgurl = '/shopping_productdetailpopup.adp?title=' + windowTitle + '&src=' + imgsrc;
    var x, y = 0;

    if (screen) {
        x = (screen.availWidth - width) / 2;
        y = (screen.availHeight - height) / 2;
    }

    var properties = 'width=' + width + 
                     ',height=' + height +
                     ',screenX=' + x + ',screenY=' + y;

    var win = window.open(imgurl, 'productdetailpopup', properties);
    win.focus();
}

/*jslint browser:true, nomen:false */
/*global IFRAMESHIM */
IFRAMESHIM = {

    _elements: [],

    _ids: {},

    _log: [],

    _determineOffset: function (node, property) {
        var result = 0;
        while (node !== document.body && node) {
            result += node[property] || 0;
            node = node.offsetParent || node.parentNode;
        }
        return result;
    },

    _showShim: function (shim, element) {
        shim.style.width = element.clientWidth;
        shim.style.height = element.clientHeight - 25;
        shim.style.top = 25; //this._determineOffset(element, 'offsetTop');
        shim.style.left = 0; //this._determineOffset(element, 'offsetLeft');
        shim.style.position = 'absolute';
        shim.style.display = 'block';
        shim.style.zIndex = '0';
        shim.style.border = '0';
    },

    _createShim: function (id) {
        var result = document.createElement('iframe');
        result.id = 'shim-iframe-' + id;
        result.style.display = 'none';
        return result;
    },

    _debug: function (message) {
        this._log.push(message);
        /*if (console && console.log) {
            console.log(message);
        }*/
    },
            
    _eventHandler: function (that, f, args) {
        return function () {
            return f.apply(that, args);
        };
    },

    _showLog: function () {
        alert(this._log.join('\n'));
    },

    _lookupShim: function (id) {
        var result = document.getElementById('shim-iframe-' + id);
        if (!result) {
            this._debug('Could not find shim iframe "shim-iframe-' + id + '"');
        }
        return result;
    },

    _lookupElement: function (id) {
        var result = document.getElementById(id);
        if (!result) {
            this._debug('Could not find element "' + id + '"');
        }
        return result;
    },

    _checkCondition: function (element) {
        var state = element.condition();
        if (state !== element.state && state) {
            return true;
        }
        return false;
    },
                     
    update: function () {
        for (var i = 0; i < this._elements.length; i += 1) {
            var element = this._elements[i];
            var state = element.condition();
            if (state !== element.state) {
                if (state) {
                    this.show(element.id);
                } else {
                    this.hide(element.id);
                }
                element.state = state;
            }
        }
    },

    updateElement: function (id) {
    },

    startPolling: function () {
        /* FIXME Do this only in IE6 */
        if (this._elements.length === 1) {
            window.setInterval(this._eventHandler(this, this._update), 100);
        }
    },

    init: function (id, condition) {
        var iframe,
            element = document.getElementById(id);
        this._debug('init("' + id + '")');
        if (!element) {
            this._debug('No element with the id "' + id + '"');
            return;
        }
        var newElement = {
            id: id,
            node: element,
            condition: condition,
            state: condition()
        };
        this._elements.push(newElement);
          
        iframe = this._createShim(id);

        element.parentNode.appendChild(iframe);
    },

    show: function (id) {
        var iframe  = this._lookupShim(id),
            element = this._lookupElement(id);
        this._debug('show("' + id + '")');
        if (iframe && element) {
            this._showShim(iframe, element);
        }
    },

    hide: function (id) {
        var iframe = this._lookupShim(id);
        this._debug('hide("' + id + '")');
        if (iframe) {
            iframe.style.display = 'none';
        }
    }
};

/***********************************************************
Shopping Sub Navigation Functions
Description: Submenu toggle functionality
Functions: 
         toggleSecLinksOn(obj): Displays appropriate submenu
         toggleSecLinksOff(obj): Hides appropriate submenu
         keepSecLinks(obj): Overrides the action to hide submenu
         menuInactive(): Hides submenu when other navigation events were not fired
***********************************************************/
initShoppingSubNav = function() {
    navRoot = document.getElementById("shopNav");
    for (i=0; i<navRoot.childNodes.length; i++) {

        node = navRoot.childNodes[i];
        //find menu category links and attach event handlers
        if (node.nodeName=="LI") {
            node.onmouseover=function() {
                toggleSecLinksOn(this);
            }
            node.onmouseout=function() {
                menuInactive();
            }
            //find menu category link's submenu and attach event handlers
            for(j=0; j<node.childNodes.length; j++) {
                subNode = node.childNodes[j];
                if (subNode.nodeName=="UL") {
                    if (subNode.parentNode.id.match('subN') && navigator.userAgent.match(/(MSIE [56]|AOL - [56])/)) {
                        IFRAMESHIM.init('box-' + node.id, function (element) {
                            return function () {
                                return null !== element.className.match(/rollover/);
                            };
                        }(subNode.parentNode));
                    }
                    subNode.onmouseover=function() {
                        keepSecLinks(this);
                    }
                    subNode.onmouseout=function() {
                        toggleSecLinksOff(this);
                    }
                    //check submenu content and if no sub-depts exist, shrink submenu width
                    for(k=0; k<subNode.childNodes.length; k++) {
                        subULNode = subNode.childNodes[k];
                        if (subULNode && subULNode.firstChild) {
                            if (subULNode.firstChild.nodeName=="P") {
                                subNode.style.width = "15em";
                                for(z=0; z<subNode.childNodes.length; z++) {
                                    subLINode = subNode.childNodes[z];
                                    if (subLINode.nodeName=="LI") {
                                        subLINode.style.width = "15em";
                                    }
                                }
                                break;
                            }
                        }
                    }
                }
            }
         }
    }
}

var branch, rollouttime;
function toggleSecLinksOn(obj) {
    clearTimeout(rollouttime);
    if(branch != undefined)
        branch.className = branch.className.replace(/ ?rollover/g, '');
    
    branch = document.getElementById(obj.id);
    branch.className = branch.className + " rollover";
    IFRAMESHIM.update(); 
}

function toggleSecLinksOff(obj) {
    rollouttime = setTimeout(function(){branch.className = branch.className.replace(/ ?rollover/g, '');IFRAMESHIM.update();},600);
}

function keepSecLinks(obj) {
    clearTimeout(rollouttime);
    branch.className = branch.className + " rollover";
    IFRAMESHIM.update(); 
}

function menuInactive() {
    branch.className = branch.className.replace(/ ?rollover/g, '');
    IFRAMESHIM.update(); 
}

/***********************************************************
Google Adsense Late Load
***********************************************************/
var googleAdsLateLoad = new Object();
var searchQuery = "";
var shoppingPageTitle = "";
var isShoppingSearchPage = "";
var debug = "";
var googleAdPagination = "1";
var shoppingShortCat = ""

function googleAdsLateLoader() {
    var shoppingSponsoredLinks = getElementsByClassName('shoppingGoogleAdSense',document,'div');
    var shoppingSponsoredLinksPlaceholderCount = shoppingSponsoredLinks.length;
    if (getElementsByClassName('pagination_current_page',document,'span').length) {
        var paginationCurrentPage = getElementsByClassName('pagination_current_page',document,'span');
        googleAdPagination = paginationCurrentPage[0].innerHTML
    }

    makeRequest('/shopping_ajax.adp?shoppingSponsoredLinksPlaceholderCount=' + shoppingSponsoredLinksPlaceholderCount +
                '&q=' + searchQuery + 
                '&shoppingPageTitle=' + shoppingPageTitle +
                '&isShoppingSearchPage=' + isShoppingSearchPage +
                '&shoppingShortCat=' + shoppingShortCat +
                '&debug=' + debug +
                '&adpage=' + googleAdPagination +
                '&action=googleAdSense', 
                fillGoogleAFS, null, 'text');
}

function fillGoogleAFS(url,response,obj) {
    if (shoppingPageTitle.length != 0 || searchQuery.length != 0) {
        var googleAdsPackage = response.split('<!-- *~/~* -->');
        var placeHolder = getElementsByClassName('shoppingGoogleAdSense',document,'div');

        for(var i=1;i<googleAdsPackage.length;i++) {
            if (googleAdsPackage[i].match('googad') == null) {
                if (placeHolder[i-1].parentNode.className.match("vertical_htmlblock") != null) {
                    placeHolder[i-1].parentNode.style.display = 'none';
                } else {
                    placeHolder[i-1].style.display = 'none';
                    //if this is the top block then give pagination some padding
                    if (i == 1) {
                        if (getElementsByClassName('pagination', document, 'div')[0]) {
                            getElementsByClassName('pagination', document, 'div')[0].marginBottom = "10px";
                        }
                    }
                }
            } else {
                // can be remved once this JS is called only once.
                placeHolder[i-1].style.display = 'block';
                placeHolder[i-1].parentNode.style.display = 'block';
                placeHolder[i-1].innerHTML = googleAdsPackage[i];
            }
        }
    }
    parent.resizeIframeIfInMorpheus();
}

/*
AJAX Facetor and AJAX Top200
*/
function displayHiddenFacets() {
    var availableHiddenFacets = "";
    if (getElementsByClassName('hidden-facet', document, 'h4').length) {
        availableHiddenFacets = getElementsByClassName('hidden-facet',document,'h4');
        for(var i=0;i < availableHiddenFacets.length;i++) {
            availableHiddenFacets[i].style.display = "block"
        }
    }
    if (getElementsByClassName('hidden-facet', document, 'li').length) {
        availableHiddenFacets = getElementsByClassName('hidden-facet',document,'li');
        for(var i=0;i < availableHiddenFacets.length;i++) {
            availableHiddenFacets[i].style.display = "block"
        }
    }
    if (getElementsByClassName('hidden-facet', document, 'ul').length) {
        availableHiddenFacets = getElementsByClassName('hidden-facet',document,'ul');
        for(var i=0;i < availableHiddenFacets.length;i++) {
            availableHiddenFacets[i].style.display = "block"
        }
    }
}

function checkInvalidCharacters(url) {
    var hrefCheck = url
    hrefCheck = hrefCheck.replace(/%27/gi, "%5c%27");
    hrefCheck = hrefCheck.replace(/'/gi, "%5c%27");
    hrefCheck = hrefCheck.replace(/"/gi, "%5c%22");
    hrefCheck = hrefCheck.replace(/%22/gi, "%5c%22");
    hrefCheck = hrefCheck.replace(/%26/gi, "ampersand");
    return hrefCheck;
}

function facetsTransform() {
    var facetLinksArray = "";
    if (document.getElementById('facetedSearch')) {
        facetLinksArray = document.getElementById('facetedSearch').getElementsByTagName('a');
        for(var i=0;i<facetLinksArray.length;i++) {
            if (!(facetLinksArray[i].className == "moreOptionsLink")) {
                var hrefCheck = checkInvalidCharacters(facetLinksArray[i].href);
                facetLinksArray[i].href = "javascript: updateFacetor('"+hrefCheck+"');";
            }
        }
    }
    if (document.getElementById('selectedFilters')) {
        facetLinksArray = document.getElementById('selectedFilters').getElementsByTagName('a');
        for(var i=0;i<facetLinksArray.length;i++) {
            if (!(facetLinksArray[i].className == "moreOptionsLink")) {
                var hrefCheck = checkInvalidCharacters(facetLinksArray[i].href);
                facetLinksArray[i].href = "javascript: updateFacetor('"+hrefCheck+"');";
            }
        }
    }
}
function facetsFormTransform() {
    //transform form 'actions'
    var facetLinksArray = "";
    if (getElementsByClassName('shoppingInteractive', document, 'form').length) {
        facetLinksArray = getElementsByClassName('shoppingInteractive', document, 'form');
        for(var i=0;i<facetLinksArray.length;i++) {
            facetLinksArray[i].action = "javascript: updateFacetor('"+facetLinksArray[i].action+"', '"+facetLinksArray[i].id+"');";
        }
    }
    //update appropriate top200 links
    if (getElementsByClassName('displayMode', document, 'div').length) {
        facetLinksArray = getElementsByClassName('displayMode', document, 'div')[0].getElementsByTagName('a');
        for(var i=0;i<facetLinksArray.length;i++) {
            var hrefCheck = checkInvalidCharacters(facetLinksArray[i].href);
            facetLinksArray[i].href = "javascript: updateFacetor('"+hrefCheck+"');";
        }
    }
    if (getElementsByClassName('pagination', document, 'div').length) {
        facetLinksArray = getElementsByClassName('pagination', document, 'div')
        for (var i=0;i<facetLinksArray.length;i++) {
            facetInnerLinksArray = facetLinksArray[i].getElementsByTagName('a');
            for(var j=0;j<facetInnerLinksArray.length;j++) {
                if (i == 1) {
                    //only do this for the botom pagination
                    //deals with js scope issues
                    (function () {
                        var hrefCheck = checkInvalidCharacters(facetInnerLinksArray[j].href);
                        facetInnerLinksArray[j].onclick = function() {updateFacetor( hrefCheck );};
                        facetInnerLinksArray[j].href = "#refineYourSearchAnchor";
                    })();
                } else {
                    var hrefCheck = checkInvalidCharacters(facetInnerLinksArray[j].href);
                    facetInnerLinksArray[j].href = "javascript: updateFacetor('"+hrefCheck+"');";
                }
            }
        }
    }
}

function updateFacetor(requestedUrl, formObj) {
    var formElementId = "";
    var feFacetQuerystring = "";
    if (!(typeof formObj == 'undefined')) {
        formElement = document.getElementById(formObj);
        formElementId = formElement.id;
    }
    switch(formElementId) {
        //update querystring values
        case 'top200pppage':
            formElementInner = formElement.getElementsByTagName('select')[0];
            feFacetQuerystring = feFacetCurrentQuerystring.replace(/pppage=[^&?]*&?/i, 'pppage='+formElementInner[formElementInner.selectedIndex].value+'&');
            break;
        case 'top200sortBy':
            formElementInner = formElement.getElementsByTagName('select')[0];
            feFacetQuerystring = feFacetCurrentQuerystring.replace(/sort=[^&?]*&?/i, 'sort='+formElementInner[formElementInner.selectedIndex].value+'&');
            formElementInner = document.getElementsByName('pppage')[0];
            feFacetQuerystring = feFacetQuerystring.replace(/pppage=[^&?]*&?/i, 'pppage='+formElementInner.value+'&');
            break;
        case 'priceRange':
            formElementUserLoP = document.getElementsByName('lo_p')[0].value;
            formElementUserHiP = document.getElementsByName('hi_p')[0].value;

            if (formElementUserLoP != "" && formElementUserHiP != "") {
                if (formElementLoP != "" && formElementHiP != "") {
                    feFacetQuerystring = feFacetCurrentQuerystring.replace(/lo_p=[^&?]*&?/i, 'lo_p='+formElementUserLoP+'&');
                    feFacetQuerystring = feFacetQuerystring.replace(/hi_p=[^&?]*&?/i, 'hi_p='+formElementUserHiP+'&');
                } else {
                    feFacetQuerystring = feFacetCurrentQuerystring + "&lo_p="+formElementUserLoP+'&hi_p='+formElementUserHiP;
                }
            } else {
                //if both empty do nothing to current facets
                if (formElementUserLoP != "" && formElementUserHiP == "") {
                    if (formElementLoP != "") {
                        feFacetQuerystring = feFacetCurrentQuerystring.replace(/lo_p=[^&?]*&?/i, 'lo_p='+formElementUserLoP+'&');
                    } else {
                        feFacetQuerystring = feFacetCurrentQuerystring + "&lo_p="+formElementUserLoP;
                    }
                } else if (formElementUserLoP == "" && formElementUserHiP != ""){
                    if (formElementLoP != "") {
                        feFacetQuerystring = feFacetCurrentQuerystring.replace(/hi_p=[^&?]*&?/i, 'hi_p='+formElementUserHiP+'&');
                    } else {
                        feFacetQuerystring = feFacetCurrentQuerystring + "&hi_p="+formElementUserHiP;
                    }
                } else {
                    feFacetQuerystring = feFacetCurrentQuerystring;
                }
            }
            formElementHiP = formElementUserHiP;
            formElementLoP = formElementUserLoP;
            break;

        default:
            feFacetQuerystring = requestedUrl.split('?')[1];
    }
    if (feFacetPId != "") {
        feFacetPId = feFacetPId.replace('|', '');
        feFacetPId = "|"+feFacetPId;
    }

    //check if the current request url querystring contains a 'hi_p' or a 'lo_p'
    facetPriceRangeToken = feFacetQuerystring;
    facetPriceRangeTokenRegEx = new RegExp("lo_p", "i");
    facetPriceRangeTokenMatchResults = facetPriceRangeToken.match(facetPriceRangeTokenRegEx);
    if (facetPriceRangeTokenMatchResults == null) {
        formElementLoP = "";
    }
    facetPriceRangeTokenRegEx = new RegExp("hi_p", "i");
    facetPriceRangeTokenMatchResults = facetPriceRangeToken.match(facetPriceRangeTokenRegEx);
    if (facetPriceRangeTokenMatchResults == null) {
        formElementHiP = "";
    }

    //update current querystring
    if (feFacetQuerystring.substr(feFacetQuerystring.length - 1) == "&") {
        feFacetQuerystring = feFacetQuerystring.substring("0", (feFacetQuerystring.length - 1));
    }
    feFacetCurrentQuerystring = feFacetQuerystring;
    displayLoader('facetedSearch');
    facetReqUrl = '/shopping_ajax.adp?action=facetorUpdate&'+feFacetQuerystring+'&baseUrl='+feFacetBaseList+feFacetPId;
    if (debug) {
        alert('AJAX Request: '+facetReqUrl);
    }
    makeRequest(facetReqUrl, facetorTransform, null, 'text');
}

function facetorTransform(url,response,obj) {
   //extract sections from response
    var facetorResponse = response.split('<!-- *~/~* -->');

    if (document.getElementById('pagetitle')) {
        facetPageTitleInnerHTML = facetorResponse[0];
        facetPageTitleInnerHTMLRegEx = new RegExp("<h2.+>[^>]*</h2>", "i");
        facetPageTitleMatchResults = facetPageTitleInnerHTML.match(facetPageTitleInnerHTMLRegEx);
        if(facetPageTitleMatchResults != null){
            facetPageTitleInnerHTML = facetPageTitleMatchResults[0].replace(/<h2 class=\"subheadline\">/i, "").replace(/<\/h2>/i, "");
            if (document.getElementById('pagetitle').getElementsByTagName('h2')[0]) {
                document.getElementById('pagetitle').getElementsByTagName('h2')[0].innerHTML = facetPageTitleInnerHTML;
            }
        }
    }
    if (document.getElementById('facet')) {
        document.getElementById('facet').innerHTML = facetorResponse[1];
    }
    if (document.getElementById('navCrum')) {
        document.getElementById('navCrum').innerHTML = facetorResponse[1];
    }
    if (document.getElementById('top200')) {
        document.getElementById('top200').innerHTML = facetorResponse[2];
    }
    shoppingFacetInit();
    showTop200DropDowns();
    googleAdsLateLoader();
    hideLoader();
    sendOmniturePI('shopping facet ajax');
}

function shoppingFacetInit() {
    //JS enabled - display availableHiddenFacets.
    displayHiddenFacets();
    //Update facet links
    facetsTransform();
    facetsFormTransform();
}

function validateCurrency(inputName) {
    var errorMsg = document.getElementById("errorMsgFilter");
    var searchTermInputField = document.getElementById(inputName);
    var objRegExp  =  /^((\d*)|(\d*\.\d{1,2}))$/;
    var flag = objRegExp.test(searchTermInputField.value);
    if(searchTermInputField.id == "hi_p")
        flag = (searchTermInputField.value == "0")? false : objRegExp.test(searchTermInputField.value);
    if(searchTermInputField.value != "" && !flag){
        errorMsg.style.display = "inline";
        searchTermInputField.style.color = "#FF0000";
    }
    else{
        errorMsg.style.display = "none";
        searchTermInputField.style.color = "#000000";
    }
}


// AJAX Product Details Tabs
function tabsTransform() {
    // Get all the links within the tabs
    if (document.getElementById('menu')) {
        tabsLinksArray = document.getElementById('menu').getElementsByTagName('a');
        for(var i=0;i<tabsLinksArray.length;i++) {
            tabsLinksArray[i].href = "javascript:updateTabs('"+tabsLinksArray[i].href+"');";
        }
    }

    // Get the links for the pagination within tabs
    if (getElementsByClassName('pagination', document, 'div').length) {
        paginationLinksArray = getElementsByClassName('pagination', document, 'div');
        for (var i=0;i<paginationLinksArray.length;i++) {
            paginationInnerLinksArray = paginationLinksArray[i].getElementsByTagName('a');
            for(var j = 0;j<paginationInnerLinksArray.length;j++) {
                if (i == 1) {
                    //only do this for the botom pagination
                    //deals with js scope issues
                    (function () {
                        var tempUrl = paginationInnerLinksArray[j].href;
                        paginationInnerLinksArray[j].onclick = function() { updateTabs( tempUrl ); };
                        paginationInnerLinksArray[j].href = "#productDetailsTabs";
                    })();
                } else {
                    paginationInnerLinksArray[j].href = "javascript: updateTabs('"+paginationInnerLinksArray[j].href+"');";
                }
            }
        }
    }

    // Get the links for the compare prices tab for quality
    if (document.getElementById('subMenuGreen')) {
        qltyLinksArray = document.getElementById('subMenuGreen').getElementsByTagName('a');
        for(var i=0;i<qltyLinksArray.length;i++) {
            qltyLinksArray[i].href = "javascript:updateTabs('"+qltyLinksArray[i].href+"');";
        }
    }

    // Get the links for the compare prices sort options
    if (getElementsByClassName('header', document, 'tr').length) {
        sortLinksArray = getElementsByClassName('header', document, 'tr')
        for (var i=0;i<sortLinksArray.length;i++) {
            sortInnerLinksArray = sortLinksArray[i].getElementsByTagName('a');
            for(var j=0;j<sortInnerLinksArray.length;j++) {
                sortInnerLinksArray[j].href = "javascript:updateTabs('"+sortInnerLinksArray[j].href+"');";
            }
        }
    }
}

function updateTabs(requestedUrl, formObj) {
    var formElementId = "";
    var feTabsQuerystring
    if (!(typeof formObj == 'undefined')) {
        formElement = document.getElementById(formObj);
        formElementId = formElement.id;
    }
    feTabsQuerystring = requestedUrl.split('?')[1];
    displayLoader('tabs');
    makeRequest('/shopping_ajax.adp?action=productDetails&'+feTabsQuerystring+'&baseUrl='+feTabBaseList, tabsTransformer, null, 'text');

}

function tabsTransformer(url,response,obj) {
    document.getElementById('tabs').innerHTML = response;
    hideLoader();
    tabsTransform();
    googleAdsLateLoader();
}


//Loader Code
// Display 'loading' div
function displayLoader(containerObject) {
    if (document.getElementById('loading_image')) {
        var loading = document.getElementById('loading_image');
        loading.style.left = 0;
        loading.style.top = 0;
        var container = document.getElementById(containerObject);
        var containerWidth = container.offsetWidth;
        var containerHeight = container.offsetHeight;
        if (containerObject == "tabs") {
            //added to keep the loading image in a consistent area for the tabs
            loading.style.marginLeft = getX(container) + (containerWidth / 2.3);
            loading.style.marginTop = getY(container) + 50;
        } else {
            loading.style.left = getX(container) + (containerWidth / 5);
            loading.style.top = getY(container) + (containerHeight / 4);
        }
        loading.style.display = 'inline';
        document.getElementById('loading_image').style.display = 'block'; 
    }
}

// Hide the 'loading' div
function hideLoader() {
    if (document.getElementById('loading_image')) {
        document.getElementById('loading_image').style.display = 'none';
    }
}

function getX(obj) {
    var x = obj.offsetLeft;
    while (obj = obj.offsetParent) x += obj.offsetLeft;
    return x;
}

function getY(obj) {
    var y = obj.offsetTop;
    while (obj = obj.offsetParent) y += obj.offsetTop;
    return y;
}

function showTop200DropDowns() {
    if (getElementsByClassName('sortResults', document, 'div').length) {
        getElementsByClassName('sortResults', document, 'div')[0].style.display = 'block';
    }
    if (getElementsByClassName('limitResults', document, 'div').length) {
        getElementsByClassName('limitResults', document, 'div')[0].style.display = 'block';
    }
}

var isBodyLoaded = false;

//Generic function to run all functions required onload
var bodyLoaded = new Object();
bodyLoaded.onload = function(){
    isBodyLoaded = true;
    if (document.getElementById('top200')) {
        showTop200DropDowns();
    }
    if (document.getElementById('facetedSearch')) {
        shoppingFacetInit();
    }
    
    if(typeof(AOL.js)=='undefined')
    {
        googleAdsLateLoader();
    }

}

// shopping pages custom link tracking

    function getEventTarget(e) { 
	   e = e || event; 
	   return e.target || e.srcElement; 
    } 

    function clickHandler(e) { 
	 
	var target = getEventTarget(e);
        var MerchantUrl = true;
        var locationUrl = document.location; 
        var splitTarget = "";
        var excepUrls   = "";
        var isProductDetailsPage = 0;   
        var LinkId = "";
        var notFooterLinks = true;
        var footerTags     = target.parentNode;
     
        (target.nodeType==3) ? target = target.parentNode : target;
        (target.nodeName=="B") ? target = target.parentNode : target;
        
        // custom link tracking for footer links 
        (footerTags.nodeName =="P") ? footerTags = footerTags.parentNode : target;
        (footerTags.nodeName =="SPAN") ? footerTags = footerTags.parentNode : target;
      
        if (footerTags.nodeName == "DIV")
        {
            footerTags = footerTags.parentNode;
            targetFooterClass = footerTags.getAttribute('class');

            if (targetFooterClass != null)
            {
               if (targetFooterClass.indexOf("footer") >=0)
                {
                    notFooterLinks = false;   
                }
            }
        }                
         // custom link tracking not for footer links 
         if((target.nodeName == 'A' || target.nodeName=='IMG') && notFooterLinks) { 
	            
             excepUrls   = new Array('bluestreak.com','ebay.fr','aol.co.uk','afa-france.com','aol.fr','uk.at.atwola.com','aol.de','de.at.atwola.com','fr.at.atwola.com','google','googleads','aol.com');
                var targetValue = target.getAttribute('href');
                
                if (target.nodeName == 'IMG')
                {
                    targetValue = target.getAttribute('onclick');
                  
                    if (targetValue == null)
                    {
                       (target.nodeName=="IMG") ?  target = target.parentNode : target;
                        targetValue = target.getAttribute('href');
                  
                    }
                }else {
                       targetValue = target.getAttribute('href');
                  
                }
               
               splitTarget = targetValue.split("/");                         
                  
               if (splitTarget[0].search("javascript:") != -1)
                {
                    MerchantUrl = false;
                }
                  
               
                if (targetValue != "undefined" && targetValue != "#")
                {

                 for (var exceptUrlCount=0;exceptUrlCount<excepUrls.length;exceptUrlCount++) {

                      if (targetValue.toString().indexOf(excepUrls[exceptUrlCount])>=0)
					  { 
                            MerchantUrl = false;
                            break;
                      }
				 }
             
   
                if (locationUrl.href.search(product_details) !=-1)
                {  
                    isProductDetailsPage = 1;
                }
                
                if ((MerchantUrl && splitTarget[0]) && isShoppingArticlePage==1) {
                     LinkId = "";
                     LinkId = "shp | "+articleKey+" | "+splitTarget[2];
                     linkCode(LinkId);
                     return(0);
                }	
                
                if ((MerchantUrl && splitTarget[0]) && isShoppingGalleryPage==1) {
                     LinkId = "";
                     LinkId = "shp | "+galleryKey+" | "+splitTarget[2];
                     linkCode(LinkId);
                     return (0);
                     
                }	
                         
                 if ((MerchantUrl && splitTarget[0]) && isProductDetailsPage==1) {
                     LinkId = "";
                     LinkId = "shp | "+categoryName+" | "+product_details+" | "+splitTarget[2];
                     linkCode(LinkId);
                     return(0);
                }	                
     
                if ((MerchantUrl && splitTarget[0]) && isShoppingSearchPage==1) {
                     LinkId = "";
                     LinkId = "shp | "+searchQuery+" | "+omniSearch+" | "+splitTarget[2];
                     linkCode(LinkId);
                     return(0);
                }	
             
                 if (categoryTitle == "")
                 {            
                     categoryTitle    = subCategoryTitle;
                     subCategoryTitle = '';
                 }

                 if ((MerchantUrl && splitTarget[0]) && categoryName && categoryTitle && subCategoryTitle == '' && isShoppingSearchPage==0 && isProductDetailsPage == 0)
                 {    LinkId = "";  
                      LinkId = "shp | "+categoryName+" | "+categoryTitle+" | "+splitTarget[2];
                      linkCode(LinkId);
                 }

                 if ((MerchantUrl && splitTarget[0]) && categoryName && categoryTitle && subCategoryTitle && isShoppingSearchPage==0 && isProductDetailsPage == 0)
                 {
                       LinkId = "";
                       LinkId = "shp | "+categoryName+" | "+categoryTitle+" | "+subCategoryTitle+" | "+splitTarget[2];
                       linkCode(LinkId);
                       return(0);
                 }
                 
                 if ((MerchantUrl && splitTarget[0]) && customLinkValue == 'shopping')
                 {
                       LinkId = "";
                       LinkId = "shp | "+splitTarget[2];
                       linkCode(LinkId);
                       return(0);
                 }
                 
                 if ((MerchantUrl && splitTarget[0]) && customLinkValue != 'shopping' && categoryName == '')
                 {       LinkId = "";
                         LinkId = "shp | "+customLinkValue+" | "+splitTarget[2];
                         linkCode(LinkId);
                         return(0);
                 }
                      
             } 
              
           }	            
} 

Onload.register(bodyLoaded);
