//----------------enhance Array obj------------
Array.prototype.remove=function(dx){
    if(isNaN(dx)||dx>this.length){return false;}
    for(var i=0,n=0;i<this.length;i++){
        if(this[i]!=this[dx]){
            this[n++]=this[i]
        }
    }
    this.length-=1
}

Array.prototype.insert=function(obj, dx){
	if(isNaN(dx) || dx < 0 || dx>this.length){
		this[this.length] = obj;
		return;
	}
	if(this.length == 0){
		this[0] = obj;
	}
	else{
		this[this.length] = null;
		for(var n=this.length-1;n>=dx;n--){
			if(n > dx){
				this[n] = this[n-1];
			}
			else if(n == dx){
				this[n] = obj;
			}
		}
	}
}
	//----------show/hide selects
	function hideSelects(visibility){
		selects = document.getElementsByTagName('select');
		for(var n = 0; n < selects.length; n++) {
			selects[n].style.visibility = visibility;
		}
	}

//----------------alpha control----------------
			var __menuItem = null;
			var __processing = false;
			function alphaCtrl(obj, isHidden){
				if(__processing) return;
				__menuItem = obj;
				
				__processing = true;
				
				if(isHidden)
					obj.filters.alpha.opacity = 0;
				else
					alphaCtrlShow();
					
				__processing = false;
			}
			
			function alphaCtrlShow(){
				if(__menuItem == null) return;
				
				if(__menuItem.filters.alpha.opacity > 10){
					__menuItem.filters.alpha.opacity = 100;
					return;
				}
				else{
					__menuItem.filters.alpha.opacity += 10;
				}
				
				setTimeout("alphaCtrlShow()", 100);
			}
			//----------------alpha control-----------------
			
			//----------------timestamp---------------------
			function getTimestamp(){
				var curDate = new Date();
				return ("" + 
					compensate(curDate.getMonth())+ 
					compensate(curDate.getDate())+ 
					compensate(curDate.getHours())+ 
					compensate(curDate.getMinutes())+ 
					compensate(curDate.getSeconds()));
			}
			
			function compensate(src){
				if((""+src).length == 1) return "0" + src;
				else return src;
			}
			/**
			 * convert the .png image to transparent
			 */
			function fixPNG(myImage){
				var arVersion = navigator.appVersion.split("MSIE");
				var version = parseFloat(arVersion[1]);
				if ((version >= 5.5) && (version < 7) && (document.body.filters)){
					var imgID = (myImage.id) ? "id='" + myImage.id + "' " : "";
					var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : "";
					var imgTitle = (myImage.title) ? "title='" + myImage.title  + "' " : "title='" + myImage.alt + "' ";
					var imgStyle = "display:inline-block;" + myImage.style.cssText;
					var strNewHTML = "<span " + imgID + imgClass + imgTitle
					+ " style=\"" + "width:" + myImage.width
					+ "px; height:" + myImage.height
					+ "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					+ "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>";
					myImage.outerHTML = strNewHTML;
				}
			}
			
			function isIE(){
				if (navigator.appName!="Microsoft Internet Explorer") {return false}
				return true
			}
			
			function correctPNG(){
				if(!isIE()) return;
				for(var i=0; i<document.images.length; i++){
					var img = document.images[i]
					var LW=img.width
					var LH=img.height
					var imgName = img.src.toUpperCase()
					if (imgName.substring(imgName.length-3, imgName.length) == "PNG"){
						alert(img.src);
						img.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+img.src+", sizingmethod=scale);"
						img.src="imgs/blank.gif";//transparent.gif?1px*1px???gif??
						img.width=LW
						img.height=LH
					}
				}
			}
			//----------------timestamp---------------------
			
			/*
			 * trim a String , etc. "  abc bc " -> "abc bc"
			 */
			function trim(src){
				if(src == null) return null;
				
				var result = src;
				
				while(result.length > 0 
					&& (result.substring(0,1) == " " 
					||result.substring(result.length -1 , result.length)==" ")){
					
					if(result.substring(0,1) == " ")
						result = result.substring(1,result.length);
					if(result.substring(result.length -1 , result.length)==" ")
						result = result.substring(0,result.length-1);
				}
				
				return result;
			}
			
			
			//----------------------------------check data-----------------------------------
			/**
			 * check if the input value is an integer
			 */
			function checkInteger(src){
				if(src == null) return false;
				
				for(var n=0;n<src.length;n++){
					if(isNaN(src.substring(n,n+1))){
						return false;
					}
				}
				return true;
			}
			
			//--------------text startWith method
			
			function startWith(src, subStr){
				if(src == null || subStr == null || src.length < subStr.length
					|| src.substring(0, subStr.length) != subStr)
					return false;
					
				return true;
			}
			
			//---------------
			
			//--------------------check format-----------------
			function isEmailFormat(src){
				if(src == null || src.length < 3)
					return false;
					
				if(src.indexOf("@") <= 0 || src.indexOf("@") == (src.length-1) || src.indexOf(".") == (src.length-1))
					return false;
					
				if(src.indexOf("@") != src.lastIndexOf("@"))
					return false;
				
				if(src.substring(src.indexOf("@") + 1).indexOf(".") <= 0)
					return false;
				
				return true;
			}
			
			//--------------------check format-----------------
			
			/**
			 * convert number to char
			 */
			function convertNumberToChar(number){
				if(number.length>25)
					return number;
					
				if(number == 0)
					return "A";
				else if(number == 1)
					return "B";
				else if(number == 2)
					return "C";
				else if(number == 3)
					return "D";
				else if(number == 4)
					return "E";
				else if(number == 5)
					return "F";
				else if(number == 6)
					return "G";
				else if(number == 7)
					return "H";
				else if(number == 8)
					return "I";
				else if(number == 9)
					return "J";
				else if(number == 10)
					return "K";
				else if(number == 11)
					return "L";
				else if(number == 12)
					return "M";
				else if(number == 13)
					return "N";
				else if(number == 14)
					return "O";
				else if(number == 15)
					return "P";
				else if(number == 16)
					return "Q";
				else if(number == 17)
					return "R";
				else if(number == 18)
					return "S";
				else if(number == 19)
					return "T";
				else if(number == 20)
					return "U";
				else if(number == 21)
					return "V";
				else if(number == 22)
					return "W";
				else if(number == 23)
					return "X";
				else if(number == 24)
					return "Y";
				else if(number == 25)
					return "Z";
			}
			
			/**
			 * make the element can only input integer
			 */
			function integerOnly(obj, evt){
				var useCharCode = true;
				if(evt == null){
					useCharCode = false;
					evt = window.event ? window.event : null;
				}
				
				var cCode = null;
				if(useCharCode) cCode = evt.charCode;
				var kCode = evt.keyCode;
				
				preventKey(evt, cCode, kCode);
				
				if(cCode != null){
					if(cCode == 46)
						evt.preventDefault? evt.preventDefault() : evt.returnValue = false; 
				}
				else{
					if(kCode == 46)
						evt.preventDefault? evt.preventDefault() : evt.returnValue = false; 
				}
				
			}
			/**
			 * make the element can only input the float
			 */
			function floatOnly(obj, evt){
				var useCharCode = true;
				if(evt == null){
					useCharCode = false;
					evt = window.event ? window.event : null;
				}
				
				var cCode = null;
				if(useCharCode) cCode = evt.charCode;
				var kCode = evt.keyCode;
				
				preventKey(evt, cCode, kCode);
				
				if(cCode != null){
					if(cCode == 46 && obj.value.indexOf(".")>=0)
						evt.preventDefault? evt.preventDefault() : evt.returnValue = false; 
				}
				else{
					if(kCode == 46 && obj.value.indexOf(".")>=0)
						evt.preventDefault? evt.preventDefault() : evt.returnValue = false; 
				}
			}
			
			function preventKey(evt, cCode, kCode){
				var prevent = true;
				if(cCode != null){
					if(kCode == 8 || kCode == 46 || kCode == 37 || kCode == 39 || kCode == 35 || kCode == 36){
						prevent = false;
					}
					
					if(prevent){
						if(cCode == 46 || (cCode <= 57 && cCode >= 48))
							prevent = false;
					}
				}
				else{
					if(kCode == 46 || (kCode <= 57 && kCode >= 48)){
						prevent = false;
					}
				}
				
				if(prevent){
					evt.preventDefault? evt.preventDefault() : evt.returnValue = false; 
				}
				
				return prevent;
			}
			
			
			//??????
			function highlightElement(obj){
				//for ie
				obj.style.filter="Alpha(Opacity=30)";
				//for firefox
				obj.style.MozOpacity="0.30";
				obj.style.color="blue";
			}
			//????????
			function dehighlightElement(obj){
				//for ie
				obj.style.filter="Alpha(Opacity=100)";
				//for firefox
				obj.style.MozOpacity="1";
				obj.style.color="black";
			}
			
			//-----------------------------------------------------
			/**????**/
			function addEvent(obj, evType, fn){
				if (obj.addEventListener){
					obj.addEventListener(evType, fn, true);
					return true;
				} else if (obj.attachEvent){
					
					var r = obj.attachEvent("on"+evType, fn);
					return r;
				} else {
					return false;
				}
			}
			
			function getWindowCenterPosition(){
				var bodyHeight = document.body.clientHeight;
				var bodyWidth = document.body.clientWidth;
				
				return {x: bodyWidth/2, y: bodyHeight/2};
			}
			
			/**
			 * Get the position of one element
			 */
			function getObjPosition(obj){
				var pos = new Array();
				
				pos[0] = obj.offsetLeft;
				pos[1] = obj.offsetTop;
				
				if (obj.offsetParent) {
					
					while (obj = obj.offsetParent) {
						pos[0] += obj.offsetLeft;
						pos[1] += obj.offsetTop;
					}
				}
				
				return {x: pos[0], y: pos[1]};
			}
			
			//????????????????????????????????
			function getRelativePosition(parentObj, obj){
				
				if(parentObj == null || obj == null)
					return {x: 0, y: 0};
				
				var position  = getObjPosition(parentObj);
				var x = position.x;
				var y = position.y + parentObj.offsetHeight;
				
				//alert(x + " & " + obj.offsetWidth + " & " + document.body.scrollTop + " & " + document.body.clientHeight);
				if((x + obj.offsetWidth) > (document.body.scrollLeft + document.body.clientWidth))
					x = document.body.scrollLeft + document.body.clientWidth - obj.offsetWidth - 20;
				
				if((y + obj.offsetHeight) > (document.body.scrollTop + document.body.clientHeight))
					y = position.y - obj.offsetHeight;
				
				if(y < document.body.scrollTop)
					y = 20 + document.body.scrollTop;

				return {x: x, y: y};
			}
			
			function isEventOutOfObject(evt, obj){
				if(evt == null || obj == null)
					return false;
				
				var position = getObjPosition(obj);
				if(evt.clientX < position.x
				|| evt.clientX > (position.x + obj.offsetWidth)
				|| (evt.clientY +  + document.body.scrollTop) < position.y 
				|| (evt.clientY +  + document.body.scrollTop) > (position.y + obj.offsetHeight))
					return true;
				else
					return false;
			}
			
			//-----------------------------------------
			
			function switchElementDisplay(mainObjId, imgObjId, webRoot){
				var mainObj = document.getElementById(mainObjId);
				
				if(mainObj == null)
					return;
				
				if(mainObj.style.display != "none"){
					mainObj.style.display = "none";
					
					var imgObj = document.getElementById(imgObjId);
					
					if(imgObj != null)
						imgObj.src = ((webRoot != null)?webRoot:"") + "/imgs/menu/menu_open.gif";
				}
				else{
					mainObj.style.display = "";
					
					var imgObj = document.getElementById(imgObjId);
					
					if(imgObj != null)
						imgObj.src = ((webRoot != null)?webRoot:"") + "/imgs/menu/menu_close.gif";

				}
			}
			
			//get/set value from form element
			function getFormElement(formid,inputid) {
				var tempvalue = new String();
				var l = new Number();
				eval('l = document.' + formid + '.elements.length')
				for (var i = 0; i < l; i++) { 
					var tempid = eval('tempid= document.' + formid + '.elements[i].id;');
					if(tempid == null || tempid == "")
						eval('tempid= document.' + formid + '.elements[i].name;');
					
					eval('temptype= document.' + formid + '.elements[i].type;');
					if (tempid==inputid){
						return eval('document.' + formid + '.elements[i]');
					}
				}
				return null;
			}
			function setFormElementValue(formid,inputid,strvalue) {
				var l = new Number();
				if (!strvalue) return ;
				if (strvalue=='') return ;
				eval('l = document.' + formid + '.elements.length')
				for (var i = 0; i < l; i++) { 
					var tempid = new String();
					var temptype = new String();
					eval('tempid= document.' + formid + '.elements[i].name;');
					if(tempid == null || tempid == "")
						eval('tempid= document.' + formid + '.elements[i].id;');
					eval('temptype= document.' + formid + '.elements[i].type;');
					if (tempid==inputid){
						if (temptype=='text'){
							eval('document.' + formid + '.elements[i].value=strvalue;');
						}else if (temptype=='textarea'){
							eval('document.' + formid + '.elements[i].value=strvalue;');
						}else if (temptype=='hidden'){
							eval('document.' + formid + '.elements[i].value=strvalue;');
						}else if(temptype=='select-one'){
							var optionLen=new Number();
							eval('optionLen=(document.' + formid + '.elements[i].options.length)');
							for(var j=0;j<optionLen;j++){
								eval('if (document.' + formid + '.elements[i].options['+j+'].value==strvalue) document.' + formid + '.elements[i].selectedIndex='+j+';');
							}
						}else if(temptype=='radio'){
							eval('if (document.' + formid + '.elements[i].value==strvalue) document.' + formid + '.elements[i].checked=true;');
						}else if(temptype=='checkbox'){
							var strvalues=(','+strvalue+',').split(',');
							for(var j=0;j<strvalues.length;j++){
								if (!(strvalues[j]=='')) {
									eval('if (document.' + formid + '.elements[i].value==strvalues[j] ) document.' + formid + '.elements[i].checked=true; ');
								}
							}    
						}else if (temptype=='select-multiple'){
							var strvalues=(','+strvalue+',').split(',');
							var optionLen=new Number();
							eval('optionLen=(document.' + formid + '.elements[i].options.length)');
							for(var k=0;k<optionLen;k++){
								for(var j=0;j<strvalues.length;j++){
									eval('if (document.' + formid + '.elements[i].options[k].value==strvalues[j]) document.' + formid + '.elements[i].options[k].selected=true')
								}
							}
						}
					}
				}
			}
			//????,?Form??Input????
			function getFormElementValue(formid,inputid) {
				var tempvalue = new String();
				var l = new Number();
				eval('l = document.' + formid + '.elements.length')
				for (var i = 0; i < l; i++) { 
					var tempid = new String();
					var temptype = new String();
					eval('tempid= document.' + formid + '.elements[i].name;');
					if(tempid == null || tempid == "")
						eval('tempid= document.' + formid + '.elements[i].id;');
					eval('temptype= document.' + formid + '.elements[i].type;');
			//		alert(tempid);
			//		alert(temptype);
					if (tempid==inputid){
						if (temptype=='text'){
							eval('tempvalue= document.' + formid + '.elements[i].value;');
						}else if (temptype=='textarea'){
							eval('tempvalue= document.' + formid + '.elements[i].value;');
						}else if (temptype=='hidden'){
							eval('tempvalue= document.' + formid + '.elements[i].value;');
						}else if(temptype=='select-one'){
							eval('tempvalue=document.' + formid + '.elements[i].options[document.' + formid + '.elements[i].selectedIndex].value;');
						}else if(temptype=='radio'){
							eval('if(document.' + formid + '.elements[i].checked) tempvalue=document.' + formid + '.elements[i].value;');
						}else if(temptype=='checkbox'){
							var checkValue=new String();
							checkValue="";
							eval('if (document.' + formid + '.elements[i].checked==true) {checkValue=document.' + formid + '.elements[i].value}');
							if(checkValue==''){
							}else{
								if (tempvalue==''){
									tempvalue+=checkValue;
								}else{
									tempvalue+=','+checkValue;
								}
							}   
						}else if (temptype=='select-multiple'){
							//??Option???
							//??????????,?
							var optionLen=new Number();
							eval('optionLen=(document.' + formid + '.elements[i].options.length)');
							for(var j=0;j<optionLen;j++){
								var checkValue=new String();
								checkValue="";
								eval('if (document.' + formid + '.elements[i].options[j].selected) checkValue=(document.' + formid + '.elements[i].options[j].value);');
								if(checkValue==''){
								}else{
									if (tempvalue==''){
										tempvalue+=checkValue;
									}else{
										tempvalue+=','+checkValue;
									}
								}
							}
							//??????
						}
					}
				}
				return tempvalue;
			}
			
			
			function checkAll(id, isChecked){
				if(id == null || id.length <= 0)
					return;
					
				var chkboxes = document.getElementsByName(id);
				
				if(chkboxes != null && chkboxes.length > 0){
					for(var n=0;n<chkboxes.length;n++){
						chkboxes[n].checked = isChecked;
					}
				}
			}