/*impose maximum length for text area */
function imposeMaxLength(Object, MaxLen) {
    if(Object.value.length > MaxLen)
        Object.value = Object.value.substring(0, MaxLen);
}

function maxLength(field, maxChars, errlblid) {
    if (field.value.length > maxChars) {
        document.getElementById(errlblid).style.display = "block";
        return false;
    }
    else
        document.getElementById(errlblid).style.display = "none";

}

function maxLengthPaste(field, maxChars, errlblid) {
    if ((field.value.length + window.clipboardData.getData("Text").length) > maxChars) {
        document.getElementById(errlblid).style.display = "block";
        return false;
    }
    else
        document.getElementById(errlblid).style.display = "none";
}

/*Publish GiftList - Start*/
/*this function validate the empty search*/
function ValidateSearch(form, defVal) {
    //Trim the search string
    var searchTerm = form.term.value.replace(/^\s*/, "").replace(/\s*$/, "");
    //Search only if term is not empty
    // and not default values
    // and not one of ' " & * !
    if (searchTerm != '' && searchTerm != defVal && searchTerm != '\'' && searchTerm != '"' && searchTerm != '&' && searchTerm != '*' && searchTerm != '!')
        return true;
    else {
        form.term.value = defVal;
        return false;
    }
}
/*this function to reduce quantity*/
function QuantityDown(theForm, theField) {
    var form = document.forms[theForm];
    var field = form[theField];
    var quantity = field.value.replace(/^\s*/, "").replace(/\s*$/, "");
    if (IsNumeric(quantity)) {
        quantity = quantity - 1;
        if (quantity <= 0) {
            quantity = 1;
        }
        field.value = quantity;
    }
    return false;
}
/*this function to increase quantity*/
function QuantityUp(theForm, theField, max) {
    var form = document.forms[theForm];
    var field = form[theField];
    var quantity = 0;
    quantity = field.value.replace(/^\s*/, "").replace(/\s*$/, "");
    if (IsNumeric(quantity)) {
        quantity = parseInt(quantity) + 1;
        if (quantity > max) {
            quantity = max;
        }
        field.value = quantity;
    }
    return false;
}
/*This Function to accept only numeric values or max values*/
function QuantityChange(theForm, theField, max) {
    var form = document.forms[theForm];
    var field = form[theField];
    var quantity = field.value.replace(/^\s*/, "").replace(/\s*$/, "");
    if (IsNumeric(quantity)) {
        if (quantity > max) {
            quantity = max;
        }
        field.value = quantity;
    } else {
        field.value = max;
    }
    return false;
}
/*This Function Converts into numeric values*/
function ConvertToNumeric(theForm, theField, max) {
    var form = document.forms[theForm];
    var field = form[theField];
    field.value = field.value.replace(".","");
    var quantity = field.value.replace(/^\s*/, "").replace(/\s*$/, "");
    if (!IsNumeric(quantity)) {
        field.value = 1;
    } else {
        if (quantity > max) {
            quantity = max;
        }
    }
}

/*Validates if numeric*/
function IsNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;

}

/*Validates if numeric*/
function IsNumericField(theForm, theField) {
    var form = document.forms[theForm];
    var field = form[theField];
    var sText = field.value.replace(/^\s*/, "").replace(/\s*$/, "");
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;

}
/*Publish GiftList - End*/

/*MiniBasket*/
// to rebind the click event from other scripts
function rebindBasketNavClicks() {
    $('.basket-nav-summary-link')
        .unbind('click.expandminibasket')  //had problem with registering twice
        .bind('click.expandminibasket', function () {
            basketnavclick();
            return false;
        });
    };

function basketnavclick() {
    //no need to open for empty basket
    if ($('#mini-basket-content dt').length === 0) return false;

    //sliding effect for bottom part of mini basket
    var basketNav = $('#basket-nav-section');
    var arrow = $('a.basket-nav-summary-link');
    if (basketNav.hasClass('active')) {
        basketNav.find('div.hide').slideUp(400, function () {
            basketNav.removeClass('active');
            basketNav.find('.hide').hide();
        });
        arrow.attr('title', arrow.attr('tooltipExpand'));
    }
    else {
        basketNav.addClass('active').find('.button.hide').show();
        basketNav.find('div.hide').slideDown(400, function () {
            Omniture.SendEvent('event23', 'Mini Cart Views');
            basketNav.find('.hide').show();
            arrow.attr('title', arrow.attr('tooltipCollapse'));
            // *IE7 hack - set the html again so that it displays, otherwise it disappears when there is more than 1 item!
            var html = $("#mini-basket-main").html();
            $("#mini-basket-main").html(html);
        });
        //allow to be hidden if clicked on page
        $('body').one('click', function () {
            if ($('#basket-nav-section div.hide').is(':visible')) {
                $('.basket-nav-summary-link').click();
            }
        });
    }
};


$(document).ready(function () {

    // basket - show stock overlay on hover over stock condition text
    $('.stock-overlay-link').mouseover(function () {
        var id = $(this).attr('id');
        if (id != null && id != 'undefined' && id != '') {
            var splitIndex = id.indexOf("-");
            if (splitIndex > 0) {
                id = id.substring(splitIndex + 1);
            }
            // find the overlay
            var overlay = $('#overlay-' + id);
            if (overlay != null) {
                // correctly position overlay
                // find the line
                $('.hdnLineItemId').each(function (lineindex, lineitem) {
                    if ($(this).attr('value') != null && $(this).attr('value') != 'undefined' && $(this).attr('value') == id) {
                        // correct position
                        overlay.css('top', ($(this).parent().position().top + ($(this).parent().height() / 2)));
                    }
                });
                overlay.show();
            }
        }
    });

    // basket - hide stock overlay on mouse leave stock condition text
    $('.stock-overlay-link').mouseleave(function () {
        var id = $(this).attr('id');
        if (id != null && id != 'undefined' && id != '') {
            var splitIndex = id.indexOf("-");
            if (splitIndex > 0) {
                id = id.substring(splitIndex + 1);
            }
            // find the overlay
            var overlay = $('#overlay-' + id);
            if (overlay != null) {
                overlay.hide();
            }
        }
    });

    /*Global scripts
    ----------------*/

    /* Search Control */
    $('#site-search').focus(function () {
        if ($(this).attr('value') == $('#quicksearch-textvalue').attr('value')) $(this).attr('value', '');
    });
    $('#site-search').blur(function () {
        if ($(this).attr('value') == '') $(this).attr('value', $('#quicksearch-textvalue').attr('value'));
    });

    /*MiniBasket*/
    //only show expand tooltip if basket has contents
    if ($('#mini-basket-content dt').length > 0) {
        var arrow = $('a.basket-nav-summary-link');
        arrow.attr('title', arrow.attr('tooltipExpand'));
    }

    $('.basket-nav-summary-link')
        .unbind('click.expandminibasket')  //had problem with registering twice
        .bind('click.expandminibasket', function () {
            basketnavclick();
            return false;
        });

    /* Account Nav OnClick Active class*/
    $(".right-arrow-minibasket").click(function () {
        basketnavclick();
        return false;
    });

    $('#CloseMinibasket')
        .unbind('click.closeminibasket')  //had problem with registering twice
        .bind('click.closeminibasket', function () {

            //sliding effect for bottom part of mini basket
            var basketNav = $('#basket-nav-section');
            var arrow = $('a.basket-nav-summary-link');
            if (basketNav.hasClass('active')) {
                basketNav.find('div.hide').slideUp(400, function () {
                    basketNav.removeClass('active');
                    basketNav.find('.hide').hide();
                });
                arrow.attr('title', arrow.attr('tooltipExpand'));
            }
            return false;
        });

    /*show/hide*/
    $('.hide').hide();
    $('.show').show();

    /* Account Nav OnClick Active class*/
    $("ul#account-nav li").click(function () {
        var id = $(this).attr('li');
        $("ul#account-nav li").removeClass('selected');
        $(this).addClass('selected');
    });

    /* Basket Nav OnClick Active class*/
    $("ul#basket-nav li a").click(function () {
        var id = $(this).attr('li a');
        $("ul#basket-nav li a").removeClass('selected');
        $(this).addClass('selected');
    });

    /* Dropdown Menu */
    $("ul#main-nav li a").click(function () {
        $("ul#main-nav li a").removeClass('selected');
        $(this).addClass('selected');
    });


    $('ul#main-nav li').hover(
  function () {
      $('ul#main-nav li ul').removeClass('show');
      $(this).find('ul.option').addClass('show');
  }
);
    $('ul#main-nav li').mouseleave(
  function () {
      $(this).find('ul.show').addClass('show');
  }
);

    $('ul#main-nav li').mouseleave(
  function () {
      $(this).find('ul.show').removeClass('show');
  }
);

    //Tool tip			
    $('.tool-tip').click(function () {
        this.tip = this.title;
        this.title = "";

        switch ($(this).attr('class')) {
            case 'tool-tip delivery-info':
                $('.tool-tip-wrap.delivery-info').fadeIn(300);
                // correctly position overlay...
                $('.tool-tip-wrap.delivery-info').css('top', $('.tool-tip.delivery-info').position().top - 40);
                $('.tool-tip-wrap.delivery-info').css('width', 301);
                break;
            case 'tool-tip special-delivery-info':
                $('.tool-tip-wrap.special-delivery-info').fadeIn(300);
                break;
            case 'tool-tip outof-stock-info':
                $('.tool-tip-wrap.outof-stock-info').fadeIn(300);
                break;
            case 'tool-tip insufficient-stock-info':
                $('.tool-tip-wrap.insufficient-stock-info').fadeIn(300);
                break;
            case 'tool-tip error-stock-info':
                $('.tool-tip-wrap.error-stock-info').fadeIn(300);
                break;
            case 'tool-tip product-info':
                $('.tool-tip-wrap').hide();
                var id = $(this).attr('id');
                var splitIndex = id.indexOf("-");
                if (splitIndex > 0) {
                    id = id.substring(splitIndex + 1);
                }
                // find the overlay
                var overlay = $('#tip-' + id);
                if (id != null && id != 'undefined' && id != '') {
                    overlay.fadeIn(300);
                } else {
                    $('.tool-tip-wrap.product-info').fadeIn(300);
                }
                break;

            default:
                $('div.tool-tip-top').attr('class', 'tool-tip-top')
                $('div.tool-tip-top').addClass('tool-default');
        }
        return false;
    })

    $('.tool-tip-close').click(function () {
        $('.tool-tip-wrap').hide();
        return false;
    });

    $('.stock-overlay-tool-tip-close').click(function () {
        $(this).parent().parent().parent().hide();
        return false;
    });



    function hov(loc, cls) {
        if (loc.className)
            loc.className = cls;
    }

    //Modal
    $(document).ready(function () {

        //select all the a tag with name equal to modal
        $('button.over').click(function (e) {
            //Cancel the link behavior
            e.preventDefault();

            //Get the A tag
            var id = $(this).attr('class').split(' ').slice(-1);

            //Get the screen height and width
            var maskHeight = $(document).height();
            var maskWidth = $(window).width();

            //Set heigth and width to mask to fill up the whole screen
            $('.overlaybase').css({ 'width': maskWidth, 'height': maskHeight });

            //transition effect		
            $('.overlaybase').fadeIn(1000);
            $('.overlaybase').fadeTo("slow", 0.8);

            //Get the window height and width
            // var winH = $(window).height();
            //var winW = $(window).width();

            //Set the popup window to center
            //$(id).css('top',  winH/2-$(id).height()/1.5);
            //$(id).css('left', winW/2-$(id).width()/1);

            //transition effect

            $('div.' + id).fadeIn(2000);

        });

        //if close button is clicked
        $('.window .close').click(function (e) {
            //Cancel the link behavior
            e.preventDefault();

            $('.overlaybase').hide();
            $('.window').hide();
        });

        //if mask is clicked
        $('#mask').click(function () {
            $(this).hide();
            $('.window').hide();
        });

    });


    /* This function is used to hide/show register option section on annonymous delivery page */
    function showHideRegRb() {
        var pwsSec = document.getElementById('passwordSection');
        if ($("input[name='rbRegister']:checked").val() == "yes") {
            //show the hidden div
            pwsSec.style.display = "block";
            pwsSec.style.visibility = "visible";
        }
        else {
            //otherwise, hide it
            pwsSec.style.display = "none";
            pwsSec.style.visibility = "hidden";
        }
    }

    //Browser detector
    /*
    CSS Browser Selector v0.3.5 (Feb 05, 2010)
    Rafael Lima (http://rafael.adm.br)
    http://rafael.adm.br/css_browser_selector
    License: http://creativecommons.org/licenses/by/2.5/
    Contributors: http://rafael.adm.br/css_browser_selector#contributors
    */
    function css_browser_selector(u) { var ua = u.toLowerCase(), is = function (t) { return ua.indexOf(t) > -1; }, g = 'gecko', w = 'webkit', s = 'safari', o = 'opera', h = document.documentElement, b = [(!(/opera|webtv/i.test(ua)) && /msie\s(\d)/.test(ua)) ? ('ie ie' + RegExp.$1) : is('firefox/2') ? g + ' ff2' : is('firefox/3.5') ? g + ' ff3 ff3_5' : is('firefox/3') ? g + ' ff3' : is('gecko/') ? g : is('opera') ? o + (/version\/(\d+)/.test(ua) ? ' ' + o + RegExp.$1 : (/opera(\s|\/)(\d+)/.test(ua) ? ' ' + o + RegExp.$2 : '')) : is('konqueror') ? 'konqueror' : is('chrome') ? w + ' chrome' : is('iron') ? w + ' iron' : is('applewebkit/') ? w + ' ' + s + (/version\/(\d+)/.test(ua) ? ' ' + s + RegExp.$1 : '') : is('mozilla/') ? g : '', is('j2me') ? 'mobile' : is('iphone') ? 'iphone' : is('ipod') ? 'ipod' : is('mac') ? 'mac' : is('darwin') ? 'mac' : is('webtv') ? 'webtv' : is('win') ? 'win' : is('freebsd') ? 'freebsd' : (is('x11') || is('linux')) ? 'linux' : '', 'js']; c = b.join(' '); h.className += ' ' + c; return c; }; css_browser_selector(navigator.userAgent);

    //Main function closes here
}
);

var Omniture = {
    SendEvent: function (eventId, eventName) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "events";
        s.linkTrackEvents = eventId;
        s.events = eventId;
        s.tl(this, 'o', eventName);
    },
    SendOutOfStockEvent: function (evarVal, s_account, pid, cid) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "products,events,eVar16";
        s.linkTrackEvents = "event16";
        s.events = "event16";
        s.eVar16 = evarVal;

        // set the products
        s.products = cid + ";" + pid + ";;;;eVar3=" + cid + "|eVar16=" + evarVal + "|events=event16";

        s.tl(this, 'o', "Out of Stock");
    },
    SendMadeToOrderEvent: function (evarVal, s_account, pid, cid) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "products,events,eVar34";
        s.linkTrackEvents = "event34";
        s.events = "event34";
        s.eVar34 = evarVal;

        // set the products
        s.products = cid + ";" + pid + ";;;;eVar3=" + cid + "|eVar34=" + evarVal + "|events=event34";

        s.tl(this, 'o', "Made to Order");
    },
    SendBasketErrEvent: function (evarVal, s_account) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "events,eVar14";
        s.linkTrackEvents = "event14";
        s.events = "event14";
        s.eVar14 = evarVal;
        s.tl(this, 'o', "Basket Page Errors");
    },
    SendDeliveryPageErrEvent: function (evarVal, s_account) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "events,eVar15";
        s.linkTrackEvents = "event15";
        s.events = "event15";
        s.eVar15 = evarVal;

        s.tl(this, 'o', "Delivery Page Errors");
    },
    SendAdvDelivery1PageErrEvent: function (evarVal, s_account) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "events,eVar15";
        s.linkTrackEvents = "event15";
        s.events = "event15";
        s.eVar15 = evarVal;

        s.tl(this, 'o', "Advanced Delivery 1 Page Errors");
    },
    SendAdvDelivery2PageErrEvent: function (evarVal, s_account) {
        if (typeof s_account == "undefined") {
            return;
        }

        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "events,eVar15";
        s.linkTrackEvents = "event15";
        s.events = "event15";
        s.eVar15 = evarVal;

        s.tl(this, 'o', "Advanced Delivery 2 Page Errors");
    },
    SendPaymentErrEvent: function (evarVal, s_account) {
        if (typeof s_account == "undefined") {
            return;
        }

        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "events,eVar15";
        s.linkTrackEvents = "event15";
        s.events = "event15";
        s.eVar15 = evarVal;

        s.tl(this, 'o', "Payment Page Errors");
    },
    SendRegErrEvent: function (evarVal, s_account) {
        if (typeof s_account == "undefined") {
            return;
        }

        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.linkTrackVars = "events,eVar33";
        s.linkTrackEvents = "event31";
        s.events = "event31";
        s.eVar33 = evarVal;

        s.tl(this, 'o', "Registration Page Errors");
    },
    SubmitAddToBasketSingle: function (pid, vid, cid, qty, scopen) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        var events = "";
        s.linkTrackVars = "products,events,eVar3,eVar31";
        if (scopen == "True") {
            s.linkTrackEvents = "scAdd,scOpen";
            s.events = "scAdd,scOpen";
            events = "scAdd,scOpen";
        }
        else {
            s.linkTrackEvents = "scAdd";
            s.events = "scAdd";
            events = "scAdd";
        }
        s.eVar31 = vid;
        s.products = cid + ";" + pid + ";;;;eVar3=" + cid + "|eVar31=" + vid + "|events=" + events;

        s.tl(this, 'o', "Add To Basket");

    },
    RemoveFromBasketSingle: function (pid, vid, qty) {
        if (typeof s_account == "undefined") {
            return;
        }
        s = s_gi(s_account);
        if (typeof s == "undefined") {
            return;
        }
        s.products = ";" + pid;
        s.linkTrackVars = "products,events";
        s.linkTrackEvents = "scRemove";
        s.events = "scRemove";
        s.tl(this, 'o', "Remove From Basket");
    },
    ReadRegValErrors: function (s_account) {
        var valSum = document.getElementById('ctl00_cphBodyContent_vSum');
        if (valSum != null) {
            if (valSum.innerHTML == "\n\n") {
                window.setTimeout('Omniture.ReadRegValErrors(s_account);', 2000);
            }
            else {
                Omniture.SendRegErrEvent(valSum.innerHTML, s_account);
                valSum.innerHTML = "\n\n";
            }
        }
    },
    ReadPayValErrors: function (s_account) {
        var valSum = document.getElementById('ctl00_cphBodyContent_ucPaymentDetails_vSum');
        if (valSum != null) {
            if (valSum.innerHTML == "\n\n") {
                window.setTimeout('Omniture.ReadPayValErrors(s_account);', 2000);
            }
            else {
                Omniture.SendPaymentErrEvent(valSum.innerHTML, s_account);
                valSum.innerHTML = "\n\n";
            }
        }
    }
};

function loadjscssfile(filename, filetype) {
    if (filetype == "js") { //if filename is a external JavaScript file
        var fileref = document.createElement('script')
        fileref.setAttribute("type", "text/javascript")
        fileref.setAttribute("src", filename)
    }
    else if (filetype == "css") { //if filename is an external CSS file
        var fileref = document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    if (typeof fileref != "undefined") {
        document.getElementsByTagName("head")[0].appendChild(fileref);
    }
}


