// uzkraunamas kas karta generuojant nauja puslapi
var flashMessageTimer = showMessageTimer = 0;

$(document).ready(function() {

	$("#ajax_loading").ajaxStart(function(){
	  $(this).show();
	});
	
	$("#ajax_loading").ajaxStop(function(){
	  $(this).hide();
	});

	add_fake_top_bottom();
	
	show_message();
	load_show_message();
	load_autocomplete();
	load_password_field();
	bind_report_link();
	show_info_message();
		
	load_login_form();
	clear_pass_reminder();
	simple_table_add_corners();
	white_table_add_corners();
	activate_input_onfocus();
	
	load_flash_message();
	
	menu_buttons_click();
	
	load_filter_image();
	
	check_messages_overflow();
});

//funkcija patikrina ar neperlipa tekstas plocio ribu, jei perlipa pamazina ir prideda daugtaski
function check_messages_overflow(){
	var rows = $('.messages_overflow').length;
	var i = 0;
	for(i = 0; i<rows; i++) {
		divElement = $('.messages_overflow').get(i);
		if(divElement.scrollWidth > divElement.offsetWidth) {
			$('.messages_overflow').eq(i).width((divElement.offsetWidth-12)+'px');
			$('.messages_overflow').eq(i).after('<div style="float:left;font-weight:bold;">&nbsp;...</div>');
		}
	}
}
//pribindinamas filtravimas pagal 'lupos' simboliuka
function load_filter_image(){
	if($('img.table_search_image').length > 0){
		$('img.table_search_image').click(function(){
				$('#filter_info').submit();
		});
	}
}

// vertimas kalendoriui datepicker
function localize_date_picker() {
	// cia skirta datepickeriui
	Date.firstDayOfWeek = 1;
	Date.format = 'yyyy-mm-dd';
	$.dpText = {
		TEXT_PREV_YEAR		:	'Metai atgal',
		TEXT_PREV_MONTH		:	'Mėnesis atgal',
		TEXT_NEXT_YEAR		:	'Metai pirmyn',
		TEXT_NEXT_MONTH		:	'Mėnesis pirmyn',
		TEXT_CLOSE			:	'Uždaryti',
		TEXT_CHOOSE_DATE	:	''
	};
	Date.monthNames = ['Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis', 'Liepa', 'Rugpjūtis', 'Rugsėjis', 'Spalis', 'Lapkritis', 'Gruodis'];
	Date.dayNames = ['Sekmadienis', 'Pirmadienis', 'Antradienis', 'Trečiadienis', 'Ketvirtadienis', 'Penktadienis', 'Šeštadienis'];
// cia skirta datepickeriui
}

//funkcija skirta kad butu galima paspausti ant viso meniu, ne tik ant teksto
function menu_buttons_click() {
	$('.menu-item').click(function(){
		var menu_link = $(this).children('.menu-item-text').children('a').attr('href');
		if(menu_link)
			window.location=menu_link;
	});
	
}
// funkcija skirta parodyti flash zinutei, kuri buvo uzsettinta kontroleryje
function load_flash_message() {
	$message = $('#flashMessage').html();
	if($message) {
		//alert($message);
		$('#flash_message_goes_here').html($message);
		$('#flash_message_container').show();
	}
	
	//flash_message_goes_here
}

// funkcija skirta inputu spalvinimui, kai jis yra sufokusuojamas
function activate_input_onfocus() {
	$('.activate_input_onfocus').focus(function(){
		$(this).addClass('active_input');
		$(this).removeClass('form-error');
		$(this).next('.error-message').remove();
		$(this).blur(function(){
			$(this).removeClass('active_input');
		});
	});
	
}
	
//funkcija skirta lentelei prideti apatine linija, jeigu tokios nebuvo
function add_fake_top_bottom() {
	if($('table.add_fake_top_bottom').size() > 0) {
		var first_tr_tds = $('.add_fake_top_bottom tbody tr').eq(0).find('td');
		var cols = first_tr_tds.size();
		var rows = $('.add_fake_top_bottom tbody tr').size();
		var i = 0;
		var top_fake_row = '<tr class="nodrag nodrop">';
		var bottom_fake_row = '<tr class="nodrag nodrop">';
		for(i=0; i<cols; i++) {
			top_fake_row += '<td class="white_fake_top">&nbsp;</td>';
			bottom_fake_row += '<td class="white_fake_bottom">&nbsp;</td>';
		}
		top_fake_row += '</tr>';
		bottom_fake_row += '</tr>';
		var table_rows = $('.add_fake_top_bottom tbody').find('tr');
		table_rows.eq(0).before(top_fake_row);
		table_rows.eq(rows-1).children('td').addClass('fake_bottom_no_border');
		table_rows.eq(rows-1).after(bottom_fake_row);
	}
}


// funkcija skirta apvaliems kampams sudeti ant standartiniu lenteliu sarasau
function simple_table_add_corners() {
	if($('table.simple_corners').size() > 0) {
		var cols = $('.simple_corners thead tr th').size();
//		$('.simple_corners thead tr th').eq(cols-1).addClass('simple_corner_top_right');
//		$('.simple_corners thead tr th').eq(0).addClass('simple_corner_top_left');
		
		var rows = $('.simple_corners tbody tr').size();
		body_rows = $('.simple_corners tbody tr');
		last_row = $('.simple_corners tbody tr').eq(rows-1).find('td');
		
		
		for(i=0; i<rows-1; i++) {
			body_rows.eq(i).children('td').eq(cols-1).addClass('simple_corner_body_right_border');
		}
		$('.simple_corners thead tr td').eq(cols-1).addClass('simple_corner_header_right_border');
//		if($('.simple_corners thead tr td').eq(cols-1).children().class)
		if($('.simple_corners thead tr td').eq(cols-1).children('div').attr('class') != 'submit'){
			$('.simple_corners thead tr td').eq(cols-1).addClass('no_padding_right');
			$('.filter_button').addClass('filter_in_the_middle');
		}
		
		$('.simple_corners thead tr th').eq(cols-1).addClass('simple_corner_top_right');
		$('.simple_corners thead tr th').eq(0).addClass('simple_corner_top_left');
		last_row.eq(0).addClass('simple_corner_bottom_left');
		last_row.eq(cols-1).addClass('simple_corner_bottom_right');
	}
}

// funkcija skirta balu lenteliu kampams sudeti
function white_table_add_corners() {
	if($('table.white_corners').size() > 0) {
		var first_tr_tds = $('.white_corners tbody tr').eq(0).find('td');
		var cols = first_tr_tds.size();
		var rows = $('.white_corners tbody tr').size();
		var last_tr_tds = $('.white_corners tbody tr').eq(rows-1).find('td');
		
		var i = 0;
		
		var table_rows = $('.white_corners tbody').find('tr'); //uzdedam left ir right border klases
		for(i=1; i<rows-1; i++) {	
			var rows_tds = table_rows.eq(i).find('td');
			rows_tds.eq(0).addClass('white_table_left_border');
			rows_tds.eq(cols-1).addClass('white_table_right_border');
		}
		
		var table_rows = $('.white_corners tbody').find('tr'); //uzdedam left ir right border klases
		for(i=1; i<cols-1; i++) {	
			first_tr_tds.eq(i).addClass('white_table_top_border');
			last_tr_tds.eq(i).addClass('white_table_bottom_border');
		}
		
		first_tr_tds.eq(0).addClass('white_corner_top_left');
		first_tr_tds.eq(cols-1).addClass('white_corner_top_right');
		last_tr_tds.eq(0).addClass('white_corner_bottom_left');
		last_tr_tds.eq(cols-1).addClass('white_corner_bottom_right');
	}
}

//funkcija skirta perpiesti apatine linija lenteles, pvz: jeigu buvo stumdyti laukai, rodomu lauku sarase, arba zinuciu rasyme pasalinti gavejai
function redraw_border_bottom_borders() {
	if($('table.white_corners').size() > 0) {
		var table_rows = $('.white_corners tbody tr')
		var first_tr_tds = table_rows.eq(0).find('td');
		var cols = first_tr_tds.size();
		var rows = table_rows.size();
//		var i = 0;
//		var j = 0;
//		for(i=1; i<rows-1; i++) {
//			var rows_tds = table_rows.eq(i).find('td');
//			rows_tds.css('border-bottom', '1px solid #DBE2E5 !important');
//			rows_tds.removeClass('fake_bottom_no_border');
//		}
		var rows_tds = table_rows.find('td');
		rows_tds.removeClass('fake_bottom_no_border');
		var last_rows_tds = table_rows.eq(rows-2).find('td');
		last_rows_tds.addClass('fake_bottom_no_border');
		
	}
}

// funkcija skirta isvalyti tekstui, uzsettinti defaultine reiksme slaptazodzio priminime
function clear_pass_reminder() {
	$('#reminder_table #UserEmail').focus(function(){
		if($(this).val() == texts[5]) {
			$(this).val('');
		}
	});
	$('#reminder_table #UserEmail').blur(function(){
		if($(this).val() == '') {
			$(this).val(texts[5]);
		}
	});
	
}

//funkcija skirta parodyti flash zinutei, kuri veliau pradingsta
//message - zinutes tekstas
//timeout - po kiek milisekundziu turi isnykt
function show_message(message, timeout){
	clearTimeout(flashMessageTimer);
	clearTimeout(showMessageTimer);
	if(!timeout) timeout = 9000; 
	var showMessageTimeout = 60000;
	if(message){
		$('#flashMessage').html(message);
		$('#flashMessage').show();
	}	
	if($('#flashMessage').html() != ''){
		$('#flashMessage').show();
		$('#show_message').show();
	}
	flashMessageTimer =  window.setTimeout(function (){
		$('#flashMessage').fadeOut('fast');
	},timeout);
	
	showMessageTimer =  window.setTimeout(function (){
		$('#show_message').fadeOut('fast');
	},showMessageTimeout);
	
	load_flash_message();
}

//funkcija skirta pakartotiniam zinuciu parodymui
function load_show_message(){
	$('#show_message').click(function(){
		 show_message();
	});
	
}

//funkcija realizuoja greita paieska tarp nariu arba kontaktu - autocomplete
var tmpFastSearchValue = '';
function load_autocomplete(){
	var view_action = 'view_user';

	if(controller == 'contacts')
		SelectedActionUrl = controller;
	else
		SelectedActionUrl = 'users';
	
	if(typeof( SelectedActionUrl ) != 'undefined' && SelectedActionUrl == 'contacts'){
		view_action = 'view';
	}
	
	
	$('#fast_search_text').Autocomplete(
		{
			source: baseURL+SelectedActionUrl+'/fast_search',
			delay: 400,
			autofill: false,
			helperClass: 'autocompleter',
			selectClass: 'selectAutocompleter',
			minchars: 1,
			selectedItem:null,
			autoSelectFirst: false,
			formID: 'fast_search_form', // naudojama submitinimui paspaudus enter
			onSelect : function(data) {
							$('#fast_search_text').val('');
							window.location = baseURL+SelectedActionUrl+'/'+view_action+'/'+data.value;
	//						
						},
			onShow : function(){
			},
			onHide : function(){}
		}
	);
		
		$('img.qsearch').click(function(){
			$('#fast_search_form').trigger('submit');
		});
		
//		iskelta i funkcija select_on_focus - bo reikejo onfocus padaryti.
//		$('#fast_search_text').focus(function(){
//			if(this.value.indexOf(texts[0]) >=0){
//				texts[0] = this.value;
//				this.value = '';
//			}
//				
//			else {
//				this.select();
//			}
//		});		
		$('#fast_search_text').blur(function(){
			if(this.value == '')
				if(tmpFastSearchValue != '')
					this.value = tmpFastSearchValue;	
				else
					this.value = texts[0];
		});	
		$('#fast_search_text').click(function(){
			if(this.value == texts[0] || this.value == texts[8]){
				tmpFastSearchValue = this.value;
				this.value = '';
			}
		});				
}

// funkcija skirta viso teksto paselectinimui ant sufokusavimo greitoje paieskoje
function select_on_focus() {
	var tthis = $('#fast_search_text');
	if($('#fast_search_text').val().indexOf(texts[0]) >=0){
		texts[0] = $('#fast_search_text').val();
		$('#fast_search_text').val('');
	}
		
	else {
		$('#fast_search_text').select();
	}
}

// funkcija skirta ajaxiniam apie vartotoja viewui uzkrauti
function load_view_info(){
	if($('.view_info_ajax').length > 0){
		$('.view_info_ajax').unbind();
		$('.view_info_ajax').click(function(){
				var url = $(this).attr('href');
				$.ajax({
					  type: "POST",
					  url: url,
					  success: function(msg){
					    $.blockUI({css: {width:'980px', left:'0px', top:'60px', cursor:'default', height: '700px', 'text-align':'left', padding: '0px'}, message: msg});
					    $('#close_info_view').click(function(){
					    	$.unblockUI();
					    	return false;
					    });
					  }
				});
				return false;
				
		});
	}
}

//funkcija skirta logino formoje uzkrauti inputu reiksmes
function load_password_field(){
	if($('#UserPassword').length > 0)
		bind_password_field($('#UserPassword'));
	if($('#UserNewPass').length > 0)
		bind_password_field($('#UserNewPass'));		
	if($('#UserRetypePass').length > 0)
		bind_password_field($('#UserRetypePass'));	
	if($('#UserOldPass').length > 0)
		bind_password_field($('#UserOldPass'));			

}
//funkcija seka ar nera lietuvisku raidziu
//fieldObj - perduodamas lauko objektas
function bind_password_field(fieldObj){
	if(fieldObj){
//		fieldObj.parent().css('height','40px');
//		fieldObj.parent().css('width','180px');
		fieldObj.keyup(function(e){
			var value = fieldObj.val();
			if(has_lt_symbols(value)){
//				$(this).parent().children('div.error').remove();
//				$(this).parent().append('<div class="error">'+messages[11]+'</div>');
				show_message(messages[11]);
			}
		});			
	}
}
//funkcija skirta susekti ar tekste nera lietuvisku raidziu
//text - tekstas kuriame ieskoma
//return - jeigu yra lietuvisku raidziu grazina true, kitu atveju false
function has_lt_symbols(text){
	for(var i=0; i<text.length; i++){
		if(text.substr(i,1).charCodeAt() > 259 && text.substr(i,1).charCodeAt() < 383){
			return true;
		}
	}
	return false;
}

// funkcija tikrina ar paduotas tekstas yra emailo formato
//str - paduodamas tekstas
//jeigu tekstas emailo formato - grazina true, kitu atveju false
function isValidEmail(str) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(str)) {
		return false;
	}
	return true;
}

//pribindamas bugo pranesimo mygtukas, kuris paima visa esama htmla ir pasubmitina forma
function bind_report_link(){
	$('#report_bug').click(function(){
		var url = $(this).attr('href');
		var htmlCode = $('html').html();
		$('#htmlCode').val(htmlCode);
		$('#BugForm').trigger('submit');
		return false;
	});
}
// funkcija skirta info zinutems (burbulams) parodyti
function show_info_message() {
	$("#skype_info").jHelperTip({
		trigger: "hover", 
		topOff: -151, 
		leftOff: -180, 
		dC: "#skype_info_message",  
		opacity: 0.9
	});

	$("#notes_about_user_info").jHelperTip({
		trigger: "hover", 
		topOff: -100, 
		leftOff: -100, 
		dC: "#notes_about_user_message",  
		opacity: 0.9
	});
	$("#notes_about_me_info").jHelperTip({
		trigger: "hover", 
		topOff: -100, 
		leftOff: -100, 
		dC: "#notes_about_me_message",  
		opacity: 0.9
	});
	
}

//funkcijs skirta prisijungimui prie rodat (prisijungimo formos tikrinimas)
function load_login_form(){
	
	$('#UserLoginForm').submit(function(){
		var valid = 2;
		var validated = 0;
		if(validate_fullname($('#UserFullname')))validated++;
		if(validate_password($('#UserPassword')))validated++;
		return (validated == valid);
	});
	
	$('#UserFakepassword').click(function(){
		fakepassword_activated($(this));
	});
	
	$('#UserFakepassword').focus(function(){
		fakepassword_activated($(this));
	});	
	
	$('#UserFullname').click(function(){
		full_name_activated($(this));
	});	
	
	$('#UserFullname').focus(function(){
		full_name_activated($(this));
	});	
	
	$('#UserFullname').change(function(){
		validate_fullname($(this));
	});	
	
	$('#UserFullname').blur(function(){
		if($(this).val() == '') {
			$(this).val(texts[2]);
		}
		validate_fullname($(this));
	});
	$('#UserPassword').click(function(){
		$(this).select();
	});
	$('#UserPassword').blur(function(){
		if($(this).val() == '') {
			$(this).hide();
			$('#UserFakepassword').show();
		}
	});	
}

//jeigu inputObj jau nuimama standartine reiksme ir pakeiciamas css
function full_name_activated(inputObj){
		if(inputObj.val() == texts[2])
			inputObj.val('');
				
		inputObj.css('font-style','normal');
}

//jeigu buvo sufokusuotas passwordo ivedimo laukas
//inputObj - inputo objektas
function fakepassword_activated(inputObj){
		inputObj.hide();
		$('#UserPassword').show();
		$('#UserPassword').focus();	
		$('#UserPassword').select();	
		$('#UserPassword').val('');

}

// validuojamas logino formoje vartotojo pilnas vardas
//inputObj - inputo objektas
// jeigu tinkamas grazina true, kitu atveju - false
function validate_fullname(inputObj){
		inputObj.val(inputObj.val().trim());
		var valueArray = inputObj.val().split(' ');
		var valid = false;
		if(valueArray.length != 2){
			show_message(messages[35]);
			inputObj.siblings('.error').html(messages[35]);	
		}else{
			if(valueArray[0] == '' || valueArray[1] == ''){	
				show_message(messages[35]);
				inputObj.siblings('.error').html(messages[35]);	
			}	
			else{
				if(inputObj.val() == texts[2]){
					inputObj.siblings('.error').html(messages[35]);		
					show_message(messages[35]);
				}
				else{
					inputObj.siblings('.error').html('');
					show_message('');
					valid = true;	
				}
			}
		}
		return valid;
}
// validuojamas logino formoje varotojo slaptazodis
//inputObj - inputo objektas
// jeigu tinkamas grazina true, kitu atveju - false
function validate_password(inputObj){
		if(inputObj.val().length == 0){
			inputObj.siblings('.error').html(messages[36]);	
			show_message(messages[36]);
			return false;
		}else{
			show_message('');
			inputObj.siblings('.error').html('');
		}
		
		return true;
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

//jeigu neprisijunges, tai vykdant ajaxa nukreipia i pradini psl
function do_ajax_redirect(text){
	var redText = text.substring(0,50);
	if(redText.indexOf('NEEDLOGIN') > 0){
		window.location = baseURL;	
		return true;
	}
	return false;
}

// funkcija skirta gauto ojekto atstuma nuo kaires narsykleje
// obj - html objektas
// grazina pixeliu skaiciu nuo kaires
function getLeft(obj)
{
	if ('string' == typeof obj)
		obj = document.getElementById(obj);
	var x = 0;
	while (obj != null)
	{
	x += obj.offsetLeft;
	obj = obj.offsetParent;
	}
	return x;
}
// funkcija skirta gauto ojekto atstuma nuo virsaus narsykleje
// obj - html objektas
// grazina pixeliu skaiciu nuo virsaus
function getTop(obj)
{
	if ('string' == typeof obj)
		obj = document.getElementById(obj);
	var y = 0;
	while (obj != null)
	{
	y += obj.offsetTop;
	obj = obj.offsetParent;
	}
	return y;
}


if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}

//funkcija skirta surasti ar yra toks obj, paduotame text
//text - tekstas kuriame ieskoma
//obj - ieskoma simboliu seka
// jeigu randa grazina obj vieta, kitu atveju -1
function indexOf(text, obj){
        for(var i=0; i<text.length; i++){
        	
            if(text.substr(i,1)==obj){
                return i;
            }
        }
        return -1;	
}
	
	
// suskaiciuoja checkboxus pagal filtra
// state - true ar false
function count_checkboxes(filter, state){
	var count = 0;
	if(!state) state = true;
	
	$(filter).each(function(){
		if(this.checked == state){
			count++;
		}
	});
	
	return count;		
}
	
/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 

function clipboard(){
	var oDiv = document.getElementById( 'header_menu' ) ;

//	if ( !oDiv )
//	{
//		oDiv = document.createElement( 'DIV' ) ;
//		oDiv.id = '___FCKHiddenDiv' ;
//
//		var oDivStyle = oDiv.style ;
//		oDivStyle.position		= 'absolute' ;
//		oDivStyle.visibility	= oDivStyle.overflow	= 'hidden' ;
//		oDivStyle.width			= oDivStyle.height		= 1 ;
//
//		document.body.appendChild( oDiv ) ;
//	}

	oDiv.innerHTML = '' ;

	var oTextRange = document.body.createTextRange() ;
	oTextRange.moveToElementText( oDiv ) ;
	oTextRange.execCommand( 'Paste' ) ;

	var sData = oDiv.innerHTML ;
	//oDiv.innerHTML = '' ;

	return sData ;
	
}

//function limit_chars() {
//	$('.limit_chars').keyup( function(e){
//		var max_length = $('.limit_chars').attr('maxlength');
//		var string = $('.limit_chars').val();
//		var length = string.length;
//		if(length > max_length){
//			alert(e.keyCode);
//			if(e.keyCode == 0 || e.keyCode == 13) {
//				//alert('Pasiektas simbolių limitas.');
//				alert(e.keyCode);
//				string = string.substr(0,max_length);
//				$(this).val(string);
//				return false;
//			} 
//		}
//	});
//}

//*****************************************
// COOKIES
//*****************************************
//
//
//var masyvas = new Array('vienas','du');
//
//createCookie('testas',masyvas,10);
//
//var cookis = readCookie('testas').split(',');
//
//alert(cookis[1]);
//

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}



function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}


function log(obj){
	if(console)
		console.log(obj);
}