var sLang = $("html").attr("lang");

var navigationLinks = {
	'next':  { keyCode: 0x27 },
	'prev':  { keyCode: 0x25 },
	'up':    { keyCode: 0x26 },
	'down':  { keyCode: 0x28 },
	'start': { keyCode: 0x24 }
}

/*
* Popup block v2.0
*/
var popup_block = function (options) {

	var that = {};

	var keep = false,
	    documentClickHandler,
	    documentKeyDownHandler;


	that.hide = function (event) {
		if (keep) {
			keep = false;
			return;
		}
		
		if (options.onBlockHide) {
			options.onBlockHide(options);
		}

		if (options.fader) {
			options.fader.addClass("hidden");
		}
		options.container.addClass("hidden");

		$(document).unbind("click", documentClickHandler);
		$(document).unbind("keydown", documentKeyDownHandler);
	};


	that.cancel = function (event) {
		var code = event.keyCode ? event.keyCode : event.which ? event.which : null;
		if (code === 27) {
			that.hide(event);
		}
	};


	that.show = function (event) {

		options.container.removeClass("hidden");
		if (options.onBlockShow) {
			options.onBlockShow(options);
		}

		if (options.fader) {
			options.fader
				.removeClass("hidden")
				.click(function (event) {
					that.toggle(event);
				});
		}

		documentClickHandler = function (event) {
			if (!event.which || event.which !== 1)
				keep = true;

			that.hide(event);
		};

		documentKeyDownHandler = function (event) {
			that.cancel(event);
		};

		$(document).click(documentClickHandler);
		$(document).keydown(documentKeyDownHandler);
	};


	that.toggle = function (event) {

		event.preventDefault();
		event.stopPropagation();

		if (options.container.hasClass("hidden")) {
			that.show(event);
		} else {
			that.hide(event);
		}
	};


	options.container.click(function (event) {
		keep = true;
	});

	options.link.click(function (event) {
		that.toggle(event);
	});

	if (options.close) {
		options.close.click(function (event) {
			that.toggle(event);
		});
	}

	return that;
};

$(function(){
	$('link').each(function() {
		var rel = $(this).attr('rel');

		if (navigationLinks[rel]) navigationLinks[rel].href = $(this).attr('href');
	});

	$(document).keydown(function(event) {
		if (!event.ctrlKey) return true;
		
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : null;

		for (var rel in navigationLinks) {
			if (navigationLinks[rel].keyCode == keyCode && navigationLinks[rel].href) {
				document.location = navigationLinks[rel].href;
			}
		}
	});
});

$(function(){

	/* Search form */
	if($("#search-form").length){
		var aForm = [
			{sID:'search-form',oSubmit:{bValid:true,bDisabled_button:true,bChanged:false}, sType:'form'},
			{sID:'search-input',sParent_ID:'search-form',sRow_ID:'search-input',oRequired:{sLogic:'or'},sType:'text'},
			{sID:'search-submit',sParent_ID:'search-form',sRow_ID:'search-submit',bDisableOnSubmit: false,sType:'submit'}
		];
		if (!$.browser.msie) aForm[1]['sPlaceHolder']=$('#search-input').attr('placeholder');
		(new FormBuilder(aForm).getForm()).init();
	}
	
	/* * * * */

	/* KS decor-button */
	$(".ks-button").click(function(){
		var sHref=$("a:first",this).attr("href");
		if(sHref){
			window.location.href = sHref;
		}
	});

	/* banner */
	var jVerticalBanner = $("#vertical-banner");
	if(jVerticalBanner.length){
		$.get(
			"/banner/",
			{
				l: iLang,
				o: iObject,
				t: iThread,
				f: 1,
				a: 1
			},
			function(data, textStatus, XMLHttpRequest){
				jVerticalBanner.html(data);
			},
			'html'
		);
	}

	/* sms-banner */
	if($("#sms-banner-1").length){
		$.get(
			"/banner/",
			{
				sms: 1,
				l: iLang,
				o: 42,
				t: 42,
				f: 2,
				a: 4
			},
			function(data){
				data = eval(data);
				$("#sms-banner-1").html(data.banner_1);
				$("#sms-banner-2").html(data.banner_2);
				$("#sms-banner-3").html(data.banner_3);
				$("#sms-banner-4").html(data.banner_4);
			},
			"JSON"
		);
	}

	/* tags toggle */
	var jTagList = $(".tags-navigation .tags-list");
	var jTagToggle = $(".tags-navigation .tags-toggle");
	if(jTagToggle.length && jTagList.length){
		jTagToggle.click(function(){
			jTagList.slideToggle(function(){
				jTagToggle.toggleClass("selected");
			});
		});
		if( !jTagToggle.hasClass("selected") ){
			jTagList.hide();
		}
	}

});

/**
 *  contrast version on/off
 *  
 *  @require $.cookie plugin
 */
/*
$(function(){
	var jOn = $('#contrast-on');
	var jOff = $('#contrast-off');
	jOn.click(function(){
		jOn.addClass('hidden');
		jOff.removeClass('hidden');
		$(document.documentElement).addClass('contrast');
		$.cookie('contrast','enable', { expires: 365, path: '/' });
	});
	jOff.click(function(){
		jOff.addClass('hidden');
		jOn.removeClass('hidden');
		$(document.documentElement).removeClass('contrast');
		$.cookie('contrast',null,{path: '/'});
	});
	if ($.cookie('contrast')=='enable') jOn.click();
});
*/

/* contract/prepaid tariff plan mode switcher */

$(function(){
	if (window.is_tariff_model_switcher)
	{
		var jRoot = $('.content-reducer:first', $('#content'));
		var jjBlock = $('.main', jRoot);
		var jjSubsegmental = jjBlock.filter('.contract, .prepaid');
		var jjSwitch = $('#subsegment-switch a[plan]');
		var jDifferenceSwitch = $('#subsegment-difference');
		var jDifference = $('#difference-hint');
		var jHash = window.location.hash;
		if (!jHash){
			jHash = "#prepaid";
		}

		jjSwitch.click(function()
		{
			if(!$(this).hasClass('selected'))
			{
				jjSubsegmental.addClass('hidden').filter('.'+$(this).attr('plan')).removeClass('hidden');
				if ($.browser.msie) jRoot.css('zoom',1);
				jjSwitch.removeClass('selected');
				$(this).addClass('selected');
				if(jDifferenceSwitch.hasClass('selected')){
					jDifferenceSwitch.click();
				}
				window.location.hash = $(this).attr('plan');

				 if($(this).attr('plan') == 'contract'){
					$('.for_contract').show();
					$('.for_prepaid').hide();

					if($('.tariff-tabs .selected').hasClass('for_prepaid')){
						$('.contract .tariff-list').eq(0).removeClass('hidden').addClass('tab-first');
						$('.tariff-tabs td').removeClass('selected');
						$('.tariff-tabs td').eq(0).addClass('selected');
					}

				}

				 if($(this).attr('plan') == 'prepaid'){
					$('.for_prepaid').show();
					$('.for_contract').hide();

					if($('.tariff-tabs .selected').hasClass('for_contract')){
						$('.tariff-tabs td').removeClass('selected');
						$('.prepaid .tariff-list').eq(0).removeClass('hidden').addClass('tab-first');
						$('.tariff-tabs td').eq(0).addClass('selected');
					}

				}



			}

			return false;

		});
		var aUri = window.location.href.split("/");
		if (jHash){
			switch(jHash){
			case "#contract":
				jjSwitch.filter('[plan=contract]').click();
				break;
			case "#prepaid":
				jjSwitch.filter('[plan=prepaid]').click();
				break;
			}
		}else{
			jjSwitch.filter('[plan='+(aUri[aUri.length-2]=='contract'?'contract':'prepaid')+']').click();
		}
		jDifferenceSwitch.click(function()
		{
			if($.browser.msie) jDifference.toggle(); else jDifference.toggle('normal');
			$(this).toggleClass('selected');
		});
	}
});


function dressStripedVest(jTable, iGt)
{
	var iGt = --iGt || 0;
	jTable.find('tr:gt('+iGt+'):even').addClass('even');
}


/* faq */

var FaqWithNavigation = $.inherit(
{
	__constructor: function(oParams)
	{
		var jjNavigation = oParams.navigation ? oParams.navigation.find('>li') : new jQuery();
		var jjFaq = oParams.faqList;

		jjNavigation.click(function()
		{
			if (!$(this).hasClass('selected'))
			{
				jjNavigation.removeClass('selected');
				$(this).addClass('selected');
				if ($(this).attr('id') == 'faq-category-all')
					jjFaq.show();
				else
				{
					jjFaq.hide().filter("#faq-content-"+$(this).attr("id").split("-")[2]).show();
				}
			}
		});
	}
});

var Faq = $.inherit(
{
	__constructor: function(oParams)
	{
		var jjFaq = oParams.faq;

		jjFaq.find('dd').hide();
		jjFaq.find('dt').click(function()
		{
			$(this).toggleClass('selected').next('dd').toggle();
		});
	}
});

var FaqLike = $.inherit(
{
	__constructor: function(oParams)
	{
		var jjHead = $(oParams.headSelector, $(oParams.rootSelector));
		jjHead.wrapInner('<span class="pseudo"></span>')
			.click(function(e,action){
				action = action || 'toggle';
				$(this).nextUntil(oParams.untilSelector)[action]();
			})
			.trigger('click', 'hide');

		var jSwither = $(oParams.switcherSelector);
			
		jSwither.find('.expand, .collapse')
		.click(function()
		{
			$(this).hide();
			if ($(this).hasClass('expand'))
			{
				jjHead.trigger('click','show');
				jSwither.find('.collapse').show();
			}
			else
			{
				jjHead.trigger('click','hide');
				jSwither.find('.expand').show();
			}
		});
	}
});


/* navigation */
$(function(){
	var
		jjSegmentMapTabs = $('#segment-map-tabs li:not(.direct-link)')
		, jSegmentMapContainer = $('#segment-map-container')
		, jSegmentMapWrapper = $('#segment-map-container').parent()
		, jSegmentMap = $('#segment-map')
	;
	jSegmentMapWrapper.height( jSegmentMapContainer.height()+10 );
	
	$(document).click(function(event){
		if (!$(event.target).parents().filter(jSegmentMapContainer).length) {
			closeSegmentMap();
		}
	});

	jjSegmentMapTabs.click(function(){
		if (!$(this).hasClass('selected') || jSegmentMap.hasClass('hidden') || jSegmentMap.hasClass('chidden')) {
			var sSubsegment = $(this).attr('subsegment');
 
			jSegmentMap.attr('class', 'subsegment' + sSubsegment);
			jSegmentMapContainer.addClass('expanded');
			//jSegmentMapContainer.css({'marginBottom': -jSegmentMapContainer.height()+iHeight});
			//rocon.update($('#segment-map-container').get(0));
			jjSegmentMapTabs.filter('.selected').removeClass('selected');
			$(this).addClass('selected');
			//jjSegmentMapTabs.each(function(){
				rocon.update(this);
			//});
		} else {
			closeSegmentMap();
		}
		
		return false;
	});

	$('#close-segment-map').click(closeSegmentMap);
	
	function closeSegmentMap() {
		jSegmentMap.attr('class', 'hidden');
		jSegmentMapContainer.removeClass('expanded');
		//rocon.update($('#segment-map-container').get(0));
		return false;
	}
});

function servicesMap(options)
{
	var defaults = {
		container : $('#services-type .services-block'),
		item : '>ul>li',
		trigger : '.trigger',
		close : '>ins.icon-close',
		additional : '.additional',
		expandedClass : 'expanded',
		fixMargin: true
	}
	
	this.options = $.extend({}, defaults, options ? options : {});
	
	var current = new jQuery;
	
	var sItem = this.options.item;
	var sTrigger = this.options.trigger;
	var sClose = this.options.close;
	var sAdditional = this.options.additional;
	var exClass = this.options.expandedClass;
	var bFix = this.options.fixMargin;
	
	function closeExpander(e){
		current.css({marginBottom: 0}).removeClass(exClass);
		$(document).unbind('click', closeExpander);
	}
	
	this.options.container.each(function()
	{
		var list = $(this);
		var items = list.find(sItem);
		var trigger = items.filter(sTrigger);
		var close = list.find(sClose);

		trigger.find('a, .pseudo').click(function()
		{
			current.removeClass(exClass);
			current = list;
			var offset = trigger.outerHeight();
			list.addClass(exClass);
			
			if(bFix){
				items.filter(sAdditional).each(function(){
					offset -= $(this).outerHeight();
				});
				list.css({marginBottom: offset});
			}
			
			$(document).bind('click', closeExpander);
			
			return false;
		});
		close.click(closeExpander);
	});
}
