﻿function cmpD()
{
	var oINP = document.getElementById('txtDatumZacekBivanje');
	if(!oINP) return;
	var Dstr = oINP.value, rezult;
	
	if(0 < Dstr.length)	rezult = compareWithCurrentDate(oINP.value,"no");
	{
		if(0 == rezult)
		{
			//alert(rezult + "\ncompared Date = current Date");
			oINP.value = rezult.value;
		}
		else
		{
			if(1 == rezult)
			{
				//alert(rezult + "\ncompared Date > current Date");
				oINP.value = rezult.value;
			}
			else
			{
				//alert(rezult + "\ncompared Date < current Date");
				var dtType = "no";
				var curDate = new Date;
				var datum = convertDateToString(curDate);
				alert ("Datum mora biti novejši ali enak od " + datum + "!");
				oINP.value = datum;
			}
		}
	}
}

function compareWithCurrentDate()
{
/*
returns:
-1	=> if compared Date < current Date
 0	=> if compared Date = current Date
 1	=> if compared Date > current Date
format of incoming Data String : dd.mm.yyyy [hr][:mn][:sc][:msc] ("23.04.2004 23:59:556")
arguments :
0: COMPARING DATA string
1: type of comparision
(
	no	=> (empty) default - without hours,minutes,seconds,milliseconds;
	hr	=> with hours;
	mn	=> up to minutes;
	sc	=> up to seconds;
	msc	=> up to milliseconds;
)
*/
	var i, cmpStr = "", dtType = "no";
	
	//dtType = getDateType(cmpStr);
	
	for(i=0;i<arguments.length;i++)
	{
		switch(i)
		{
			case 0:
				cmpStr = arguments[i];
				break;
			case 1:
				dtType = arguments[i];
				break;
		}
	}
	
	var curDate = new Date();
	curDate = restrictDateTime(curDate,dtType);
	
	var cmpDate = convertFormatedStringToDate(cmpStr,dtType);

	if(curDate.toString() == cmpDate.toString())
	{
//alert("cur[" + curDate + "] = [" + cmpDate + "]");
		return 0;
	}
	else
		if(curDate > cmpDate)
		{
//alert("cur[" + curDate + "] > [" + cmpDate + "]");
			return -1;
		}
		else
		{
//alert("cur[" + curDate + "] < [" + cmpDate + "]");
			return 1;
		}
}

function restrictDateTime()
{
/*
returns string in format : dd.mm.yyyy [hr][:mn][:sc][:msc]
arguments :
0: DATA object
1: items wich will be in rezult string
(
	no	=> (empty) default - without hours,minutes,seconds,milliseconds;
	hr	=> with hours;
	mn	=> up to minutes;
	sc	=> up to seconds;
	msc	=> up to milliseconds;
)
*/
	var i, dateIn = null, dtType = "no";
	
	for(i=0;i<arguments.length;i++)
	{
		switch(i)
		{
			case 0:
				dateIn = arguments[i];
				break;
			case 1:
				dtType = arguments[i];
				break;
		}
	}

	if(!dateIn) return null;
	
	switch(dtType)
	{
		case "no":
			dateIn.setHours(0);
		case "hr":
			dateIn.setMinutes(0);
		case "mn":
			dateIn.setSeconds(0);
		case "sc":
			dateIn.setMilliseconds(0);
	}
	
	return dateIn;
}

function convertDateToFormatedString()
{
/*
returns string in format : dd.mm.yyyy [hr][:mn][:sc][:msc]
arguments :
0: DATA object
1: items wich will be in rezult string
(
	no	=> (empty) default - without hours,minutes,seconds,milliseconds;
	hr	=> with hours;
	mn	=> up to minutes;
	sc	=> up to seconds;
	msc	=> up to milliseconds;
)
*/
	var i, dateIn = null, dtType = "no";
	
	for(i=0;i<arguments.length;i++)
	{
		switch(i)
		{
			case 0:
				dateIn = arguments[i];
				break;
			case 1:
				dtType = arguments[i];
				break;
		}
	}

	if(!dateIn) return "";
	
	var dd = dateIn.getDate().toString();
	if(2 > dd.length) dd = "0" + dd;
	
	var mm = (dateIn.getMonth() + 1).toString();
	if(2 > mm.length) mm = "0" + mm;
	
	var yyyy = dateIn.getFullYear().toString();
	var x = yyyy.length;
	if(4 > x) for(i=0;i<4-x;i++) yyyy = "0" + yyyy;

	var ms = "", sc = "", mn = "", hr = "";
	switch(dtType)
	{
		case "msc":
			ms = ":" + dateIn.getMilliseconds().toString();
		case "sc":
			sc = ":" + dateIn.getSeconds().toString();
		case "mn":
			mn = ":" + dateIn.getMinutes().toString();
		case "hr":
			hr = " " + dateIn.getHours().toString();
	}
	
	var rezultString = dd + "." + mm + "." + yyyy + hr + mn + sc + ms;
//alert(rezultString);
	return rezultString;
}

function convertFormatedStringToDate(strIn)
{
// string must be like dd.mm.yyyy [hr][:mn][:sc][:msc]

	if(!strIn) return null;
	if(1 > strIn.length) return null;

	var rezDate = new Date();
	var tmpStr = strIn;

	var x = strIn.indexOf(".");
	if(0> x) return rezDate;
	var dd = parseInt(tmpStr.substr(0,x));
	tmpStr = tmpStr.substr(x+1);

	x = tmpStr.indexOf(".");
	if(0 > x) return rezDate;
	var mm = parseInt(tmpStr.substr(0,x))-1;
	tmpStr = tmpStr.substr(x+1);

	x = tmpStr.indexOf(" ");
	if(0 > x) x = tmpStr.length;
	var yyyy = parseInt(tmpStr.substr(0,x));
	if(x == tmpStr.length) tmpStr = "";
	else tmpStr = tmpStr.substr(x+1);
	
	var hr = 0, mn = 0, sc = 0, msc = 0;
	
	if("" != tmpStr)
	{
		x = tmpStr.indexOf(":");
		if(0 > x) x = tmpStr.length;
		hr = parseInt(tmpStr.substr(0,x));
		if(x == tmpStr.length) tmpStr = "";
		else tmpStr = tmpStr.substr(x+1);
	
		if("" != tmpStr)
		{
			x = tmpStr.indexOf(":");
			if(0 > x) x = tmpStr.length;
			mn = parseInt(tmpStr.substr(0,x));
			if(x == tmpStr.length) tmpStr = "";
			else tmpStr = tmpStr.substr(x+1);
		
			if("" != tmpStr)
			{
				x = tmpStr.indexOf(":");
				if(0 > x) x = tmpStr.length;
				sc = parseInt(tmpStr.substr(0,x));
				if(x == tmpStr.length) tmpStr = "";
				else tmpStr = tmpStr.substr(x+1);
			
				if("" != tmpStr)
				{
					var msc = parseInt(tmpStr);
				}
			}
		}
	}
	
//	rezDate.setFullYear(yyyy,mm,dd);

	rezDate.setDate(dd);
	rezDate.setMonth(mm)-1;
	rezDate.setYear(yyyy);

	rezDate.setHours(hr);
	rezDate.setMinutes(mn);
	rezDate.setSeconds(sc);
	rezDate.setMilliseconds(msc);

//alert(rezDate);

	return rezDate;
}


function convertDateToString(dateIn)
{
/*
returns string in format : dd.mm.yyyy [hr][:mn][:sc][:msc]
arguments :
0: DATA object
1: items wich will be in rezult string
(
	no	=> (empty) default - without hours,minutes,seconds,milliseconds;
	hr	=> with hours;
	mn	=> up to minutes;
	sc	=> up to seconds;
	msc	=> up to milliseconds;
)
*/
	var i, dtType = "no";
	
	for(i=0;i<arguments.length;i++)
	{
		switch(i)
		{
			case 0:
				dateIn = arguments[i];
				break;
			case 1:
				dtType = arguments[i];
				break;
		}
	}

	if(!dateIn) return "";
	
	var dd = dateIn.getDate().toString();
	if(2 > dd.length) dd = "0" + dd;
	
	var mm = (dateIn.getMonth() + 1).toString();
	if(2 > mm.length) mm = "0" + mm;
	
	var yyyy = dateIn.getFullYear().toString();
	var x = yyyy.length;
	if(4 > x) for(i=0;i<4-x;i++) yyyy = "0" + yyyy;

	var ms = "", sc = "", mn = "", hr = "";
	switch(dtType)
	{
		case "msc":
			ms = ":" + dateIn.getMilliseconds().toString();
		case "sc":
			sc = ":" + dateIn.getSeconds().toString();
		case "mn":
			mn = ":" + dateIn.getMinutes().toString();
		case "hr":
			hr = " " + dateIn.getHours().toString();
	}
	
	var rezultString = dd + "." + mm + "." + yyyy + hr + mn + sc + ms;
//alert(rezultString);
	return rezultString;
}