function check_num(Tmp)
{
	var is_num;
	is_num = "0123456789";
	var subst;
    if(Tmp.substring(0, 0 + 1) == "-")
        Tmp = Tmp.substring(1, 1000);
	for(i = 0; i < Tmp.length; i++)
	{
		subst = Tmp.substring(i, i + 1);
		if(is_num.indexOf(subst) == -1)
			return false;
	}
	return true;
}

function check_flt(Tmp)
{
	var is_flt;
	is_flt = "0123456789.";
	var subst;
    if(Tmp.substring(0, 0 + 1) == "-")
        Tmp = Tmp.substring(1, 1000);
	for(i = 0; i < Tmp.length; i++)
	{
		subst = Tmp.substring(i, i + 1);
		if(is_flt.indexOf(subst) == -1)
			return false;
	}
	return true;
}

function check_name(Tmp)
{
	var is_alpha;
	is_alpha = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ  اأإآبتثجحخدذرزسشصضطظعغ?قكلمنهوؤيءئ ف ىة";
	var subst;
	for(i = 0; i < Tmp.length; i++)
	{
		subst = Tmp.substring(i, i + 1);
		if(is_alpha.indexOf(subst) == -1)
			return false;
	}
	return true;
}

function check_name_en(Tmp)
{
	var is_alpha_en;
	is_alpha_en = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var subst;
	for(i = 0; i < Tmp.length; i++)
	{
		subst = Tmp.substring(i, i + 1);
		if(is_alpha_en.indexOf(subst) == -1)
			return false;
	}
	return true;
}


function check_name_en_num(Tmp)
{
	var is_alpha_en;
	is_alpha_en = "abcdefghijklm nopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890-_,.;:@!#&|*+/\$%&";
	var subst;
	for(i = 0; i < Tmp.length; i++)
	{
		subst = Tmp.substring(i, i + 1);
		if(is_alpha_en.indexOf(subst) == -1)
			return false;
	}
	return true;
}

function check_phone(Tmp)
{
	var is_phone;
	is_phone = "0123456789 -+()";
	var subst;
	for(i = 0; i < Tmp.length; i++)
	{
		subst = Tmp.substring(i, i + 1);
		if(is_phone.indexOf(subst) == -1)
			return false;
	}
	return true;
}

function check_email(Tmp)
{
	var sss = Tmp;
	var index_at, index_dot, before_at, after_at;
	var is_alpha_dot = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_0123456789.";

	if (trim(Tmp) != "")
	{
		index_at = Tmp.indexOf("@");
		if ( index_at == -1)
			return false;
		before_at = Tmp.substring( 0, index_at - 1);
		Tmp = Tmp.substring(index_at + 1, Tmp.length);
		index_dot = Tmp.indexOf(".");
		if ( index_dot == -1)
			return false;
		after_at = Tmp.substring( 0, index_dot - 1);
		Tmp = Tmp.substring(index_dot + 1, Tmp.length);
		if ( Tmp.length == 0)
			return false;

		for(i = 0; i < before_at.length; i++)
		{
			subst = before_at.substring(i, i + 1);
			if(is_alpha_dot.indexOf(subst) == -1)
				return false;
		}

		for(i = 0; i < after_at.length; i++)
		{
			subst = after_at.substring(i, i + 1);
			if(is_alpha_dot.indexOf(subst) == -1)
				return false;
		}

		for(i = 0; i < Tmp.length; i++)
		{
			subst = Tmp.substring(i, i + 1);
			if(is_alpha_dot.indexOf(subst) == -1)
				return false;
		}
		var emailPattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$/;
		if (!(emailPattern.test(sss)))
		{
			return false;
		}
		return true;
	}
}
function is_leap(YY)
{
	if(YY % 4 != 0)
		return false;
	else if( YY % 100 !=0)
		return true;
	else if( YY % 400 !=0)
		return false;
	else
		return true;
}

function days_in_month(MM, YY)
{
	if ( MM == 1)
		return 31;
	if ( MM == 3)
		return 31;
	if ( MM == 5)
		return 31;
	if ( MM == 7)
		return 31;
	if ( MM == 8)
		return 31;
	if ( MM == 10)
		return 31;
	if ( MM == 12)
		return 31;
	if ( MM == 4)
		return 30;
	if ( MM == 6)
		return 30;
	if ( MM == 9)
		return 30;
	if ( MM == 11)
		return 30;
	if ( MM == 2)
		if(is_leap(YY) == true)
			return 29;
		else
			return 28;
}

function check_date(Tmp)
{
	var q;
	var index;
	var DD;
	var MM;
	var YY;
	q = "\/";
	var MinYear;
	MinYear = 1900;
	var MaxYear;
	MaxYear = 2100;
	index = Tmp.indexOf(q);
	if(index < 1 || index > 2)
		return false;
	DD = Tmp.substring(0, index);
	Tmp = Tmp.substring(index+1, Tmp.length);
	index = Tmp.indexOf(q);
	if(index < 1 || index > 2)
		return false;
	MM = Tmp.substring(0, index);
	YY = Tmp.substring(index+1, Tmp.length);
	if(parseInt(YY) < 1900 || parseInt(YY) > 2100)
		return false;
	if(YY > MaxYear || YY < MinYear)
		return false;
	if(MM < 1 || MM > 12)
		return false;
	if(DD < 1 || DD > days_in_month(MM, YY))
		return false;
	return true;
}

function is_bigger(date1, date2)
{
	//returns
	// -3 error in second date
	// -2 error in first date
	// -1 first is smaller
	// 0 equal
	// 1 first is bigger

	var q;
	var index1, index2;
	var dd1, mm1, yy1, dd2, mm2, yy2;
	q = "\/";
	if ( check_date(date1) == false)
		return -2;
	if ( check_date(date2) == false)
		return -3;
	index1 = date1.indexOf(q);
	index2 = date2.indexOf(q);
	dd1 = date1.substring(0, index1);
	date1 = date1.substring(index1+1, date1.length);
	index1 = date1.indexOf(q);
	mm1 = date1.substring(0, index1);
	yy1 = date1.substring(index1+1, date1.length);
	dd2 = date2.substring(0, index2);
	date2 = date2.substring(index2+1, date2.length);
	index2 = date2.indexOf(q);
	mm2 = date2.substring(0, index2);
	yy2 = date2.substring(index2+1, date2.length);
	if ( yy1 > yy2)
		return 1;
	if ( yy2 > yy1)
		return -1;
	if ( mm1 > mm2)
		return 1;
	if ( mm2 > mm1)
		return -1;
	if ( dd1 > dd2)
		return 1;
	if ( dd2 > dd1)
		return -1;
	return 0;
}

function check_during(Tmp)
{
	var q;
	var index;
	//var DD;
	var MM;
	var YY;
	q = "\/";
	var MinYear;
	MinYear = 1900;
	var MaxYear;
	MaxYear = 2100;
	/*index = Tmp.indexOf(q);
	if(index < 1 || index > 2)
		return false;
	DD = Tmp.substring(0, index);
	Tmp = Tmp.substring(index+1, Tmp.length);*/
	index = Tmp.indexOf(q);
	if(index < 1 || index > 2)
		return false;
	MM = Tmp.substring(0, index);
	YY = Tmp.substring(index+1, Tmp.length);
	if(parseInt(YY) < 1900 || parseInt(YY) > 2100)
		return false;
	if(YY > MaxYear || YY < MinYear)
		return false;
	if(MM < 1 || MM > 12)
		return false;
	/*if(DD < 1 || DD > days_in_month(MM, YY))
		return false;*/
	return true;
}

function check_input(my_input)
{
    my_alt = my_input.alt + "_";

    if(my_alt == "")
        return true;
	
    my_alt = my_alt + "_";
    if (my_input.value != null)
    {	
        my_val = trim(my_input.value);
    }
    my_type    = "";
    my_min_val = ""; my_max_val = ""; my_val_val = "";
    my_min_len = ""; my_max_len = ""; my_val_len = "";
    my_req     = "";
    result  = true;
    if(my_alt.indexOf("HIDDEN") >= 0 )
    {
        try
        {
            my_input.focus();
        }
        catch(exception)
        {
            return true;
        }
    }

    if(my_alt.indexOf("DISABLE") >= 0 )
    {
        try
        {
            my_input.focus();
        }
        catch(exception)
        {
            return true;
        }
    }

    error_cause = "";

    if(my_alt.indexOf("REQUIRE") >= 0 )
    {
        my_req = "yes";
        result = result && (my_val != "");
        if(!result)
            error_cause = "require";
    }
	if(my_alt.indexOf("NAME_EN_NUM") >= 0 )
    {
        my_type = "name_en_num";
        if(my_val != "")
            result = result && check_name_en_num(my_val);
        if(!result)
            error_cause = "name_en_num";
    }
	else if(my_alt.indexOf("NAME_EN") >= 0 )
    {
        my_type = "name_en";
        if(my_val != "")
            result = result && check_name_en(my_val);
        if(!result)
            error_cause = "name_en";
    }
    else if(my_alt.indexOf("NUM") >= 0 )
    {
        my_type = "num";
        if(my_val != "")
            result = result && check_num(my_val);
        if(!result)
            error_cause = "num";
    }
    else if(my_alt.indexOf("FLT") >= 0 )
    {
        my_type = "flt";
        if(my_val != "")
            result = result && check_flt(my_val);
        if(!result)
            error_cause = "flt";
    }
   
    else if(my_alt.indexOf("NAME") >= 0 )
    {
    	
        my_type = "name";
        if(my_val != "")
            result = result && check_name(my_val);
        if(!result)
            error_cause = "name";
    }
    else if(my_alt.indexOf("DATE") >= 0 )
    {
        my_type = "date";
        if(my_val != "")
            result = result && check_date(my_val);
        if(!result)
            error_cause = "date";
    }
    else if(my_alt.indexOf("PHONE") >= 0 )
    {
        my_type = "phone";
        if(my_val != "")
            result = result && check_phone(my_val);
        if(!result)
            error_cause = "phone";
    }
    else if(my_alt.indexOf("EMAIL") >= 0 )
    {
        my_type = "email";
        if(my_val != "")
            result = result && check_email(my_val);
        if(!result)
            error_cause = "email";
    }

    if(my_alt.indexOf("LEN") >= 0 )
    {
        index_start = my_alt.indexOf("LEN");
        index_end   = my_alt.indexOf("_", index_start);
        index_2dots = my_alt.indexOf(":", index_start);
        if (index_2dots > index_end || index_2dots == -1)
        {
            my_val_len = my_alt.substring(index_start+3, index_end);
            result = result && (my_val.length == parseInt(my_val_len));
        }
        else
        {
            my_min_len = my_alt.substring(index_start+3, index_2dots);
            my_max_len = my_alt.substring(index_2dots+1, index_end);
            if(my_min_len != "")
                result = result && (my_val.length >= parseInt(my_min_len));
            if(my_max_len != "")
                result = result && (my_val.length <= parseInt(my_max_len));;
        }
        if(!result)
            error_cause = "len";
    }

    if(my_alt.indexOf("VAL") >= 0 )
    {
        index_start = my_alt.indexOf("VAL");
        index_end   = my_alt.indexOf("_", index_start);
        index_2dots = my_alt.indexOf(":", index_start);
        if (index_2dots > index_end || index_2dots == -1)
        {
            my_val_val = my_alt.substring(index_start+3, index_end);
            result = result && (parseInt(my_val) == parseInt(my_val_val));
        }
        else
        {
            my_min_val = my_alt.substring(index_start+3, index_2dots);
            my_max_val = my_alt.substring(index_2dots+1, index_end);
            if (my_min_val != "")
                result = result && (parseInt(my_val) >= parseInt(my_min_val));
            if (my_max_val != "")
                result = result && (parseInt(my_val) <= parseInt(my_max_val));
        }
        if(!result)
            error_cause = "val";
    }

    if(result == false)
    {
		//alert(my_input.name);
        alert_input = my_input;
        enable_alert();
        //balloon_show(eval("error_" + error_cause), my_input.name);
    }
	
    return result;
}
function check_form(form)
{	
	for(j = 0; j < form.length; j++)
	{
		result = check_input(form[j]);
		if(result == false)
		{
			
				return false;
		}		
	}
	form.submit();
}

// for Act
function check_form_without_submit(form)
{
    for(j = 0; j < form.length; j++)
    {
        result = check_input(form[j]);
        if(result == false)
        {
            return false;
        }
    }
    return true;
}

