/**
 * @author Stepan Reznikov (stepan.reznikov@gmail.com)
 * @copyright Art.Lebedev Studio (http://www.artlebedev.ru)
 */


try {
	document.execCommand("BackgroundImageCache", false, true);
}
catch (e) {}


var Utilities = {

	extend: function (subClass, superClass) {
		var F = function () {};
		F.prototype = superClass.prototype;
		subClass.prototype = new F();
		subClass.prototype.constructor = subClass;

		subClass.superclass = superClass.prototype;
		if (superClass.prototype.constructor === Object.prototype.constructor) {
			superClass.prototype.constructor = superClass;
		}
	},

	fixPNG: function (element, sizingMethod) {
		if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) {
			var src;

			if (element.tagName === 'IMG') {
				if (/\.png$/.test(element.src)) {
					src = element.src;
					element.src = "/f/1/global/i/0.gif";
				}
			}
			else {
				src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
				if (src) {
					src = src[1];
					element.runtimeStyle.backgroundImage = "none";
				}
			}

			sizingMethod = sizingMethod || 'scale';

			if (src) {
				element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='" + sizingMethod + "')";
			}
		}
	},

	toggleControls: function (control1, control2) {

		control1.find('a').click(function (event) {
			event.stopPropagation();
			event.preventDefault();
			$.ajax({
				url: $(this).attr('href'),
				type: "GET",
				dataType: "html",
				success: function () {
					control1.addClass('hidden');
					control2.removeClass('hidden');
				}
			});
		});

		control2.find('a').click(function (event) {
			event.stopPropagation();
			event.preventDefault();
			$.ajax({
				url: $(this).attr('href'),
				type: "GET",
				dataType: "html",
				success: function () {
					control2.addClass('hidden');
					control1.removeClass('hidden');
				}
			});
		});

	}
};


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);
				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;
		}
	}

});

/**
 * Эмулирует поведение 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();
	}
});

function allsitesChooser(){
	var sites = $("#sites_list");
	var sites_link = $("#sites_link");
	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");
	}

	sites_link.click(
		function(){
			$(this).toggleClass("active");
			sites.toggleClass("active");
			$(this).parent().toggleClass("slctd");
		}
	);

	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");
		}
	);
};

Keyboard_navigation = function() {
	this.init();
}

Keyboard_navigation.prototype = {
	init: function() {
		$(document).keydown(
			function(e){
				/*
				  *  Добавляем навигацию с клавиатуры
				  */
				if(e.ctrlKey){
					var link = null;
					var href = null;
					switch (e.keyCode ? e.keyCode : e.which ? e.which : null){
						case 0x25:
							link = $('link[rel="prev"]');
							break;
						case 0x27:
							link = $('link[rel="next"]');
							break;
		        	    case 0x26:
							link = $('link[rel="up"]');
							break;
						case 0x28:
							link = $('link[rel="down"]');
							break;
						case 0x24:
							link = $('link[rel="start"]');
							break;
					}
					if (link && link.length) document.location = link[0].href;
					if (href) document.location = href;
				}
			}
		)
	}
}

$(function(){
	allsitesChooser();
	new Keyboard_navigation();
});