$(function() {
	$('#top-panel').toggleForm();

	$('label.g_placeholder').placeholder();

	bslider = $('#slider').bslider({
		speed : 500 // "slow", "fast" or N (ms)
                ,interval: 4 // seconds
	});

	$('#icons-menu').iconsMenu();
	$('#primary-menu').clicks();

	//$('#slider_diskspace2').polzunok({altField:$('#slider_diskspace_value')});

	if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1)
		$("form").attr("autocomplete", "off")
})

function getClientWidth(){
	return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}
function openWin(URL,width,height,scroll,menubar,toolbar,resize,xPos,yPos,winName){
    var focusFail = false;
	if (width == "") width = "500";
        if (height == "") height = "500";
	if (scroll == "") scroll = "auto";
	if (menubar =="") menubar = "no";
	if (toolbar == "") toolbar = "no";
	if (resize == "") resize = "yes";
	if (xPos == "") xPos = 362;
	if (yPos == "") yPos = 100;
	if (winName == "") winName = "TimeWeb";
    var features ="width=" +width+ ",height=" +height+ ",scrollbars=" +scroll+ ",menubar=" +menubar+ ",toolbar=" +toolbar+ ",resizable=" +resize+ ",left=" +Math.ceil((getClientWidth()-width)/2)+ ",top=200" +yPos;
    var newWin = window.open(URL,winName,features);
	if (navigator.appVersion.indexOf("NT")!= -1){
	if (navigator.appVersion.indexOf("NT 5")!= -1){
    	    focusFail = false;
		} else if (ie4 == true)	focusFail = true;
	        }
	if (focusFail == false){
	if (window.focus) newWin.focus();
	        }
}

function log(str) {
	if (!!window.console) console.log(str)
}


/**
 * Дополним в jquery easing
 */
$.extend($.easing,
{
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	}
});


/**
 * Раскрытие/закрытие форм в верхней панели
 */
$.fn.toggleForm = function(getOptions) {   // TODO: need refactor
	var dl = $(this),
		allDd = $('dd', dl),
		ddDomain = allDd.filter('dd.b_top-panel_dd__domain'),
		ddMail   = allDd.filter('dd.b_top-panel_dd__mail'),
		ddPanel  = allDd.filter('dd.b_top-panel_dd__panel'),

		dtPanel  = dl.children('dt.b_top-panel__panel'),
		dtMail   = dl.children('dt.b_top-panel__mail'),
		dtDomain = dl.children('dt.b_top-panel__domain');

	var options = $.extend({
		speed: 'fast'
	}, getOptions);

		var speed = options.speed;

	function openDt(dt) {
		 dt
			.addClass('g_active')
			.next().addClass('b_top-panel_dd-item__show').end()
			.siblings().removeClass('g_active');
	}

	var body = $('body');
	if ( body.hasClass('open_panel') ){
		$('dd.b_top-panel_dd-item__show', dl).removeClass('b_top-panel_dd-item__show');
		dtPanel.removeClass('b_top-panel__panel__floated');
		ddDomain.css({marginRight: 82, width:0});
		ddMail.css({marginRight: 82, width:0});
		ddPanel.css({width: 294,marginRight:0});
		openDt(dtPanel);
	} else if (body.hasClass('open_mail')) {
		dtPanel.removeClass('b_top-panel__panel__floated');
		$('dd.b_top-panel_dd-item__show', dl).removeClass('b_top-panel_dd-item__show');
		ddMail.css({width: 370, marginRight:10});
		ddDomain.css({marginRight:53, width:0});
		openDt(dtMail);
	} else if (body.hasClass('open_domain')) {
		dtPanel.removeClass('b_top-panel__panel__floated');

		$('dd.b_top-panel_dd-item__show', dl).removeClass('b_top-panel_dd-item__show');
		ddDomain.css({width:220, marginRight:54});
		ddMail.css({marginRight:60, width:0});
		openDt(dtDomain);
	}

	return dl.click(function(e){
		var dt = $(e.target).closest('dt');
		if (!dt.length) return;

		//e.preventDefault();


		$('dd.b_top-panel_dd-item__show', dl).removeClass('b_top-panel_dd-item__show');

		if (dt.hasClass('g_active')) {
			dt.removeClass('g_active');
			ddDomain.animate({marginRight: 145, width:0}, speed);
			ddMail.animate({marginRight: 150, width:0}, speed);
			ddPanel.animate({width:0},speed)
		} else {

			if (/__panel/.test(dt[0].className)) {
				// Раскрываем форму панели управления

				dtPanel.removeClass('b_top-panel__panel__floated');
				ddDomain.animate({marginRight: 82, width:0}, speed);
				ddMail.animate({marginRight: 82, width:0}, speed);
				ddPanel.animate({width: 294}, speed, function() {
					openDt(dt)
				})
			} else if (/__mail/.test(dt[0].className)) {
			   // Раскрываем форму входа в почту
			   ddMail.animate({width: 370, marginRight:10}, speed)
			   ddDomain.animate({marginRight:53, width:0}, speed, function() {
				openDt(dt)
			  })
			}   else {
				// Раскрываем форму проверки домена
				ddDomain.animate({width:220, marginRight:54}, speed)
				ddMail.animate({marginRight: 60, width:0}, speed, function() {
					openDt(dt)
				})
			}
		}

		return false;
	})
}

/**
 * При клике на декор инпута, надо установить фокус на инпут
 */
 $('span.b_input').live('click', function(e) {
	$('input', this).focus();
	return false;
 })

/**
 * Placeholder
 */
$.fn.placeholder = function() {
    this.each(function() {
        var $label = $(this),
            $input = $('#' + $label.attr('for'));

        $input
            .bind('focus blur change', function(event) {
                $label.css('display', (event.type == 'blur' && !$input.val() ? '' : 'none'));
            }).trigger('blur');
    });
}

/**
 * Баннер на главной странице
 */
var bslider;
$.fn.bslider = function(getOptions) {
	if (!this.length) return;

        randomslide = Math.floor( Math.random( ) * (5) );

        if(randomslide != 0)
            $('.b_slider_slides').css('left', ((-580)*randomslide + "px"))
        $('#slider-paginator li').each(function(){
            $(this).removeClass('b_sp_item__active')
        })
        $('#slider-paginator li:eq('+ randomslide +')').addClass('b_sp_item__active');
        $('#slider-map area').attr('href', $('.b_slider_slide:eq('+ randomslide +') img').attr('link'))

	var options = $.extend({
		speed: 'slow',
		step: 580,
		interval: false
	}, getOptions);

	var $this = $(this),
		slides = $('ul.b_slider_slides', $this),
		slidesCount = $('li', slides).length-1,
		curPosition = randomslide,
		step = options.step,
		arrowRegexp = /right/,
		paginator = $('#slider-paginator').click(paginatorClick),
		paginatorItems = $('li', paginator),
		area = $('#slider-map>area')

	$('div.b_slider_arrow', $this).click(arrowClick);

	var interval;
	if (options.interval) {
		interval = setTimeout(function() {
			slide(curPosition+1);
		},options.interval*1000)
	}


	/**
	 * Перематывает баннер на переданную позицию
	 */
	function slide(toPosition) {
		if (toPosition < 0) toPosition = slidesCount;
		if (toPosition > slidesCount)  toPosition = 0;
		curPosition = toPosition;
		changeLink(curPosition)
		beforeSlide();
		slides.animate({left: -toPosition*step}, {
			duration: options.speed
			,complete: afterSlide
			,easing: 'easeInQuint'
		});
               // $('#slider-map area').attr('href', $('.b_slider_slide:eq('+ curPosition +') img').attr('link'))

	}

	/**
	 * Клик по стрелкам
	 */
	function arrowClick(e) {
		clearInterval(interval)
		if (arrowRegexp.test(this.className)) curPosition += 1;
		else curPosition -= 1;
		slide(curPosition);
	}

	/**
	 * Клик по пагинатору
	 */
	function paginatorClick(e) {
		clearInterval(interval)
		var li = $(e.target).closest('li');
		if (!li.length || li[0].className != 'b_sp_item') return;
		e.preventDefault()
		slide(paginatorItems.index(li));
	}

	/**
	 * Сработает после анимации
	 */
	function afterSlide() {
		if (options.interval) {
			interval = setTimeout(function() {
				slide(curPosition+1);
			},options.interval*1000)
		}
                $('#slider-map area').attr('href', $('.b_slider_slide:eq('+ curPosition +') img').attr('link'))
	}

	/**
	 * Сработает перед анимацией
	 */
	function beforeSlide() {

		 paginatorItems.eq(curPosition)
				.addClass('b_sp_item__active')
				.siblings().removeClass('b_sp_item__active');
	}

	/**
	 * Изменение ссылки
	 */
	function changeLink(index) {
		area.attr('href',paginatorItems.eq(index).children().attr('link'))
	}

	return {
		slide:slide
	}
}


/**
 * Icons menu
 */
$.fn.iconsMenu = function() {
	this.find('li').live('mouseenter mouseleave', function(e) {
		var image = $('img.b_IM_icon_image', this)[0];
		if (e.type == 'mouseover')
			image.src = '/img/icons-anim.gif';
		 else
			image.src = '/img/icons-menu.gif';
	})
}

calculate = {
	init:function() {
		 $(function() {
			var _this = calculate,
				summObj = {};
			_this.totalFields = $('#tariff_rate i');
			var tarifNameField = $('#tarif-name');
                        var tarifNameInput = $('#tarif_input');

			var barAlts;

			for (var bar in bars) {
				$('#slider_'+bar).polzunok({
					max:        bars[bar].values.length-1,
					min:        0,
					start:      bars[bar].start,
					//altField:   $('#slider_' + bars[i].name + '_value')//,
					slide: refreshSwatch,
					snap:true
				})

				summObj[bar] = bars[bar].start;
			}

			function getMaxValue() {
				var memValue = 0;
				for (var value in summObj) {
					if (summObj[value] > memValue) memValue = summObj[value];
				}
				return memValue;
			}

			function getSumm() {
				var summ = 0;
				for (var bar in summObj) {
					summ +=  summObj[bar];
				}
				return summ;
			}

			function refreshSwatch(bar, handle, value) {
				var opt = bar[0].id.split('slider_')[1],
					summ = 0,
					maxValue;

				var barValue = bars[opt].values[value];
				if (barValue < 0) barValue = '∞';

				$('#slider_' + opt + '_value').text(barValue)
				//summObj[opt] = bars[opt].coef*value;
				//if (tarifs[value]) echoTotal(tarifs[value].price)
				summObj[opt] = value;

				maxValue = getMaxValue();
				if (tarifs[maxValue]) echoTotal(tarifs[maxValue].price)
				tarifNameField.text(tarifs[maxValue].name).attr('href', tarifs[maxValue].url)
                                tarifNameInput.val(tarifs[maxValue].name)

			}

			function echoTotal(num) {
				var num = (num+'').split('');
				for (var i = 7;i--;) {
					_this.totalFields[i].className = 'b_dig b_dig__'+(num.pop()||'off')
				}
			}

		 })
	}
}


$.fn.polzunok = function(getOptions) {
	var options = $.extend({
		min: 0,                 // минимальное значение
		max: 10,                // максимальное значение
		start: 1,               // начальное значение
		altField: false,        // Объект Jquery. В него пойдет вывод текущего значения
		snap: false,                    // Плавно или пошагово
		startSlide: function() {},      //  Сработает при нажатие на ползунок
		stopSlide: function() {},                     // Сработает на отпускание ползунка
		slide: function(bar, handle, value) {}       // Сработает на перемещение ползунка
	}, getOptions);



	return this.each(function(n) {
		var $this = $(this),
			move = false,
			startX, curX,
			minmaxDiff = options.max - options.min,
			value = options.start,
			prevX = 0;

		var polzun =   $this.bind('click', barClick).addClass('b_polzunok_bar'),
		    polzunOffset = polzun.offset();

		var barWidth = $this.width();

		var handle =
				$('<a href="#polzunok_'+n+'" class="b_polzunok_handle"></a>')
						.appendTo(polzun)
						.bind('mousedown.polzunok click.polzunok', handleEvent);

		$(document).bind('mousemove.polzunok mouseup.polzunok', docEvent);


		 slideTo(calculateX(options.start)) // На старт

		function barClick(e) {// Нажатие на полоску
			if (e.target != this) return;
			slideTo(e.pageX - polzunOffset.left)
			return false;
		}

		function handleEvent(e) { // обработчик события ползунка
			var et = e.type,
				x = e.pageX,
				y = e.pageY;

			if (et === 'mousedown') {
				startX = x;
				startY = y;
				curX =  handle.position().left,
				move = true;
				options.startSlide(polzun, handle, value)
			}

			return false;
		}

		function docEvent(e) {  // Обработчик события документа
			if (!move) return;
			var x = e.pageX,
				y = e.pageY,
				et = e.type;

			if (et === 'mousemove') {
				newX =  curX + x - startX;

				if (newX < 0)  newX = 0;
				if (newX > barWidth) newX = barWidth

				slideTo(newX)
			}
			else if (et === 'mouseup') {
				move = false;
				options.stopSlide(polzun, handle, value);
			}

			return false;
		}

		function slideTo(x) {
			//log(x)
			if (!!options.snap)	{
				x = calculateX(calculateValue(x));
			}


			if (x != prevX) {
				handle.css({left:x});
				value = calculateValue(x);
				prevX = x;
			}

			options.slide(polzun, handle, value);

			if (options.altField) options.altField.text(value);
		}

		function calculateValue(x) {
			return options.min + (Math.round((x*(minmaxDiff))/barWidth));
		}

		function calculateX(value) {
			return (barWidth*(value - options.min))/minmaxDiff
		}

	})
}
if (typeof bars != 'undefined') calculate.init();

$.fn.clicks = function() {
	var $this = this,
		secondaryMenuItems = $('#secondary-menu ul');

	return $this.click(function(e) {
		var li = $(e.target).closest('li');
		if (!li.length) return;

		var titles = li.children('span.b_pmemu_link, a.b_pmemu_link');
		if (titles.filter('.g_active').length) return;

		$this
			.children('li')
				.find('>span.g_active, >a.g_active').removeClass('g_active').end()
				.find('i.b_primary-menu_bg').removeClass('b_primary-menu_bg__active');
		var num = li
				.find('i.b_primary-menu_bg').addClass('b_primary-menu_bg__active')
				.end()[0].className.split('__')[1].slice(0,1);

		titles.addClass('g_active')
		secondaryMenuItems.removeClass('b_hmenu__secondary-menu__active').eq(num-1).addClass('b_hmenu__secondary-menu__active');
		return false;
	})
}

/*
 * Логинимся в почту
 */

function go_webmail(){
  FormLogin = document.getElementById('webMailForm');
  var http = (location.href).match(/^https*/);
  FormLogin.action = http[0]+"://webmail.timeweb.ru/src/redirect.php";
  FormLogin.submit();
}

/*
 * Логинимся в панель управления
 */

function go_cp(){
  if(confirm("Использовать защищенное соединение (HTTPS) ?")){
     $('#cp_Form').attr("action","https://cp.timeweb.ru")
  }
}

/*
 * base64_encode_decode
 */
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4)}return output},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c)}else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}return utftext},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}output=Base64._utf8_decode(output);return output},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++}else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3}}return string}}
