﻿//----------------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;
			}
		}
	}
}

//----------------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;
				}
			}
			
			/**
			 * 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;

				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";

				}
			}