jQuery.noConflict();


jQuery(document).ready(function () {


    jQuery(".SentDate").datepicker({
        showOn: 'button',
        buttonImage: '/images/sent.png',
        buttonImageOnly: true,
        buttonText: "Select a dispatch date for this order",
        dateFormat: "dd/mm/yy"
    });


    jQuery("#specialOfferRotator").cycle({
        fx: 'scrollRight',
        easing: 'backinout',
        timeout: '5500'
    });

    jQuery("#specialOfferRotator .specialofferpreview").hover(
        function () { jQuery(this).addClass("hover"); },
        function () {
            jQuery(this).removeClass("hover");
        });

    jQuery("#specialOfferRotator .specialofferpreview").click(function () {
        window.location = jQuery(this).find("a.button").attr("href");
    });

    jQuery(".newWindow").click(function () {
        window.open(this.href);
        return false;
    });
})

function swapImage(imageToChangeID, imageSRC) {
    //  Swap image
    var imageToSwap
    imageToSwap = document.getElementById(imageToChangeID);

    imageToSwap.src = imageSRC;
}

function swapTitle(elementID, newText) {
    //  Swap title
    var element
    element = document.getElementById(elementID);

    element.title = newText;
}

function swapInnerHTML(elementID, newText) {
    //  Swap inner HTML
    var element
    element = document.getElementById(elementID);

    element.innerHTML = newText;
}

function swapHref(elementID, newHref) {
    var element
    element = document.getElementById(elementID);
    element.href = newHref;
}


function inputStyle(inputID) {
    //  Change style
    var inputBox
    inputBox = document.getElementById(inputID);

    if (inputBox.className == "inputOver") {
        inputBox.className = "inputOut";
    }
    else {
        inputBox.className = "inputOver";
    }
}

function toggleClass(elementID, originalCss, newCss) {
    var element;
    element = document.getElementById(elementID);

    if (element == null)
        return;

    if (element.className == originalCss)
        element.className = newCss;
    else
        element.className = originalCss;
}


function changeStyle(elementID, cssClass) {
    //  Change style
    var element
    element = document.getElementById(elementID);

    element.className = cssClass;
}

function changeStyle2(topElementID, elementID, cssClass) {
    //  Change style
    var topElement
    topElement = document.getElementById(topElementID);
    var element
    element = document.getElementById(elementID);

    for (var i = 0; i < topElement.childNodes.length; i++) {
        var link
        link = topElement.childNodes[i];
        if (link.childNodes.length > 0)
            link.childNodes[0].className = "";
    }

    element.className = cssClass;
}

function showHide(elementID) {
    // Show or hide an element
    var element
    element = document.getElementById(elementID);

    if (element.style.display == "block") {
        element.style.display = "none"; ;
    }
    else {
        element.style.display = "block"; ;
    }
}

function showHide2(elementID) {
    // Show or hide an element
    var element
    element = document.getElementById(elementID);

    if (element.style.display == "none") {
        element.style.display = "block"; ;
    }
    else {
        element.style.display = "none"; ;
    }
}

function confirmMsg(message) {
    // Show a confirmation message

    if (confirm(message))
        return true;
    else
        return false;
}

function onClickMenu(elementID) {
    var justChanged = true;
    var menu;
    menu = document.getElementById(elementID);

    if (menu.style.display == "block") {
        menu.style.display = "none";
    }
    else {
        menu.style.display = "block";
    }

    menu.offclick = function (e) {
        if (!justChanged) {
            // Hide dropdown                                                                       
            menu.style.display = "none";

            removeEventBase(document, 'click', this.offclick, menu.id);
        }
        else {
            justChanged = false;
        }
    } .bind(menu);

    addEventBase(document, 'click', menu.offclick, menu.id);
}

function addEventBase(obj, type, fn, name_hash) {
    if (obj.addEventListener)
        obj.addEventListener(type, fn, false);
    else if (obj.attachEvent) {
        obj["e" + type + fn + name_hash] = fn;
        obj[type + fn + name_hash] = function () { obj["e" + type + fn + name_hash](window.event); }
        obj.attachEvent("on" + type, obj[type + fn + name_hash]);

    }
}

function search(elementID) {
    var element
    element = document.getElementById(elementID);

    if (element.value == "Search")
        element.value = "";
    else if (element.value == "")
        element.value = "Search";
}

function positionBox(boxID, e) {
    var box;
    box = document.getElementById(boxID);

    var obj2 = document.getElementById("mm");
    // Find the content offsetTop and offsetLeft relative to the BODY tag.
    var objLeft = obj2.offsetLeft;
    var objTop = obj2.offsetTop;
    var objParent = obj2.offsetParent;
    while (objParent.tagName.toUpperCase() != 'BODY') {
        objLeft += objParent.offsetLeft;
        objTop = objParent.offsetTop;
        objParent = objParent.offsetParent;
    }

    box.style.position = "absolute";
    box.style.left = e.clientX - objLeft + 40 + "px";
    box.style.top = objTop + "px";
}


function countCharacters(elementID, charactersAllowed, e) {
    var element;
    var keyCode;

    element = document.getElementById(elementID);

    // Look for a label that can be written to so we can show how many characters have been typed
    var lblResult;
    lblResult = document.getElementById(elementID + "_Result");
    if (lblResult != null) {
        var count = element.value.length;
        if (element.value == "")
            count = 0;
        lblResult.innerHTML = "(" + count + "/" + charactersAllowed + ")";
    }

    if (window.event)
        keyCode = window.event.keyCode;
    else
        keyCode = e.which;

    if (count > charactersAllowed) {
        element.className = "inputError";
        return false;
    }

    element.className = "inputOver";

    return true;
}


function populateTitle(target, element) {
    var element = document.getElementById(element);
    var target = document.getElementById(target);

    if (element == null || target == null)
        return;

    if (target.value != null) {
        if (target.value.length > 0)
            return;

        target.value = element.value;
    }
    else if (target.innerHtml != null) {
        if (target.innerHtml.length > 0)
            return;

        target.innerHtml = element.value;
    }
}


function showBlock(element) {
    var ele = document.getElementById(element);

    if (element == null)
        return;

    Effect.toggle(element, 'blind');
}


function drag(element) {
    var ele = document.getElementById(element);

    if (ele == null)
        return;

    new Draggable(element, { snap: 25, onStart: function () { ele.className = "helpDrag"; } });
}

function deleteElement(element) {
    var ele = document.getElementById(element);

    if (ele == null)
        return;

    if (confirm('Are you sure you want to delete this link?')) {
        /*new Effect.Pulsate(ele,{pulses: 1, duration: 1.5, from: 0.7, afterFinish: function() { return true; }});*/
        new Effect.Fade(ele, { afterFinish: function () { return true; } });
    }
    else {
        return false;
    }
}

function SubmitForm(url) {
    document.forms[0].action = url;
    document.forms[0].submit();
}

function test(e, divbox) {

    var panel = document.getElementById(divbox);

    panel.style.left = Event.pointerX(e) - 100 + 'px';
    panel.style.top = Event.pointerY(e) - 100 + 'px';

    //panel.style.left = '0px';
    //panel.style.top = '0px';

    Effect.Appear(divbox, { duration: 0.3 });

}

function showTab(tab) {
    // Show/hide tab panels and set active tab 
    var oTabMore = getObject('tabMore');
    var oPanelMore = getObject('panelMore');
    var oTabTC = getObject('tabTC');
    var oPanelTC = getObject('panelTC');
    var oTabDel = getObject('tabDel');
    var oPanelDel = getObject('panelDel');
    switch (tab) {
        case 'tabMore':
            oTabMore.className = "selected";
            oTabTC.className = "";
            oTabDel.className = "";
            oPanelMore.style.display = "block";
            oPanelTC.style.display = "none";
            oPanelDel.style.display = "none";
            break;
        case 'tabTC':
            oTabMore.className = "";
            oTabTC.className = "selected";
            oTabDel.className = "";
            oPanelMore.style.display = "none";
            oPanelTC.style.display = "block";
            oPanelDel.style.display = "none";
            break;
        case 'tabDel':
            oTabMore.className = "";
            oTabTC.className = "";
            oTabDel.className = "selected";
            oPanelMore.style.display = "none";
            oPanelTC.style.display = "none";
            oPanelDel.style.display = "block";
            break;
    }
}

// Generic get object function
function getObject(obj) {
    var theObj;
    if (document.all) {
        if (typeof obj == "string") {
            return document.all(obj);
        } else {
            return obj.style;
        }
    }
    if (document.getElementById) {
        if (typeof obj == "string") {
            return document.getElementById(obj);
        } else {
            return obj.style;
        }
    }
    return null;
}

// Displays the specified URL in a caption with the specified title
function ShowCaption(url, title) {
    // Set properties & popup window
    var properties = "height=600, width=1024, left=100, top=100, scrollbars=yes, resizable=yes";
    window.open(url, "Information", properties);
}

/*******************************
Overlays
*******************************/

var popTop = 0; var theTop = 0; var old = 0; var temp = null;

function show_overlay() {
    var overlay = document.getElementById("greyoverlay");
    overlay.style.height = f_documentHeight();
    //alert("overlay.style.height: "+overlay.style.height);
    overlay.style.display = "block";

    var obj = document.getElementById("overlayPanel");
    positionObject(obj);
}

function hide_overlay() {
    var obj = document.getElementById("overlayPanel");
    obj.style.display = "none";
    var objOverlay = document.getElementById("greyoverlay");
    objOverlay.style.display = "none";
}

function show_picker(categoryId, productId, colourId) {
    var overlay = document.getElementById("greyoverlay");
    overlay.style.height = f_documentHeight();
    overlay.style.display = "block";

    var data = '{productId : ' + productId + ', colourId : ' + colourId + '}';
    jQuery.ajax({
        type: "POST",
        url: "/JsonColour.asmx/GetColours",
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var data = eval("(" + response + ")");
            var html = '<h3>' + data.ProductTitle + '</h3>';
            var count = 1;
            jQuery.each(data.Swatches, function (rec) {
                var style = '';
                if (this.ImageUrl.length > 0)
                    style = 'background:' + this.RGB + ' url(\'' + this.ImageUrl + '\');';
                else
                    style = 'background:' + this.RGB + ';';
                if (categoryId == 0)
                    html += '<div class="colour-item"><a href="javascript:__doPostBack(\'SelectColour\',\'' + productId + '|' + this.ID + '|' + data.FinishID + '\')" style="' + style + '" title="' + this.Title + '"></a><span>' + this.Title + '</span></div>';
                else
                    html += '<div class="colour-item"><a href="/en-GB/product/' + categoryId + '/' + productId + '-' + this.ID + '-0-0-0.aspx" style="' + style + '" title="' + this.Title + '"></a><span>' + this.Title + '</span></div>';

                if (count == 10) {
                    html += '<div class="clear"></div>';
                    count = 0;
                }

                count++;
            });
            html += '<div class="clear"></div>';
            jQuery("#overlayPickerContainer").html(html);

            var obj = document.getElementById("overlayPicker");
            positionObject(obj);
        },
        error: function (response) {
            alert("Error: " + response);
        }
    });

}

function hide_picker() {
    var obj = document.getElementById("overlayPicker");
    obj.style.display = "none";
    var objOverlay = document.getElementById("greyoverlay");
    objOverlay.style.display = "none";
}

function positionObject(obj) {
    var winHeight = f_clientHeight();
    var scrollYPos = f_scrollTop();
    obj.style.top = (winHeight / 2) + scrollYPos + "px";

    var winWidth = f_clientWidth();
    var scrollXPos = f_scrollLeft();
    obj.style.left = (winWidth / 2) + scrollXPos + "px";

    obj.style.display = "block";
    //moveBg();
}

function moveBg() {
    var obj = document.getElementById("overlayPanel");
    var overlay = document.getElementById("greyoverlay");
    var pos = f_scrollTop();
    if (popTop + pos != old) {
        overlay.style.top = pos + "px";
        overlay.style.width = f_clientWidth() + "px";
        overlay.style.height = f_clientHeight() + "px";
    }
    old = popTop + pos;
    if (overlay.style.display == "block")
        temp = setTimeout("moveBg()", 100);
}

function f_clientWidth() {
    try {
        if (window.innerWidth)
            return window.innerWidth;
        else if (document.documentElement && document.documentElement.clientWidth)
            return document.documentElement.clientWidth;
        else if (document.body)
            return document.body.clientWidth;
    }
    catch (e) {
        return 0;
    }
}

function f_clientHeight() {
    try {
        if (window.innerHeight)
            return window.innerHeight;
        else if (document.documentElement && document.documentElement.clientHeight)
            return document.documentElement.clientHeight;
        else if (document.body)
            return document.body.clientHeight;
    }
    catch (e) {
        return 0;
    }
}

function f_scrollTop() {
    try {
        if (window.pageYOffset)
            return window.pageYOffset;
        else if (document.documentElement && document.documentElement.scrollTop)
            return document.documentElement.scrollTop;
        else if (document.body)
            return document.body.scrollTop;
    }
    catch (e) {
        return 0;
    }
}

function f_scrollLeft() {
    try {
        if (window.pageXOffset)
            return window.pageXOffset;
        else if (document.documentElement && document.documentElement.scrollLeft)
            return document.documentElement.scrollLeft;
        else if (document.body)
            return document.body.scrollLeft;
    }
    catch (e) {
        return 0;
    }
}

function f_scrollHeight() {
    try {
        if (window.pageYOffset)
            return window.pageYOffset;
        else if (document.documentElement && document.documentElement.scrollTop)
            return document.documentElement.scrollTop;
        else if (document.body)
            return document.body.scrollTop;
    }
    catch (e) {
        return 0;
    }
}

function f_documentHeight() {
    var doc_height = document.height ? document.height : 0; // Safari uses document.height

    if (document.documentElement && document.documentElement.scrollHeight) /* Strict mode */
        return Math.max(document.documentElement.scrollHeight, doc_height) + "px";
    else /* quirks mode */
        return Math.max(document.body.scrollHeight, doc_height) + "px";
}

function show_working(msg) {
    var overlay = document.getElementById("overlayWorking");
    overlay.style.height = f_documentHeight();
    overlay.style.display = "block";

    var obj = document.getElementById("working");
    positionObject(obj);

    if (msg.length > 0) {
        var msgSpan = document.getElementById("workingMsg");
        msgSpan.innerHTML = msg;
    }
}

function hide_working() {
    var obj = document.getElementById("working");
    obj.style.display = "none";
    var objOverlay = document.getElementById("overlayWorking");
    objOverlay.style.display = "none";
}


