
	function gLtrim(str)
    {
	    str=str+"";
    	for(var i=0;(i<str.length)&&(str.charAt(i)==" ");i++);
	    return str.substring(i,str.length);
    }

    function gRtrim(str)
    {
	    str=str+"";
    	for(var i=str.length-1;(i>=0)&&(str.charAt(i)==" ");i--);
	    return str.substring(0,i+1);
    }

    function gTrim(str)
    {
	    return gRtrim(gLtrim(str));
    }

	function	MaskDQ(str)
	{
		var		t = "";
		for (var i = 0; i < str.length; i++){
			var	p = str.substring(i, i+1);
			if ( p == "\"")		t = t + "'";
			else	t = t + p;
		}
		return	t;
	}

	function	isInt(val)
	{
        val = gTrim(val);
		for (i=0;i<val.length;i++){
			p = val.charAt(i);
			if (p<'0'||p>'9')
				return	false;
		}
		return	true;
	}

	function	isFloat(val)
	{
		var		haspoint = false;	
		
        val = gTrim(val);
        
        var p = val.charAt(0);
        if ( p < '0' || p > '9' )
        	return	false;

		for (i = 1; i < val.length; i++){

			p = val.charAt(i);
			if (p == '.'){
				if (haspoint == false)
					haspoint = true;
				else
					return	false;
			}
			else if (p < '0' || p > '9')
				return	false;
				
		}
		return	true;
	}

	function	isValidateDateFormat(str)
	{
		str = gTrim(str);
		var	p;
		
		for (var i=0; i<4; i++){
			p = str.charAt(i);
			if (p<'0'||p>'9')
				return	false;
		}
		
		p = str.charAt(4);
		if (p != '/')		return	false;
		
		p = str.charAt(5);
		if (p<'0'||p>'1')	return	false;
		p = str.charAt(6);
		if (p<'0'||p>'9')	return	false;
		
		p = str.charAt(7);
		if (p != '/')		return	false;

		p = str.charAt(8);
		if (p<'0'||p>'3')	return	false;
		p = str.charAt(9);
		if (p<'0'||p>'9')	return	false;

		return	true;			
	}

	function gDaysOfMonth(mon,year)
	{
		if ((mon==4)||(mon==6)||(mon==9)||(mon==11)) return 30;
		else if (mon!=2) return 31;
		if ((year % 4 == 0)&&(year % 100 !=0)||(year % 400==0)) return 29;
		else return 28;
	}
	
	function	isValidateDate(year, month, day)
	{
		if (parseInt(day) <= gDaysOfMonth(parseInt(month), parseInt(year)) )
			return	true;
		else
			return	false;
	}
	

    function    getFormattedToday()
    {
        var     dd = new Date();

        var     y = dd.getYear();
        if (y < 100)    y += 1900;
        var     m = dd.getMonth()+1;
        var     d = dd.getDate();
        
        var     s = y+"-";
        if (m < 10) m = "0" + m;
        s = s + m + "-";
        if (d < 10) d = "0" + d;
        s = s + d;
        
        return  s;    
        
    }
    
    /*remove all options from a ddlb
    @param obj: name of ddlb*/
    function resetDdlb(obj){
    	var length = obj.options.length;
        /*for (var i = 0; i < length; i++)
           obj.options.remove(0);*/
        while (length--)
        {
          obj.options[length] = null;
        }        
        var newElem = document.createElement("option");
        newElem.text = "??";
        newElem.value = "";
        obj.options.add(newElem);
    }    


    function gFormatNumberText(fval,npoint) {
        
    	var x=Math.pow(10,npoint);
	    var s=(Math.round(fval*x)/x+"");
    	var p=s.indexOf("."), n;
	    if(p>=0) n=npoint-s.length+p+1;
        else {
        	if(npoint>0){
			    s+=".";
			    n=npoint;
		    }else{
		    	n=0;
		 	}
	    }
	    for(var i=0;i<n;i++) s+="0";
	    return s;
    }
    
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^" + specialChars + "\]";
var quotedString="(\"[^\"]*\")";
var ipDomainPat=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedString + ")";
var atomPat=new RegExp("^" + atom + "$");
var localPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var complexPat=/^(.+)<(.+)>$/;
var commentPat=/(.*)\((.*)\)(.*)$/;

function simpleEmailCheck (emailStr) {
    if(emailStr == "") return false;
    var matchArray=emailStr.match(emailPat);
    if (matchArray==null) return false;
    var user=matchArray[1];
    var domain=matchArray[2];
    for (i=0; i<user.length; i++) {
        if (user.charCodeAt(i)>127) return false;
    }
    for (i=0; i<domain.length; i++) {
        if (domain.charCodeAt(i)>127) return false;
    }
    if( !checkUser(user)) return false;
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) return false;
        }
        return true;
    }
    var domArr=domain.split(".");
    var len=domArr.length;
    for (i=0;i<len;i++) {
        if( !checkDomain(domArr[i]) ) return false;
    }
    return true;
}
function checkDomain(domain) {
    var validDomain = true;
    var domainArray = domain.match(commentPat);
    if( domainArray == null ) {
        if( domain.match(atomPat)==-1) validDomain = false;
    } else {
        for(var i=1; i<domainArray.length; i++) {
            if( domainArray[i] != "" && !checkDomain(domainArray[i]) ) validDomain = false;
        }
    }
    return validDomain;
}
function checkUser(user){
    var validUser = true;
    var userArray = user.match(commentPat);
    if( userArray == null ){
        if (user.match(localPat)==null)  validUser = false;
    }
    else {
        for(var i=1; i<userArray.length; i++) {
            if( userArray[i] != "" && !checkUser(userArray[i]) ) validUser = false;
        }
    }
    return validUser;
}
function complexEmailCheck(emailStr){
    if(emailStr == "") return false;
    if(emailStr.indexOf("@")==-1) return false;
    var matchArray=emailStr.match(complexPat);
    if (matchArray==null) {
        if( simpleEmailCheck(emailStr) ) return true;
        else return false;
    }
    var phrase=matchArray[1];
    var routeAddr=matchArray[2];
    if( !simpleEmailCheck(routeAddr) ) return false;
    else return true;
}    

    /*
    ==================================================================
    ??????????
    ==================================================================
    */
    
	var upload_img_maxwidth = 800;
	var upload_img_maxheight = 600;
	
    var picSuffixes=new Array("jpg","gif","bmp","tif","swf");
    var videoSuffixes=new Array("avi","asf","wmv","mpeg","mpg","rm","rmvb");
    var mediaSuffixes=new Array("mp3","wma");
    
	var preview_img_width = 400;
	var preview_img_height = 280;
	var preview_error_nobrowser = "?????????!";
	
	/**
	 * ???????????????
	 */
    function isPic(filename){
      var pos=filename.lastIndexOf(".");
      if(containIgnoreCase(picSuffixes,filename.substring(pos+1).toLowerCase()))
      	return true;
      return false;      
    }
    function isVideo(filename){
      var pos=filename.lastIndexOf(".");
      if(containIgnoreCase(videoSuffixes,filename.substring(pos+1).toLowerCase()))
      	return true;
      return false; 
    }
    function isMedia(filename) {
      var pos=filename.lastIndexOf(".");
      if(containIgnoreCase(mediaSuffixes,filename.substring(pos+1).toLowerCase()))
      	return true;
      return false; 
    }
    
    function isAvi(filename) {
    	var fileSuffixName = filename.substring( filename.lastIndexOf(".")+1 );
    	
    	if (fileSuffixName.toLowerCase() == "avi")
    		return true;

    	return false;
    }
    function isWmv(filename) {
    	
		var fileSuffixName = filename.substring( filename.lastIndexOf(".")+1 );
		
    	if (fileSuffixName.toLowerCase() == "wmv" || fileSuffixName.toLowerCase() == "asf" )
    		return true;

    	return false;
    }
    function isMpeg(filename) {
    	var fileSuffixName = filename.substring( filename.lastIndexOf(".")+1 );
    	
    	if (fileSuffixName.toLowerCase() == "mpeg" || fileSuffixName.toLowerCase() == "mpg")
    		return true;

    	return false;
    }
    function isRm(filename) {
    	var fileSuffixName = filename.substring( filename.lastIndexOf(".")+1 );
    	
    	if (fileSuffixName.toLowerCase() == "rm" || fileSuffixName.toLowerCase() == "rmvb")
    		return true;

    	return false;
    }

	/**
	 * ??/????
	 */
	function doPreviewPicture(eleName,file) {
		document.all[eleName].innerHTML="&nbsp;&nbsp;" + getStandardImageTag(file);
	}
	function doPreviewVideo(eleName,file) {
		var tag;

		if (isWmv(file))
			tag = getStandardWmvTag(file);
		else if (isRm(file))
			tag = getStandardRmTag(file);
		else if (isMpeg(file))
			tag = getStandardRmTag(file);
		else if (isAvi(file))
			tag = getStandardWmvTag(file);

		document.all[eleName].innerHTML="&nbsp;&nbsp;" + tag;
	}
	function doPreviewMedia(eleName,file) {
		document.all[eleName].innerHTML="&nbsp;&nbsp;" + getStandardMediaTag(file);
	}
	function doPreviewNone(eleName) {
		document.all[eleName].innerHTML="&nbsp;&nbsp;" + preview_error_nobrowser;
	}
	
	/**
	 * ?????tag
	 */
	function getStandardImageTag(src) {
		return "<a href=javascript:popupShow('"+src+"')><img src='" + src + "' width=" + preview_img_width + " height=" + preview_img_height + " border='0'></a>";
	}
	function getStandardWmvTag(src) {
		return "<EMBED src='"+src+"' width=" + preview_img_width + " height=" + preview_img_height + "></EMBED>"
	}
	function getStandardRmTag(src) {
		return "<OBJECT classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA width=" + preview_img_width + " height=" + preview_img_height + " id=video1 width=305 VIEWASTEXT>"
				+"<param name=_ExtentX value=5503>"
				+"<param name=_ExtentY value=1588>"
				+"<param name=AUTOSTART value=-1>"
				+"<param name=SHUFFLE value=0>"
				+"<param name=PREFETCH value=0>"
				+"<param name=NOLABELS value=0>"
				+"<param name=SRC value='" + src + "'>"
				+"<param name=CONTROLS value=Imagewindow,StatusBar,ControlPanel>"
				+"<param name=CONSOLE value=RAPLAYER>"
				+"<param name=LOOP value=0>"
				+"<param name=NUMLOOP value=0>"
				+"<param name=CENTER value=0>"
				+"<param name=MAINTAINASPECT value=0>"
				+"<param name=BACKGROUNDCOLOR value=#000000></OBJECT>"
	}
	function getStandardMediaTag(src) {
		return "<object classid=clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95 width=" + preview_img_width + " height=" + preview_img_height + ">"
				+"<param name=showstatusbar value=1>"
				+"<param name=filename value='" + src + "'>"
				+"<embed src='" + src + "'>"
				+"</embed></object>";
	}
	
	function getImageTag(src,width,height) {
		return "<img src='" + src + "' width=" + width + " height=" + height + ">";
	}
	function getWmvTag(src,width,height) {
		return "<EMBED src='"+src+"' width=" + width + " height=" + height + "></EMBED>"
	}
	function getRmTag(src,width,height) {
		return "<OBJECT classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA width=" + width + " height=" + height + " id=video1 width=305 VIEWASTEXT>"
				+"<param name=_ExtentX value=5503>"
				+"<param name=_ExtentY value=1588>"
				+"<param name=AUTOSTART value=-1>"
				+"<param name=SHUFFLE value=0>"
				+"<param name=PREFETCH value=0>"
				+"<param name=NOLABELS value=0>"
				+"<param name=SRC value='" + src + "'>"
				+"<param name=CONTROLS value=Imagewindow,StatusBar,ControlPanel>"
				+"<param name=CONSOLE value=RAPLAYER>"
				+"<param name=LOOP value=0>"
				+"<param name=NUMLOOP value=0>"
				+"<param name=CENTER value=0>"
				+"<param name=MAINTAINASPECT value=0>"
				+"<param name=BACKGROUNDCOLOR value=#000000></OBJECT>"
	}

    /*
    ==================================================================
    ??
    ==================================================================
    */
    
    /*????array????????caseInsensitive*/
    function containIgnoreCase(array,element){
      if(array==null)
        return false;
      for(i=0;i<array.length;i++){
        if(array[i].toLowerCase()==element.toLowerCase())
        	return true;
      }
      return false;
    }
    /*????array????????caseSensitive*/
    function contain(array,element){
      if(array==null)
        return false;
      for(i=0;i<array.length;i++){
        if(array[i]==element)
        	return true;
      }
      return false;
    }
    
    
/**
* author:robert tao
* ???????
*/
function isArray(obj) {
  try{
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
  }catch(e){
    return false;
  }
}

/**
*
* ???
* ******Get Selected Radio Button Or Check Box
* Robert Tao ????
* 1 function getSelectedRadio(buttonGroup)
* returns the array number of the selected radio button or -1 if no button is selected
*
* 2 function getSelectedRadioValue(buttonGroup)
* returns the value of the selected radio button or "" if no button is selected
*
* 3 function getSelectedCheckbox(buttonGroup)
* Go through all the check boxes. return an array of all the ones
* that are selected (their position numbers). if no boxes were checked,
* returned array will be empty (length will be zero)
*
* 4 function getSelectedCheckboxValue(buttonGroup)
* return an array of values selected in the check box group. if no boxes
* were checked, returned array will be empty (length will be zero)
*/

function getSelectedRadio(buttonGroup) {
// returns the array number of the selected radio button or -1 if no button is selected
  if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function

function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
} // Ends the "getSelectedCheckbox" function

function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
} // Ends the "getSelectedCheckBoxValue" function

