/**
 * @author Vlad Yakovlev (scorpix@design.ru)
 * @copyright Art.Lebedev Studio (http://www.artlebedev.ru)
 * @version 0.1 (20.02.2009)
 * @requires jQuery
 */


function openPopup(eLink) {
	var newWin = window.open('about:blank', eLink.target, 'width=820,height=600,status=yes');
		if (newWin) {
			newWin.document.open();
			newWin.document.write('<html><head><title>' + eLink.target + '</title></head></title><body style="margin: 0; padding: 0 0 0 20px;" bgcolor="#F7F7F7"><iframe src="' + eLink.href + '" style="width: 800px; height: 600px;" frameborder="0"/></body></html>');
			newWin.document.close();
			return false;
		}
		return true;
	}


var ie6FixPngImagePath = '/f/1/global/i/0.gif';

if (undefined === Common) {
	var Common = {};
}

Common.Measurer = (function() {
	var funcs = {};

	var interval = 500;

	var genId =  1;

	var curHeight;

	var el;

	var isInit = false;

	var isDocReady = false;

	$(function() {
		isDocReady = true;
		isInit && initBlock();
	});

	function initBlock() {
		el = $("#measurer");
		curHeight = el.height();


		setInterval(function() {
			checkScale();
		}, interval);
		$(window).resize(callFuncs);
	}

	function checkScale() {
		var newHeight = el.height();

		if (newHeight != curHeight) {
			curHeight = newHeight;
			callFuncs();
		}
	}

	function callFuncs() {
		for (var func in funcs) {
			funcs[func]();
		}
	}

	return {
		setFunc: function(name, func) {
			if (!$.isFunction(name) && !$.isFunction(func)) {
				funcs[name] && (delete funcs[name]);

				return;
			}

			isInit = true;
			isDocReady && initBlock();

			if ($.isFunction(name)) {
				funcs[genId.toString()] = name;
				genId++;
			} else {
				funcs[name] = func;
			}
		}
	};
})();


/**
 * а­аМб�аЛаИб�б�аЕб� аПаОаВаЕаДаЕаНаИаЕ input type="search" аКаАаК аВ аЁаАб�аАб�аИ.
 */
$.browser.safari || $(function() {
	$('input[placeholder]').each(function () {
		makePlaceholder(this);
	});

	/**
	 * а­аМб�аЛаИб�б�аЕб� аПаОаВаЕаДаЕаНаИаЕ input type="search" аКаАаК аВ аЁаАб�аАб�аИ.
	 *
	 * @param {Element} elem а�аОаЛаЕ аВаВаОаДаА
	 * @param {String} [class_empty] а�аЛаАб�б� аДаЛб� аПб�б�б�аОаГаО аПаОаЛб� аВаВаОаДаА
	 */
	function makePlaceholder(elem, classEmpty) {
		classEmpty = ('string' === typeof classEmpty) ? classEmpty : 'empty';

		$(elem).focus(function () {
			if (this.value === $(this).attr('placeholder')) {
				this.value = '';
			}

			$(this).removeClass(classEmpty);
		});

		$(elem).blur(function () {
			if (!this.value.length) {
				this.value = $(this).attr('placeholder');
				$(this).addClass(classEmpty);
			}
		});

		elem.value.length || $(elem).blur();
	}
});

jQuery.extend(Number.prototype, {

	/* а�аОаЗаВб�аАб�аАаЕб� аКб�аАб�аИаВаО аОб�аОб�аМаЛаЕаНаНаОаЕ б�аИб�аЛаО: 1234567.0981 => 1 234 567,10 */
	nice: function (iRoundBase) {
		var re = /^(-)?(\d+)([\.,](\d+))?$/;
		var iNum = Number(this);
		var sNum = String(iNum);
		var aMatches;
		var sDecPart = '';
		var sMinusSign = '&minus;';
		var sTSeparator = '&nbsp;';

		if ((aMatches = sNum.match(re))) {
			var sSign = aMatches[1] ? sMinusSign : '';
			var sIntPart = aMatches[2];
			var iDecPart = aMatches[4] ? Number('0.' + aMatches[4]) : 0;

			if (iDecPart) {
				var iRF = Math.pow(10, iRoundBase ? iRoundBase : 2);
				iDecPart = Math.round(iDecPart * iRF);
				if (iRF.toString().length - 1 > iDecPart.toString().length && iDecPart != 0){
					for (var k = 0; k < (iRF.toString().length - 1) - iDecPart.toString().length; k++){
						iDecPart = "0" + iDecPart;
					}
				}
				sDecPart = iDecPart ? ',' + iDecPart : '';
			}

			if (Number(sIntPart) < 10000) {
				return sSign + sIntPart + sDecPart;
			}
			else {
				var sNewNum = '';
				var i;
				for (i = 1; i * 3 < sIntPart.length; i++) {
					sNewNum = sTSeparator + sIntPart.substring(sIntPart.length - i * 3, sIntPart.length - (i - 1) * 3) + sNewNum;
				}
				return sSign + sIntPart.substr(0, 3 - i * 3 + sIntPart.length) + sNewNum + sDecPart;
			}
		}
		else { // аНаАаМ б�б�аО-б�аО аНаЕ б�аО аПаОаДб�б�аНб�аЛаИ
			return sNum;
		}
	}

});

Common.checkCanvas = function() {
	if (undefined !== window.HTMLCanvasElement)
		return true;

	// а� IE аДаЛб� VML аНаАаДаО аДаОаБаАаВаИб�б� б�б�аЕаМб� аИ б�б�аИаЛаИ.
	if (!document.namespaces['v']) {
		document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');

		var ss = document.createStyleSheet();

		ss.cssText = 'v\\:* {behavior:url(#default#VML);display:block;}';
	}

	return false;
}

Common.isCanvas = Common.checkCanvas();

if ($.browser.msie) {
	try {
		document.execCommand('BackgroundImageCache', false, true);
	} catch(e) {}

	function fixIePng(element) {
		if (!(/MSIE (5\.5|6).+Win/.test(navigator.userAgent))) {
			return;
		}

		var src;

		if ('IMG' == element.tagName || ('INPUT' == element.tagName && 'image' == element.type)) {
			if (/\.png$/.test(element.src)) {
				src = element.src;
				element.src = ie6FixPngImagePath;
			}
		} else {
			src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);

			if (src) {
				src = src[1];
				element.runtimeStyle.backgroundImage = 'none';
			}
		}

		var reScaleMode = /iesizing\-(\w+)/;
		var m = reScaleMode.exec(element.className);

		if (src) {
			var scaleMode = (m) ? m[1] : 'crop';
			element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='" + scaleMode + "')";
		}
	}
}


function showJsBlocks(){
	$('.js_enable').css("visibility","visible");
}

function colorizeResizeTable(){
	if ($.browser.msie) {
			var measurer = $("#measurer").height()*34;
			$('.text_data').prev(".caption").width($("#measurer").height()*34);
		}
	else {
		var measurer = $("#measurer").height()*38;
	}

	var tableWidth = $('.text_data')

	tableWidth.each(
		function(i){
			$('tr:has("td"):even', $(this)).addClass("stripe");
			if(!$(this).hasClass('wide')){
				if ($(this).width() > measurer){
					$(this).width(measurer);
				}
			}
		}
	);
}

function selectorToggle(){
	$('.selector').hover(
		function(){
			$(this).addClass('hovered');
		},
		function(){
			$(this).removeClass('hovered');
		}
	);
	$('.selector').click(
		function(e){
			e.stopPropagation();
			$('.selector_block').show();
		}
	);
	$(document).click(
		function(){
			$('.selector_block').hide();
		}
	);
}

function brightLinks(){

	if($("html").hasClass("no_contrast")){
		var arr = $("#main_navigation li.selected, .left_column .navigation li .marked");

		if(arr.length != 0){
			var obj = $(arr[arr.length-1]);
			if(obj[0].nodeName === "B" || obj[0].nodeName === "A"){
				var obj = $(arr[arr.length-1]).find(".w");
			}

			if(!(obj[0].nodeName === "LI")){
				var s = obj.text().split(/\u0020/);
				var outputStr = '';
				for (var k = 0; k < s.length; k++){
					outputStr += "<span class='w'>" + s[k] + "</span> ";
				}
				obj.replaceWith(outputStr);

				var tmp = $(arr[arr.length-1]).find(".w");
				obj = $(arr[arr.length-1]).find(".w");
			}
			else{
				var tmp = $(obj[0]);
			}

			var startColor = tmp.css("background-color");
			if(startColor == 'rgb(0, 122, 194)' || startColor == '#007ac2'){
				var endColor = "#99ccff";
			}
			else{
				var endColor = "#ccff66";
			}

			jTweener.addTween(
				obj,
				{
					backgroundColor: endColor,
					time: 0.5,
					delay: 0.5,
					transition: 'easeNone'
				}
			);
			jTweener.addTween(
				obj,
				{
					backgroundColor: startColor,
					time: 0.5,
					delay: 1,
					transition: 'easeNone'
				}
			);
			/*obj.animate(
				{
					backgroundColor: endColor
				}, 500,
				function(){
					obj.animate(
						{
							backgroundColor: startColor
						}, 500);
				}
			);*/
		}
	}
}

function allsitesChooser(){
	var sites = $("#sites_list");
	var closer = $("#sites_list .closer");
	var all = $("#sites_list .allsitesall");
	var sub = $("#sites_list .allsitessub");
	var all_list = $("#sites_list .allsites_list");
	var sub_list = $("#sites_list .subs_sites_list");

	if($(document).height() < 900){
		sub_list.height("40em");
	}

	all.click(
		function(){
			var obj = $(this);
			if(obj.hasClass("pseudo_link")){
				all.removeClass("pseudo_link").addClass("selected");
				sub.removeClass("selected").addClass("pseudo_link");
				all_list.removeClass("hidden");
				sub_list.addClass("hidden");
			}
		}
	);

	sub.click(
		function(){
			if($(this).hasClass("pseudo_link")){
				sub.removeClass("pseudo_link").addClass("selected");
				all.removeClass("selected").addClass("pseudo_link");
				sub_list.removeClass("hidden");
				all_list.addClass("hidden");
			}
		}
	);

	closer.hover(
		function(){
			closer.addClass("active");
		},
		function(){
			closer.removeClass("active");
		}
	);

	closer.click(
		function(){
			sites.addClass("hidden");
		}
	);
}

function setCookie(cookieName, cookieContent, cookieExpireTime){
    if(cookieExpireTime>0){
        var expDate=new Date()
        expDate.setTime(expDate.getTime()+cookieExpireTime*1000*60*60)
        var expires=expDate.toGMTString()
        document.cookie=cookieName+"="+escape(cookieContent)+"; path="+escape('/')+"; expires="+expires
    }else{
        document.cookie=cookieName+"="+escape(cookieContent)+"; path="+escape('/')+"";
    }
}

function contrastSwitcher(){
	var contrastButton = $(".site_version p");
	contrastButton.click(
		function(){
			if ($("html").hasClass("contrast")){
				setCookie("contrast", "false", 0);
				$("html").removeClass("contrast").addClass("no_contrast");
			}
			else{
				setCookie("contrast", "true", 0);
				$("html").removeClass("no_contrast").addClass("contrast");
			}
			return false;
		}
	);
}

$(function(){
	colorizeResizeTable();
	selectorToggle();
	brightLinks();
	showJsBlocks();
	allsitesChooser();
	contrastSwitcher();
});

