/**
 * @author alltouch
 */
var piro = new Object();

piro . options = {
	'path' : '/ajax/',
	'debugMode' : true
};

if( !$ . browser . mozilla ){
	piro . options . debugMode = false;	
}

if(!window . console){
	piro . options . debugMode = false;
}

/**
 * Обертка для функции console.debug. На продакшине она ничего выводить не будет)
 * @param {Object} text
 */
piro . log = function(text){
	if( piro . options . debugMode ){
		console . debug(text);
	}
}

/**
 * Служебная утилита для вывода логов при разработке
 * @param {Object} text
 */
piro . warning = function(text){
	if( piro . options . debugMode ){
		console . warn(text);
	}
}

/**
 * Дефолтный обработчик ошибок для аяксовых запросов
 * @param {Object} obj
 */
piro . ajaxError = function(obj){
	piro . log(obj);
	piro . warning('error with ajax query');
	piro . loading . clear();
	piro . alert . clear();
	piro . alert . loadCustom('serverProblem');
}

/**
 * Шаблон для аяксовых запросов
 * @param {string} url адрес для запроса
 * @param {Object} data данные для щапроса
 * @param {function} success обратотчик при успехе
 * @param {function} error обработчик при неудаче
 */
piro . ajax = function( url, data, success, error){
	
	var postData = $.toJSON(data);
	
	if(!success){
		success = function(obj){
			piro . alert . loadCustom('success');
			piro . log(obj);
			piro . warning('no success listener');
		}	
	}
	
	if(!error){
		error = piro . ajaxError;
	}	
	
	$.ajax({
		'type' : 'POST',
		'url' : url,
		'data' : 	{ data: postData },
		'dataType' : 'json',
		'success' : success,
		'error' : error
	});	
	
}

/**
 * Форматирования цены в виде "ххх ххх"
 * @param {Number} text
 */
piro . formatPrice = function(text){
	var t = '' + text;
	var r = '';
	var d = '';
	if(t.indexOf('.') > 0){
		d = '.' + t.substr(t.indexOf('.')+1);
		t = t.substr(0, t.indexOf('.'));  
	}
	if(t.length < 4){
		
	}
	else if(t.length % 3 == 1){
		r = t.substr(0,1) + ' ';
		t = t.substr(1);
	} else if(t.length % 3 == 2){
		r = t.substr(0,2) + ' ';
		t = t.substr(2);
	}
	while(t.length > 3){
		r += t.substr(0,3) + ' ';
		t = t.substr(3);
	}
	r += t;
	return r + d;
}

/**
 * Оболочка для получания значения scrollY в разных браузерах
 */
piro . scrollY = function(){
	if($ . browser . msie){
		return document.documentElement.scrollTop || document.body.scrollTop;
	}
	return window.scrollY;
}

/**
 * Оболочка для вызока исскуственных триггеров
 * @param {String} event Название искуственного ивента
 */
piro . call = function(event){
	$('body').trigger({
		'type': 'piro:' + event
	});
}

piro . checkBrowser = function(){
	/*if($.cookie('showBrowserAlert') == 'true'){
		return;
	}*/
	
	if(jQuery.browser.msie && jQuery.browser.version == '6.0'){
		piro . alert . loadCustom('badBrowser');
	
		var date = new Date();
		date.setTime(date.getTime() + (2 * 24 * 60 * 60 * 1000));
		$.cookie('showBrowserAlert', 'true', { path: '/', expires: date });	
	}	
}

piro . removeFrame = function(){
	$('#convertionFrame').remove();
}

piro . addFrame = function(src){
	$('body').append('<iframe id="convertionFrame" src="/conv/' + src + '"></iframe>');
}

/**
 * Генерирует имя класса для смены дизайна в разные поры года (например на праздники)
 */
piro . generateSkinClass = function(){
	var opt = [
		{
			'month' : 11,
			'from' : 15,
			'to' : 31,
			'class' : 'NY'
		},
		{
			'month' : 0,
			'from' : 1,
			'to' : 20,
			'class' : 'NY'
		},
		{
			'month' : 1,
			'from' : 1,
			'to' : 15,
			'class' : 'STN'
		},
		{
			'month' : 1,
			'from' : 18,
			'to' : 24,
			'class' : '23FEB'
		},
		{
			'month' : 2,
			'from' : 1,
			'to' : 2,
			'class' : 'SPRING'
		},
		{
			'month' : 2,
			'from' : 3,
			'to' : 9,
			'class' : '8MARCH'
		},
		{
			'month' : 2,
			'from' : 10,
			'to' : 31,
			'class' : 'SPRING'
		},
		{
			'month' : 3,
			'from' : 1,
			'to' : 1,
			'class' : 'SPRING'
		},
		{
			'month' : 3,
			'from' : 5,
			'to' : 30,
			'class' : 'EASTER'
		},
		{
			'month' : 4,
			'from' : 1,
			'to' : 1,
			'class' : 'EASTER'
		},
		{
			'month' : 5,
			'from' : 1,
			'to' : 15,
			'class' : 'SUMMER-BERRY'
		},
		{
			'month' : 5,
			'from' : 18,
			'to' : 28,
			'class' : 'GRADUATION'
		},
		{
			'month' : 5,
			'from' : 29,
			'to' : 31,
			'class' : 'SUMMER-WREATH'
		},
		{
			'month' : 6,
			'from' : 1,
			'to' : 31,
			'class' : 'SUMMER-WREATH'
		},
		{
			'month' : 7,
			'from' : 1,
			'to' : 1,
			'class' : 'SUMMER-WREATH'
		},
		{
			'month' : 8,
			'from' : 1,
			'to' : 31,
			'class' : 'AUTUMN'
		},
		{
			'month' : 10,
			'from' : 1,
			'to' : 15,
			'class' : 'AUTUMN'
		},
		{
			'month' : 11,
			'from' : 1,
			'to' : 14,
			'class' : 'WINTER'
		}
	];
	
	var l = opt . length;
	var D = new Date();
	var m = D . getMonth();
	var d = D . getDate();
	for(var i = 0; i < l ; i++){
		if(opt[i].month == m && opt[i].from <= d && opt[i].to >= d){
			return 'holiday-' + opt[i]['class'];
		}
	}
	return '';
}

/* ------------------------------------------------------------- */

$(function(){
	if (piro.page) {
		piro.page.init();
		piro . checkBrowser();
		
		if (jQuery.browser.msie && jQuery.browser.version == '6.0') {
			$('#overlay').height($('body').children('.overflow').eq(0).height()+'px');
		}
	}
	$('body').addClass(piro . generateSkinClass());
})

