////////////////////////////////////////////////////////////////////
//                      Validation Functions                          //
//                            ver. 1.1                              //
//                        Author: Alex Kvak                          //
////////////////////////////////////////////////////////////////////

//validates that the entry is a float
function aks_checkFloat(field,field_name)
{
    str = aks_getElement(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 = aks_getElement(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 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;
}

// check for an empty field 
function aks_checkMenu(field)
{
    return (aks_getElement(field).value!='');
}

function aks_is_url(str)
{
    var re = /^[\w-]+(\/)*(\.){1,4}/i;
    if (!str.match(re)) 
        return false;
    else
        return true;
}

// validates that the entry is a real date
function aks_checkDate (field,field_name)
{
	if (!(obj = aks_getElement(field))) return false;
	dt = obj.value;
    
	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;
		
    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_+"!";
        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_+"!";
            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_+"!";
            form_valid = false;
        }
    }
    
    if (!form_valid)
        alert (msg);
    
    return form_valid;
}

// 
function aks_isInt(num)
{
    var re = /^[-]?\d*/;
    str = num.toString( );
    return (str.match(re));
}
