﻿
var mouseX;
var mouseY;
var mouseScY;

var objLinkAddToWish;
var objLinkAddToWishParentLi;
var objLinkAddToCart;
var objLinkAddToCartParentLi;
var objLinkDesign;
var objLinkDesignParentLi;

var hideInfoCommand = false;


(function($) {

    $.extend({
        add2cart: function(source_id, target_id, callback) {

            var source = $('#' + source_id);
            var target = $('#' + target_id);

            var shadow = $('#' + source_id + '_shadow');
            if (!shadow.attr('id')) {
                $('body').prepend('<div id="' + source.attr('id') + '_shadow" style="display: none; background-color: #ddd; border: solid 1px darkgray; position: static; top: 0px; z-index: 100000;">&nbsp;</div>');
                var shadow = $('#' + source.attr('id') + '_shadow');
            }

            if (!shadow) {
                alert('Cannot create the shadow div');
            }

            shadow.width(source.css('width')).height(source.css('height')).css('top', source.offset().top).css('left', source.offset().left).css('opacity', 0.7).show();
            shadow.css('position', 'absolute');

            shadow.animate({ width: target.innerWidth(), height: target.innerHeight(), top: target.offset().top, left: target.offset().left }, { duration: 500 })
                .animate({ opacity: 0 }, { duration: 100, complete: callback });

        }
    });
})(jQuery);

////////////////////////////////////////////////////////////
var flag = false;
var currImage;
function check_if_close() {
    setTimeout("close_menu()", 100);
}

function close_menu() {
    if (flag == false) {
        $("#productsHoover").hide();
    }
}
function show_menu() {
    if (currImage == null) return;
    var img = currImage;
    var id = img.attr("id");
    var fullpath = img.attr("fullpath");
    var prodname = img.attr("prodname");
    var catname = img.attr("catname");
    var lImagepath = img.attr("srclarge");
    var price = img.attr("price");
    var sizeid = img.attr("sizeid");
    var enableAddToCart = img.attr("isEnableAddToCart") == "true";
    var enableAddToWish = img.attr("isEnableAddToWish") == "true";
    var toShowWishList = img.attr("isToShowWishList") == "true";
    var enableDesign = img.attr("isEnableDesign") == "true";
    showInfo(id, fullpath, prodname, catname, lImagepath, price, sizeid, enableAddToCart, enableAddToWish, toShowWishList, enableDesign);
    $("#productsHoover").show();
    $("#productsHoover").focus();
}

function BindProductImagesContextMenu() {
    $(".prodimage").mouseenter(function() {
        if (flag == false) {
            currImage = $(this);
            setTimeout("show_menu()", 600);
        }
    }).mouseleave(function() {
        currImage = null;
        check_if_close();
    });
    $("#productsHoover").mouseenter(function() {
        $("#productsHoover").show();
        $("#productsHoover").focus();
        flag = true;
    }).mouseleave(function() {
        currImage = null;
        $("#productsHoover").hide();
        flag = false;
    });
}

$(function() {
    BindProductImagesContextMenu();
});

////////////////////////////////////////////////////////////

function EnableAddToCart(id, sizeid) {
    objLinkAddToCart.onclick = function() { AddToCart(id, sizeid) }
    objLinkAddToCartParentLi.onclick = function() { $.add2cart('imgProductImageHuge', 'cartEff') }
}
function DisableAddToCart() {
    objLinkAddToCart.onclick = function() { return false; }
    objLinkAddToCartParentLi.onclick = function() { return false; }
}
function EnableAddToWish(id, toShowWishList) {
    objLinkAddToWish.onclick = function() { AddToWish(id, toShowWishList) }
    objLinkAddToWishParentLi.onclick = function() { $.add2cart('imgProductImageHuge', 'wlEff') }
}
function DisableAddToWish() {
    objLinkAddToWish.onclick = function() { return false; }
    objLinkAddToWishParentLi.onclick = function() { return false; }
}
function EnableDesign(id) {
    objLinkDesignParentLi.style.display = "block";
}
function DisableDesign() {
    objLinkDesignParentLi.style.display = "none";
}

function showInfo(id, fullpath, prodname, catname, lImagepath, price, sizeid, enableAddToCart, enableAddToWish, toShowWishList, enableDesign) {
    var posX;
    var posY = 50;
    var objLayer = document.getElementById("productsHoover");
    var objLayerMain = document.getElementById("productsHooverMain");
    var objLayerBottom = document.getElementById("productsHooverBottom");
    var objLayerTop = document.getElementById("productsHooverTop");

    if (objLinkAddToWish == null) objLinkAddToWish = document.getElementById("linkAddToWish");
    if (objLinkAddToCart == null) objLinkAddToCart = document.getElementById("linkAddToCart");
    if (objLinkDesign == null) objLinkDesign = document.getElementById("linkDesign");
    if (objLinkAddToWishParentLi == null) objLinkAddToWishParentLi = document.getElementById("objLinkAddToWishParentLi");
    if (objLinkAddToCartParentLi == null) objLinkAddToCartParentLi = document.getElementById("objLinkAddToCartParentLi");
    if (objLinkDesignParentLi == null) objLinkDesignParentLi = document.getElementById("objLinkDesignParentLi");

    objLinkAddToCart.innerHTML = "Add to cart";
    if ((typeof window.WishListArr == "object") && detectItem(WishListArr, id)) {
        objLinkAddToWish.innerHTML = "Already in wish";
        enableAddToWish = false;
    }
    else
        objLinkAddToWish.innerHTML = "Add to wish list";


    enableAddToCart ? EnableAddToCart(id, sizeid) : DisableAddToCart();
    enableAddToWish ? EnableAddToWish(id, toShowWishList) : DisableAddToWish();
    enableDesign ? EnableDesign(id) : DisableDesign();

    getItemInfo(id, fullpath, prodname, catname, lImagepath, price);

    //var windowHeight = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight
    var windowHeight = $(window).height();

    var side;
    var vertical;
    var objLayerAdd;

    posX = mouseX;
    posY = mouseY;
    scrY = mouseScY;

    if (windowHeight + scrY - posY > 360) {
        vertical = "bottom";
        objLayerAdd = objLayerBottom;
        objLayerTop.style.display = 'none';
        objLayerBottom.style.display = '';
    }
    else {
        vertical = "top";
        objLayerAdd = objLayerTop;
        objLayerBottom.style.display = 'none';
        objLayerTop.style.display = '';
        posY = posY - 360;
    }

    if (posX > screen.width / 2) {
        side = "right";
        posX = posX - 280;
    }
    else {
        posX = posX + 10;
        side = "left";
    }

    objLayerMain.className = side + vertical;
    objLayerAdd.className = side + vertical;

    objLayer.style.top = posY + "px";
    objLayer.style.left = posX + "px";

}

function getItemInfo(id, fullpath, prodname, catname, lImagepath, price) {
    var objLinkProductEnlarge = document.getElementById("linkProductEnlarge");
    var objLinkProductName = document.getElementById("linkProductName");
    var objLinkCategoryName = document.getElementById("linkCategoryName");
    var objLinkAddToCart = document.getElementById("linkAddToCart");
    var objProductImage = document.getElementById("imgProductImageLarge");
    var imgProductImageHuge = document.getElementById("imgProductImageHuge");
    var imgEnlageImageHuge = document.getElementById("enlage");
    var objSpnPrice = document.getElementById("price");
    var objLinkDesign = document.getElementById("linkDesign");
    objProductImage.style.display = 'none';

    objLinkProductEnlarge.href = fullpath;
    objLinkProductName.innerHTML = prodname;
    objLinkCategoryName.innerHTML = catname;
    objLinkProductName.href = fullpath;
    objLinkDesign.onclick = function() { document.location.href = "/Design-Your-Event-Table/" + id + "/Design-With-" + prodname.replace(" ", "-") };
    var price = parseFloat(price).toFixed(2);
    if (price > 0) {
        objSpnPrice.style.display = 'block';
        objSpnPrice.innerHTML = "<i>Rental prices from:&nbsp;</i>$" + parseFloat(price).toFixed(2);
    }
    else
        objSpnPrice.style.display = 'none';

    lImagepath = lImagepath.toLowerCase();
    var preloadImage = new Image();
    preloadImage.src = lImagepath;
    var preloadHugeImage = new Image();

    preloadHugeImage.src = lImagepath.toLowerCase().replace("=large", "=huge");
    preloadHugeImage.src = preloadHugeImage.src.replace(".jpg", "Huge.jpg");

    objProductImage.alt = prodname;

    try { preloadImage.setAttribute("href", lImagepath); } catch (e) { }
    preloadImage.title = prodname;

    var is_chrome = /chrome/.test(navigator.userAgent.toLowerCase());
    if (is_chrome)
        addEvent(objProductImage, 'load', Delay("ImageLoaded('" + objProductImage.id + "')", 1));
    else {
        objProductImage.onload = function() {
            Delay("ImageLoaded('" + objProductImage.id + "')", 1);
        };
    }

    objProductImage.src = preloadImage.src;

    imgEnlageImageHuge.href = imgProductImageHuge.href = preloadHugeImage.src;
    //imgEnlageImageHuge.href = imgProductImageHuge.href;
    imgProductImageHuge.title = prodname;
    imgEnlageImageHuge.title = prodname;

   // alert(imgEnlageImageHuge.href)
   // alert(imgProductImageHuge.href)
}

function ImageLoaded(objProductImageID) {
    document.getElementById(objProductImageID).style.display = 'block'
}

function hideInfo(e) {

    hideInfoCommand = true;

    var hooverElem = document.getElementById("productsHoover");

    //IE    
    if (window.event) {
        e = window.event;
    }

    try {
        //Where the mouse comes from    
        var relTargFrom = e.relatedTarget || e.fromElement;
        //Where the mouse goes to
        var relTargTo = e.relatedTarget || e.toElement;

        if (relTargTo.id != 'productsHoover' && relTargTo.id != 'productsHooverMain')
            hooverElem.style.display = 'none';
    }
    catch (e) { }
    //    hooverElem.style.display = "none";
    //alert(hooverElem.style.display);

    //            if ((window.event.clientX < hooverElem.style.left) || (window.event.clientX > hooverElem.style.left + hooverElem.width) ||
    //               (window.event.clientY < hooverElem.style.top) || (window.event.clientY > hooverElem.style.top + hooverElem.height)) {
    //$("#productsHoover").fadeOut("fast");
    //            }
}
function hideInfoFromItself(e) {

    var hooverElem = document.getElementById("productsHoover");

    var tg = (window.event) ? e.srcElement : e.target;
    //alert(tg.nodeName);
    //If 'true' -> mouse left the layer, but it's not sure if the mouse left the layer or entered a link, for example, within the layer
    if (tg.nodeName != 'DIV') return;

    var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;

    while (reltg.nodeName.toLowerCase() != 'body' && reltg.id != 'productsHooverMain')
        reltg = reltg.parentNode;

    if (reltg.id == 'productsHooverMain') return;

    hooverElem.style.display = 'none';
}

function AddToWish(pid, toShowWishList) {
    ClearWishList();
    if (toShowWishList) ShowWishList();
    BBJWeb.WebServices.User_WS.AddProductToWish(pid, onAddToWishSuccess);
    if (typeof window.WishListArr == "object") addItem(WishListArr, pid);
    //GuestAlert();
}

function onAddToWishSuccess(isAdded) {
    if (isAdded) {
        objLinkAddToWish.innerHTML = "Done";
        if (typeof window.IncreaseWishAmount == 'function')
            IncreaseWishAmount();
    }
    GetWishCartData(true);
    DisableAddToWish();
}

function GuestAlert() {
    if (!isLogged)
        alert("Registration text aaa aaa");
}

function AddToCart(pid, sizeid) {
    BBJWeb.WebServices.User_WS.AddProductToCart(pid, sizeid, "1", OnSucceededAddToCart);
    //GuestAlert();
}
function OnSucceededAddToCart() {
    objLinkAddToCart.innerHTML = "Done";
    if (typeof window.IncreaseCartAmount == 'function')
        IncreaseCartAmount();

    DisableAddToCart();
}


function viewHideFooter() {
    $("#footer").toggle('slow');
    $("#ftStatus").hide();
    //$("#ftStatus").toggle();
    //$("#ftStatus").css("display", "none");
}

function viewHideWishList() {
    var wlStatus = document.getElementById("wlStatus");

    if (wlStatus.innerHTML == "hide")
        wlStatus.innerHTML = "view";
    else {
        wlStatus.innerHTML = "hide";
        GetWishCartData(true)
    }
    $("#wishListBlock").toggle('slow');
}

function ShowWishList() {
    var wlStatus = document.getElementById("wlStatus");

    if (wlStatus.innerHTML == "hide") return;
    wlStatus.innerHTML = "hide";
    $("#wishListBlock").toggle('slow');
}

function checkWishList() {
    var wlFlag = getCookie('wlFlag');
    if (wlFlag != null && wlFlag != "") {
        if (wlFlag == '1') {
            document.getElementById("wlStatus").innerHTML = "hide";
            document.getElementById("wishListBlock").style.display = "block";
        }
        else {
            document.getElementById("wlStatus").innerHTML = "view";
            document.getElementById("wishListBlock").style.display = "none";
        }
    }
}

function RemoveFromWish(pid, ptid) {
    BBJWeb.WebServices.User_WS.RemoveProductFromWish(pid, ptid, OnSucceededRemoveFromWish);
}

function OnSucceededRemoveFromWish(res) {
    var pid = res.split('|')[0];
    var ptid = res.split('|')[1];
    var li = document.getElementById('li_' + pid);
    var liImageSrc = li.getElementsByTagName("img")[1].src;
    var parent = li.parentNode;
    parent.removeChild(li);
    if (typeof window.WishListArr == "object") removeItem(WishListArr, pid);

    var mainCatImage = parent.parentNode.parentNode.parentNode.getElementsByTagName("img")[0];
    var mainLi = mainCatImage.parentNode.parentNode;
    if (liImageSrc == mainCatImage.src) {
        if (parent.childNodes.length > 0) {
            mainCatImage.src = parent.childNodes[0].getElementsByTagName("img")[1].src;
        }
        else {
            while (mainLi.hasChildNodes()) {
                mainLi.removeChild(mainLi.lastChild);
            }
            mainLi.innerHTML = "<span class='noItems'>No items</span>"
        }
    }

    if (typeof window.ReduceWishAmount == 'function')
        ReduceWishAmount();
    if (typeof window.OnRemoveFromWishList == 'function')
        OnRemoveFromWishList(pid);

    var wl = document.getElementById("wl" + ptid);
    wl.innerHTML = parseInt(wl.innerHTML) - 1;
}

/////////////////////////////////////////////////////////
function showHideMenu(id) {
    var objMenuTab = document.getElementById("list" + id);
    var objMenu = document.getElementById("sub" + id);

    objMenuTab.className = 'selected';
    if (objMenu != null) objMenu.style.display = 'block';
    setSelectedMenu(id);

    for (i = 0; i <= 4; i++) {
        if (i != id) {
            var objMenuTab = document.getElementById("list" + i);
            var objMenu = document.getElementById("sub" + i);
            if (objMenu && objMenuTab) {
                objMenu.style.display = 'none';
                objMenuTab.className = 'main';
            }
        }
    }
}
function checkSelectedMenu() {
    var selectedMenu = getCookie('selectedMenu');
    if (selectedMenu != null && selectedMenu != "") {
        showHideMenu(selectedMenu);
    }
}
function setSelectedMenu(selectedMenu) {
    if (selectedMenu != null && selectedMenu != "") {
        setCookie('selectedMenu', selectedMenu, 365);
    }
}

function setCookie(c_name, value, expiredays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + exdate.toGMTString());
}
function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return ""
}
function onImageError(imgObj, size) {
    imgObj.src = "/images/NoImage" + size + ".gif"
}

function DoNothing() { }

function Delay(functionToExec, delayMilliseconds) {
    functionToExec = functionToExec.replace(/\@/g, "'");
    setTimeout(function() { eval(functionToExec) }, delayMilliseconds);
}

function InitMouseMove() {
    document.onmousemove = getMousePosition;
};

function getMousePosition(e) {

    var mp;
    if (!e) e = event;  // make sure we have a reference to the event
    try {
        if (e.pageX)
            mp = { 'x': e.pageX, 'y': e.pageY, 'sc_y': document.documentElement.scrollTop }
        else
            mp = { 'x': e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft,
                'y': e.clientY + document.documentElement.scrollTop + document.body.scrollTop,
                'sc_y': document.documentElement.scrollTop
            };

        mouseX = mp.x;
        mouseY = mp.y;
        mouseScY = mp.sc_y;
    }
    catch (e) { }
};

function addEvent(obj, evType, fn) {
    if (obj.addEventListener) {
        obj.addEventListener(evType, fn, false);
        return true;
    } else if (obj.attachEvent) {
        var r = obj.attachEvent("on" + evType, fn);
        return r;
    } else {
        return false;
    }
}
//addEvent(window, 'load', InitMouseMove);
addEvent(window, 'load', GetWishListArr);
InitMouseMove();

var WishListArr = new Array();

function GetWishListArr() {
    BBJWeb.WebServices.User_WS.GetWishCartList(true, OnGetWishListArrSuccess, OnGetWishListArrFailed);
}

function OnGetWishListArrSuccess(res) {
    if (res == null || res == "") return;

    for (i in res) {
        for (var j = 0; j < res[i].length; j++)
            addItem(WishListArr, res[i][j].ID);
    }
}

function OnGetWishListArrFailed() { }

function scrollWin() {
    if ($.browser.opera) { $('html').animate({ scrollTop: $('#footer').offset().top }, 2000); }
    else $('html,body').animate({ scrollTop: $('#footer').offset().top }, 2000);
}
