$(document).ready(function(){

	//-----------------------------------------------------------
	$('ul.errors')
		.prev('input, textarea, select')
		.addClass('bg-red')
		.next()
		.hide()
		.fadeIn('fast');

	//-----------------------------------------------------------
	// modal dialog
	$('#switch-profile-link').click(function(){
		$('#switch-profile-popup').show();
		$('#pngbg').show();
		$.getJSON('/switch-profile/',{}, function(j){
			var lis = '';
			for (var i=0; i<j.length; i++) {
				lis += '<li>';
				lis += '<a class="'+(j[i].is_deleted ? 'deleted' : '')+'" href="/switch-profile/' + j[i].id + '">'+j[i].username+'</a>';
				lis += '</li>';
			}
			$('#switch-profile-popup-cont').html('<h2>Switch to profile</h2><ul>' + lis + '</ul>');
		});
		return false;
	});
	$('#pngbg').click(function(){
		$('#switch-profile-popup').hide();
		$('#pngbg').hide();
	});

	//-----------------------------------------------------------
	// grid actions selected
	$('.popup-menu-link a').click(function(){
		var popupCanvas = $(this).parent().next('.popup-menu-canvas');
		$('.popup-menu-canvas').hover(function(){}, function(){
			$(popupCanvas).hide();
		});
		if ($(popupCanvas).is(':visible'))
			$(popupCanvas).hide();
		else
			$(popupCanvas).show();
		return false;
	});

	//-----------------------------------------------------------
	// grid actions delete selected
	$('.grid-delete-selected').click(function(){
		if (confirm('Удалить отмеченные элементы?'))
			$('#cb-selected-form').submit();
		return false;
	});

	//-----------------------------------------------------------
	// confirm
	$('.confirm').click(function(){
		return confirm('Вы уверены?');
	});

	//-----------------------------------------------------------
	// Zebra
	$(".grid tr:even").addClass("alt");
	$(".grid tr").mouseover(function(){
		$(this).addClass("over");
	});
	$(".grid tr").mouseout(function(){
		$(this).removeClass("over");
	});

	$('#enter').click(function(){
		$('#login_form').submit();
	});

	$('.confirmDelete').click(function(){
		return confirm('Действительно удалить?');
	});
	
	$('.confirmExit').click(function(){
		return confirm('Хотите выйти?');
	});
	
	$('.required').append('&nbsp;<span class="red">*</span>');

	$('.close-messages-button').click(function(){
		$(this).parents().find('.messages').hide();
		return false;
	});

	//-----------------------------------------------------------
	// selected checkboxes
	$('.delete-selected').click(function(){
		$('#cb-selected-form').attr('action', $(this).attr('href'));
		$('#cb-selected-form').submit();
		return false;
	});

	$('.cbSelectAll').click(function(){
		var state = this.checked;
		$('.cbSelectedItem').each(function(el){
			this.checked = state;
			if (state) {
				$(this).parents('tr').addClass('selected');
			} else {
				$(this).parents('tr').removeClass('selected');
			}
		});
	});
	$('.cbSelectedItem').click(function(){
		var cbs = $('.cbSelectedItem');
		var cbsAllIdentical = true;
		for (i=0; i<cbs.length; i++) {
			var tr = $(this).parents().get(1);
			if (!cbs[i].checked) {
				cbsAllIdentical = false;
				break;
			}
		}
		$('.cbSelectAll').attr('checked', cbsAllIdentical);
		if (this.checked) {
			$(this).parents('tr').addClass('selected');
		} else {
			$(this).parents('tr').removeClass('selected');
		}
	});

	//-----------------------------------------------------------
	// DatePicker init
	$.datepicker.setDefaults({
		showOn: 'both',
		rangeSelect: false,
		rangeSeparator: ' - ',
		numberOfMonths: 1,
		buttonImageOnly: true, 
		showStatus: false,
		buttonImage: '/img/icons/date.png'
	});
	$.datepicker.regional['ru'] = {
		clearText: 'Очистить', clearStatus: '',
		closeText: 'Закрыть', closeStatus: '',
		prevText: '&lt;Пред',  prevStatus: '',
		nextText: 'След&gt;', nextStatus: '',
		currentText: 'Сегодня', currentStatus: '',
		monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
		'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
		monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
		'Июл','Авг','Сен','Окт','Ноя','Дек'],
		monthStatus: '', yearStatus: '',
		weekHeader: 'Не', weekStatus: '',
		dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
		dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
		dayStatus: 'DD', dateStatus: 'D, M d',
		dateFormat: 'dd.mm.yy', firstDay: 1, 
		initStatus: '', isRTL: false
	};
	$.datepicker.setDefaults($.datepicker.regional['ru']);
	$('input.datePicker').datepicker();

});

function showAjaxProgress()
{
	$('#ajaxProgress').show();
	//$('#pngbg').show();
}

function hideAjaxProgress()
{
	$('#ajaxProgress').hide();
	//$('#pngbg').hide();
}



//-----------------------------------------------------------
// Insert text into textarea at current cursor position
//
var clientPC = navigator.userAgent.toLowerCase();  
var clientVer = parseInt(navigator.appVersion);  
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1)); 
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1) 
				&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1) 
				&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1)); 
var is_moz = 0; 
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1)); 
var is_mac = (clientPC.indexOf("mac")!=-1);
 
var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera')  > -1);
var isIE = (!isOpera && ua.indexOf('msie') > -1);
 
function mozillaWr(textarea, open, close)
{ 
	var selLength = textarea.textLength; 
	var selStart = textarea.selectionStart; 
	var selEnd = textarea.selectionEnd; 
	if (selEnd == 1 || selEnd == 2) 
		selEnd = selLength; 
 
	var s1 = (textarea.value).substring(0,selStart); 
	var s2 = (textarea.value).substring(selStart, selEnd) 
	var s3 = (textarea.value).substring(selEnd, selLength); 
	textarea.value = s1 + open + s2 + close + s3; 

	textarea.selectionEnd = 0; 
	textarea.selectionStart = selEnd + open.length + close.length; 
	return; 
} 
 
function insert_into_position_cursor(textarea, text)  
{ 
	if (textarea.createTextRange && textarea.caretPos) { 
		var caretPos = textarea.caretPos; 
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text; 
	}
	else {
		if (is_nav && document.getElementById) { 
			mozillaWr(textarea, '', text); 
		}
		else {
			textarea.value  += text;
		}
	}
	textarea.focus();
}
function getDocumentHeight() {
	return Math.max(document.compatMode != 'CSS1Compat' ? document.body.scrollHeight : document.documentElement.scrollHeight, getViewportHeight());
}
function getViewportHeight() {
	return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight : (document.parentWindow || document.defaultView).innerHeight;
}

//-----------------------------------------------------------
// Sort the OPTIONs in a SELECT menu
//
function compareOptionText(a, b) {
	return a.text!=b.text ? a.text<b.text ? -1 : 1 : 0;
}
function sortOptions(list) {
	var items = list.options.length;

	// create array and make copies of options in list
	var tmpArray = new Array(items);
	for (i=0; i<items; i++)
		tmpArray[i] = new Option(list.options[i].text,list.options[i].value);

	// sort options using given function
	tmpArray.sort(compareOptionText);

	// make copies of sorted options back to list
	for (i=0; i<items; i++)
		list.options[i] = new Option(tmpArray[i].text,tmpArray[i].value);
}

//-----------------------------------------------------------
function isoDate() {
	// now date to string "2008-12-22 00:43:22"
	var now = new Date();
	var dY=''+now.getFullYear(); dY=dY.length<2?'0'+dY:dY;
	var dm=''+(now.getMonth()+1);dm=dm.length<2?'0'+dm:dm;
	var dd=''+now.getDate();     dd=dd.length<2?'0'+dd:dd;
	var dH=''+now.getHours();    dH=dH.length<2?'0'+dH:dH;
	var dM=''+now.getMinutes();  dM=dM.length<2?'0'+dM:dM;
	var dS=''+now.getSeconds();  dS=dS.length<2?'0'+dS:dS;
	var now_time = dY+'-'+dm+'-'+dd+' '+dH+':'+dM+':'+dS;
	return now_time;
}


