﻿/// <reference name="MicrosoftAjax.js" />
/// <reference path="script.js" />
/// <reference path="slider.js" />
/// <reference path="jquery-1.3.2-vsdoc2.js" />

if (typeof GskTools == 'undefined')
{
    GskTools = function() { };
}

GskTools.ProductList = function() {
    var settings =
    {
        containerId: '',
        cssSelectorItem: '',
        selectorContent: '',
        selectorDesc: '',
        selectorTrigger: '',
        selectedProductId: 0
    };
    var selectedFromProfileID;
    $currentItem = $(document);

    function GetDateSelector() {
        ///<return type="jQuery" />
        return $(".util-date-selector");
    }

    //restrict searching to current container and add a '.' prefix
    var selector = '';

    function SetMousePointer() {
        ///<summary>Shows pointer cursor when mouse is over binded object.</summary>
        this.style.cursor = 'pointer';
    }

    function HideAll() {
        ///<summary>Hides all product content panels.</summary>
        $(selector + settings.selectorContent).hide();
    }

    function HideContent() {
        ///<summary>Hides current selected product.</summary>
        $content = $currentItem.children('.' + settings.selectorContent);
        var oldCurrentId = $currentItem.attr('id');
        if ($currentItem.find(".util-programme-trigger").length > 0) {
            $currentItem.find(".util-programme-trigger").removeClass('active')
            $currentItem.find('.util-programmes').slideUp(200);
        }
        $content.slideUp(300,
            function() {
                $('#' + oldCurrentId + ' .' + settings.selectorContent).removeClass('show').hide();
                //.find('.util-programmes').hide();
                $('#' + oldCurrentId + ' .' + settings.selectorDesc).removeClass('hide').show();
            });
    }

    function ShowContent() {
        ///<summary>Shows chosen product and hides the current selected one.</summary>
        HideContent();
        $currentItem = $(this).parents('.' + settings.cssSelectorItem);

        $descr = $currentItem.children('.' + settings.selectorDesc);
        $descr.removeClass('show').hide();

        $content = $currentItem.children('.' + settings.selectorContent);
        $content.removeClass('hide').hide().slideDown(450, ResizeDivT);

        if ($currentItem.attr('id').endsWith(selectedFromProfileID)) {
            GetDateSelector().slideDown(450, ResizeDivT);
            $content.find('.util-programmes').show('normal',IERefreshView());
            $currentItem.find('.util-programme-trigger').addClass('active');
        }
        else {
            GetDateSelector().slideUp(300, ResizeDivT);
            if ($content.find(".util-programme-trigger").length > 0) {
                $content.find('.showplan').show();
                $content.find('.hideplan').hide();
                $content.find(".util-programme-trigger").removeClass('active')
                $content.find('.util-programmes').hide('normal',IERefreshView());
            }
        }
        IERefreshView();
    }

    function ShowSelected() {
        ///<summary>Shows chosen product which is initially selected by the user.</summary>
        $selected = $('#' + settings.cssSelectorItem + settings.selectedProductId);
        if ($selected.length > 0) {
            $currentItem = $selected;
            $descr = $currentItem.children('.' + settings.selectorDesc);
            $descr.hide();

            $content = $currentItem.children('.' + settings.selectorContent);
            $content.slideDown(450, ResizeDivT);
        }
    }

    function Initialize() {
        //bind click on list item image        
        $(selector + settings.selectorTrigger).
            bind('click', {}, ShowContent);
        //bind on mouse over css effect
        $(selector + settings.selectorTrigger).
            bind('mouseover', {}, SetMousePointer);

        if (settings.selectedProductId > 0) {
            $currentItem = $('#' + settings.cssSelectorItem + settings.selectedProductId);
            $currentItem.children('.' + settings.selectorContent).removeClass('hide').show();
            $currentItem.children('.' + settings.selectorDesc).hide();
            if ($currentItem.find('.util-programme-trigger').hasClass('active') ||
                $currentItem.find('.util-programmes a').hasClass('active')) {
                $currentItem.find('.util-programmes').show();
                $currentItem.find('.util-programme-trigger').addClass('active');
            }
            $currentItem.children('.' + settings.selectorContent).children('.util-programmes').show();
        }
        selectedFromProfileID = '' + settings.selectedProductId;
        //HideAll();
        //ShowSelected();
    }

    return {
        Attach: function(options) {
            ///<summary>Attach accordion functionallity to the container object about id passed in the options.</summary>
            settings = new Object();
            settings = options;
            settings.cssSelectorItem = "product-list-item";
            settings.selectorContent = "product-list-item-content";
            settings.selectorDesc = "product-list-item-description";
            settings.selectorTrigger = "product-list-item-trigger";
            selector = '.' + settings.cssSelectorItem + " .";
            Sys.Application.add_load(Initialize);
            Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(
            function() {
                Sys.Application.remove_load(Initialize);
            });
        }
    }
}
