/*LIB*/
function clearCookie(){var now = new Date();var yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);this.setCookie('co'+this.obj, 'cookieValue', yesterday);this.setCookie('cs'+this.obj, 'cookieValue', yesterday);};
function setCookie(cookieName, cookieValue, expires, path, domain, secure){document.cookie=escape(cookieName) + '=' + escape(cookieValue)+(expires ? '; expires=' + expires.toGMTString() : '')+(path ? '; path=' + path : '')+(domain ? '; domain=' + domain : '')+(secure ? '; secure' : '');};
function getCookie (cookieName){var cookieValue = '';var posName = document.cookie.indexOf(escape(cookieName) + '=');if (posName != -1) {var posValue = posName + (escape(cookieName) + '=').length;var endPos = document.cookie.indexOf(';', posValue);if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));else cookieValue = unescape(document.cookie.substring(posValue));}return (cookieValue);};
function clearInput(obj, str){if( $(obj).val() == str )$(obj).attr({value:""});}
function clearForm(){$(".ext_search :radio").attr({'checked':''});$(".ext_search select").empty().append("<option></option>");$(".ext_search :text").attr({'value':''});return false;}
function __() {try {console.log(__.caller, arguments);} catch (e) {}}
function getHost(){ host = top.location.host; path = host.split("."); if( path.length > 3 ){ while (path.length > 3) { path.shift(); } host = path.join('.'); } return host; }
/*
var callbacks = {
	feedback_success: function(data, $form) { $form.before("<p>Ваше сообщение отправленно, спасибо.</p>"); $form.slideUp(); },
	default_success: function(data, $form) { $form.hide(); },
	default_error: function(data, $form) {
		if (data.result == 'error-captcha') {
			alert("Не правильно введен код.");
			$form.find(".captcha").focus().parent().addClass("input-error");
		}
		else{
			__(data);
		}
	}
};
*/
/* validate_error */
function validate_error($field, error_type){
	$field.parent().addClass("input-error");
	/* focus */
	$(".input-error").eq(0).find(":input").focus();
};

/* before_validate */
function before_validate($field, error_type){
	$(".input-error").removeClass("input-error");
};

var site = {
	global: {
		init: function() {
			/////////////////////////
				slider.init(".cat-gallery");
				
				//	Draw tables
				$("table tr:odd").each(function(){
					$(this).addClass("odd");
				});
				
				$(".cat-item").click(function(){
					var src = $(this).attr('href');
					var big = $(this).attr('data:url');
					$(".cat-big .img img").attr('src', src);
					$(".cat-big .img").attr('href', big);
					//
					//$(".slider_holder_line").
					var holder = $(".slider_holder").width();
					var pos = $(this).position();
					//__( pos.left );
					//
					$(".slider_holder_line").css( "marginLeft", ( (holder/2) - ($(this).width()/2) - pos.left  ) );
					//
					$(".cat-item").removeClass("curr");
					$(this).addClass("curr");
					return false;
				});
				
				$(".cat-item").each(function(){
					var max_h = 112;
					var curr_i = $(this).height();
					var res = Math.round((max_h - curr_i) / 2);
					
					$(this).css('marginTop',res);
					
				});
				
				$(".slider_items_size .slider_item").eq( 0 ).click();
			
			/////////////////////////
			//	Cufon
			Cufon.replace('.letter1', {color: '-linear-gradient(#f2790b, #f8ae10)'});
			Cufon.replace('.cufon');
			Cufon.replace('.letter2', {color: '-linear-gradient(#fff, #fff, #ccc)'});
			Cufon.replace('.cufon-cat2', {color: '-linear-gradient(#00a8cf, #00bcda, #00d1e6)'});
			Cufon.replace('.cufon-cat3', {color: '-linear-gradient(#01963b, #01ad48, #01c855)'});
			Cufon.replace('.cufon-cat4', {color: '-linear-gradient(#8f4279, #ae6392, #ae6392)'});
			Cufon.replace('.cufon-cat5', {color: '-linear-gradient(#0f4925, #12582c, #156934)'});
			Cufon.replace('.cufon-cat6', {color: '-linear-gradient(#8b1d19, #a2221e, #c22a24)'});
			
			//	 focus-clear
			$(".focus-clear").focus(function(){
				var v = $(this).val();
				var h = $(this).attr('hint');
				if( v == h )
					$(this).attr('value','');
			});
			
			$(".focus-clear").blur(function(){
				var v = $(this).val();
				var h = $(this).attr('hint');
				if( v == "" )
					$(this).attr('value',h);
			});
			
			
			$(".search-form").submit(function(){
				$(".focus-clear").each(function(){
					$(this).focus();
				});
				if( $("#a-suggest").val() == "" && $("#b-suggest").val() == "" ){
					return false;
				}
			});
			
			//	items on page
			$(".pager-select").change(function(){
				//	Устанавливаем дату
				var dateToday = new Date();
				dateToday.setDate(dateToday.getDate() + 3);
				
				//	Устанавливаем куку
				//setCookie('items_on_page', $(this).val(), dateToday, "."+getHost());
				setCookie('items_on_page', $(this).val(), dateToday, "/");
				location.href = location.href;
			}); 
			
			//	Forms
			//$(".ajax").
			$('form.validate').validate({
				error: validate_error, 
				before: before_validate
			});
			
			$("form.ajax").submit(function(){
				if (!$(this).hasClass('xv-valid'))
					return false;
				$form = $(this);
				var callback_prefix = $form.attr('id').replace(/-/g, '_'); 
				
				$.ajax({
					type: $form.attr('method'),
					dataType: 'json',
					url: $form.attr('action'),
					data: $form.serialize(),
					success: function(data){
						if (data) {
							if (!data.success) {
								//__( data, callback_prefix+'_error' );
								callbacks[callback_prefix + '_error'] ? callbacks[callback_prefix + '_error'](data, $form) : callbacks['default_error'](data, $form);
							}
							else {
								//__( data, callback_prefix+'_success' );
								callbacks[callback_prefix + '_success'] ? callbacks[callback_prefix + '_success'](data, $form) : callbacks['default_success'](data, $form);
							}
						}
					}
				});
				
				return false;
			});
		}
	},
	calendar: {
		options: {
			block: 			null,
			selected_month: null,
			selected_year: 	null,
			news_days: 		null,
			week_days: 		['пн','вт','ср','чт','пт','сб','вс'],
			months: 		['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь']
		},
		init: function() {
			$block = site.calendar.options.block = $("#block-calendar");
			var $m = $block.find(".select-month select");
			var $y = $block.find(".select-year select");
			$m.change(site.calendar.update);
			$y.change(site.calendar.update);
			var all_m = '', all_y = '';
			for( var i in site.calendar.options.months ) {
				all_m += '<option value="'+parseInt(i)+'" '+(calendar_init.month.current - 1 == i ? 'selected' : '')+'>'+site.calendar.options.months[i]+'</option>';
			}
			$m.html(all_m);
			for( var i=calendar_init.year.start; i<=(new Date).getFullYear(); i++ ) {
				all_y += '<option value="'+i+'" '+(calendar_init.year.current == i ? 'selected' : '')+'>'+i+'</option>';
			}
			$y.html(all_y);
			$block.find(".month div").live("mouseover",function(){
				$(this).addClass("selected");
			}).live("mouseout", function(){
				$(this).removeClass("selected");
			});
			site.calendar.update();
		},
		update: function() {
			var $block = site.calendar.options.block;
			site.calendar.options.selected_month = parseInt($block.find(".select-month option:selected").val());
			site.calendar.options.selected_year = parseInt($block.find(".select-year option:selected").val());
			$block.find(".month").hide();
			$.ajax({
				type: "get",
				dataType: "json",
				url: "/ajax/?action=calendar-news-days&month="+site.calendar.options.selected_month+"&year="+site.calendar.options.selected_year,
				data: {},
				beforeSend: function() {
				},
				success: function(data){
					site.calendar.options.news_days = data;
					//alert(site.calendar.options.news_days);
					site.calendar.generate();
					$block.find(".month").show();
				},
				error: function() {
				}
			});
		},
		generate: function() {
			var $block = site.calendar.options.block;
			var date = new Date();
			date.setDate(1);
			date.setMonth(site.calendar.options.selected_month);
			date.setFullYear(site.calendar.options.selected_year);
			var month = '<table cellspacing="1">';
			for (var i=0; i<7; i++) {
				if( i==0 )
					month += '<th class="first">'+site.calendar.options.week_days[i]+'</th>\n';
				else if( i==6 )
		        	month += '<th class="last">'+site.calendar.options.week_days[i]+'</th>\n';
				else
					month += '<th>'+site.calendar.options.week_days[i]+'</th>\n';
		    }
		    var start = (date.getDay()-1)%7;
		    if (start < 0) 
		    	start += 7;
		    month += '<tr>';
		    for (var i=start; i>0; i--) {
		        month += '<td class="empty">&nbsp;</td>';
		    }
		    var month_length = new Date(date.getFullYear(), 1+date.getMonth(), 0).getDate();
		    var current = '';
		    var selected_month = site.calendar.options.selected_month+1;
		    var selected_year = site.calendar.options.selected_year; 
			var z_index = 33;
		    for (var i=1; i<=month_length; i++) {
		    	if ((start%7) == 0 && start > 0) {
		    		month += '</tr><tr>';
		    		start = 0;
		    	}
		    	current = '';
		    	if (i == calendar_init.day.current && site.calendar.options.selected_month+1 == calendar_init.month.current)
		    		current = ' class="current"';
				if( i < 10 ) ddd = '0'+i;
				else ddd = i;
				if( selected_month < 10 ) mmm = '0'+selected_month;
				else mmm = selected_month;
		        month += '<td '+current+'>';
		        //month += site.calendar.options.news_days[i] ? '<div><a href="/events/'+site.calendar.options.news_days[i].id+'/" class="preview"><img style="background-image:url(\''+site.calendar.options.news_days[i].icon+'\')" src="/images/blank.gif"/></a><a class="day" href="/events/?date='+i+'-'+selected_month+'-'+selected_year+'"'+current+'>'+i+'</a></div>' : '<span class="day">'+i+'</span>';
				if (site.calendar.options.news_days[i]) {
					month += '<a class="day" href="/news/?date=' + selected_year + '-' + mmm + '-' + ddd + '">' + i + '</a>';
				}
				else {
					month += '<span class="day">' + i + '</span>';
				}
		        month += '</td>';
		        start++;
		    }
		    month += '</tr></table>';
		    $block.find(".month").html(month);
			//	Hover
			$(".day").hover();
		}		
	}
}

var slider = {
	ui: {
		$button_prev: 	null,
		$button_next: 	null,
		$items_holder: 	null,
		$slider_line: 	null,
		$items_size: 	null,
		$items_obj: 	null
	},
	options: {
		step: 1,
		offset: 0,
		offset_def: 0,
		offset_px: 0
	},
	init: function(obj){
		var $obj = $(obj);
		if( !$obj.length ) return;
		
		//	Init elements
		slider.ui.$btn_prev 	= $obj.find( ".slider_button_prev" );
		slider.ui.$btn_next 	= $obj.find( ".slider_button_next" );
		slider.ui.$items_holder	= $obj.find( ".slider_holder" );
		slider.ui.$slider_line	= $obj.find( ".slider_holder_line" );
		slider.ui.$items_size 	= $obj.find( ".slider_items_size" );
		slider.ui.$items_obj 	= $obj.find( ".slider_item" );
		
		/*
		//	if nothing to scrolling than return false!
		if (slider.ui.$items_holder.width() >= slider.ui.$items_size.width()) {
			slider.ui.$btn_prev.click(function(){return false});
			slider.ui.$btn_next.click(function(){return false});
			return false;
		}
		*/
		//init default global offset
		/*
		var offset = slider.ui.$items_obj.eq(0).offset();
		slider.options.offset_def = offset.left;
		*/
		//
		slider.ui.$btn_prev.click(function(){
			var curr_el = $(".slider_items_size").find(".curr").index();
			if( curr_el > 0 )
				$(".slider_items_size .slider_item").eq( curr_el-1 ).click();
			
			return false;
		});
		slider.ui.$btn_next.click(function(){
			var total = $(".slider_items_size .slider_item").length;
			var curr_el = $(".slider_items_size").find(".curr").index();
			if( curr_el < total )
				$(".slider_items_size .slider_item").eq( curr_el+1 ).click();
			return false;
		});
		slider.disable_arrows();
	},
	disable_arrows: function(){
		var hSize = slider.ui.$items_holder.width();
		var lSize = slider.ui.$items_size.width();
		var mleft = parseInt(slider.ui.$slider_line.css('marginLeft'));
		//__( hSize, lSize, mleft, (lSize + mleft) );
		if ((lSize + mleft) <= hSize ) {
			slider.ui.$btn_next.addClass("r-end");
		}else {
			slider.ui.$btn_next.removeClass("r-end");
		}
		
		if (mleft >= 0) {
			slider.ui.$btn_prev.addClass("l-end");
		}else{
			slider.ui.$btn_prev.removeClass("l-end");
		}
	},
	slide: function(){
		slider.ui.$slider_line.animate( 
			{'marginLeft':'-'+slider.options.offset_px+'px'}, 
			100, 
			slider.disable_arrows 
		);
	},
	items_obj_offset: function(i){
		var offset = slider.ui.$items_obj.eq( i ).offset();
		return offset.left;
	}
}


$(document).ready(site.global.init);
