$.fn.hasAttr = function(name) {  
	return this.attr(name) !== undefined;
};

function parseJSON(str){
	if ($.trim(str) == '') return false;
	return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(str.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + str + ')');
}

function checknumbr(x) {
	var anum=/(^\d+$)|(^\d+\.\d+$)/

	if (anum.test(x)) {
		return true;
	}

	return false;
}

function saveCount()
{
	var data = {};
	var config = {};

	if(typeof arguments[0] == 'object') {
		config = $.extend(config, arguments[0]);
	}

	if(typeof config['onComplete'] != 'function')
		config['onComplete'] = function(responceText) {
			if(responceText == 'ok')
				document.location.reload();
		};

	if(typeof config['jq_text_fields'] !== 'undefined')
		var jq_text_fields = config['jq_text_fields'];
	else
		var jq_text_fields = $("#tab_container_cart_main .items-count INPUT[type=text]");

	jq_text_fields.each(function(){
		if(parseInt($(this).val()) > 0) {
			data[$(this).attr('elementid')] = $(this).val();
		}
	});
	$.ajax({
		url: '/bitrix/tools/gregory_furletov/update_products_counts_in_cart.php',
		type: 'post',
		data: ({count:data}),
		success: function(responceText){
			config.onComplete(responceText);
		}
	});
}

/*
 * Эта функция находит поле ввода кол-ва товаров и если это число, то в зависимости
 * от класса спина (spin1, spin2) увеличиваем или уменьшаем кол-во заказываемых товаров
 */
function spinButtonClick ()
{
	var field = $(this).parent().parent().find('input:first');
	if(checknumbr(field.val()))
	{
		if($(this).hasClass('spin1'))
			field.val(  parseInt(field.val())+1 );
		else if($(this).hasClass('spin2'))
		{
			if(field.val() != '0' && field.val() != '1')
				field.val(  parseInt(field.val())-1 );
		}
	}
	else
		alert('Неверный формат числа количества товаров');
	return false;
}

/*
 * Отправка формы авторизации
 */
function Profile_submit_auth()
{
	var fields = {};
	var fields_vals = {};
	$('#userform_login INPUT').each(function(){
		if($(this).hasAttr('name'))
		{
			fields[$(this).attr('name')] = $(this);
			fields_vals[$(this).attr('name')] = $(this).val();
		}
	});
	var url = '/bitrix/tools/ajax_profile_form_submit.php?mode=user_login';
	$.ajax({
		url:  url,
		type: 'POST',
		data: (fields_vals),
		success: function(response, code){
			var json = parseJSON(response);
			var focused = false;
			if(!json || json['error'] === undefined) {
				/*alert('Вы успешно авторизировалить');*/
				tabClick( $('A[href="#tab_container_profile"]'), true );
			}
			else
			{
				alert('Неверный логин/пароль');
				fields['LOGIN'].focus();
			}
		},
		error:  function(xhr, str){
			alert('Возникла ошибка: ' + xhr.responseCode);
		},
		beforeSend: function(){
			
		},
		complete: function(){
			//$('#something').hide();
		}
	});
}

/*
 * 
 */
function Profile_reset_form()
{
	$('#userform_data').get(0).reset();
	return false;
}

/*
 * Сохранение формы профиля
 */
function Profile_submit_form()
{
	var fields = {};
	var fields_vals = {};
	$('#userform_data INPUT, #userform_data SELECT, #userform_data TEXTAREA').each(function(){
		if($(this).hasAttr('name'))
		{
			fields[$(this).attr('name')] = $(this);
			fields_vals[$(this).attr('name')] = $(this).val();
		}
	});
	var url = '/bitrix/tools/ajax_profile_form_submit.php?mode=user_edit';
	$.ajax({
		url:  url,
		type: 'POST',
		data: (fields_vals),
		success: function(response, code){
			var json = parseJSON(response);
			var focused = false;
			if(!json || json['errors'] === undefined) {
				alert('Профиль успешно сохранен');
				tabClick( $('A[href="#tab_container_profile"]'), true );
			}
			else
			{
				alert('Где-то ошибка.');
				$.each(fields, function(k,v){
					if(json['errors'][k] !== undefined && json['errors'][k] !== undefined){
						v.parent().addClass('errorField').removeClass('checkField');
						if(!focused){
							focused = true;
							v.focus();
						}
					}else
						v.parent().removeClass('errorField').addClass('checkField');
				});
			}
		},
		error:  function(xhr, str){
			alert('Возникла ошибка: ' + xhr.responseCode);
		},
		beforeSend: function(){
			
		},
		complete: function(){
			//$('#something').hide();
		}
	});
}

/*
 *  Переключение табов в корзине
 */
function tabClick ()
{
	if(typeof arguments[0] != "undefined" && typeof arguments[1] == "boolean")
		var link = arguments[0];
	else
		var link = $(this);

	if(link.attr('rel') != 'isLink') {
		var element_id = link.attr('href');
		if($(element_id).length) {
			$('#cart_tabs A').removeClass('ctab_selected');
			link.addClass('ctab_selected');
			$('DIV.cart_tab_container').hide();
			if( link.attr('rel') )
			{
				eval("var params = " + link.attr('rel'));
				if(typeof params.loadPage != "undefined")
				{
					$(element_id).load(params.loadPage);
				}
			}
			window.location.hash = element_id;
			$(element_id).show();
		}
		return false;
	}
}


/**
 * Обновление кол-ва товаров в корзине и их общую цену
 */
function updatePriceInCart()
{
	$.ajax({
		url:  '/site-click/ajax-updatePriceInCart.php',
		type: 'GET',
		success: function(response, code){
			var values = (new RegExp('^([^:]*)::([^:]*)$', 'ig')).exec(response);
			if(typeof values[1] != 'undefined' && values[2] != 'undefined') {
				$('#cart_items_count').html( values[1] );
				$('#cart_items_sum').html( values[2] );
			}
		}
	});
}

$(function(){
	if($(window.location.hash).length && $('A[href="'+window.location.hash+'"]').length) {
		// переключаем таб по хешу или-же открываем первый таб
		tabClick( $('A[href="'+window.location.hash+'"]'), true );
	}else{
		// показываем первый таб-контейнер
		$('DIV.cart_tab_container:first').show();
	}
	// при нажатии на таб ..
		$('#cart_tabs A').click(tabClick);	
	// при нажатии на спин (счетчик - Up/Down spin button)
		$('DIV.spins A').click(spinButtonClick);
});

