var lastGoodDate=new Date(new Date().getTime()+1000*60*60*4);	

function validateDate(inputElem)
{
	var inputDate=parseDate(inputElem.value,"\\."); // . in RegExp
	if (inputDate!=null)
	{
		var minTime=new Date().getTime()+1000*60*30;							 
		var maxTime=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate(),23,59,00,00).getTime()+1000*60*60*24;
		if (inputDate.getTime()>=maxTime) lastGoodDate=new Date(maxTime);
		else if (inputDate.getTime()<=minTime) lastGoodDate=new Date(minTime);
		else lastGoodDate=inputDate;
	} 
	
	inputElem.value=formatDateString(lastGoodDate,"."); 
}

function dateInputChange(inputElem)
{
	validateDate(inputElem);
}

function dateInputKeyPressed(e)
{
//	try{
		if (isNaN(e.keyCode)) 
			return true;
		if (parseInt(e.keyCode)==13)
//		{
//			dateInputChange(inputElem);
			return false;
//		}
//	}catch(err)
//	{
//		return true;
//	}
}

function limitText(limitField, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} 
}


/****************************DATE FUNCTIONS*************************************/
/****** DD-MM-YYYY HH:MM ******/
//return date in format DD-MM-YYYY HH:MM
function formatDateString(date,dateSeparator)
{
	var minutes=date.getMinutes();
	if (minutes<10) minutes="0"+minutes;
	var hours=date.getHours();
	if (hours<10) hours="0"+hours;
	var month=date.getMonth()+1;
	if (month<10) month="0"+month;
	var day=date.getDate();
	if (day<10) day="0"+day;
	return day+dateSeparator+month+dateSeparator+date.getFullYear()+" "+hours+":"+minutes;

}


//parse date in format "DD-MM-YYYY HH:MM" - removes space
// when dateSeparator="-" 
//return Date object
function parseDate(str,dateSeparator)
{
	var re=new RegExp("\\s*(\\d+)\\s*"+dateSeparator+"\\s*(\\d+)\s*"+dateSeparator+"\\s*(\\d+)\\s*(\\d+)\\s*:\\s*(\\d+)\\s*");
	var match=re.exec(str);
	if (match==null) return null;
	
	var day=parseInt(match[1],10);
	var month=parseInt(match[2],10);
	var year=parseInt(match[3],10);
	var hours=parseInt(match[4],10);
	var minutes=parseInt(match[5],10);
	if (isNaN(year) ||isNaN(month) ||isNaN(day) ||isNaN(hours) || isNaN(minutes) )
		return null;
	return new Date(year,month-1,day,hours,minutes,0,0);//nd;
}

function updateTimestamps()
{
	timestamps=document.getElementsByName("timestamp");
	date=new Date();
//	dateOffset=0;//60*60;//(date.getTimezoneOffset()+60)*60; //value in seconds to sub. In DB UTC +1
	 	
	for (i=0;i<timestamps.length;i++)
	{
		intVal=parseInt(timestamps[i].innerHTML,10);
		if (!isNaN(intVal))
		{
			ts=intVal;//-dateOffset;
			//Date in miliseconds
			timestamps[i].innerHTML=new Date(ts*1000).toLocaleString();
		}		
	}
}

/****************************DATE FUNCTIONS*************************************/

//trims string
function trimText(str, chars) {
    return ltrimText(rtrimText(str, chars), chars);
}

function ltrimText(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrimText(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

/********* misc **********/

function focusOnLogin()
{
	document.getElementsByName("nickEmail")[0].focus();
}

