var text_exp = /^[a-z]+[a-z\.\s]*$/i;
var phone_exp =/^([(0-9\+])(([()\-\s0-9]){0,})([0-9])$/i;
var number_exp = /^\d+$/;
var date_exp = /^(\d{4}[\-\/]\d{1,2}[\-\/]\d{1,2})$/;
var float_exp = /^\-{0,1}\d+([\.,]*\d+){0,1}$/;
var email_exp = /^\w[\.\w-]*\w@(\w[\w\-]*\w\.)+[a-z]{2,4}$/i
var money_exp = /^(\d+)\.(\d{1,2})$|^(\d+)$/i;
var ip_exp = /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})+$/;
var image_exp = /(\.gif)|(\.jpeg)|(\.jpg)$/i;
/*subdomain1.subdomain2.domain.topleveldomainname*/
var host_exp = /^([a-z0-9](\-*[a-z0-9]+)*\.)+[a-z0-9]{2,4}$/i;
/*http://username:password@hostname/path?arg=value#anchor*/
var url_exp = /^(((http)|(ftp)|(https)):\/\/){0,1}(\w+:\w+@){0,1}(([a-z0-9](\-*[a-z0-9]+)*\.)+[a-z0-9]{2,4})(\/|((\/{1}[a-z_0-9\_\.\-]+\/{0,1}){0,}))(\?([a-z_0-9\_\-\=\&\[\]\%]+){1,}){0,1}(#\w*){0,1}$/i;
var num_list_exp = /^\s*\w+(,\s*\w+\s*)*\s*$/;
var char_list_exp = /^\s*["']{1}[\w\s]*["']{1}(,\s*["']{1}[\w\s]*["']{1}\s*)*\s*$/;

function check_select (element)
{
	cb = eval(element);
 	return (cb.options[cb.options.selectedIndex].value != '') ? cb.options[cb.options.selectedIndex].value : false;
}

function check_radio (element)
{
	cd = eval(element);
	for (i = 0; i < cd.length; i++)
	{
		if (cd[i].checked) 
		{
			return cd[i].value;
		}
	}
	return false;
} 

function set_select (element, val)
{
	cb = eval(element);
  	for (c = 0; c < cb.length; c++){
   		if (cb.options[c].value == val || cb.options[c].text == val)
	   	{
			cb.options[c].selected = true;
	   		return true;
		}
   	}
 	return false;
}

function check_type(src, types, mesg, mes_empt)
{
	mes = (!mesg || mesg == "") ? "Found sintax error\n Entered no "+types+" formated data" : mesg;
	if (trim(src.value) == ""){
		mes_empt = (!mes_empt || mes_empt == "") ? "This field can't be empty" : mes_empt;
		alert(mes_empt);
		src.focus();
		return false;
	}
	
	if(!check_custom(src, types)){
		alert(mes);
		src.focus();
		src.select();
		return false;
	}
	return true;
}

function check_custom(src, types){
	re = eval(types+"_exp");
	if(src.value.search(re) >= 0)
		return true;
	else 
		return false;
}

function checkstr(src, err, maximum, maxmes){
	
    if( !src ) {return true}
    
    if(!err || err == "")
		var err="This field can not be empty";
    if (trim(src.value) == 0){
		alert(err);
		src.focus();
		return false;
	}else
	if(maximum && src.value.length > maximum){
		if(!maxmes)
		 maxmes="This field can't contain more then "+maximum+" characters.\nNow it contains "+src.value.length;
		alert(maxmes);
		src.focus();
		src.select();
		return false;
	}
	return true;
}

function trim(str)
{
	  re = /(^\s*)|(\s*$)/gi;
	  return str.replace(re, "");
}

function validate_date(dt)
{
	var re_date =  /^(\d{4})[\-\/](\d{1,2})[\-\/](\d{1,2})$/;
	var monthday = Array (31,29,31,30,31,30,31,31,30,31,30,31);
	if(dt.search(re_date) >= 0)
	{
		re_date.exec();
		var mon = RegExp.$2 + 0;
		var day = RegExp.$3 + 0;
		var year = RegExp.$1 + 0;
		if((mon > 13 || mon < 1) || (monthday[mon-1] < day || day < 1))
			return false
		if((year % 4) == 1 && ((year % 100) != 1 || (year % 400) == 1) && (mon == 2 && day > 28))
			return false
	}
	else 
	{
		return false
	}
	return true
}

function validate_ip_address(element)
{
    if(element.value == ""){
		 alert("Please enter IP address")
		 element.focus();
         element.select();    
         return false;
	}
	if(element.value.search(ip_exp) >= 0){
        ip_exp.exec();
        for(i=2;i<6;i++){
            if(eval("RegExp.$"+i) > 255){
                alert("The IP address is incorrect");
                element.focus();
                element.select();    
                return false;}//if eval
            }//for
            return true;
        } //if
    else{
		 alert("The IP address is incorrect");
         element.focus();
         element.select();
		 return false;}
}

function conf_del(mes)
{
	mes = (!mes) ? "Are you shure?" : mes;
	return confirm(mes);
}

function check_date_range(y_from, m_from, d_from, y_to, m_to, d_to, add_from, add_to){
 add_from = (add_from) ? add_from : 0;
 add_to = (add_to) ? add_to : 0;
 var dfrom = y_from.options[y_from.selectedIndex].value+""+m_from.options[m_from.selectedIndex].value+""+ d_from.options[d_from.selectedIndex].value+add_from;
 var dto = y_to.options[y_to.selectedIndex].value+""+m_to.options[m_to.selectedIndex].value+"" +d_to.options[d_to.selectedIndex].value+add_to;
 return (dfrom <= dto);
}