 
var alertColor = "#C8E6FF";
 
 
 
String.prototype.trim = function() {
    a = this.replace(/^\s+/, '');
    return a.replace(/\s+$/, '');
};

 
function superCheck(obj,msgs,types,opts) {
//obj -- any obj (excluding ARRAY)
//types -- an array contains any type which U need to check as
//	     types:  IS_NULL , IS_NUM  , IS_FLOAT , IS_DATE ,IS_HOUR ,IS_MINUTE
//msgs -- an array contains ERROR MSGs corresponding to each type in 'types' array
//opts -- an optional checks
	if (msgs.length != types.length) {
		alert("msg's length & types' length  don't match AT ALL !!!");
		return;
	}

	for (var i = 0; i < types.length; i++) {
	       
	        obj = obj.replace(/\s+$/,'');
               
            switch (types[i]) {
                  case 'IS_NULL':
                          if (obj == '') {
                                  return msgs[i];
                          }
                          break;
                                          
                  case 'IS_CHAR':	
                          if(obj != '') {
                              reChar = new RegExp("[^0-9A-Za-z]");     
    				          if(reChar.test(obj))  return msgs[i];    				          
				          }  
                          break; 
                        
                        
                  case 'IS_NUM':
                          if(obj != ''){
                              re = new RegExp("[^0-9]");
    				          if( (re.test(obj)) )  return msgs[i];
                          } 
                          break; 

                  case 'IS_INTEGER':
                          if(obj != ''){
                                  if (isNaN(obj) || (parseInt(obj) !=  obj)) {
                                          return msgs[i];
                                  }
                          }
                          break;
                  case 'IS_FLOAT':
                          if(obj != ''){
                                  if (isNaN(obj) || (obj < 0)) {
                                          return msgs[i];
                                  }
                          }
                          break;
                  case 'IS_REAL':
                          if(obj != ''){
                                  if (isNaN(obj)) {
                                          return msgs[i];
                                  }
                          }
                          break;    
                  case 'IS_DATE':
                          if(obj != ''){
                          			obj=new Date();
                                  var date = new Date(obj);
                                  if (isNaN(date)) {
                                          if (obj && (obj.indexOf(' ') > 8)) {
                                                  var l = obj.indexOf(' ');
                                                  if (!isNaN(new Date(obj.substring(0,l))) && (parseInt(obj.substring(l+1).replace(':','')) == 2400)) {
                                                          
                                                          break;
                                                  }
                                          }
                                          return msgs[i];
                                  }
                               }
                          break;
                          
                  case 'IS_HOUR':
                          if(obj != ''){
                                  var num = parseInt(obj);
                                  if ((num != obj) || (num < 0) || (num >= 24)) {
                                          return msgs[i];
                                  }
                          }
                          break;
                  case 'IS_MINUTE':
                          if(obj != ''){
                                  var num = parseInt(obj);
                                  if ((num != obj) || (num < 0) || (num >= 60)) {
                                          return msgs[i];
                                  }
                          }
                          break;
                  case 'IS_MONTH':
                          if(obj != ''){
                                  var num = parseInt((obj*10)/10);
                                  if ((num != obj) || (num < 1) || (num > 12)) {
                                          return msgs[i];
                                  }
                          }
                          break;
                  case 'IS_DAY':
                          if(obj != ''){
                                  var num = parseInt((obj*10)/10);
                                  if ((num != obj) || (num < 1) || (num > 31)) {
                                          return msgs[i];
                                  }
                          }
                          break;
                  case 'IS_VALIDATE':
                          if(obj != ''){
                                  if(obj.indexOf(opts,0)!= -1) {
                                          return msgs[i];
                                  }
                          }
                          break;
                          
	       case 'NOT_NULL':
                          if(obj != ''){
				if (obj != '') {
					return msgs[i];
				}
			}
				break;
				
				
			 case 'IS_MAIL':
                if(obj != ''){
			//	reEmail=/^[^@\s\']+@[^@\.\s\']+\.[^@\.\s\']+(\.[^@\.\s\']+(\.[^@\.\s\']+)?)?$/ ; 
				reEmail=/^[^\s]+@[^\s]+\.[^\s]{2,3}$/;
				if(!reEmail.test(obj)) {
					return msgs[i];
				}
			}
				break;
			 case 'IS_LENGTH':
                if(obj != ''){
				    var len = obj;
				    if(len.length<opts) return msgs[i];
				}
				break;
			 case 'IS_LENGTH_IN_RNG':
                if(obj != ''){
				    var len = obj;
				    if(len.length>opts) return msgs[i];
				}
				break;
		}
	}//for
	return "";
}





function okStatus(obj) {
	obj.style.backgroundColor = "#FFFFFF";
}

function promptWarning(obj, warningColor) {
	obj.style.backgroundColor = warningColor;
}




/*
 * 檢驗Checkbox是否有選擇至少1個
 * 格式：
 * OBJ(in)   			: 可為所有text 物件
 * return              : bool
*/
function checkCheckbox(obj){
	iCheck = 0;
	for (var i=0;i<obj.length;i++) {
		if (obj[i].checked)
			iCheck++;
	}

	if(iCheck>0)
		return true;
	return false;

}





/*
 *  檢查SQL String 是否包含不合法字元
 * 		過濾條件		: 單引號, 雙引號 *
 *  OBJ(in)   			: 可為所有text 物件
 *  return              : bool
 *
 */
function VerifySqlString(OBJ) 
{ 
	// define regex 
	var pattern = /\'+/;
	var pattern1 = /\"+/;
	 
	// test for pattern 

	if( pattern.test(OBJ.value) || pattern1.test(OBJ.value) ) 
	{
		alert ('輸入條件中包含不合法字元,請重新輸入!!');
		promptWarning(OBJ, alertColor);
		OBJ.focus();
		return false; 
	}
	else 
	{
		return true; 
	}
}





/*
 *  檢查起迄日期 
 * 		過濾條件		: 結束日期＞起始日期 
 *  OBJ(in)   			: date物件
 *  return              : bool
 *
 */
function checkDateS_E(tdateS,tdateE)
{
    dStartY = parseInt((tdateS.value).substring(0,4),10);
    dStartM = parseInt((tdateS.value).substring(5,7),10);
    dStartD = parseInt((tdateS.value).substring(8,10),10);
    
    
    dEndY = parseInt((tdateE.value).substring(0,4),10);  
    dEndM = parseInt((tdateE.value).substring(5,7),10);
    dEndD = parseInt((tdateE.value).substring(8,10),10); 
     
        
	if ((new Date(dEndY,dEndM,dEndD)) - (new Date(dStartY,dStartM,dStartD)) <0)
	{
		alert ("結束日期必須大於起始日期");
		promptWarning(tdateS, alertColor);
		promptWarning(tdateE, alertColor);
		return (false);
	}
	return true;
}




/*
 *  檢查日期是否小於今日 
 *  OBJ(in)   			: date物件
 *  格式                : 1999-01-02
 *  return              : bool
 *
 */
function checkDate(tdate)
{
    dStartY = parseInt((tdate.value).substring(0,4),10);
    dStartM = parseInt((tdate.value).substring(5,7),10);
    dStartD = parseInt((tdate.value).substring(8,10),10);
    
    dToday  = new Date();
        
	if ( dToday - (new Date(dStartY,dStartM-1,dStartD)) <=0 )
		return false;
    else
	   return true;
}


function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function setCheckedValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}

