﻿function DepartmentSelected(btnDepartmentId) {
    $(".department_menu [id$=imgTabImageOff]").css("display", "block").css("width", "100%").css("height", "100%");
    $(".department_menu [id$=imgTabImageOn]").css("display", "none");
    $(".department_menu li").removeClass("active");

    var btn = $("#" + btnDepartmentId);

    btn.find("[id$=imgTabImageOff]").css("display", "none");
    btn.find("[id$=imgTabImageOn]").css("display", "block").css("width", "100%").css("height", "100%");

    var btnLi = btn.parent();
    btnLi.addClass("active");
}

function categoryHover() {
    $('ul.AspNet-Menu li ul li').each(function() {
        $(this).hover(
        function() {
            $(this).attr('style', 'background-color:#565656');
        },
        function() {
            $(this).removeAttr('style');
        });
    });
    $('div.category_column li').each(function() {

        $(this).mouseover(function() {
            $(this).attr('style', 'width:100%;height:100%;background-image:url(http://www.superquinn.ie/shopping/App_Themes/SuperQuinn_en/Images/bg_category_rollover.gif) !important');
            $(this).find('a').css("color", "#ffffff").css("font-weight", "bold");
        }).mouseout(function() {
            $(this).removeAttr('style');
            $(this).find('a').css("color", "#333333").css("font-weight", "normal");
        })
    });

    $('div.category_column li a.active').each(function() {
        $(this).parent().addClass("active");
    });
    $('.department_menu li').each(function() {
        $(this).mouseover(function() {
            $(this).attr('style', 'background-image:url(../App_Themes/SuperQuinn_en/Images/bg_special_rollover.gif)');
        }).mouseout(function() {
            $(this).removeAttr('style');
        })
    });
}
function CategoryHoverFix(){
    $('ul.AspNet-Menu li ul li').each(function() {
        $(this).hover(
        function() {
            $(this).attr('style', 'background-color:#565656');
        },
        function() {
            $(this).removeAttr('style');
        });
    });

    $('div.category_column li').each(function() {

        $(this).mouseover(function() {
            $(this).attr('style', 'width:100%;height:100%;background-image:url(http://www.superquinn.ie/shopping/App_Themes/SuperQuinn_en/Images/bg_category_rollover.gif) !important');
            $(this).find('a').css("color", "#ffffff").css("font-weight", "bold");
        }).mouseout(function() {
            $(this).removeAttr('style');
            $(this).find('a').css("color", "#333333").css("font-weight", "normal");
        })
    });

    $('div.category_column li a.active').each(function() {
        $(this).parent().addClass("active");
    });
}

function LoadFromFragment() {
    var queryString = $.fragment();
    if (queryString.prodid != undefined && queryString.prodid != '' && queryString.catid != undefined) {
        Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
        GetProduct(queryString.prodid, queryString.catid);
    }
    else if (queryString.catid != undefined) {
        Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
        GetCategoryTree(queryString.catid);
    }
    else if (queryString.prodid != undefined && queryString.prodid != '') {
        Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
        GetProduct(queryString.prodid, null);
    }
    else {
        GetDepartments();
    }
}


function LoadDepartments() {
    $(document).bind('fragmentChange.nav', LoadFromFragment);
    //There might be a fragment loaded on the page
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (!prm.get_isInAsyncPostBack()) {
        LoadFromFragment();
        return;
    }   
    GetDepartments();
}

function GetDepartments() {
    var jsonString = "{}";
    var serviceURL = resolveURL("WebServices/CategoryBrowser.asmx/GetDepartments");
    $.ajax({
        type: "POST",
        url: serviceURL,
        data: jsonString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: ShowDepartments
    });  
}

function GetCategoryFromProduct(id) {
    var jsonString = "{}";
    var params = { 'ProductId': id };
    var serviceURL = resolveURL("WebServices/CategoryBrowser.asmx/GetCategoryFromProduct");
    var jsonString = "{JsonString: '" + JSON.stringify(params) + "'}";
    $.ajax({
        type: "POST",
        url: serviceURL,
        data: jsonString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(result) {
            var category = JSON.parse(result.d);
            GetBreadcrumb(category.CategoryId);            
        }
    });
}



function ShowDepartments(result) {    
    var items = [];
    var departments = JSON.parse(result.d);
    var cssclass = "";
    $.each(departments, function(i, item) {        
        if (item.HasReferentials) {
            cssclass = "HasRef";
        }
        else {
            cssclass = "";
        }
        items.push('<li class="' + cssclass + '" id="dep_' + item.DepartmentId + '"><input type="hidden" value="' + item.DepartmentBanner + '" /><a href="#" onClick="return false;"><img class="off" src="http://www.superquinn.ie/shopping/images/departmentstory/tabs/' + item.TabOff + '"/><img class="on" style="display:none" src="http://www.superquinn.ie/shopping/images/departmentstory/tabs/' + item.TabOn + '"/></a></li>');
    });
    if ($('.department_menu li').length > 0) {
        return;
    }   
    $('.department_menu').append(items.join(""));
    SetupCategoryClick();
    if (typeof(pngfix) == 'function')
        pngfix();    
}


function SetupCategoryClick() {
    $('.department_menu li').unbind('click').each(function() {
        $(this).mouseover(function() {
            $(this).attr('style', 'background-image:url(../App_Themes/SuperQuinn_en/Images/bg_special_rollover.gif)');
        }).mouseout(function() {
            $(this).removeAttr('style');
        }).click(function() {
            var id = this.id.split("_")[1];
            Sys.WebForms.PageRequestManager.getInstance().abortPostBack();            
            $.setFragment({ prodid: '' });
            $.setFragment({ catid: id });
            return false;
        })
    });  
}

function ShowBanner(item) {
  
        $('*[ID$="_pnlShopHomeWelcome"]').hide();
        var img = $(item).find('input').val();
        if (img != undefined) {
            $('*[ID$="_pnlDepartmentBanner"] img').attr('src', 'http://www.superquinn.ie/shopping/images/departmentstory/welcome/' + img).show();
        }
  
}
function ShowDepartment(id, callback) {
    id = id.split("_")[1];
    var params = { 'DepartmentId': id };
    var jsonString = "{JsonString: '" + JSON.stringify(params) + "'}";
    var serviceURL = resolveURL("WebServices/CategoryBrowser.asmx/GetDepartment");
    $.ajax({
        type: "POST",
        url: serviceURL,
        data: jsonString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(result) {
            DisplayDepartment(result, callback);
        }
    });
}

function DisplayDepartment(result, callback) {
    var last_id;
    var items = [];
    var departments = JSON.parse(result.d);
    var level = 0;
    var cssclass = "";
    $.each(departments, function(i, item) {
        level = item.Level;
        if (item.HasChildren) {
            cssclass = "HasChildren";
        }
        else {
            cssclass = "";
        }        
        $('div.category_nav').show();
        items.push('<li class="' + cssclass + '" id="cat_' + item.CategoryId + '"><a href="#" onClick="return false;" style="color:#333333;font-weight:normal">' + item.CategoryName + '</a></li>');
    });
    $('#CategoryLevel' + level).empty().append(items.join("")).find('li').click(function() {       
        var id = this.id.split("_")[1];
        //We want to set the fragment, but not fire the event
        $.setFragment({ prodid: '' });
        $.setFragment({ catid: id });
        return false;     
    });
    $('#CategoryLevel' + (level + 1)).empty();
    $('#CategoryLevel' + (level + 2)).empty();
    CategoryHoverFix();
    if(callback != null && typeof(callback) == 'function')
    {
        callback();
    }   
}
function ShowProductListing(id) {
    $('div.category_nav').hide();
    GetBreadcrumb(id); 
    $('div.category_breadcrumb').show();
    Sys.WebForms.PageRequestManager.getInstance().abortPostBack();
    doPostBackAsync('CATEGORY', id);    
    $('*[ID$="hfLocationId"]').val(id);
    $('*[ID$="hfMetaType"]').val("2");
    GetMetaData();
}

function BeginRequestHandler(sender, args) {
    //only if we are using ajax through jquery
    var snd;
    var request = args.get_request();
    if (sender._asyncPostBackControlIDs.length > 0) {
        snd = sender._asyncPostBackControlIDs[sender._asyncPostBackControlIDs.length - 1];
    }
    var customData = { request: snd }
    request.set_userContext(customData);
    if (snd == "CATEGORY") {
        $('*[ID$="_upnlShoppingContent"]').hide();
        $('#shopProgress').show(); 

    }
    
}
function EndRequestHandler(sender, args) {
    var response = args.get_response();
    var customData;
    if (response.get_responseAvailable()) {
        // get associated WebRequestObject
        var webRequest = response.get_webRequest();
        // get custom data we assigned to WebRequest earlier  
        customData = webRequest.get_userContext();
    }

    $('#shopProgress').hide();
    $('*[ID$="_upnlShoppingContent"]').show();
    $('div.category_breadcrumb li').each(function() {
        $(this).click(function() {
            var id = this.id.split("_")[1];
            $.setFragment({ prodid: '' });
            $.setFragment({ catid: id });
            return false;
        });
    });
    $('div.category_breadcrumb li:last').unbind('click').click(function() {
        var id = this.id.split("_")[1];
        $.setFragment({ prodid: '' });
        $.setFragment({ catid: id });
        return false;
    });
    //Bind a history point to each product
    $('tr.listing.product_info_container td.description_col > div').each(function() {
        var id = this.id;
        $(this).find('a').click(function() {
            $.setFragment({ prodid: id });
            return false;
        });
    });

    if (customData.request != null && customData.request != 'REF') {
        $('div.category_nav').hide();        
    }
}

function GetBreadcrumb(id) {    
    var params = { 'DepartmentId': id };
    var jsonString = "{JsonString: '" + JSON.stringify(params) + "'}";
    var serviceURL = resolveURL("WebServices/CategoryBrowser.asmx/GetBreadCrumb");
    $.ajax({
        type: "POST",
        url: serviceURL,
        data: jsonString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: DisplayBreadCrumb
    });
}

function DisplayBreadCrumb(result) {
    
    var categories = JSON.parse(result.d);
    $('div.category_breadcrumb').empty();

    $.get('../Templates/breadcrumb.htm', function(html) {
        $.each(categories, function(i, item) {
            LoadTemplate(html, item, 'div.category_breadcrumb');
        });
        $('div.category_breadcrumb').show();
    });
    
}
function GetCategoryTree(id) {
    $('#shoppingHero').hide();
    $('div.category_breadcrumb').hide().empty();
    $('*[ID$="_upnlShoppingContent"]').hide();
    var params = { 'DepartmentId': id };
    var jsonString = "{JsonString: '" + JSON.stringify(params) + "'}";
    var serviceURL = resolveURL("WebServices/CategoryBrowser.asmx/GetCategoryTree");
    $.ajax({
        type: "POST",
        url: serviceURL,
        data: jsonString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: DisplayCategoryTree
    });
}

//This is the full category display.
function DisplayCategoryTree(result) {
    var deps = [];
    var cats = [];
    var level = 0;
    var selected = "";
    var categories = JSON.parse(result.d);    
    $('#CategoryLevel1').empty();
    $('#CategoryLevel2').empty();
    $('#CategoryLevel3').empty();

    $.each(categories, function(i, item) {
        if (item.Selected) {
            selected = "dep_" + item.DepartmentId;
            $('*[ID$="hfLocationId"]').val(item.DepartmentId);
            $('*[ID$="hfMetaType"]').val("2");
        }
        if (item.HasReferentials) {
            cssclass = "HasRef";
        }
        else {
            cssclass = "";
        }
        deps.push('<li class="' + cssclass + '" id="dep_' + item.DepartmentId + '"><input type="hidden" alt="' + item.DepartmentName + '" value="' + item.DepartmentBanner + '" /><a href="#" onClick="return false;"><img class="off" alt="' + item.DepartmentName + '" src="http://www.superquinn.ie/shopping/images/departmentstory/tabs/' + item.TabOff + '"/><img class="on" alt="' + item.DepartmentName + '" style="display:none" src="http://www.superquinn.ie/shopping/images/departmentstory/tabs/' + item.TabOn + '"/></a></li>');

        if (item.Selected) {
            $('div.category_nav').show();
            PopulateSubCategories(item);
        }
    });
    if ($('.department_menu li').length == 0) {
        $('.department_menu').append(deps.join(""));
    }
    $('#' + selected).parent().find('li').removeClass("active").find('img.off').show();
    $('#' + selected).parent().find('li').find('img.on').hide(); 
    $('#' + selected).addClass('active').find('img.on').show().css('display', 'block');
    $('#' + selected).addClass('active').find('img.off').hide();

    ShowBanner($('#' + selected));
    $('div.category_breadcrumb').hide().empty();
    SetupCategoryClick();
    GetMetaData();
}

function GetProduct(prodId, catId) {
    $('#shoppingHero').hide();
    $('div.category_nav').hide();
    if (catId == null) {
        GetCategoryFromProduct(prodId);
    }
    else {
        GetBreadcrumb(catId);
    }
    doPostBackAsync('PRODUCT', prodId);
}

function PopulateSubCategories(category) {
    var level = 0;
    var items = [];
    $.each(category.SubCategories, function(i, item) {
        level = item.Level;
        if (item.Selected && !item.HasChildren) {
            ShowProductListing(item.DepartmentId);
            return;
        }
        if (item.HasChildren && item.Selected) {
            cssclass = "HasChildren active";
        }
        else if (item.HasChildren) {
            cssclass = "HasChildren";
        }
        else if (item.Selected) {
            cssclass = "active";
            $('*[ID$="hfLocationId"]').val(item.DepartmentId);
            $('*[ID$="hfMetaType"]').val("2");            
        }
        else {
            cssclass = "";
        }        
        items.push('<li class="' + cssclass + '" id="cat_' + item.DepartmentId + '"><a href="#" onClick="return false;" style="color:#333333;font-weight:normal">' + item.DepartmentName + '</a></li>');
        
        if (item.Selected) {
            PopulateSubCategories(item);
        }
    });
    $('#CategoryLevel' + level).empty().append(items.join("")).find('li').click(function() { 
        var id = this.id.split("_")[1];
        $.setFragment({ prodid: '' });
        $.setFragment({ catid: id });     
        return false;
    });    
}

