var cart_block_link = ".cabinet_block a.cart-icon";
var cart_block_string = ".cabinet_block .cart-short-info";
var cart_add_link = ".add-to-cart";
var cart_path = "/cart/";
var rp_fancylinks = "a.zoomable";
var rp_serach_field = ".head-right input[type=text]";


if( function_exists("$") ){
	$(function() {
		//InitShare();
		//AjaxPathLoad();
		//CommentsInit();
		//InitRate();
		forms_init();
		SearchField_Init();
		Fancybox_Init();
		Cart_Init();

	}); // end $()
}// end if

/** Shoping cart functions **/
function Cart_Init(){
	$( cart_block_link ).click(function(){
		Cart_getDialog();
		$("#dialog").load( cart_path + "?action=getAjWindow", function(){
			$("#dialog .delete").click( Cart_deleteItem );
		});
		return false;
	});

	$( cart_add_link ).click(function(){
		Cart_getDialog();
		var d = $(this).attr("rel").split(";");
		var data = {tp: d[0], id: d[1] };
		/*var comm = $("#size").val();
		if( comm ){
			data.comm = comm;
		}*/
		if( $('#kol' + data.id).length ){
			data.kol = $('#kol' + data.id).val();
		}
		$.post(
			cart_path + "?action=aj_additem", 
			data,
			function(html){
				$("#dialog").load( cart_path + "?action=getAjWindow", function(){
					$("#dialog .delete").click( Cart_deleteItem );
				});
				$( cart_block_string ).load("/?getbasketstring=1");
			});
		return false;
	});
}

function Cart_getDialog(){
	if( !document.getElementById('dialog') ){
		$('body').append('<div id="dialog" title="Корзина товаров"></div>');
	}
	$("#dialog").dialog({bgiframe: true, width: 500, modal: true, overlay: { backgroundColor: '#000', opacity: 0.5 },
		buttons: {
			'Оформить заказ': function() {
				location.href = cart_path;
			},
			'Продолжить выбор товаров': function() {
				$( cart_block_string ).load("/?getbasketstring=1");
				$(this).dialog('destroy');
			}
		},
		close: function(event, ui) {
			$(this).dialog('destroy');
			$( cart_block_string ).load("/?getbasketstring=1");
		}
	});
}

function Cart_deleteItem( ){
	$.post( 
		cart_path + "?action=aj_delitem", 
		{ id: $(this).attr('rel') },
		function(){
			$("#dialog").load( cart_path + "?action=getAjWindow", function(){
				$("#dialog .delete").click( Cart_deleteItem );
			});
		});
	return false;
}



function Fancybox_Init(){
	if( $.fancybox ){
		$( rp_fancylinks ).fancybox({
			overlayShow: true,
			overlayOpacity: 0.5,
			zoomSpeedIn: 0,
			zoomSpeedOut:0,
			titlePosition: 'inside'
		});
	}
}

function SearchField_Init(){
	$( rp_serach_field ).click(function(){
		if( $(this).val() == $(this).get(0).defaultValue ){
			$(this).val("");
		}
	}).blur(function(){
		if( $(this).val() == "" ){
			$(this).val( $(this).get(0).defaultValue );
		}
	});
}


/** Forms functions **/
function forms_init(){

	window.abs_fields = [];

	$('.fb textarea,.fb input[type=text],.fb select,.fb input[type=password]').each(function(){
		var f_id = $(this).parents('form').attr('id');
		if( 
			$(this).siblings('label').text().indexOf('*') != -1 ||
			$(this).hasClass("required")
		){
			if( !abs_fields[f_id] ) abs_fields[f_id] = "";
			abs_fields[f_id] +=  $(this).attr('name') +";";
		}
	});

	$('.fb').submit( forms_submit );

	$('.ajax_form').unbind("submit", forms_submit).submit(function(){
		var f_id = $(this).attr('id');
		var ret = forms_check(abs_fields[f_id], this);
		if( ret ){
			var f_url = ($(this).attr('action') || "/form.send/") + "?ajax_form=1";
			var f_data = $(this).serialize();
			$.post( f_url, f_data, function(data, textStatus, XMLHttpRequest){
				alert( data );
				$('#' + f_id).get(0).reset();
			} );
		}
		return false;
	});

}

function forms_submit(){
	var f_id = $(this).attr('id');
	var ret = forms_check(abs_fields[f_id], this);
	if( ret && $(this).find("input[name=code]").length ){
		$(this).find("input[name='code']").val( RandomChars(2) + $(this).find("input[name='code']").val() + RandomChars(2) );
	}
	return ret;
}

function forms_check( d, frm, prefix ) {
	if( prefix == null ){
		prefix = "";
	}
	var e = d.split(";");
	for( var i = 0; (i < e.length && e[i] != ""); i++ ){
		var obj = $(frm).find('[name=' + prefix + e[i] +']');

		if( !forms_check_field( obj ) ){ return false; }
	}
	return true;
}

function forms_check_field( obj ){

	var err = 0;
	if( $( obj ).is(":hidden") ){
		return true;
	}
	var type = $( obj ).get(0).tagName;
	if( type == "INPUT" ){
		type = $( obj ).attr("type");
	}
	if( type == "text" && (
		$( obj ).attr("name").toLowerCase().indexOf("email") != -1 || 
		$("label[for='" + $( obj ).attr('id') + "']").text().replace("-", "").toLowerCase().indexOf("email") != -1
		) 
	){
		type = "email";
	}
	switch( type ){
		case "checkbox":
			if( $(obj).attr('checked') != "checked" ) err = "Поставьте эту галочку";
			break;
		case "SELECT":
			if( $(obj).val() == "-1" ) err = "Выберите один из пунктов";
			break;
		case "email":
			if( !forms_check_email( $(obj).val() ) ) err = "Вы ввели не верный e-mail";
			break;
		default:
			if( $(obj).val().length == 0 ) err = "Заполните это поле";
			break;
	}

	if( err != 0 ) {
		var pos = $(obj).position();
		var msg = $('<span>' + err + '</span>').addClass('error').css({
			'position': 'absolute',
			'top': (pos.top-39) + 'px',
			'left': pos.left+'px',
			'z-index': '5'
			});
		$( obj ).focus().after( msg );
		$(msg).delay(1500).fadeOut('slow', function(){$(this).remove();});
		return false;
	}
	return true;
}

function forms_check_email( str ){
	if( str.indexOf("@") == -1 || str.indexOf(".") == -1){
		return false;
	}
	var nm_host = str.split("@");
	if( nm_host[0].length < 1 ){
		return false;
	}
	var host = nm_host[1].split('.');
	if( host.length < 2 || host[host.length-2].length < 2 || host[ host.length-1 ].length < 2 ){
		return false;
	}
	return true;
}

function InitRate(){
	$('.rate a').click(function(){
		window.rate_now_updating = $(this).parents('.rate');
		var action = $(this).attr('class');
		var rel = $(this).attr('rel').split(";");
		var data = {
			'action' : 'write_rate',
			'rate' : action,
			'tp' : rel[0],
			'id' : rel[1]
		};

		$.post(
			location.href, 
			data,
			function( html ){
				$( rate_now_updating ).html( $(html).html() );
				InitRate();
			});

		return false;
	});
}

function InitShare(){
	if( $('.share').length ){
		$(".share a").attr("target","_blank").append("<i>");
		$(".share .twitter").attr({
			"title": "В Твиттер",
			"href": "http://twitter.com/?status=" + share.title + " " + share.url
		});
		$(".share .vkontakte").attr({
			"title": "Опубликовать ВКонтакте",
			"href": "http://vkontakte.ru/share.php?noparse=1&image=" + share.image + "&url=" + share.url + "&title=" + share.title + "&description=" + share.desc
		});
		$(".share .mailru").attr({
			"title": "В Мой мир",
			"href": "http://connect.mail.ru/share?share_url=" + share.url
		});
		$(".share .facebook").attr({
			"title": "В facebook",
			"href": "http://www.facebook.com/sharer.php?src=sp&u=" + share.url + "&t=" + share.title
		});
		$(".share .livejournal").attr({
			"title": "В ЖЖ",
			"href": "http://www.livejournal.com/update.bml?subject=" + share.title + "&event=" + share.desc + " " + share.url
		});
		$(".share .odnoklassniki").attr({
			"title": "Рассказать одноклассникам",
			"href": "http://www.odnoklassniki.ru/dk?st.cmd=addShare&st._surl=" + share.url
		});
		$(".share .yaru").attr({
			"title": "Поделиться ссылкой в Я.ру",
			"href": "http://wow.ya.ru/posts_share_link.xml?url=" + share.url + "&title=" + share.title
		});
	}
}

function SelectCheckBoxes( tp, selector ){
	switch( tp ){
		case 'all':
			$(selector + " input[type=checkbox]:not(:disabled)").check();
			break;
		case 'none':
			$(selector + " input[type=checkbox]:not(:disabled)").uncheck();
			break;
		default:
			$(selector + " input."+tp+"[type=checkbox]:not(:disabled)").check();
	}
	//return false;
}


function function_exists( function_name ) {
	if (typeof function_name == 'string'){
		return (typeof window[function_name] == 'function');
	} else{
		return (function_name instanceof Function);
	}
}

function Uri2Obj( str ){
	var obj = { 
		'qs': str,
		'protocol': '', 
		'host': '',
		'url':'',
		'dir':'', 
		'params': [],
		'anchor': '' };

	obj.url = obj.qs.indexOf('?') != -1 ? obj.qs.split("?")[0] : obj.qs.split("#")[0];
	var tmp = obj.url.split("://");
	obj.protocol = tmp[0] ? tmp[0] : "";
	if( tmp[1] ){
		obj.host = tmp[1].split("/")[0];
		obj.dir = tmp[1].replace(obj.host, "");
	}

	tmp = obj.qs.split("#");
	obj.anchor = tmp[1] ? tmp[1] : "";

	tmp = tmp[0].split("?");
	tmp = tmp[1] ? tmp[1].split("&") : [];
	for( var i = 0; i<tmp.length; i++ ){
		var key_val = tmp[i].split("=");
		obj.params[unescape(key_val[0])] = (key_val[1] ? unescape(key_val[1]) : "");
	}
	return obj;
}

function GetAjaxPath(){
	var uri = Uri2Obj( location.href );
	if( uri.anchor.length && uri.anchor.split("/")[0] == "nav" ){
		return uri.anchor.substr(3);
	}
	return false;
}

function AjaxPathLoad(){

	var ajax_path = GetAjaxPath();
	if( ajax_path != false ){
		$("#static").load( ajax_path + " #dinamic");
	}

	$('.menu_top a').click(function(){
		url = $(this).attr('href');
		$("#static").load( url + " #dinamic" );
		location.href = "#nav" + url;
		return false;
	});

}

function LoadAudio( container, filename ){
	AudioPlayer.setup("/images/swf/audio_player.swf", { width: 290 });
	AudioPlayer.embed(container, {soundFile: filename, autostart: "yes", transparentpagebg: "yes"});
}

var Digital = new Date();
var Expon = new Date();
	Expon.setTime (Expon.getTime() + (365*24*3600*1000));
function getCookie (name, defVal) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
			return getCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0)
			break;
	}
	return defVal;
}
function getCookieVal (offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
function setCookie (name, value) {
	var argv = setCookie.arguments;
	var argc = setCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : '/';
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) +
		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
		((path == null) ? "" : ("; path=" + path)) +
		((domain == null) ? "" : ("; domain=" + domain)) +
		((secure == true) ? "; secure" : "");
}

function CommentsInit(){
	$(".comments_form input[name=LOGIN]").val(getCookie('username',''));
	$(".comments_form").submit(function(){
		var registered = $('.login ul').length;
		if( !registered){
			if( !registered && !check_frm1('LOGIN;TXT', this) ){
				return false;
			}
			setCookie('username',$(this).find("input[name=LOGIN]").val());
		}
		var data = $(this).serialize();
		$.post(location.href, data,
			function(result) {
				 $('#comments_box').html( $(result).find('#comments_box').html() );
				 CommentsInit();
			});
		return false;
	}).keydown(function(e){
		if( e.ctrlKey && e.which==13 ){
			$(this).submit();
		}
	});

}

function http_build_query( formdata, numeric_prefix, arg_separator ) {	// Generate URL-encoded query string
	// 
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Legaev Andrey
	// +   improved by: Michael White (http://crestidg.com)

	var key, use_val, use_key, i = 0, tmp_arr = [];

	if(!arg_separator){
		arg_separator = '&';
	}

	for(key in formdata){
		use_key = escape(key);
		use_val = escape((formdata[key].toString()));
		use_val = use_val.replace(/%20/g, '+');

		if(numeric_prefix && !isNaN(key)){
			use_key = numeric_prefix + i;
		}
		tmp_arr[i] = use_key + '=' + use_val;
		i++;
	}

	return tmp_arr.join(arg_separator);
}

function in_array(needle, haystack, strict) {
	var found = false, key, strict = !!strict;
	for (key in haystack) {
		if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
			found = true;
			break;
		}
	}
	return found;
}

function RandomChars( n, chars ){
	if( chars == null ) chars = "qwertyuiopasdfghjklzxcvbnm1234567890";
	if( n == null ) n = 2;
	var str = "";
	for( i = 0; i < n; i++ ){
		str += chars.charAt( Math.round( Math.random()*chars.length-1 ) );
	}
	return str;
}
