﻿//----------------------------------------------------------------------
//	FileName: Validate.js
//	Date: 2004/10/7
//	Builder: Shawn Pan
//----------------------------------------------------------------------

/*	----the example of frm_Validate---- */
var chkFields =
[
	//[object, object type, message, min, max, validator, depend, name]
]
//************************************************************************
function frm_Validate(sField){
	var validate = true;
	for(var i=0; i<sField.length; i++){
		var fieldname = "";
		var fieldtype = "";
		var errmsg    = "";
		var minLength = "";
		var maxLength = "";
		var validator = "";
		var depend    = "";
		var text      = "";
		
		//define the variables
		fieldname = sField[i][0];
		fieldtype = sField[i][1];
		errmsg    = sField[i][2];
		
		//check array length
		if(sField[i].length>=4) minLength = sField[i][3];
		if(sField[i].length>=5) maxLength = sField[i][4];
		if(sField[i].length>=6) validator = sField[i][5];
		if(sField[i].length>=7) depend    = sField[i][6];
		if(sField[i].length>=8) text      = sField[i][7];
		
		if(fieldtype=='textbox'){
			if(!chkTextBox(fieldname)){
				alert(errmsg);
				validate = false
				break
			}
			if(!chkLength(fieldname, minLength, maxLength)){
				alert(text+" Invalid word string length!");
				validate = false
				break
			}
			if((validator!="")||(validator!=null)){
				//check the rules
				switch(validator){
					case "email":
						validate = checkemail(fieldname);
						break
					case "email2":
						validate = checkemail2(fieldname, depend);
						break
					case "password":
						validate = checkpassword(fieldname, depend);
						break
					case "alphanumber":
						validate = checkalphanumber(fieldname, text);
						break
					case "number":
						validate = checknumber(fieldname, text)
						break
					case "idnumber":
						validate = checkidnumber(fieldname, text)
						break;
				}
				if(!validate)
					break
				
			}
			
		}else if(fieldtype=='radio'){
			if(!chkRadio(fieldname)){
				alert(errmsg);
				validate = false
				break
			}
		}else if(fieldtype=='checkbox'){
			if(!chkCheckBox(fieldname)){
				alert(errmsg);
				validate = false
				break
			}
		}else if(fieldtype=='select'){
			if(!chkSelect(fieldname)){
				alert(errmsg);
				validate = false
				break
			}
		}else if(fieldtype=='textarea'){
			if(!chkTextArea(fieldname)){
				alert(errmsg);
				validate = false
				break
			}
		}else{
			validate = false
		}
	}
	return validate;
}


function chkLength(obj, sMin, sMax){
	var valid = true
	if((sMin=='')||(sMin==null))	sMin = 2;
	if((sMax=='')||(sMax==null))	sMax = 40;
	if((obj.value.length<sMin)||(obj.value.length>sMax)){
		valid = false
		obj.value = "";
		obj.focus();
	}
	return valid
}
function checkemail(obj){
	var valid = true
	if(obj.value==""){return}
	if((obj.value.indexOf("@")==-1)||(obj.value.indexOf(".")==-1)){
		//alert("Invalid email format!  Please enter again!\n");
		alert("錯誤的Email格式,請重新輸入Email!\n");
		valid = false
		obj.value = "";
		obj.focus();
	}
	return valid
}

function checkemail2(obj,obj2){
	var valid = true
	if(obj.value==""){return}
	if((obj.value.indexOf("@")==-1)||(obj.value.indexOf(".")==-1)){
		alert("錯誤的Email格式,請重新輸入Email!\n");
		valid = false
		obj.value = "";
		obj.focus();
	}
	if(obj.value!=obj2.value){
		alert("Email資料不正確,請確認欄位中Email資料皆相同!\n");
		valid = false;
		obj.value = "";
		obj2.value = "";
		obj.focus();
	}
	return valid
}

function checkpassword(oField1,oField2){
	var valid = true
	if(oField1.value!=oField2.value){
		alert("Invalid password!  Please enter again!\n");
		valid = false;
		oField1.value = "";
		oField2.value = "";
		oField1.focus();
	}
	return valid
}

function checkalphanumber(Obj,txt){
	var allValid = true;
	if(Obj.value.length>0){
		var checkOK = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		var checkStr = Obj.value;
		for (i = 0;  i < checkStr.length;  i++){
			ch = checkStr.charAt(i);
			for (j = 0;  j < checkOK.length;  j++)
				if (ch == checkOK.charAt(j))
		        		break;
			if (j == checkOK.length){
				allValid = false;
				break;
			}
		}

		if(!allValid) {
			Obj.value="";
			Obj.focus();
			alert("Only 26 English alphabet and number for " + txt + " Please enter again!\n");
		}
	}else{
		allValid = false
	}
	return allValid
}


function checknumber(Obj,txt){
	var allValid = true;
	if(Obj.value.length>0){
		var checkOK = "1234567890";
		var checkStr = Obj.value;
		for (m = 0;  m < checkStr.length;  m++){
			ch = checkStr.charAt(m);
			for (n = 0;  n < checkOK.length;  n++)
				if (ch == checkOK.charAt(n))
		        		break;
			if (n == checkOK.length){
				allValid = false;
				break;
			}
		}

		if(!allValid) {
			Obj.value="";
			Obj.focus();
			alert(txt+" Only number!  Please enter again!\n");
		}
	}
	return allValid;
}

function checknumberlimit(oField, min, max, sText){
	var checkOK = "0123456789";
	var checkStr = oField.value;
	var valid = true;
	
	if((checkStr.length<min)||(checkStr.length>max)){
		alert("Invalid number length.");
		valid = false;
		oField.value = "";
		oField.focus();
	}else{
		for(n=0; n<checkStr.length; n++){
			ch = checkStr.charAt(n);
			for(m=0; m<checkOK.length; m++){
				if(ch==checkOK.charAt(m)) break;
				if(m==checkOK.length){
					valid = false;
					break;
				}
			}
			if(!valid){
				alert(sText + "Only number!  Please enter again!\n");
				oField.value = "";
				oField.focus();
				break;
			}
		}
	}
	return valid;
}

function checkidnumber(Obj, sText){
	if(Obj.value.length>0)
	{
	  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	  var checkOK1 = "1234567890";
	  var checkStr = Obj.value;
	  var allValid = true;
	  ch = checkStr.charAt(0);
	  for (a = 0;  a < checkOK.length;  a++)
    	if (ch == checkOK.charAt(a)) break;
	  if (a == checkOK.length) allValid = false;
	else {
    	for (b = 1;  b < checkStr.length;  b++) {
	      ch = checkStr.charAt(b);
    	  for (a = 0;  a < checkOK1.length;  a++)
	        if (ch == checkOK1.charAt(a))
    	      break;
	      if (a == checkOK1.length)
    	  {
	        allValid = false;
    	    break;
	      }
    	}
	  }
	  ch2 = checkStr.charAt(1);
	  if ((ch2 != "1" && ch2 != "2") || (Obj.value.length != 10)) allValid = false;
	  if(!allValid) {
			alert("Invalid " + sText+" Format! \nPlease enter again.\n");
			Obj.value="";
			Obj.focus();
	  }
	  return allValid
	}
}

//----------------------------------------------------------------------
//	validate form field functions
//----------------------------------------------------------------------
function chkTextBox(obj){
	var valid = true
	if(obj.value==""){
		valid = false;
		obj.focus();
	}
	return valid
}

function chkRadio(obj){
	var valid = false
	for(j=0; j<obj.length; j++){
		if(obj[j].checked==true){
			valid = true;
			break;
		}
	}
	return valid
}

function chkCheckBox(obj){
	var valid = false
	for(i=0; i<obj.length; i++){
		if(obj[i].checked==true){
			valid = true;
			break;
		}
	}
	return valid
}

function chkSelect(obj){
	var valid = true
	if((obj.value=='')||(obj.value==null)||(obj.value==0)){
		valid = false
		obj.focus();
	}
	return valid
}
function chkTextArea(obj){
	if(obj.value=="")
		return false
	else
		return true
}
//----------------------------------------------------------------------
//	validate end
//----------------------------------------------------------------------


//----------------------------------------------------------------------
//	validate login
//----------------------------------------------------------------------
function validate_check(frm){
	if(frm.account.value==""){
		alert("Please enter your ID.")
		frm.account.focus();
		return false
	}
	if(frm.password.value==""){
		alert("Please enter your password.")
		frm.password.focus();
		return false
	}
}

//----------------------------------------------------------------------
//  Delete Check
//----------------------------------------------------------------------
function chkDelete(obj, msg){
	valid = false
	if(obj.length>=1){
		for(var i=0; i<obj.length; i++){
			if(obj[i].checked==true){
				valid = true
				break;
			}
		}
	}else{
		if(obj.checked == true){
			valid = true
		}
	}
	if(valid==true){
		if(window.confirm(msg))
			valid = true
		else
			valid = false
	}else{
		alert("Please click the item to go.");
	}
	return valid
}

function chkConfirm(obj, msg){
	valid = false;
	if(obj.value!=''){
		valid = window.confirm(msg);
	}
	return valid;
}

function selectedAll(btn, obj){
	var tf;
	var txt;
	if(obj==null){
		alert("No data to click!")
	}else{
		if(btn.value=="All"){
			tf = true
			txt = "Cancel"
		}else{
			tf = false
			txt = "All"
		}
		btn.value = txt;
		if(obj.length>=1){
			for(i=0;i<obj.length;i++){
				obj[i].checked = tf;
			}
		}else{
			obj.checked = tf;
		}
	}
}

//選取核取方塊取消鎖定文字方塊
function chkModify(obj,obj2){
	if(obj.length>0){
		for(i=0; i<obj.length; i++){
			if(obj[i].checked==true){
				obj2[i].disabled = false;
			}else{
				obj2[i].disabled = true;
			}
		}
	}else{
		if(obj.checked==true){
			obj2.disabled = false;
		}else{
			obj2.disabled = true;
		}
	}
}

// JScript 檔

// 此方法主要判斷checkbox清單是否被選取
// c 為控制項ID名稱 a則為item(選項)數量
function check_chk(c,a,msg)
{
      var c_id;
      var obj;
      var ck = false;
      for(var i=0;i<a;i++)
      {
           c_id = c+i;
           obj = $get(c_id);
           if(obj.checked == true)
           {
              ck = true;
           }
       }
       if(ck == false)
      {
          obj.focus(); 
          alert(msg);
          window.event.returnValue=false;  
      }
}

// 此方法主要將checkbox清單設定成全選
// c 為控制項ID名稱 a則為item(選項)數量
function chk_all(c,a)
{
      var c_id;
      var obj;
      for(var i=0;i<a;i++)
      {
           c_id = c+i;
           obj = $get(c_id);
           obj.checked = true;
       }
}

// 此方法主要將checkbox清單設定成全選
// c 為控制項ID名稱 a則為item(選項)數量
function chk_all_off(c,a)
{
      var c_id;
      var obj;
      for(var i=0;i<a;i++)
      {
           c_id = c+i;
           obj = $get(c_id);
           obj.checked = false;
       }
}

//確認是不是數字
// c 為控制項ID名稱
function isNumber(c,msg)
{
     var obj;
     obj = $get(c);
     if(obj.length == 0)
     {
       alert("請輸入資料");
      window.event.returnValue=false;   
     }
     for(i = 0; i < obj.length; i++) 
     {
       if(obj.charAt(i) < "0" || obj.charAt(i) > "9")
       { 
          obj.focus(); 
          alert(msg);
          window.event.returnValue=false;   
        }
     }
}

//檢查欄位字數長度
// c 為控制項ID名稱，len為長度，msg為要告知的訊息
function check_length(c,len,msg)
{
     var obj;
     obj = $get(c);
     if(obj.value.length > len)
     {
       obj.focus();
       alert(msg);
       window.event.returnValue=false;   
     }
}

//檢查欄位數值(最大值)
// c 為控制項ID名稱，count為最大數值，msg為要告知的訊息
function check_max_count(c,count,msg)
{
     var obj;
     obj = $get(c);
     if(obj.value > count)
     {
       obj.focus();
       alert(msg);
       window.event.returnValue=false;   
     }
}

//檢查欄位數值(最小值)
// c 為控制項ID名稱，count為最小數值，msg為要告知的訊息
function check_min_count(c,count,msg)
{
     var obj;
     obj = $get(c);
     if(obj.value < count)
     {
       obj.focus();
       alert(msg);
       window.event.returnValue=false;   
     }
}

//檢查欄位是否為空值
// c 為控制項ID名稱，msg為要告知的訊息
function check_value(c,msg)
{
     var obj;
     obj = $get(c);
     if(obj.value == "")
     {
       obj.focus();
       alert(msg);
       window.event.returnValue=false;   
     }
}
