////////////////////////////////////////////////////////////////////
//					  Validation Functions						  //
//							ver. 1.1							  //
//						Author: Alex Kvak						  //
////////////////////////////////////////////////////////////////////

var error_in_field = 'Îøèáêà â ïîëå ';

//validates that the entry is a float
function aks_checkFloat(field,field_name)
{
	if (!$(field)) return false;

	$(field).value = $(field).value.replace(/,/,".");
    str = $(field).value;
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString();
    if (!str.match(re)) 
	{
		if (field.indexOf('__') != -1)
		{
			field_ = field.substring(0,field.indexOf('__'));
			field_ = field_.toUpperCase();
		}
		else
			field_ = field.toUpperCase();
		
		if ((typeof field_name != "undefined") && (field_name != ""))
			field_ = field_name;
		
		alert(error_in_field+" "+field_+"!");
		aks_getElement(field).focus();
		return false;
	}
	return true;
}

//validates that the entry is a positive or negative number
function aks_checkInteger(field,field_name)
{
    str = $(field).value;
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString( );
    if (!str.match(re)) 
	{
		if (field.indexOf('__') != -1)
		{
			field_ = field.substring(0,field.indexOf('__'));
			field_ = field_.toUpperCase();
		}
		else
			field_ = field.toUpperCase();

		if ((typeof field_name != "undefined") && (field_name != ""))
			field_ = field_name;

        alert(error_in_field+" "+field_+"!");
		$(field).focus();
        return false;
    }
	return true;
}

// validates that the entry is formatted as an email address
function aks_is_email(str) {
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) 
        return false;
    else
        return true;
}

// validates that the entry is formatted as an email address
function aks_isEmail(str) {
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    return (str.match(re));
}

// check for an empty field 
function aks_checkMenu(field)
{
    return ($(field).value!='');
}

// check for an empty field 
function aks_checkSuche(field,value)
{
    return (($(field).value!='') && ($(field).value!=value));
}

// validates that the entry is formatted as an URL
function aks_is_url(str)
{
    var re = /^[\w-]+(\/)*(\.){1,4}/i;
    if (!str.match(re)) 
        return false;
    else
        return true;
}

function aksIsURL(str) {
    var re = /^http:\/\/[\w-]+(\/)*(\.){1,4}/i;
    if (!str.match(re)) 
        return false;
    else
        return true;
}

function aks_isInt(num)
{
    var re = /^[-]?\d*\.?\d*$/;
    str = num.toString( );
    return (str.match(re));
}

// validates that the entry is a real date
function aks_checkDate (field,field_name)
{
	if (!(obj = $(field))) return false;
	dt = obj.value;
	
    day_in_month = new Array();
    day_in_month [1] = 31;
    day_in_month [2] = 28;
    day_in_month [3] = 31;
    day_in_month [4] = 30;
    day_in_month [5] = 31;
    day_in_month [6] = 30;
    day_in_month [7] = 31;
    day_in_month [8] = 31;
    day_in_month [9] = 30;
    day_in_month [10] = 31;
    day_in_month [11] = 30;
    day_in_month [12] = 31;

    var pos1 = dt.indexOf ('.');
    var pos2 = dt.lastIndexOf ('.');
    
    var form_valid = true;
    if ((pos1 == -1) || (pos2 == -1) || (pos1 == pos2))
    {
        msg = error_in_field + " "+field_name;
        form_valid = false;
    }
    else
    {
        var day = dt.substring (0, pos1);
        var month = dt.substring (pos1 + 1, pos2);
        var year = dt.substring (pos2 + 1, dt.length);
    }
    
    if (form_valid)
    {
        if ((!aks_isInt (year)) || (!aks_isInt (month)) || (!aks_isInt (day)))
        {
            msg = error_in_field + " "+field_name;
            form_valid = false;
        }
    }

    if (form_valid)
    {
        if ((year/4) == Math.round (year/4))
            day_in_month [2] = 29;

        if (((year/100) == Math.round (year/100)) && ((year/400) != Math.round (year/400)))
            day_in_month [2] = 28;

        if ((year <= 0) || (month <= 0) || (month > 12) || (day <= 0)  || (day > day_in_month [parseInt(month)]))
        {
            msg = error_in_field + " "+field_name;
            form_valid = false;
        }
    }
    
    if (!form_valid)
	{
        alert (msg);
		$(field).focus();
	}
    
    return form_valid;
}

function aks_checkTime (field,field_name) {
	if (!(obj = $(field))) return false;
	dt = obj.value;
	
    var pos = dt.indexOf (':');
    
    if (pos == -1) {
        alert(error_in_field + " "+field_name);
        return false;
    }
    var h = dt.substring (0, pos);
    var m = dt.substring (pos + 1, dt.length);
    
	if (!aks_isInt(m) || !aks_isInt(h)) {
	    alert(error_in_field + " "+field_name);
	    return false;
	}
	
	h= parseInt(h);
	m= parseInt(m);

	if ((h>23) || (h<0) || (m>59) || (m<0)) {
	    alert(error_in_field + " "+field_name);
	    return false;
	}
    
    return true;
}
