// ----------------------------------------------------------------------------
// kontrola formatu zadaneho cisla
// ----------------------------------------------------------------------------

function isInteger(str)
{
    var flag = str.length;
    for (i = 0; i < str.length; i++)
    {
        if ((str.substring(i, i+1) < '0') || (str.substring(i, i+1) > '9'))
        {
            flag = false;
            break;
        }
    }
    return(flag);
}

// ----------------------------------------------------------------------------
// kontrola formatu zadaneho emailu
// ----------------------------------------------------------------------------

function isEmail(email)
{
	return isEmailList(email, false);
}

function isEmails(email)
{
	return isEmailList(email, true);
}

function isEmailList(email, list)
{
	var valid = true;
	var myCharAt = 0;
	var myCharDot = 0;

	var ch = " ";
	var i = 1;
	while (( i <= email.length ) && (valid))
	{
		ch = email.charAt(i-1);
		i++;

		// kontrola na spravne znaky
		if (ch == ' ') valid = false;
		if (ch > unescape('%7F')) valid = false;

		// kontrola na domenu
		if (myCharAt > 0)
		{
			if (ch == '.')
			{
				if (i == email.length) valid = false;
				if (myCharDot == i-1) valid = false;
				if (myCharAt == i-1) valid = false;
				myCharDot = i;
			}
		}

		// kontrola na oddelene jmeno a domenu
 		if (ch == '@')
		{
			if (myCharAt > 0) valid = false;
			if (i == 1) valid = false;
			myCharAt = i;
		}
	}

	// kontrola zadane domeny
	if (myCharAt == 0) valid = false;
	if (myCharDot == 0) valid = false;

	return valid;
}

// ----------------------------------------------------------------------------
// kontrola formatu zadaneho data
// ----------------------------------------------------------------------------

var n = new Array(0,0,0,0,0);

function isDateTime(string, format)
{
	// kontrola vstupnich parametru
	if ((isNaN(format)) || (format<1) || (format>3)) return false;

	// nastaveni promennych
	var separators = new Array('.. : ', '.. ', ': ');
	var x = 0;
	var separator;

	var i = 0;
	while ((i < string.length) && (x < 5))
	{

		// odriznuti mezer
		while ((i < string.length) && (string.charAt(i) == ' '))
		{
			i = i + 1;
		}
		
		// nacteni nasledujiciho cisla
		number = '';
		while ((i < string.length) && (string.charAt(i) >= '0') && (string.charAt(i) <= '9'))
		{
			number = number + string.charAt(i);
			i = i + 1;
		}

		// kontrola a zapis nacteneho cisla
		if (number == '')
		{
			if (x < separators[format-1].length) return false;
		}
		else
		{
			n[x] = number;
			x = x + 1;

			// nacteni a kontrola oddelovace
			separator = ' ';
			if (i < string.length)
			{
				separator = string.charAt(i);
				i = i + 1;
			}
			if (separator != separators[format-1].charAt(x-1)) return false;
		}
	}
	
	// kontrola delky zadanych dat
	if (x != separators[format-1].length) return false;

	// kontrola zadanych hodnot
	if (format < 3)
	{
		// kontrola roku
		if (n[2] < 100)
		{
			if (n[2] < 30)
			{
				n[2] = eval('2000 + ' + n[2].valueOf() + ';')
			}
			else
			{
				n[2] = eval('1900 + ' + n[2].valueOf() + ';')
			}
		}
		if ((n[2] < 1900) || (n[2] > 2100)) return false;

		// kontrola masice
		if ((n[1] < 1) || (n[1] > 12)) return false;

		// kontrola dne
		var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	    if ((n[1].valueOf() == 2) && ((((parseInt(n[2].valueOf() / 4 ,10) * 4) == n[2].valueOf()) && !((parseInt(n[2].valueOf() / 100,10) * 100 ) == n[2].valueOf())) || n[2].valueOf() == 2000))
	    {
			monthdays = 29;
		} 
		else
		{
			monthdays = days[n[1]-1]
		}
		if ((n[0] < 1) || (n[0] > monthdays)) return false;
		
	}
	
	if ((format == 1) || (format == 3))
	{
		var fhours = new Array(3,0,0);
		x = fhours[format-1];
	
		// kontrola hodin
		if ((n[x+0] < 0) || (n[x+0] > 23)) return false;

		// kontrola minut
		if ((n[x+1] < 0) || (n[x+1] > 59)) return false;
	}
	
	return true;
}


// ----------------------------------------------------------------------------
// kontrola formatu zadaneho data
// ----------------------------------------------------------------------------

function getMyDateTime(string, format)
{
	if (isDateTime(string, format))
	{
		if (format == 1) return new Date(n[2], parseInt(n[1])-1, parseInt(n[0]), n[3], n[4]);
		if (format == 2) return new Date(n[2], parseInt(n[1])-1, parseInt(n[0]));
		if (format == 3) return new Date();
	}
	else
	{
		return new Date();
	}
}

