﻿/// <reference path="/jsLib/Utilities.js" />
/// <reference path="/jsLib/jqueryplugins/jquery.event-playback/jquery.event-playback.js" />
/// <reference path="/jsLib/jqueryplugins/jquery.hoverIntent/jquery.hoverIntent.js" />

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
        "use strict";
        if (this === void 0 || this === null) {
            throw new TypeError();
        }
        var t = Object(this);
        var len = t.length >>> 0;
        if (len === 0) {
            return -1;
        }
        var n = 0;
        if (arguments.length > 0) {
            n = Number(arguments[1]);
            if (n !== n) { // shortcut for verifying if it's NaN
                n = 0;
            } else if (n !== 0 && n !== Infinity && n !== -Infinity) {
                n = (n > 0 || -1) * Math.floor(Math.abs(n));
            }
        }
        if (n >= len) {
            return -1;
        }
        var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
        for (; k < len; k++) {
            if (k in t && t[k] === searchElement) {
                return k;
            }
        }
        return -1;
    }
}


var U = Utilities;

// **************************************************************************************************
// ******************************************* Main CLASS *******************************************
// **************************************************************************************************

function MainDefault()
{
    /// <summary>
    /// Główna klasa
    /// </summary>
}

// *****************
// Attributes
// *****************
MainDefault.prototype.$orderStatus = null;
MainDefault.prototype.$withoutMenu = false;
MainDefault.prototype.$devPnl = null;
MainDefault.prototype.$pageRequestManager = null;

// *****************
// Static attributes
// *****************
MainDefault.TAG_jqOrderStatusC = "#jqOrderStatus";
MainDefault.TAG_jqDevPnlC = ".jqDevPnl";

//selektory zminay jezyka
MainDefault.TAG__ChangeLangInput = '.jqForm';
MainDefault.TAG__ChangeLangDdBox = '.jqTopFlagsBox';
MainDefault.TAG__ChangeLangDdList = '.jqLnDdList';

//selektory Cart info
MainDefault.TAG__CartInfo = ".jqCartInfo";
MainDefault.TAG__CartInfoBt = ".jqCartShowItemsBt";
MainDefault.TAG__CartInfoItemsList = ".jqDefaultCartList";
MainDefault.TAG__CartInfoDeleteItemBt = "jqCartInfoDeleteItemBt";
MainDefault.TAG__CartInfoRefreshButton = ".jqCartInfo .cartInfoRefreshButton"

//asystent.
MainDefault.TAG__Assistant = '#assistant';
MainDefault.ID__Assistant = '_shopAss';
MainDefault.TAG__TireCompared = '#assistant div.compared ul';
MainDefault.TAG__TireComparedRefreshButton = '#assistant .refreshButton'
MainDefault.TAG__TireViewd = '#assistant div.viewd ul';


//mapa
MainDefault.TAG__UEMapContener = '#UEMapContener';
MainDefault.TAG__jqShowMap = '.jqShowMap';
MainDefault.TAG__jqCloseMap = '.jqCloseMap';

MainDefault.TAG__jqMapButton = '.jqMapButtons a';
MainDefault.TAG__jqCountries = '.jqCountries';

// ******
// Events
// ******


// *****************
// Component methods
// *****************

// *******
// Methods
// *******
MainDefault.prototype.BindMapButtons = function() {

$(MainDefault.TAG__jqShowMap).unbind('click').click(function(e){
		e.preventDefault();
		if(!$(MainDefault.TAG__UEMapContener).hasClass('active'))
			{
				$(MainDefault.TAG__UEMapContener).addClass('active');	
			}
		
		var country = $(this).attr('rel');
		
		$(MainDefault.TAG__jqCountries).find('span').removeClass('active').removeClass('hover');
		$(MainDefault.TAG__jqCountries).find('.' + country).addClass('active');
		
		$(MainDefault.TAG__jqMapButton).removeClass('active');
		$(MainDefault.TAG__jqMapButton+ '.'+ country).addClass('active');
	});
	
	
	$(MainDefault.TAG__jqCloseMap).unbind('click').click(function(){
		$(MainDefault.TAG__UEMapContener).removeClass('active');
	});
	
	
	$(MainDefault.TAG__jqMapButton).unbind('click').click(function(){
		var country = $(this).attr('rel');
		
		$(MainDefault.TAG__jqMapButton).removeClass('active');
		$(this).addClass('active');
		$(MainDefault.TAG__jqCountries).find('span').removeClass('active').removeClass('hover');
		$(MainDefault.TAG__jqCountries).find('.' + country).addClass('active');
	});
	
	
	$(MainDefault.TAG__jqMapButton).unbind('mouseover').mouseover(function(){
		var country = $(this).attr('rel');
		$(MainDefault.TAG__jqCountries).find('span').removeClass('hover');
		$(MainDefault.TAG__jqCountries).find('.' + country).addClass('hover');
		
	}).unbind('mouseout').mouseout(function(){
		var country = $(this).attr('rel');
		$(MainDefault.TAG__jqCountries).find('.' + country).removeClass('hover');		
	});
}


MainDefault.prototype.__pageRequestManager_endRequest = function (sender, args) {
    if (!sender || !sender._activeElement) {
        this.MountEventsOnShopAssistant(false);
    } else {

        if (sender._activeElement.className.indexOf(MainDefault.TAG__CartInfoDeleteItemBt) > -1) {
            this.LoadCartInfoEvent();

            var w = $(MainDefault.TAG__CartInfo).width() - 2;
            $(MainDefault.TAG__CartInfoItemsList).css('width', w + 'px');
            $(MainDefault.TAG__CartInfoItemsList).css('display', 'block');
        }
        if (sender._updatePanelClientIDs.indexOf(MainDefault.ID__Assistant) > -1) {            
            this.OnRefreshShopAssistant();
        }
    }
}

//obsluga Cart Info
MainDefault.prototype.LoadCartInfoEvent = function()
{
	$(MainDefault.TAG__CartInfoBt).click(function(){
		if($(MainDefault.TAG__CartInfoItemsList).is(':hidden'))
		{
			var w = $(MainDefault.TAG__CartInfo).width() - 2;
			$(MainDefault.TAG__CartInfoItemsList).css('width', w+'px');
			$(MainDefault.TAG__CartInfoItemsList).css('display', 'block');
		} else $(MainDefault.TAG__CartInfoItemsList).css('display', 'none');
	})
	
	$(MainDefault.TAG__CartInfoItemsList).unbind("mouseleave").bind("mouseleave",function(){
		$(MainDefault.TAG__CartInfoItemsList).css('display','none');
	});
}

MainDefault.prototype.RefreshCartInfo = function () {
    var $cartInfoRefreshButton = $(MainDefault.TAG__CartInfoRefreshButton);
    if (!$cartInfoRefreshButton.get(0)) return;
    var $cartInfoList = $(MainDefault.TAG__CartInfoItemsList);
    if (!$cartInfoList.get(0)) return;
    var $cartInfoItemCount = 0;
    $cartInfoItemCount = $cartInfoList.find('div.CartInfoItem').size();
    var $cartInfoCountCookie = 0;
    if (!U.IsNUE(U.GetCookie("CART_COUNT")))
        $cartInfoCountCookie = parseInt(U.GetCookie("CART_COUNT"), 10);
    if ($cartInfoItemCount !== $cartInfoCountCookie) {        
        eval(U.GetPostBackMethod($cartInfoRefreshButton, "href"));
    }
}

MainDefault.prototype.Load = function() {    
    var inst = this;

	// Blokujemy podwojne wywolanie.
	if(typeof window._init_default !== 'undefined')
		return;
	window._init_default = true;
	
    this.LoadCartInfoEvent();

    if (!this.$withoutMenu) {
        menu = new MainMenuC();
        menu.LoadMenu();
    }
    
    this.InitShopAssistant();
    this.InitWhyOponeo();
	this.InitCheckOrderStatus();
	this.InitSlogans();

    this.RefresShopAssistantAfterBackButton();
    this.RefreshCartInfo();
	
	if(($.browser.msie && $.browser.version > 6) || !$.browser.msie)
		this.BindMapButtons();
}

// Dlaczego oponeo.
MainDefault.prototype.InitWhyOponeo = function() {
	var $whyoponeo = $('#whyOponeo');
	$whyoponeo.find('> h5 > a').click(function() {
		var way = (parseInt($whyoponeo.css('right'),10) === 0) ? -250 : 0;
		$whyoponeo.animate({
			right:way
		},500);
		return false;
	});
}

// Slagany w topie.
MainDefault.prototype.InitSlogans = function() {
	var $slogals = $('#slogans li');
	var count = $slogals.size();
	var current = 0;
	window.setInterval(function() {
	
		var old = current;
		current = (++current)%count;
		var $o = $slogals.eq(old);
		$o.fadeOut(500,function() {
			var $n = $slogals.eq(current);
			$o.css({left:-9999, top:-9999});
			$n.hide().css({left:0, top:0});
			$n.fadeIn(500);
		});

	},2100);
}

var CheckOrderStatus = function(fs)
{
	this.$orderForm = null;
	this.$response = null;

	var selector_response = "div.response";
	var selector_submit = "a.submit";
	var selector_input_number = "input.number";
	var selector_input_lastname = "input.email";
	var selector_show = "#showCheckOrder";

	//
	// Constructor.
	//
	this.init = function()
	{
		this.$orderForm = $(fs || '#checkOrderStatus');
		if(!this.$orderForm.get(0))
			return;
		this.$response = this.$orderForm.find(selector_response);
		this.$response.hide();

		var instance = this;

		$(selector_show).click(function() {
			instance.showOrderForm();
			return false;
		});
		this.$orderForm.find(selector_submit).click(function() {
			instance.onSubmit();
			return false;
		});
	};

	//
	// Odkrywa formualarz sprawdzania zamowienia.
	//
	this.showOrderForm = function()
	{
		var instance = this;
		this.$orderForm.show();

		_gaq.push(['_trackEvent','Sprawdź status zamówienia',
			'Pokaż okno','Pokazanie formularza ze sprawdzaniem statusu zamówienia']);

		$(document).click(function(event)
		{
			var has = instance.$orderForm.has(event.target);
			if(has.length > 0 || event.target == instance.$orderForm.get(0))
				return true;
			instance.$orderForm.hide();
			$(document).unbind('click');

			_gaq.push(['_trackEvent','Sprawdź status zamówienia',
				'Ukryj okno','Ukrycie formularza ze sprawdzaniem statusu zamówienia']);

			return false;
		});
	},

	//
	// Naduszono wyslij.
	//
	this.onSubmit = function()
	{
		var number = this.$orderForm.find(selector_input_number).val();
		var lastname = this.$orderForm.find(selector_input_lastname).val();
		var instance = this;

		Oponeo.pl.IShopService.GetValidationStatus(
			number,lastname,
			function(r,s) { instance.onValidatedStatus(number,lastname,r,s); },
			function(r) {}
		);
	}

	//
	// Serws zwrocil informacje czy posiada dane o zamowieniu.
	//
	this.onValidatedStatus = function(number,lastname,result,state)
	{
		if(!result) {
			this.$response.html('<h4>Błędny format danych.</h4>').show();

			_gaq.push(['_trackEvent','Sprawdź status zamówienia',
				'Sprawdź','Nieudana próba']);
			return;
		}

		var instance = this;

		Oponeo.pl.IShopService.GetOrder(
			number,lastname,
			function(r,s) { instance.onRecvOrderStatus(r,s); },
			function(r) {}
		);
	}

	//
	// Zwrocona informacje o zamowieniu.
	//
	this.onRecvOrderStatus = function(result,state)
	{
		if(!result) {
			this.$response.html('<h4>Zamówienia nie znaleziono.</h4>').show();
			
			_gaq.push(['_trackEvent','Sprawdź status zamówienia',
				'Sprawdź','Nieudana próba']);
			return;
		}

		var html = '';
		html += '<h6>Imię i nazwisko:</h6>';
		html += '<p>' +result.SurName+ '</p>';
		html += '<h6>Nazwa produktu:</h6>';
		html += '<p>' +result.ProductName+ '</p>';
		html += '<h6>Forma płatności:</h6>';
		html += '<p>' +result.PaymentMetod+ '</p>';
		if(result.TrackingHref && result.TrackingHref.length > 0) {
			html += '<h6>Sledź paczkę:</h6>';
			html += '<p><a href="' +result.TrackingHref+ '">Śledzenie paczki</a></p>';
		}
		html += '<h4>Status zamówienia:</h4>';
		html += '<p>' +result.OrderStatus+ '</p>';

		this.$response.html(html).show();

		_gaq.push(['_trackEvent','Sprawdź status zamówienia',
			'Sprawdź','Udana próba']);
	}
}

MainDefault.prototype.InitCheckOrderStatus = function()
{
	var o = new CheckOrderStatus('#checkOrderStatus');
	o.init();
};

// **************************************************************************************************
// ************************************** MainMenuC CLASS *****************************
// **************************************************************************************************

function MainMenuC()
{
    /// <summary>
    /// Główna klasa menu
    /// </summary>
}

// *****************
// Public Attributes
// *****************
MainMenuC._submenuSuffix = "_Submenu";
MainMenuC._shopOffer = ".jqShopOffer";
MainMenuC._readingGuides = ".jqReadingGuides";
MainMenuC._purchasingRules = ".jqPurchasingRules";
MainMenuC._submenuClass = ".jqSubmenu";
MainMenuC._mainMenuClassArray = new Array(MainMenuC._shopOffer, MainMenuC._readingGuides, MainMenuC._purchasingRules);
MainMenuC._hideElement = true;

MainMenuC.status = {
	selected: 'selected'	
}

/// <summary>
/// Public methods
/// </summary>
MainMenuC.IdentifyClass = function(obj, submenu){
	if(!U.IsNUE(submenu)) cpref = submenu; else cpref = '';
	for(i=0; i < MainMenuC._mainMenuClassArray.length; i++)
		if($(obj).attr('class').indexOf(MainMenuC._mainMenuClassArray[i].replace('.', '') + cpref) > -1)
			return MainMenuC._mainMenuClassArray[i] + cpref;
}

MainMenuC.__mainMenuMouseMove_hoverOver = function ()
{
	var className = MainMenuC.IdentifyClass(this);

	for(i=0; i < MainMenuC._mainMenuClassArray.length; i++)
		if(MainMenuC._mainMenuClassArray[i] != className)
			$(MainMenuC._mainMenuClassArray[i] + MainMenuC._submenuSuffix).hide();
	
	$(className + MainMenuC._submenuSuffix).stop().fadeTo('fast', 1).show();	
}

MainMenuC.__mainMenuMouseMove_hoverOut = function()
{
	if(MainMenuC._hideElement)
	{
		var className = MainMenuC.IdentifyClass(this) + MainMenuC._submenuSuffix;
		$(className).stop().fadeTo('fast', 0, function(){
			$(className).hide();
		});
	}
}


MainMenuC.prototype = {
	// **********
	// Properties
	// **********
	_mainMenuClassSelector: 'ul.glMenuNav li',
 
	config:
	{    
		 sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)    
		 interval: 100, // number = milliseconds for onMouseOver polling interval    
		 over: MainMenuC.__mainMenuMouseMove_hoverOver, // function = onMouseOver callback (REQUIRED)    
		 timeout: 500, // number = milliseconds delay before onMouseOut    
		 out: MainMenuC.__mainMenuMouseMove_hoverOut // function = onMouseOut callback (REQUIRED)    
	},

	// *******
	// Methods
	// *******
	BindSubmenuEvents: function()
	{
		$(MainMenuC._submenuClass).unbind("mouseenter").bind("mouseenter", function(){
			MainMenuC._hideElement = false;		
			
			var className = MainMenuC.IdentifyClass(this) + MainMenuC._submenuSuffix;
			var classNameArr = className.split(MainMenuC._submenuSuffix);
			if(!U.IsNUE(classNameArr[0])){
				className = classNameArr[0];
				$(className).addClass(MainMenuC.status.selected);
			}
		});
		
		$(MainMenuC._submenuClass).unbind("mouseleave").bind("mouseleave", function(){
			$(this).stop().fadeTo('fast', 0, function(){
				$(this).hide();
			});
			MainMenuC._hideElement = true; 
			
			var className = MainMenuC.IdentifyClass(this) + MainMenuC._submenuSuffix;
			var classNameArr = className.split(MainMenuC._submenuSuffix);
			if(!U.IsNUE(classNameArr[0])){
				className = classNameArr[0];
				$(className).removeClass(MainMenuC.status.selected);
			}
		});
		
	},
	
	LoadMenu: function ()
	{
		this.BindSubmenuEvents();
		$(this._mainMenuClassSelector).hoverIntent(this.config);
		$(MainMenuC._shopOffer + MainMenuC._submenuSuffix + ' li').last().css('border-right', '0px');

	}
}



// **************************************************************************************************
// *********************************** DeveloperPanelC CLASS ****************************************
// **************************************************************************************************

function DeveloperPanelC(c)
{
    /// <summary>
    /// Kontrolka sprawdzająca status zamówienia
    /// </summary>
    if (U.IsNullOrUndefOrEmpty(c))
        return;

    this.$c = c;
}

// *****************
// Static attributes
// *****************

DeveloperPanelC.TAG_jqBoxTopBar = ".jqBoxTopBar";

// **********
// Attributes
// **********

DeveloperPanelC.prototype.$c = null;
DeveloperPanelC.prototype.$boxTopBar = null;

DeveloperPanelC.prototype.$mousePressed = null;
DeveloperPanelC.prototype.$pressX = null;
DeveloperPanelC.prototype.$pressY = null;

// *****************
// Component methods
// *****************


// *******
// Methods
// *******

DeveloperPanelC.prototype.Load = function ()
{
    var inst = this;

    this.$boxTopBar = this.$c.find(DeveloperPanelC.TAG_jqBoxTopBar);
    this.$boxTopBar.mousedown(function (e)
    {
        inst.$mousePressed = true;
        inst.$pressX = e.pageX - inst.$c.offset().left;
        inst.$pressY = e.pageY - inst.$c.offset().top;
    });

    $(document).mouseup(function (e)
    {
        inst.$mousePressed = false;
    });


    $(document).mousemove(function (e)
    {
        if (inst.$mousePressed == true)
        {
            var x = e.pageX - inst.$pressX;
            var y = e.pageY - inst.$pressY;
            inst.$c.css({ left: x, top: y });
        }
    });
}

// **************************************************************************************************
// *************************************** TrackHelper CLASS ****************************************
// **************************************************************************************************

function TrackHelper()
{
    /// <summary>
    /// Główna klasa
    /// </summary>

    this.$_data = [];
}

// *****************
// Static attributes
// *****************

TrackHelper.TrackHelperCookieName = "__OFcn";
TrackHelper.TrackingCookieExpires = 7;
TrackHelper.FramesPackageLimit = 400;

// **********
// Attributes
// **********

TrackHelper.prototype.$_data = null;
TrackHelper.prototype.$_tracker = null;
TrackHelper.prototype.$_player = null;
TrackHelper.prototype.$_trackingCookieId = null;
TrackHelper.prototype.$_userSessionId = null;

// *****************
// Component methods
// *****************

TrackHelper.prototype.__ITrackerService_GenerateTrackingCookieId_Succ = function (tcId)
{
    /// <param name="usId">Tracking cookie Id</param>

    //tcId = tcId.d;

    if (!U.IsNUE(tcId))
    {
        this.$_trackingCookieId = tcId;
        U.SetCookie(TrackHelper.TrackHelperCookieName, this.$_trackingCookieId, TrackHelper.TrackingCookieExpires);
        this.LoadUserSessionId(this.$_trackingCookieId);
    }
}

TrackHelper.prototype.__ITrackerService_GenerateNewSession_Succ = function (usId)
{
    /// <param name="usId">User session Id</param>

    //usId = usId.d;

    if (!U.IsNUE(usId))
    {
        this.$_userSessionId = usId;
        this.StartTrack();
    }
}

TrackHelper.prototype.__dataSender_dataSendBecomeNecessary = function ()
{
    this.SendData(this.$_data);
    this.$_data = [];
}

TrackHelper.prototype.__tracker_eventCallback = function (tracker, frame)
{
    if (frame) this.$_data.push(frame);
    if (this.$_data.length >= TrackHelper.FramesPackageLimit)
    {
        this.SendData(this.$_data);
        this.$_data = [];
    }
}

// *******
// Methods
// *******

TrackHelper.prototype.Load = function ()
{
    var inst = this;

    $(window).unbind();
    $(window).bind("beforeunload", function ()
    {
        inst.__dataSender_dataSendBecomeNecessary();
        $(window).unbind();
    });

    var trackingCookieId = U.GetCookie(TrackHelper.TrackHelperCookieName);
    if (!U.IsNUE(trackingCookieId))
    {
        this.$_trackingCookieId = trackingCookieId;
        this.LoadUserSessionId(this.$_trackingCookieId);
    }
    else
    {
        Falcon.IFalconService.GenerateTrackingCookieId(
            function (result) { inst.__ITrackerService_GenerateTrackingCookieId_Succ(result); },
            function (result) { U.HandleAjaxError(result); }
        );

        //        $.ajax({
        //            url: "http://www.falcon.oponeo.pl/ws/JsonpTrackerService.svc/GenerateTrackingCookieId",
        //            type: "GET",
        //            data: {},
        //            dataType: "jsonp",
        //            jsonp: "jsonpCallback",
        //            success: function (data) { inst.__ITrackerService_GenerateTrackingCookieId_Succ(data); }
        //        });
    }
}

TrackHelper.prototype.LoadUserSessionId = function (trackingCookieId)
{
    var inst = this;

    Falcon.IFalconService.GenerateNewSession(
        trackingCookieId,
        function (result) { inst.__ITrackerService_GenerateNewSession_Succ(result); },
        function (result) { U.HandleAjaxError(result); }
    );

//    $.ajax({
//        url: "http://www.falcon.oponeo.pl/ws/JsonpTrackerService.svc/GenerateNewSession",
//        type: "GET",
//        data: { trackingCookieId: trackingCookieId },
//        dataType: "jsonp",
//        jsonp: "jsonpCallback",
//        success: function (data) { inst.__ITrackerService_GenerateNewSession_Succ(data); }
//    });
}

TrackHelper.prototype.SendData = function (data)
{
    if (!U.IsNUE(this.$_trackingCookieId))
    {
        if (!U.IsNUE(data))
        {
            var frames = [];
            for (var i = 0; i < data.length; ++i)
            {
                var d = data[i];
                var f = {
                    T: d.type,
                    X: d.x,
                    Y: d.y,
                    Tg: unescape(d.target),
                    V: unescape(d.value),
                    TS: d.timeSpan
                }
                frames.push(f);
            }

            Falcon.IFalconService.SaveUserSession(
                this.$_trackingCookieId, this.$_userSessionId, location.href, frames,
                null,
                function (result) { U.HandleAjaxError(result); }
            );

//            $.ajax({
//                url: "http://www.falcon.oponeo.pl/ws/JsonpTrackerService.svc/SaveUserSession",
//                type: "GET",
//                data: {
//                    trackingCookieId: this.$_trackingCookieId,
//                    sessionId: this.$_userSessionId,
//                    url: location.href,
//                    frames: frames
//                },
//                dataType: "jsonp",
//                jsonp: "jsonpCallback"
//            });
        }
    }
}

TrackHelper.prototype.StartTrack = function ()
{
    var inst = this;
    this.$_data = [];
    this.$_tracker = $.trackEvents({
        eventBufferCount: Infinity,
        eventCallback: function (sender, frame) { inst.__tracker_eventCallback(sender, frame) }
    });
}

//
// Asystent.
//
MainDefault.prototype.ShopAssistantVisible = -1;
MainDefault.prototype.ComparedList = [];

//
// Aystent, pierwsza inicjacja.
//
MainDefault.prototype.InitShopAssistant = function () 
{    
    // Blokujemy ponowne wywolanie.    
    if (this.ShopAssistantVisible != -1) return;
    MainDefault.prototype.ShopAssistantVisible = false;
    this.MountEventsOnShopAssistant(MainDefault.prototype.ShopAssistantVisible);
    $(MainDefault.TAG__Assistant).append('<input value="' + (+(new Date)) + '" type="hidden" name="checker" />');
}

//
// Asystent, odswiezenie UP.
//
MainDefault.prototype.OnRefreshShopAssistant = function () {
    $assistant = $(MainDefault.TAG__Assistant);
    if ($assistant.find('input[name=checker]').get(0)) {
        return;
    } else {
        $assistant.append('<input value="' + (+(new Date)) + '" type="hidden" name="checker" />');
    }
    $('.assistantLoading').remove();
    $alert = $assistant.find('.alert');
    if ($alert.get(0)) {
        window.setTimeout(function () {
            $alert.fadeOut(1000);
        }, 2000);
    }

    MainDefault.prototype.ShopAssistantVisible = false;
    var $tireComparedUl = $(MainDefault.TAG__TireCompared);
    if (($tireComparedUl.get(0)) && (!$tireComparedUl.hasClass('empty')))
        MainDefault.prototype.ShopAssistantVisible = true;    
    var $tireViewdUl = $(MainDefault.TAG__TireViewd);
    if ($tireViewdUl.get(0))        
        MainDefault.prototype.ShopAssistantVisible = true;    
    this.MountEventsOnShopAssistant(MainDefault.prototype.ShopAssistantVisible);
}

//
// Asystent, osadzanie eventow na asystencie.
//
MainDefault.prototype.MountEventsOnShopAssistant = function (show) {
	// Sprawdzamy czy jest asystent.
	$assistant = $(MainDefault.TAG__Assistant);
	if(!$assistant.get(0)) return;

	if(show) {	    
        $assistant.css('bottom',0).addClass('visible');
		$(document.body).css('paddingBottom',176);
	}

	$assistant.find('> div.body > h3 > a').click(function() {
		var isVisible = !(parseInt($assistant.css('bottom'),10) == 0);
		$(document.body).css('paddingBottom',isVisible?176:0);
		if(isVisible) $assistant.addClass('visible'); else $assistant.removeClass('visible');
		$assistant.animate({
			'bottom': (isVisible?0:-176)
		},500);
		MainDefault.prototype.ShopAssistantVisible = isVisible;
		return false;
	});

	$assistant.find('span.action > a').click(function() {
		$(document.body).append('<div class="assistantLoading"></div>');
		return true;
	});
}

MainDefault.prototype.RefresShopAssistantAfterBackButton = function () {    
    var $tireComparedRefreshButton = $(MainDefault.TAG__TireComparedRefreshButton);
    if (!$tireComparedRefreshButton.get(0)) return;

    var $reload = false;
    var $tireLastViewdUl = $(MainDefault.TAG__TireViewd);
    var $tireLastViewdLi = 0;
    var $tireLastViewdLiUrl = null;
    var $tireLastViewdCookie = null;
    var $tireComparedUl = $(MainDefault.TAG__TireCompared);
    var $tireComparedLi = 0;
    var $tireComparedCookie = 0;

    if ($tireLastViewdUl.get(0)) {
        $tireLastViewdLi = $tireLastViewdUl.find('li:first');
        $tireLastViewdLiUrl = $.md5($tireLastViewdLi.find('a').attr('href'));
    }    
    if ($tireComparedUl.get(0)) {
        if (!$tireComparedUl.hasClass('empty'))
            $tireComparedLi = $tireComparedUl.find('li').size();
    }
    if (!U.IsNUE(U.GetCookie("TTC_COUNT")))
        $tireComparedCookie = parseInt(U.GetCookie("TTC_COUNT"), 10);    
    if (!U.IsNUE(U.GetCookie("TLV_FIRST")))
        $tireLastViewdCookie = U.GetCookie("TLV_FIRST");    
    if ($tireComparedCookie > 0)
        if ($tireComparedLi !== $tireComparedCookie)
            $reload = true;
    if (!U.IsNUE($tireLastViewdCookie))
        if ($tireLastViewdLiUrl !== $tireLastViewdCookie)
            $reload = true;

    //console.log("tireLastViewdLiUrl: " + $tireLastViewdLiUrl);
    //console.log("tireLastViewdCookie: " + $tireLastViewdCookie);
    //console.log("reload: " + $reload);

    if ($reload)
        eval(U.GetPostBackMethod($tireComparedRefreshButton, "href"));
}
