﻿var bCheck = true;
var strLang;
/// <summery> 提交欄位檢查數據 </summery>
/// function checkdata(Fields,FieldsName,CheckType,Length,IsEmpty)的參數說明
/// Fields: 需驗證欄位的name屬性值
/// FieldsName: 需欄位的中文名稱
/// CheckType: 驗證類型("integer":整型 "numeric":數字型 "PriceNumeric":價格數字型 "numericletter":英數字型
/// "letter":英文字型 "date":西元日期 "mindate":民國日期 "identificationcard":身分證格式 "mail":Email格式)
/// Length: 欄位長度(MaxLength)
/// IsEmpty: 是否允許為空(true 表示允許為空;false 表示不允許為空)
/// Language: 版本語言
function checkdata(Fields,FieldsName,CheckType,Length,IsEmpty,Language)
{	
	var fields = Fields.split(";")//欄位的name屬性值
	var fieldsname = FieldsName.split(";")//欄位的中文名稱
	var checktype = CheckType.split(";")//驗證類型
	var length = Length.split(";")//欄位長度
	var isempty = IsEmpty.split(";")//是否允許為空
	strLang = Language;
	for(var i=0;i<fields.length;i++)
	{
		CheckFiled(fields[i],fieldsname[i],checktype[i],length[i],isempty[i])
		if(!bCheck) return bCheck;
	} 
	return bCheck;
}
//根據參數選擇不同的驗證方法
function  CheckFiled(Fields,FieldsName,CheckType,Length,IsEmpty)
{
	var name = document.getElementById(Fields);
	var FieldsValue = Trim(name.value);
	if(document.getElementById(Fields).type!="select-one")
	{
	    name.value=FieldsValue;
	}
	
	if(IsEmpty == 'false')
	{
		 CheckEmpty(FieldsValue,Fields,FieldsName)
		 if(!bCheck) return false;
	}

	if(FieldsValue != "")
	{
		switch(CheckType)
		{
			case "integer":
				CheckInteger(FieldsValue,Fields,FieldsName);
				break;
			case "numeric":
				CheckNumeric(FieldsValue,Fields,FieldsName);
				break;
			case "PriceNumeric":
				CheckPriceNumeric(FieldsValue,Fields,FieldsName);
				break;
			case "ISBN":
				CheckISBN(FieldsValue,Fields,FieldsName);
				break;
			case "numericletter":
				CheckNumericLetter(FieldsValue,Fields,FieldsName);
				break;
			case "letter":
				CheckLetter(FieldsValue,Fields,FieldsName);
				break;
			case "date":
				CheckDate(FieldsValue,Fields,FieldsName);
				break;
			case "mindate":
				CheckMinDate(FieldsValue,Fields,FieldsName);
				break;
			case "identificationcard":
				CheckIdentificationCard(FieldsValue,Fields,FieldsName);
				break;
			case "mail":
				CheckEMail(FieldsValue,Fields,FieldsName);
				break;
			case "custom_id_1_1":
				CheckCustom_id_1(FieldsValue,Fields,FieldsName);
				break;
			case "custom_id_1_2":
				CheckCustom_id_2(FieldsValue,Fields,FieldsName);
				break;
			case "custom_id_2":
				CheckCustom_id2(FieldsValue,Fields,FieldsName);
				break;
			case "mobil":
			    CheckMobil(FieldsValue,Fields,FieldsName);
				break;
			default:
		}
		if(bCheck && Length!="")
		{
			CheckLength(FieldsValue,Length,Fields,FieldsName);
		}
	}
}
//驗證是否是整數值
function CheckInteger(FieldsValue,Fields,FieldsName)
{
		var sRegularExp = /^[+-]?(?:[1-9]\d+|\d)$/ // /^[+_\-]?[1-9][0-9]+$|^[+_\-]?[0-9]$/
		
		bCheck = sRegularExp.test(FieldsValue)
		
		if(!bCheck)
		{
		    if(strLang=="zh-cn")
		    {
			    alert(FieldsName + "請輸入整數!!")
			}
			else if(strLang=="en-us")
			{
			    alert(FieldsName + " No decimal allowed!!")
			}
			document.getElementById(Fields).focus()			
		}
		return bCheck
		
}
//驗證是否是數字類型
function CheckNumeric(FieldsValue,Fields,FieldsName)
{
		var sRegularExp = /^[0-9]+$/i
		
		bCheck = sRegularExp.test(FieldsValue)
		
		if(!bCheck)
		{
		    if(strLang=="zh-cn")
		    {
			    alert(FieldsName + "請輸入數字!!")
			}
			else if(strLang=="en-us")
			{
			    alert(FieldsName + " Please input a number!!")
			}
			//alert(FieldsName + "請輸入數字!!")
			document.getElementById(Fields).focus()
		}
		return bCheck
}
//驗證是否是價格數字類型
function CheckPriceNumeric(FieldsValue,Fields,FieldsName)
{
		var sRegularExp = /^([0]|[1-9]\d*)(\.\d{1,2})?$/;
		
		bCheck = sRegularExp.test(FieldsValue)
		
		if(!bCheck)
		{
			//alert(FieldsName + "請輸入數字!!")
		    if(strLang=="zh-cn")
		    {
			    alert(FieldsName + "請輸入整數或者帶有二位小數的金額!!")
			}
			else if(strLang=="en-us")
			{
			    alert(FieldsName + " Please enter an integer with two decimal places or the amount of!!")
			}
			document.getElementById(Fields).focus()
		}
		return bCheck
}
//去空格
function Trim(str) {
	if (typeof(str)!="undefined") {
		return (""+str).replace(/^\s+/g, '').replace(/\s+$/g, '');
	}
	else {
		return str;
	}
}
//驗證英數字格式
function CheckNumericLetter(FieldsValue,Fields,FieldsName)
{
		var sRegularExp = /^[A-Z][A-Z_0-9]+$/i
		
		bCheck = sRegularExp.test(FieldsValue)		
		if(!bCheck)
		{
			//alert(FieldsName + "請輸入英數字!!")
		    if(strLang=="zh-cn")
		    {
			    alert(FieldsName + "請輸入英數字!!")
			}
			else if(strLang=="en-us")
			{
			    alert(FieldsName + " Please input alphanumeric!!!")
			}
			document.getElementById(Fields).focus()
		}
		return bCheck
}
//驗證是否是ISBN類型
function CheckISBN(FieldsValue,Fields,FieldsName)
{
	var sRegularExp = /^[\d,-]+$/;
	
	bCheck = sRegularExp.test(FieldsValue)
	
	if(!bCheck)
	{
		//alert(FieldsName + "請輸入數字!!")
	    if(strLang=="zh-cn")
	    {
		    alert(FieldsName + "請輸入由數字或者數字和'-'組成的ISBN/ISSN!!")
		}
		else if(strLang=="en-us")
		{
		    alert(FieldsName + " Please enter the numbers or numbers and '-' composed ISBN / ISSN!!")
		}
		document.getElementById(Fields).focus()
	}
	return bCheck
}
//驗證英文字格式
function CheckLetter(FieldsValue,Fields,FieldsName)
{
		var sRegularExp = /^[a-z]+$/i
		
		bCheck = sRegularExp.test(FieldsValue)
		
		if(!bCheck)
		{
			//alert(FieldsName + "請輸入英文字!!")
		    if(strLang=="zh-cn")
		    {
			    alert(FieldsName + "請輸入英文字!!")
			}
			else if(strLang=="en-us")
			{
			    alert(FieldsName + " Please input a word!!")
			}
			document.getElementById(Fields).focus()
		}
		return bCheck
}
//驗證西元年
function CheckDate(FieldsValue,Fields,FieldsName)
{
		var sRegularExp = /^[0-9]{4}\/[0-9]{1,2}\/[0-9]{1,2}$/
		var psValue = FieldsValue;
		bCheck = sRegularExp.test(psValue)
		if(bCheck)
		{
			var oDate = new Date(psValue)
			
			var sYear = new String(oDate.getFullYear())
			var sMonth = new String(oDate.getMonth() + 1)
			var sDay = new String(oDate.getDate())
			psValue = psValue.replace(/\/0/g, "/")
			var sTestDate = sYear + "/" + sMonth + "/" + sDay
			bCheck = (psValue == sTestDate)
		}
		if(!bCheck)
		{
			//alert(FieldsName + "請輸入日期格式YYYY/MM/DD!!")
		    if(strLang=="zh-cn")
		    {
			    alert(FieldsName + "請輸入日期格式YYYY/MM/DD!!")
			}
			else if(strLang=="en-us")
			{
			    alert(FieldsName + " Please input the date format as YYYY / MM / DD!!")
			}
			document.getElementById(Fields).focus()
		}
		

		return bCheck
}
//驗證民國年
function CheckMinDate(FieldsValue,Fields,FieldsName)
{
		var sRegularExp = /^[0-9]{3}\/[0-9]{1,2}\/[0-9]{1,2}$/
		var psValue = FieldsValue;
		bCheck = sRegularExp.test(psValue)
		if(bCheck)
		{
			var oDate = new Date(psValue)
			var sYear = psValue.split("/")[0]
			var sMonth = new String(oDate.getMonth() + 1)
			var sDay = new String(oDate.getDate())
			psValue = psValue.replace(/\/0/g, "/")
			var sTestDate = sYear + "/" + sMonth + "/" + sDay
			bCheck = (psValue == sTestDate)
		}
		if(!bCheck)
		{
			//alert(FieldsName + "請輸入日期格式YYY/MM/DD!!")
		    if(strLang=="zh-cn")
		    {
			    alert(FieldsName + "請輸入日期格式YYY/MM/DD!!")
			}
			else if(strLang=="en-us")
			{
			    alert(FieldsName + " Please input the date format as YYY / MM / DD!!")
			}
			document.getElementById(Fields).focus()
		}
		return bCheck;
}
//聯絡電話 by bess
function CheckMobil(FieldsValue,Fields,FieldsName)
{
	var LOBJ_Phone = document.getElementById(Fields);
	var LSTR_PhoneValue = FieldsValue;
	var LSTR_RegPhone = /^[-]{0,1}([0-9-()#*-]{0,50})$/;
    if(LSTR_PhoneValue.match(LSTR_RegPhone))
    {
        bCheck=true;
        return true;
    }
    else
    {
        //alert(FieldsName + "請輸入連絡電話格式!!");
	    if(strLang=="zh-cn")
	    {
		    alert(FieldsName + "請輸入連絡電話格式!!")
		}
		else if(strLang=="en-us")
		{
		    alert(FieldsName + " Please enter a contact phone format!!")
		}
        LOBJ_Phone.focus();
        bCheck=false;
        return false;
    }
}
//驗證Mail格式
function CheckEMail(FieldsValue,Fields,FieldsName)
{
	var psValue = FieldsValue;
	var sRegularExp = /^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_\-\.]+([a-zA-Z]{2,4}|\d{1,3})+$/;
	bCheck = sRegularExp.test(psValue);
	if(psValue.indexOf("@") > -1)
	{
		//按@截取
		var arrEnd = psValue.split("@");
		//按"."截取,判斷最多有四段
		var arrDoc= arrEnd[1].split(".");
		
		if(arrDoc.length>4)
		{
			bCheck = false;
		}
		else
		{
			if(bCheck)
			{
				//取得最後一段的內容
				var strValue = arrDoc[arrDoc.length - 1];
				
				if(isNaN(strValue) == true)
				{
					if(strValue.length > 4)
					{
						bCheck = false;
					}
				}
				else
				{
					if(strValue.length > 3)
					{
						bCheck = false;
					}
				}
			}
		}
	}

	if(!bCheck)
	{
		//alert(FieldsName + "請輸入EMail格式!!")
	    if(strLang=="zh-cn")
	    {
		    alert(FieldsName + "請輸入EMail格式!!")
		}
		else if(strLang=="en-us")
		{
		    alert(FieldsName + " Please enter EMail format!!")
		}
		document.getElementById(Fields).focus()
	}
	return bCheck;
}
//檢查是否為空
function CheckEmpty(FieldsValue,Fields,FieldsName)
{
	bCheck = true;
	var name = document.getElementById(Fields);
	var nameLength = FieldsValue.length;
	if(nameLength<=0)
	{
		//alert("請輸入" + FieldsName + "!!");
	    if(strLang=="zh-cn")
	    {
		    alert("請輸入" + FieldsName + "!!");
		}
		else if(strLang=="en-us")
		{
		    alert("Please input " + FieldsName + "!!");
		}
		document.getElementById(Fields).focus();
		bCheck = false;
	}
	
	return bCheck;
}
//檢查長度
function CheckLength(FieldsValue,Length,Fields,FieldsName)
{
	var name = document.getElementById(Fields);
	var psValue = FieldsValue;
	Length = parseInt(Length);
	
	var sCheckString = new String(psValue);
	var iCharCounter = 0;
	
	for (var i=0; i<sCheckString.length; i++)
	{
		if (sCheckString.charCodeAt(i) > 255)
		{
			iCharCounter += 2;
		}
		else
		{
			iCharCounter++;
		}
	}
	
	if (iCharCounter > Length)
	{
		//alert(FieldsName + "最多只能輸入"+Length+"碼,請確認後重新輸入!!");
	    if(strLang=="zh-cn")
	    {
		    alert(FieldsName + "最多只能輸入"+Length+"碼,請確認後重新輸入!!");
		}
		else if(strLang=="en-us")
		{
		    alert(FieldsName + " Please re-enter up to a maximun of"+Length+" characters!!");
		}
		bCheck = false;
		document.getElementById(Fields).focus();
		return bCheck;
	}
}