﻿function comparisonLoading()
{
    $("compItems").insert('<img id="compItemLoading" style="margin-left:5px;margin-top:5px;" src="/images/ajax-loader-big.gif" />');
}

function comparisonLoaded()
{
    if($("compItemLoading") == null) return;
    $("compItemLoading").remove();
}

function existsInComparison(productId, showVisual)
{
    var items = $("compItems").childElements();
    for(var i = 0, len = items.length; i < len; i++)
    {
        if(typeof items[i].ProductId == "undefined")
        {
            var t = items[i].id.split("_");
            if(t.length == 2) items[i].ProductId = parseInt(t[1]);
        }
        if($(items[i]).ProductId == productId)
        {
            if(showVisual == null || (typeof showVisual == 'undefined') || showVisual)
            {
                Effect.Shake(items[i], { distance:3, duration:0.5 });
                goOSDStop("Bu ürün listede zaten var");
            }
            return true;
        }
    }
    return false;
}

function comparisonCount()
{
    var items = $("compItems").childElements();
    var count = 0;
    for(var i = 0; i < items.length; i++)
        if(items[i].id.startsWith("compareItem")) count++;
    return count;
}

function basketCount()
{
    var items = $("basketItems").childElements();
    var count = 0;
    for(var i = 0; i < items.length; i++)
        if(items[i].id.startsWith("basketItem")) count++;
    return count;
}

function addToComparison(productId)
{
    if(existsInComparison(productId, true)) return;
    if(comparisonCount() == 4)
    {
        goOSDStop("Karşılaştırma listesi dolu");
        return;
    }
    comparisonLoading();
    PageMethods.AddProductToCompare(productId, atcOk, atcFail);
    if(!$("compareBar").visible()) Effect.SlideDown("compareBar", {duration:0.1, transition: Effect.Transitions.linear});
    setTimeout("$('compareBar').style.height='50px';", 250);
}

function refreshComparison()
{
    if($("compItems") == null || typeof(PageMethods) == "undefined") return;
    var items = $("compItems").childElements();
    for(var i = 0, len = items.length; i < len; i++)
        $(items[i]).remove();
    comparisonLoading();
    PageMethods.GetAllCompareProducts("", atcOk, atcFail);
}

function atcOk(result, context, method)
{
    comparisonLoaded();
    var r = result.evalJSON();
    if(typeof(r.error) != "undefined")
    {
        if(method != "GetAllCompareProducts")
            goOSDStop(r.error);
        return;
    }
    for(var i = 0; i < r.Items.length; i++)
    {
        var item = r.Items[i];
        new Insertion.Bottom($("compItems"), unescape(item.ItemHTML));
        $("compareItem_"+item.ProductId).ProductId = item.ProductId;
        if(!isBack)
            Effect.Appear("compareItem_"+item.ProductId, { duration:0.2 });
        else
            $("compareItem_"+item.ProductId).show();
        $("compGoButton").href = item.CompareUrl;
    }
    if(comparisonCount() == 1) 
    {
        $("compButtons").hide();
        $("compOneMore").show();
    }
    else
    {
        $("compButtons").show();
        $("compOneMore").hide();
    }
    if(comparisonCount() > 0)
        if(!$("compareBar").visible()) Effect.SlideDown("compareBar", {duration:0.2});
    if(method != "GetAllCompareProducts")
        goOSDCompare("Ürün karşılaştırma listesine eklendi");
}

function atcFail(error, context, method)
{
    comparisonLoaded();
    // TODO: handle in a better way
    alert(error.get_message());
}

function removeFromComparison(productId)
{
    comparisonLoading();
    PageMethods.RemoveProductFromCompare(productId, rfcOk, rfcFail);
    Effect.Shrink("compareItem_"+productId, { duration:0.5, direction:'top-right' });
    setTimeout("finishRemoveItem("+productId+");", 500);
}

function finishRemoveItem(productId)
{
    $('butDelCompItem').hide(); 
    $('compareItem_'+productId).remove();
    var itemCount = comparisonCount();
    if(itemCount == 0) 
    {
        $("compOneMore").hide();
        Effect.SlideUp("compareBar", {duration:0.2});
    }
    else if(itemCount == 1)
    {
        $("compButtons").hide();
        $("compOneMore").show();
    }
    else
    {
        $("compButtons").show();
        $("compOneMore").hide();
    }
}

function rfcOk(result, context, method)
{
    comparisonLoaded();
    var r = result.evalJSON();
    $("compGoButton").href = r.CompareUrl;
}

function rfcFail(error, context, method)
{
    comparisonLoaded();
    // TODO: handle in a better way
    alert(error.get_message());
}

function addToBasket(productId)
{
    var items = $("basketItems").childElements();
    for(var i = 0, len = items.length; i < len; i++)
    {
        if(typeof items[i].ProductId == "undefined")
        {
            var t = items[i].id.split("_");
            if(t.length == 2) items[i].ProductId = parseInt(t[1]);
        }
        if($(items[i]).ProductId == productId)
        {
            goOSDStop("Bu ürün sepetinizde zaten var");
            return;
        }
    }
    PageMethods.AddProductToBasket(productId, atbOk, atbFail);
}

function refreshBasket()
{
    if($("basketItems") == null || typeof(PageMethods) == "undefined") return;
    var items = $("basketItems").childElements();
    for(var i = 0, len = items.length; i < len; i++)
        $(items[i]).remove();
    PageMethods.GetAllBasketProducts("", atbOk, atcFail);
}

function atbOk(result, context, method)
{
    var r = result.evalJSON();
    if(typeof(r.error) != "undefined")
    {
        if(method != "GetAllBasketProducts")
            goOSDStop(r.error);
        return;
    }
    for(var i = 0; i < r.Items.length; i++)
    {
        var item = r.Items[i];
        new Insertion.Bottom($("basketItems"), unescape(item.ItemHTML));
        $("basketItem_"+item.ProductId).ProductId = item.ProductId;
        $("basketItem_"+item.ProductId).show();
    }
    if(basketCount() > 0 && $("basketEmpty").visible())
    {
        $("basketEmpty").hide();
        $("basketButtons").show();
        $("basketCounter").show();
    }
    updateBasketCounter();
    if(method != "GetAllBasketProducts")
        goOSDBasket("Ürün sepetinize eklendi");
}

function atbFail(error, context, method)
{
    // TODO: handle in a better way
    alert(error.get_message());
}

function removeFromBasket(productId)
{
    PageMethods.RemoveProductFromBasket(productId, rfbOk, rfbFail);
    Effect.BlindUp("basketItem_"+productId, { duration:0.5 });
    setTimeout("finishRemoveBasketItem("+productId+");", 500);
}

function finishRemoveBasketItem(productId)
{
    $("basketRemoveIcon").hide();
    $("basketItem_"+productId).remove();
    if($("basketItems").childElements().length == 0) 
    {
        $("basketEmpty").show();
        $("basketButtons").hide();
        $("basketCounter").hide();
    }
    updateBasketCounter();
}

function updateBasketCounter()
{
    var c = $("basketItems").childElements().length;
    $("basketCounter").itemCount = c;
    $("basketCounter").update(c.toString());
}

function rfbOk(result, context, method)
{
}

function rfbFail(error, context, method)
{
    // TODO: handle in a better way
    alert(error.get_message());
}

function clearComparison()
{
    PageMethods.ClearCompareBasket("", ccOk, ccFail);
}

function ccOk(result, context, method)
{
    var items = $("compItems").childElements();
    items.reverse();
    Effect.Fade($("compButtons"), { duration:0.5 } );
    Effect.multiple(items, Effect.Fade, { speed:0.2 });
    setTimeout("finishClear();", 1000);
}

function finishClear()
{
    Effect.SlideUp("compareBar", {duration:0.3});
    var items = $("compItems").childElements();
    for(var i = 0, len = items.length; i < len; i++)
        $(items[i]).remove();
}

function ccFail(error, context, method)
{
    // TODO: handle in a better way
    alert(error.get_message());
}

var compHideTimer = null;
function compItemHover(item, productId)
{
    delbut = $("butDelCompItem");
    if(delbut.style.visibility == "visible" && delbut.productId != productId)
        compHideX();
    clearTimeout(compHideTimer);
    delbut.style.display = "inline";
    delbut.style.visibility = "visible";
    Sys.UI.DomElement.addCssClass(item, "compItemHover");
    var cib = Sys.UI.DomElement.getBounds(item);
    var rbb = Sys.UI.DomElement.getBounds(delbut);
    var x = cib.x + cib.width - Math.round(rbb.width/2) - 5;
    var y = cib.y - Math.round(rbb.height/2) - 3;
    Sys.UI.DomElement.setLocation(delbut, x, y);
    delbut.associatedWith = item;
    delbut.productId = productId;
}

function compHideXReq(reqBy)
{
    compHideTimer = setTimeout("compHideX();", 100);
}

function compCancelHideX()
{
    clearTimeout(compHideTimer);
}

function compHideX()
{
    delbut = $("butDelCompItem");
    Sys.UI.DomElement.removeCssClass(delbut.associatedWith, "compItemHover");
    delbut.style.display = "none";
    delbut.style.visibility = "hidden";
    clearTimeout(compHideTimer);
}

function compRemoveItem()
{
    delbut = $("butDelCompItem");
    clearTimeout(compHideTimer);
    delbut.style.display = "none";
    delbut.style.visibility = "hidden";
    removeFromComparison($('butDelCompItem').productId);
}

var basketShowTimer = 0;
var basketHideTimer = 0;
var basketCloseTimerId = 0;

function basketItemHover(item, productId)
{
    delbut = $("basketRemoveIcon");
    if(delbut.style.visibility == "visible" && delbut.productId != productId)
        basketHideX();
    clearTimeout(basketHideTimer);
    delbut.style.display = "inline";
    delbut.style.visibility = "visible";
    Sys.UI.DomElement.addCssClass(item, "basketItemHover");
    var cib = Sys.UI.DomElement.getBounds(item);
    var rbb = Sys.UI.DomElement.getBounds(delbut);
    var x = cib.x - Math.round(rbb.width/2) - 10;
    var y = cib.y - Math.round(rbb.height/2);
    Sys.UI.DomElement.setLocation(delbut, x, y);
    delbut.associatedWith = item;
    delbut.productId = productId;
}

function basketHideXReq(reqBy)
{
    basketHideTimer = setTimeout("basketHideX();", 200);
}

function basketCancelHideX()
{
    clearTimeout(basketHideTimer);
}

function basketHideX()
{
    delbut = $("basketRemoveIcon");
    Sys.UI.DomElement.removeCssClass(delbut.associatedWith, "basketItemHover");
    delbut.style.display = "none";
    delbut.style.visibility = "hidden";
    clearTimeout(basketHideTimer);
}

function basketRemoveItem()
{
    delbut = $("basketRemoveIcon");
    clearTimeout(basketHideTimer);
    delbut.style.display = "none";
    delbut.style.visibility = "hidden";
    removeFromBasket($("basketRemoveIcon").productId);
}

function dropBasket()
{
    basketShowTimer = setTimeout("dropBasketNow();", 300);
}

function dropBasketNow()
{
    var bc = $("basketContent");
    var bb = $("basketButton");
    if(bc == null || bb == null) return;
    bc.style.display = "block";
    var bbb = Sys.UI.DomElement.getBounds(bb);
    var bcb = Sys.UI.DomElement.getBounds(bc);
    var x = bbb.x + bbb.width - bcb.width + 6;
    var y = bbb.y - 5;
    Sys.UI.DomElement.setLocation(bc, x, y);
    bc.style.visibility = "visible";
    $("basketCounter").hide();
    var sortCombo = $("ctl00_contentMain_productList_comboSortBy");
    if(sortCombo != null && typeof(sortCombo) != "undefined")
    {
        sortCombo.style.visibility = 'hidden';
    }
}

function closeBasket()
{
    clearTimeout(basketShowTimer);
    basketCloseTimerId = setTimeout("closeNow();", 500);
}

function ccb()
{
    clearTimeout(basketShowTimer);
    clearTimeout(basketCloseTimerId);
    basketCloseTimerId = 0;
}

function closeNow()
{
    if(basketCloseTimerId == 0)
        return;
    var bc = $get("basketContent");
    if(bc == null) { alert("Lütfen sayfayı yeniden yükleyiniz (F5 ya da Ctrl-R tuşuna basınız)."); return; }
    bc.style.display = "none";
    bc.style.visibility = "hidden";
    if(typeof $("basketCounter").itemCount == "undefined") $("basketCounter").itemCount = $("basketItems").childElements().length;
    if($("basketCounter").itemCount > 0)
        $("basketCounter").show();
    var sortCombo = $("ctl00_contentMain_productList_comboSortBy");
    if(sortCombo != null && typeof(sortCombo) != "undefined")
    {
        sortCombo.style.visibility = 'visible';
    }
}

function dropDepts(element)
{
    var ad = $("allDepts");
    if(ad == null) return;
    ad.style.visibility = 'visible';
    ad.style.display = 'block';
}

var deptsCloseTimerId = 0;

function closeDepts()
{
    deptsCloseTimerId = setTimeout("closeDeptsNow();", 500);
}

function ccd()
{
    if(deptsCloseTimerId != 0)
    {
        clearTimeout(deptsCloseTimerId);
        deptsCloseTimerId = 0;
    }
}

function closeDeptsNow()
{
    var ad = $("allDepts");
    if(ad == null) return;
    ad.style.visibility = 'hidden';
    ad.style.display = 'none';
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();