﻿//<!--******************************************************************************************-->
//
//  警告: 本電腦程式著作受著作權法及國際公約之保護。
//  未經授權擅自複製或散佈本電腦程式著作之全部或部分
//  ，將導致嚴厲的民事或刑事處份，且將被依法提起最大
//  範圍的追訴。
//
//  CopyRight (C) Galaxy Software Service
//  Version: 2.0.500.4
//<!--******************************************************************************************-->

function __NBaseValidatorOnTextChanged(event){
	
	var objElement;
	//判斷IE或FireFox
	if (event.target)
	{
		if (event.currentTarget && (event.currentTarget != event.target))
		{
			objElement= event.currentTarget;
		}else{
			objElement = event.target;
		} 
	}else{
		objElement = event.srcElement;
	}
	
	//var strEventTarget=event.srcElement.name.replace(/:/g,"$");
	var strEventTarget=objElement.name.replace(/:/g,"$");
	
	if (typeof(Page_ValidationVer) == "undefined"){
		__doPostBack(strEventTarget,"");
	}
	if(typeof(Page_Validators)!= "undefined"){
		for(var i=0;i<Page_Validators.length;i++){
			if(Page_Validators[i].controltovalidate==objElement.id){
				if(!Page_Validators[i].isvalid) return;
			}
		}
	}

	__doPostBack(strEventTarget,"");
}

function __NBaseValidateTextAreaMaxLength(val){
	var objCtl = document.getElementById(val.controltovalidate);
	if(objCtl==null){
		return true;
	}
	else{

		//var intMaxLength = val.MaxLength;
		var intMaxLength = val.getAttribute("MaxLength");
		if(intMaxLength==null)intMaxLength=0;
		var strSrcValue = objCtl.value;
		var countString = intMaxLength - strSrcValue.length;
		if(intMaxLength==0) return true;
//For the reason that can't get counts of selection word , this method will result a error
//		if(event!=null){
//			if(event.type == "paste"){
//				strSrcValue += window.clipboardData.getData("Text")
//				countString = intMaxLength - strSrcValue.length;
//			}
//		}
		if (countString < 0) {
			objCtl.value = strSrcValue.substring( 0, intMaxLength );
			return true;}
		else{
			return true;}
	}
}
function  __NBaseValidateCurrency(source, arguments){
	try {

		//處裡Firefox取Attribute方式不同
		var str_groupchar="";
		var str_digits="";
		var str_decimalchar="";
		var str_digits="";
		var str_integerlength="";
		
		if (document.getElementById&&!document.all){
			str_groupchar=source.getAttribute("groupchar");
			str_digits=source.getAttribute("digits");
			str_decimalchar=source.getAttribute("decimalchar");
			str_digits=source.getAttribute("digits");
			str_integerlength=source.getAttribute("integerlength");
		}
		else{
			str_groupchar=source.groupchar;
			str_digits=source.digits;
			str_decimalchar=source.decimalchar;
			str_digits=source.digits;
			str_integerlength=source.integerlength;
		}
			var objControl=__NBaseGetValidateControlRecursive(document.getElementById(source.controltovalidate));
			objControl.value = __NBaseRemoveCommas(objControl.value);
			objControl.value = __NBaseRemovePrefixZero(objControl.value);
			var num, cleanInput, m, exp;
			exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + str_groupchar + ")*)(\\d+)"
				+ ((str_digits > 0) ? "(\\" + str_decimalchar + "(\\d{1," + str_digits + "}))?" : "")
				+ "\\s*$");

			m = objControl.value.match(exp);				
			if (m == null){
				arguments.IsValid = false;
				return;}

			//FireFox m[1]是undefined
			if(!m[1])m[1]="";				
			var intermed = m[2] + m[5] ;
			cleanInput = m[1] + intermed.replace(new RegExp("(\\" + str_groupchar + ")", "g"), "") + ((str_digits > 0) ? "." + m[7] : 0);
			num = parseFloat(cleanInput);
			var blnIsValid = (isNaN(num) ? false : true);				
			if(blnIsValid){
				__NBaseFormatCurrency(objControl);

				//20050816 Modify
				if(str_integerlength!=0){
					var intMinus = (cleanInput.indexOf("-")>-1) ? 1 : 0;
					if(cleanInput.indexOf(".")>(parseInt(str_integerlength)+intMinus)) blnIsValid = false;
					if(cleanInput.indexOf(".")==-1)blnIsValid = (cleanInput.length-1>str_integerlength) ? false : true;
				}
				//20050816 Modify
			}
			arguments.IsValid = blnIsValid;            
		}
		catch(e) {
			arguments.IsValid = false;
		}
}

function __NBaseFormatCurrency(vobjCtl){
	var exp  = new RegExp("(-?[0-9]+)([0-9]{3})"); 
	var aryValue = vobjCtl.value.split(".");
	while(exp.test(aryValue[0])){
		//replace original string with first group match, 
		//a comma, then second group match
		aryValue[0] = aryValue[0].replace(exp, '$1,$2');
	}
	if(aryValue.length==2){
		if(aryValue[1].length!=0) vobjCtl.value = aryValue[0] + "." + aryValue[1];
	}
	else
	{
	vobjCtl.value = aryValue[0];
	}
	
}

function __NBaseRemoveCommas(vstrValue,vobjCtl){
	var objRegExp = /,/g; //search for commas globally
	var strValue=vstrValue.replace(objRegExp,'');
	//replace all matches with empty strings
	return strValue.toString();
}

function __NBaseRemovePrefixZero(vstrValue){

	var strValue=vstrValue;
	while(strValue.indexOf("0")==0)
			strValue = strValue.replace("0","");
	if(strValue.indexOf(".")==0 || strValue.length==0)strValue="0"+strValue;
	return strValue.toString();
}



//2006/02/13 Dennis Mao Created
function __NBaseValidateFullText(event,intLength){
	
	if(intLength==0){
		
		if(window.event.keyCode>47 && window.event.keyCode<58 ){
				window.event.keyCode = window.event.keyCode + 65248;
		}
	}
	else if(event.srcElement.value.length>intLength-1){
		return;
	}
	else{
	
		var range=document.selection.createRange();
		var intSelectLength = __NBaseFullTextLength(range.text);
		var intInputLength = __NBaseFullTextLength(event.srcElement.value);
		if(window.event.keyCode>47 && window.event.keyCode<58 ){
				if(intInputLength-intSelectLength+2>intLength){
					window.event.keyCode="";
					return;
				}
		}
		else{
				if(intInputLength-intSelectLength+1>intLength){
					window.event.keyCode="";
					return;
				}		
		}
	
		if(window.event.keyCode>47 && window.event.keyCode<58 ){
				window.event.keyCode = window.event.keyCode + 65248;
		}
	}
}

//while EnableChkFullTextLen=true and EnabledFullText=false
function __NBaseChkFullTextLen(event,intLength){
	
	if(event.srcElement.value.length>intLength-1){
		return;
	}
	else{
	
		var range=document.selection.createRange();
		var intSelectLength = __NBaseFullTextLength(range.text);
		var intInputLength = __NBaseFullTextLength(event.srcElement.value);
		if(window.event.keyCode>47 && window.event.keyCode<58 && event.srcElement.getAttribute("EnableFullText")!=null ){
				if(intInputLength-intSelectLength+2>intLength){
					window.event.keyCode="";
					return;
				}
		}
		else{
				if(intInputLength-intSelectLength+1>intLength){
					window.event.keyCode="";
					return;
				}		
		}
	}
}

//2006/02/13 Dennis Mao Created
function __NBaseFullTextLength(strInputValue){
	
	var countLength=0;
	for(i=0;i<strInputValue.length;i++){

		if(strInputValue.charCodeAt(i) < 33 || strInputValue.charCodeAt(i) > 126 ){
			countLength += 2;
		}
		else{
			countLength += 1;
		}
	}
	return countLength;
}


//2006/02/13 Dennis Mao Created
function __NBaseValidateFullTextLength(event,intLength){

	if(intLength==0)return;

	var countLength=0;
	var strInputValue = event.srcElement.value;
	var strOutputValue = "";

	for(i=0;i<strInputValue.length;i++){
		
		if(strInputValue.charCodeAt(i) < 33 || strInputValue.charCodeAt(i) > 126 ){
			countLength += 2;
		}
		else{
			countLength+=1;
		}
		if(countLength>intLength){
			event.srcElement.value = strOutputValue;
			return;
		}
		else{
			if(strInputValue.charCodeAt(i)>47 && strInputValue.charCodeAt(i)<58 ){
				strOutputValue += __NBaseConvertFullText(strInputValue.substr(i,1));
				countLength+=1;
			}
			else{
				strOutputValue += strInputValue.substr(i,1);		
			}
		}
	}
}


//2006/02/14 Dennis Mao Created
function __NBaseConvertFullText(strText){
	
		var i;
		var strReturnText="";
		
		for(i=0;i<strText.length;i++){
			
			switch(strText.charCodeAt(i))
			{
			case 48 :
				strReturnText += "０";break;
			case 49 :
				strReturnText += "１";break;
			case 50 :
				strReturnText += "２";break;
			case 51 :
				strReturnText += "３";break;
			case 52 :
				strReturnText += "４";break;
			case 53 :
				strReturnText += "５";break;
			case 54 :
				strReturnText += "６";break;
			case 55 :
				strReturnText += "７";break;
			case 56 :
				strReturnText += "８";break;
			case 57 :
				strReturnText += "９";break;
			default:
				strReturnText += strText.substr(i,1);break;
			}
		}
		
		return strReturnText;
}

function __NBaseValidateNonTokenLength(event,intLength,intNonTokenLength){
	
  	if(intLength==0)return;

	var countLength=0;
	var strInputValue = event.srcElement.value;
	var strOutputValue = "";

	for(i=0;i<strInputValue.length;i++){
		
		if(strInputValue.charCodeAt(i) < 33 || strInputValue.charCodeAt(i) > 126 ){
			countLength += intNonTokenLength;
		}
		else{
			countLength+=1;
		}
		if(countLength>intLength){
			event.srcElement.value = strOutputValue;
			return;
		}
		else{
				strOutputValue += strInputValue.substr(i,1);		
		}
	}
}
try
{
    if(Sys && Sys.Application)
    {
        Sys.Application.notifyScriptLoaded();
    } 
}catch(e){}



//onblur事件--Alice_Lee
/***************************************
  type：
            String=0
            Double=1
            Integer=2
            Currency=3
            Date=4
            YearMonth=5
            Time_hhmm=6
 parseInt(strValue,10)為十進位，預設不加，為8進位
***************************************/
function TextBox_OnBlur(ID,type,Error)
{	  
    var strValue= $('#' + ID).val();
    if (strValue !='')
    {
        if (type==2) //Integer
        {        
            if (strValue!=parseInt(strValue,10))       
             {
                alert(strValue + Error);
                $('#' + ID)[0].value='';
            }
        }
        else if (type==1) //Double
        {
            if (strValue!=parseFloat(strValue))       
            {
                alert(strValue + Error);
                $('#' + ID)[0].value='';
            }
        }
        else if (type==3) //Currency
        {
            var objRegExp = /,/g; //search for commas globally
            strValue=strValue.replace(objRegExp,'');           
            if (strValue!=parseInt(strValue,10))    
            {
                alert(strValue + Error);
                $('#' + ID)[0].value='';
            }     
        }
        else if (type==0) //String
        {
        
        }  
	    else if (type==4) //Date
        {
             try
            {      
                __NBaseConvertDateString(strValue,'')
            }
            catch(e)
            {
                alert(strValue + e);
                $('#' + ID)[0].value='';
            }
        }  
         else if (type==5) //YearMonth
        {
             try
            { 
                var arrayValue=strValue.split("/");           
                if (arrayValue.length==2)
                    __NBaseConvertDateString(arrayValue[0]+"/"+arrayValue[1]+"/01",'');
                else
                {
                alert(strValue + Error);
                    $('#' + ID)[0].value='';
                }
            }
            catch(e)
            {
                alert(strValue + e);
                $('#' + ID)[0].value='';
            }
        }  
        else if (type==6) //Time_hhmm
        { 
            if (strValue!=parseInt(strValue,10))    
            {
                alert(strValue + Error);
                $('#' + ID)[0].value='';
            }               
            else 
            {
                if (strValue.length!=4)
                {
                    alert(strValue + Error);
                    $('#' + ID)[0].value='';
                }    
                else 
                {                
                    if (strValue.substring(0,2)>23)
                    {
                        alert(strValue + Error);
                        $('#' + ID)[0].value='';
                    }   
                    else if (strValue.substring(2)>59)
                    {
                        alert(strValue + Error);
                        $('#' + ID)[0].value='';
                    }   
                }
            }
        }
    }    
}
