function trim(str)
{
	var rslt;
	var istart = 0, iend = str.length;

	if(!iend) return str;
	
	while(str.charAt(istart ++, 1) == ' ');
	while(str.charAt(-- iend, 1) == ' ');

	rslt = str.substr(-- istart, iend - istart + 1);

	return rslt;	
}

function ckData(form)
{
	for(var i = 0; i < form.length; i++)
	{
		if(form[i].getAttribute("allowNull")=="false" && (!form[i].value || form[i].getAttribute("toTrim")=="true" && trim(form[i].value)==""))
		{
			alert("\"" + form[i].getAttribute("detailName") + "\" cannot be Null!");
			form[i].focus();
			return false;
		}
		
		if(form[i].name == "password" && form[i+1].name == "repassword")
		{
			if(form[i].value != form[i+1].value)
			{
				alert("The password is difference between the firstly and the secondly!");
				form[i+1].focus();
				return false;
			}
		}
		
		if(form[i].getAttribute("allowNoOptions") == "false" && form[i].options.length == 0)
		{
			alert("\"" + form[i].getAttribute("detailName") + "\" must have some options!");
			form[i].focus();
			return false;
		}
		
		if(form[i].getAttribute("allowNoSelected") == "false" && form[i].selectedIndex == 0)
		{
			alert("\"" + form[i].getAttribute("detailName") + "\" must be selected anyone!");
			form[i].focus();
			return false;
		}
		
		if(form[i].getAttribute("mustSelect") == "true")
		{
			var isChecked = false;
			
			for(var j = 0;j < form.length; j++)
			{
				if(form[j].name == form[i].name && form[j].checked)
				{
					isChecked = true;
					break;
				}
			}
			
			if(!isChecked)
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" must be selected anyone!");
				form[i].focus();
				return false;
			}
		}
		
		if(form[i].getAttribute("isYear") == "true")
		{
			var s_year = Number(form[i].value);
			
			if(isNaN(s_year) || s_year < 2000)
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" is invalid Year!");
				form[i].focus();
				return false;
			}
		}
		
		if(form[i].getAttribute("isDate") == "true" && form[i].value)
		{
			var s_date, c_flag, s_y, s_m, s_d;
			
			c_flag = "";
			s_date = form[i].value;
			
			if(s_date.indexOf("-") != -1)
				c_flag="-";
			else if(s_date.indexOf("/") != -1)
				c_flag="/";
			
			if(c_flag != "")
			{
				s_y = s_date.substr(0,4);
				s_md = s_date.substr(5);
				s_m = s_md.substr(0,s_md.indexOf(c_flag));
				s_d = s_md.substr(s_md.lastIndexOf(c_flag) + 1);
				
				if(isNaN(s_y) || isNaN(s_m) || isNaN(s_d))
					c_flag = "";
				else if(Number(s_y)<1900)
					c_flag = "";
				else if(Number(s_m)>12 || Number(s_m)<1)
					c_flag = "";
				else if(Number(s_d)>31 || Number(s_d)<1)
					c_flag = "";
			}
			
			if(c_flag == "")
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" is invalid Date!");
				form[i].focus();
				return false;
			}
		}
		
		if(form[i].getAttribute("isNumber") == "true" && form[i].value)
		{
			if(isNaN(form[i].value))
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" not is a number!");
				form[i].focus();
				return false;
			}
			if(form[i].getAttribute("maxValue") && (Number(form[i].value) > Number(form[i].getAttribute("maxValue"))))
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" the value is too big!");
				form[i].focus();
				return false;
			}
			if(Number(form[i].value) <= 0 && form[i].getAttribute("allowLessZero") != "true")
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" the value cannot be <= 0 !");
				form[i].focus();
				return false;
			}
		}
		
		if(form[i].tagName.toLowerCase()=="textarea" && form[i].getAttribute("maxlength") && form[i].value.length > form[i].getAttribute("maxlength"))
		{
			alert("\"" + form[i].getAttribute("detailName") + "\" characters must less than " + form[i].getAttribute("maxlength") + " !");
			form[i].focus();
			return false;
		}
		
		if(form[i].getAttribute("isEmail") == "true" && form[i].value)
		{
			if(form[i].value.indexOf("@") == -1 || form[i].value.indexOf(".") == -1)
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" is a invalid E-mail address!");
				form[i].focus();
				return false;
			}
		}
		
		if(form[i].getAttribute("veryfyChar") == "true")
		{
			var i_charCode = 0;
			
			for(var j = 0; j < form[i].value.length; j++)
			{
				i_charCode = form[i].value.charCodeAt(j);
				if(!((i_charCode>=48 && i_charCode<=57) || // '0'-'9'
					 (i_charCode>=65 && i_charCode<=90) || // 'A'-'Z'
					 (i_charCode>=97 && i_charCode<=122)   // 'a'-'z'
					 ) )
				{
					alert("\"" + form[i].getAttribute("detailName") + "\" contains some invalid characters!");
					form[i].focus();
					return false;
				}
			}
		}
		
		if(form[i].getAttribute("forceLength"))
		{
			if(form[i].getAttribute("forceLength") != form[i].value.length)
			{
				alert("\"" + form[i].getAttribute("detailName") + "\" length is wrong!");
				form[i].focus();
				return false;
			}
		}
	}
	
	return true;
}

function ClearForm(form)
{
	for(var i = 0; i < form.length; i++)
	{
		var s_Type = form[i].type.toUpperCase();
		var s_TagName = form[i].tagName.toUpperCase();
		
		if(s_Type == "TEXT" || s_TagName == "TEXTAREA" || s_Type == "PASSWORD")
		{
			form.elements(i).value = "";
		}
	}
}

function getCookies(name)
{
	var value = null;
	var cookies = document.cookie;
	var istart = 0, iend = 0;
	
	if(!name || !cookies) return null;
	
	name += "=";
	cookies = unescape(cookies);
	if((istart = cookies.indexOf(name)) == -1) return null;
	
	istart += name.length;
	if((iend = cookies.indexOf(";", istart)) == -1)
	{
		value = cookies.substr(istart);
	}
	else
	{
		value = cookies.substr(istart, iend-istart);
	}
	
	return value;
}

function getUrlParams(name)
{
	var params = unescape(document.location.search.substr(1));
	var istart = 0, iend = 0;

	name += "=";
	if((istart = params.indexOf(name)) == -1) return "";
	
	istart += name.length;
	if((iend = params.indexOf("&", istart)) == -1)
	{
		return params.substr(istart);
	}
	else
	{
		return params.substr(istart, iend - istart);
	}
}
