﻿/*------------------------------------------
Name: AJAX组件
Author: 
Website: 
E-mail: chunkyo@ibwater.com
Copyright (c) 2007, All Rights Reserved
------------------------------------------*/
/*
function createAjaxObj(){
  var httprequest=false;
  if(window.XMLHttpRequest)
  { //Mozilla, Safari
      httprequest=new XMLHttpRequest()
      if(httprequest.overrideMimeType)
      {
        httprequest.overrideMimeType('text/xml');
      }
   }
   else if(window.ActiveXObject)
   { //IE
     try {
       httprequest=new ActiveXObject("Msxml2.XMLHTTP");
       //httprequest=new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch (e){
       try{
             httprequest=new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch (e){}
     }
   }
   if(!httprequest)
   {
     //alert("error httprequest");
   }
   return httprequest;
}*/
/*
 用途:AJAX客户端发送数据到服务端返回数据
 输入:url:send.jsp,param:id=8&name=3,callback:返回处理函数
 返回函数:var callback=function(){}
 * @param url (eg:put.jsp+"?")
 * @param param (eg:a=你好&b=hello)
 * @param callbackfunc (返回方法 callback)
 * @用途 url参数比较长的
*/
/*
function send(url,param,cbfun) {
	//判断上次请求的状态是否完成或是还未发送请求
	if (sendReq.readyState == 4 || sendReq.readyState == 0) {
 		//发送获得消息的服务器地址
		var submitURL =url+"?";
		var submitParam=param;
		//解决中文问题
		submitURL=encodeURI(encodeURI(submitURL)); 
		submitParam=encodeURI(encodeURI(submitParam));
		sendReq.open("POST", submitURL, true);//建立请求
		//解决中文问题
		sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		//sendReq.setRequestHeader("contentType","text/html;charset=uft-8");
		sendReq.onreadystatechange = cbfun; //当请求状态改变时调用receive方法
		sendReq.send(submitParam);//发送请求
    } 
}*/
/*
 * @param url (eg:put.jsp?a=1&b=2)
 * @param callbackfunc 返回处理函数
 * @用途 url参数比较短的
 */
 /*
function ajax_send(url,cbfun) {
    if(sendReq.readyState == 4 || sendReq.readyState == 0){
    sendReq = createAjaxObj(); //XmlHttpRequest 
    }
	//判断上次请求的状态是否完成或是还未发送请求
	if (sendReq.readyState == 4 || sendReq.readyState == 0) {
 		//发送获得消息的服务器地址
		var submitURL =url;
		//解决中文问题
		submitURL=encodeURI(encodeURI(submitURL));  
		sendReq.open("POST", submitURL, true);//建立请求
		//解决中文问题
		sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		sendReq.onreadystatechange = cbfun;//当请求状态改变时调用receive方法
		sendReq.send(null);//发送请求
    } 
}*/
 var ibXmlHttp = {
    _objPool: [],
    _getInstance: function ()
    {
        for (var i = 0; i < this._objPool.length; i ++)
        {
            if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)
            {
                return this._objPool[i];
            }
        }
        // IE5中不支持push方法
        this._objPool[this._objPool.length] = this._createObj();
        return this._objPool[this._objPool.length - 1];
    },
    _createObj: function ()
    {
          var httprequest=false;
		  if(window.XMLHttpRequest)
		  { //Mozilla, Safari
		      httprequest=new XMLHttpRequest()
		      if(httprequest.overrideMimeType)
		      {
		        httprequest.overrideMimeType('text/xml');
		      }
		   }
		   else if(window.ActiveXObject)
		   { //IE
		     try {
		       httprequest=new ActiveXObject("Msxml2.XMLHTTP");
		       //httprequest=new ActiveXObject("Microsoft.XMLHTTP");
		     }
		     catch (e){
		       try{
		             httprequest=new ActiveXObject("Microsoft.XMLHTTP");
		          }
		          catch (e){}
		     }
		   }
		   if(!httprequest)
		   {
		     //alert("error httprequest");
		   }
		   return httprequest;
    },

    // 发送请求(方法[post,get], 地址, 数据, 回调函数)
    send: function (url, param, callback)
    {
        var sendReq = this._getInstance();
        //判断上次请求的状态是否完成或是还未发送请求
		with (sendReq) {
		    try{
			    //发送获得消息的服务器地址
				var submitURL =url+"?";
				var submitParam=param;
				//解决中文问题
				submitURL=encodeURI(encodeURI(submitURL)); 
				submitParam=encodeURI(encodeURI(submitParam));
				sendReq.open("POST", submitURL, true);//建立请求
				//解决中文问题
				sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				//sendReq.setRequestHeader("contentType","text/html;charset=uft-8");
				//sendReq.onreadystatechange = callback; //当请求状态改变时调用receive方法
				onreadystatechange = function ()
                {
                    if (sendReq.readyState == 4 && (sendReq.status == 200 || sendReq.status == 304))
                    {
                        callback(sendReq);
                    }
                }
				sendReq.send(submitParam);//发送请求
		    }
		    catch(e){
		     alert(e);
		    }
	 		
	    } 
	}
};  
 var StrCode = function (str) {
	if (encodeURIComponent) {
		return encodeURIComponent(str);
	}
	if (escape) {
		return escape(str);
	}
};
var UnStrCode = function (str) {
	if (decodeURIComponent) {
		return decodeURIComponent(str);
	}
	if (unescape) {
		return unescape(str);
	}
};
var urlCode=function(url){
   return url.replace(/\@/g, "&amp;")
};

var Trim = function (s) {
	var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
	return (m == null) ? "" : m[1];
};
var HtmlEncode = function (text) {
	var re = {"<":"&lt;", ">":"&gt;", "&":"&amp;", "\"":"&quot;"};
	for (i in re) {
		text = text.replace(new RegExp(i, "g"), re[i]);
	}
	return text;
};
var HtmlDecode = function (text) {
	var re = {"&lt;":"<", "&gt;":">", "&amp;":"&", "&quot;":"\""};
	for (i in re) {
		text = text.replace(new RegExp(i, "g"), re[i]);
	}
	return text;
};
var gid = function (id) {
	return document.getElementById ? document.getElementById(id) : null;
};
var gname = function (name) {
	return document.getElementsByTagName ? document.getElementsByTagName(name) : new Array();
};
var addEvent = function (obj, evType, fn, useCapture) {
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, useCapture);
		return true;
	}
	if (obj.attachEvent) {
		return obj.attachEvent("on"+evType, fn);
	}
	alert("Unable to add event listener for " + evType + " to " + obj.tagName);
};
var Browser = function () {
	var ua, s, i;
	this.isIE = false;
	this.isNS = false;
	this.isOP = false;
	this.isSF = false;
	ua = navigator.userAgent.toLowerCase();
	s = "opera";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isOP = true;
		return;
	}
	s = "msie";//ie
	if ((i = ua.indexOf(s)) >= 0) {
		this.isIE = true;
		return;
	}
	s = "netscape6/";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		return;
	}
	s = "gecko";//ff
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		return;
	}
	s = "safari";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isSF = true;
		return;
	}
};
var WarpClass = function (eID, tID, fID, ev) {
	var eObj = document.getElementById(eID);
	var tObj = document.getElementById(tID);
	var fObj = document.getElementById(fID);
	if (eObj && tObj) {
		if (!tObj.style.display || tObj.style.display == "block") {
			tObj.style.display = "none";
			eObj.className = "Warp";
			if (fObj) {
				fObj.style.display = "none";
			}
		} else {
			tObj.style.display = "block";
			eObj.className = "UnWarp";
			if (ev) {
				eval(ev);
			}
			if (fObj) {
				fObj.style.display = "block";
			}
		}
	}
};
var ScreenConvert = function () {
	var browser = new Browser();
	var objScreen = document.getElementById("ScreenOver");
	if (!objScreen) {
		var objScreen = document.createElement("div");
	}
	var oS = objScreen.style;
	objScreen.id = "ScreenOver";
	oS.display = "block";
	oS.top = oS.left = oS.margin = oS.padding = "0px";
	oS.width = document.body.scrollWidth;
	oS.height = document.body.scrollHeight;
	if(!oS.width){//ff
	   oS.width=window.innerWidth+"px";
	}
	if(!oS.height){//ff
	   oS.height=window.innerHeight+"px";
	}
	oS.position = "absolute";
	oS.zIndex = "3";
	if ((!browser.isSF) && (!browser.isOP)) {
		oS.background = "#cccccc";
	} else {
		oS.background = "#cccccc";
	}
	oS.filter = "alpha(opacity=20)";
	oS.opacity = 0.2;
	oS.MozOpacity = 0.2;
	document.body.appendChild(objScreen);
	var allselect = gname("select");
	for (var i = 0; i < allselect.length; i++) {
		allselect[i].style.visibility = "hidden";
	}
};
var ScreenClean = function () {
	var objScreen = document.getElementById("ScreenOver");//header ScreenOver
	if (objScreen) {
		objScreen.style.display = "none";
	}
	var allselect = gname("select");
	for (var i = 0; i < allselect.length; i++) {
		allselect[i].style.visibility = "visible";
	}
};
var t_DiglogX, t_DiglogY, t_DiglogW, t_DiglogH;
var DialogLoc = function () {
	var dde = document.documentElement;
	if (window.innerWidth) {
		//netscape
		//alert('firefox');
		var ww = window.innerWidth;
		var wh = window.innerHeight;
		var bgX = window.pageXOffset;
		var bgY = window.pageYOffset;
	} else {
		//ie
		var ww = dde.offsetWidth;//页面可视宽度
		var wh = dde.offsetHeight;//页面可视高度
		var bgX = dde.scrollLeft;//页面滚动宽度
		var bgY = dde.scrollTop;//页面滚动高度
	}
	t_DiglogX = (bgX + ((ww - t_DiglogW) / 2));
	t_DiglogY = (bgY + ((wh - t_DiglogH) / 2));
};
/**  
 * ow:距离浏览器窗口左边位置
 * oh:距离浏览器窗口上面位置
 * h:div高度
 * w:div宽度
 */
var DialogShow = function (showdata, ow, oh, w, h,isMove) {
	var objDialog = document.getElementById("DialogMove");
	if (!objDialog) {
		objDialog = document.createElement("div");
	}
	t_DiglogW = ow; //位置坐标
	t_DiglogH = oh; //位置
	DialogLoc();
	if (window.innerWidth) {
		w = w + 40;
	}
	
	objDialog.id = "DialogMove";
	if(isMove=="true"){
		var movefun = function(){
		    move('DialogMove');
		};	
		addEvent(objDialog,'mousedown',movefun,false);
	}
	
	var oS = objDialog.style;
	oS.display = "block";
	oS.top = t_DiglogY + "px";
	oS.left = t_DiglogX + "px";
	oS.margin = "0px";
	oS.float = "left";
	oS.padding = "0px";
	oS.width = w + "px";
	oS.height = h + "px";
	
	oS.position = "absolute";
	oS.zIndex = "30";
	oS.background = "#fff";
	oS.border = "solid #64B7D7 5px";
	
	objDialog.innerHTML = showdata;
	document.body.appendChild(objDialog);
};
var DialogHide = function () {
	ScreenClean();
	var objDialog = document.getElementById("DialogMove");
	if (objDialog) {
		objDialog.style.display = "none";
	}
};
//定义移动对象和移动坐标
var Mouse_Obj="none",_x,_y;
var move=function(o)
{    Mouse_Obj=o;
     var event=getEvent();
     var browser = new Browser();
     if(browser.isIE){
       _x=parseInt(document.getElementById(Mouse_Obj).style.left)-event.x;
       _y=parseInt(document.getElementById(Mouse_Obj).style.top)-event.y;
     }
     else{
         _x=parseInt(document.getElementById(Mouse_Obj).style.left)-event.pageX;
         _y=parseInt(document.getElementById(Mouse_Obj).style.top)-event.pageY;
     }
}

//拖动对象函数(自动)
document.onmousemove=function()
{	
    if(Mouse_Obj!=="none")
    {
      var event=getEvent();
      var browser = new Browser();
     if(browser.isIE){
        document.getElementById(Mouse_Obj).style.left=_x+event.x;
        document.getElementById(Mouse_Obj).style.top=_y+event.y;
        event.returnValue=false;
     }
     else{
         document.getElementById(Mouse_Obj).style.left=_x+event.pageX+"px";
         document.getElementById(Mouse_Obj).style.top=_y+event.pageY+"px";
     }
    
     
    }
}
//停止拖动函数(自动)
document.onmouseup=function()
{
    Mouse_Obj="none";
}
var  getEvent=function(){//兼容IE/FF的取出事件
   var browser = new Browser();
   if(browser.isIE) return window.event;
   func=getEvent.caller;
   while(func!=null){
     var arg0=func.arguments[0];
     if(arg0){
       if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){
         return arg0;
       }
     }
     func=func.caller;
   }
   return null;
};
 //获取控件的值通过name
function getObjectByName(objname)
{
  return document.all(objname);
}
//获取控件对象通过ID
function getObjectById(objname)
{
  return document.getElementById(objname);
}
//获取checkbox的值 格式 id1;id2;id3
var getCheckBoxValue=function(id,dim){
    var obj="";
	var checkboxid=document.getElementsByName(id);      
	for(var i=0;i<checkboxid.length;i++){      
        if(checkboxid[i].checked==true){
           obj+=checkboxid[i].value;
           obj+=dim;
        }
    } 
    if(obj!=""){
      obj=obj.substring(0,obj.length-1);
    }
    return obj;
};
 
//检查价格
function CheckPrice(sDouble){
  var re = /^\d+(?=\.{0,1}\d+$|$)/
  if(re.test(sDouble))
  {
      return false;
  }
  else
  {
      return true;
  }    
}
//检查电话
function CheckPhone (number){
    var phone = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
    var mobile = /^(((13[0-9]{1})|159|158|153)+\d{8})$/;
    if (phone .test(number)||mobile.test(number))
    {
         return false;
    }
    else
    {
         return true;
    }
}
//检查email
function CheckEmail( email)
{
     var reEmail = /^([A-Za-z0-9])(\w)+@(\w)+(\.)(com|com\.cn|net|cn|net\.cn|org|biz|info|gov|gov\.cn|edu|edu\.cn)/;
     if (email.match(reEmail))
     {
          return false;
     }
     else
     {
          return true;
     }     
}
//检查传真
function CheckFax (number){
    var phone = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
    if (phone .test(number))
    {
         return false;
    }
    else
    {
         return true;
    }
}
//全选
function toggleAll(obj,id) {
       var id_Tag="id";
       if(id!=undefined){
          id_Tag=id;
       }
	   var checkboxid=document.getElementsByName(id_Tag);      
	   if(obj.checked==true)
	   {
	     for(var i=0;i<checkboxid.length;i++){      
           checkboxid[i].checked=true;      
         }  
	   }
	   else
	   {
	     for(var i=0;i<checkboxid.length;i++){      
           checkboxid[i].checked=false;      
         }
	   }
}
//js:获得select 的选定项的value属性
var getSelectValue=function(obj)
{
	return document.getElementById(obj).options[document.getElementById(obj).selectedIndex].value;
}
//js:获得select 的选定项的text属性
var getSelectText=function(obj)
{
	return document.getElementById(obj).options[document.getElementById(obj).selectedIndex].text;
};
var initSelectValue=function(obj,value){
//判断是否存在
var isExit = false;
	for(var i=0;i<document.getElementById(obj).options.length;i++)
	{
		if(document.getElementById(obj).options[i].value == value)
		{
			document.getElementById(obj).options[i].selected = true;
			isExit = true;
			break;
		}
	} 
};
/**
 * 设置cookie
 **/
function setcookie(name,value){  
    var Days = 30;  
    var exp  = new Date();  
    exp.setTime(exp.getTime() + Days*24*60*60*1000);  
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();  
}  
/**
 * 获取cookie
 **/ 
function getcookie(name){  
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));   
    if(arr != null){  
        return unescape(arr[2]);  
    }else{  
        return "";  
    }  
}  
/**
 * 删除cookie
 **/  
function delcookie(name){  
    var exp = new Date();   
    exp.setTime(exp.getTime() - 1);  
    var cval=getCookie(name);  
    if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();  
} 
/*****
 *价格处理，带小数点的数字输入处理onblur="this.value=outputMoney(this.value);"
****/
var outputMoney=function (number) 
{ 
  if(isNaN(number)){
    return "0.00";
  }
  number=number.replace(/\,/g,"");  //替换    /g全局匹配
  if (number=="") return ""; 
  if(number<0) 
  return '-'+outputDollars(Math.floor(Math.abs(number)-0) + '') + outputCents(Math.abs(number) - 0); 
  else           //Math.abs 返回数的绝对值,Math.floor返回任意浮点数的整数部分
  return outputDollars(Math.floor(number-0) + '') + outputCents(number - 0); 
};
var  outputDollars=function(number) 
{ 
  if (number.length<= 3) 
  return (number == '' ? '0' : number); 
  else 
  { 
    var mod = number.length%3;     //值为3的余数
    var output = (mod == 0 ? '' : (number.substring(0,mod))); 
    for (i=0 ; i< Math.floor(number.length/3) ; i++) 
    { 
      if ((mod ==0) && (i ==0)) 
      output+= number.substring(mod+3*i,mod+3*i+3); 
      else 
      output+= ',' + number.substring(mod+3*i,mod+3*i+3); 
    } 
    return (output); 
  } 
};
var outputCents=function(amount) 
{ 
  amount = Math.round( ( (amount) - Math.floor(amount) ) *100);    //Math.round四舍五入
  return (amount<10 ? '.0' + amount : '.' + amount); 
}; 
/***获取组件的位置***/
var  getPosition=function(elementId) {
	 var ua = navigator.userAgent.toLowerCase();
	 var isOpera = (ua.indexOf('opera') != -1);
	 var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
	 var el = document.getElementById(elementId);
 	 if(el.parentNode === null || el.style.display == 'none') {
  		return false;
 	 }     
	 var parent = null;
	 var pos = [];    
	 var box;    
     if(el.getBoundingClientRect)    //IE
     {        
        box = el.getBoundingClientRect();
        var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
        var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
        return {x:box.left + scrollLeft, y:box.top + scrollTop};
     }
     else if(document.getBoxObjectFor)    // gecko   
     {
		  box = document.getBoxObjectFor(el);
		  var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
		  var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;
		  pos = [box.x - borderLeft, box.y - borderTop];
 	 } 
 	 else// safari & opera   
     {
		 pos = [el.offsetLeft, el.offsetTop]; 
		 parent = el.offsetParent;    
  		 if (parent != el) {
   			 while (parent) { 
			    pos[0] += parent.offsetLeft;
			    pos[1] += parent.offsetTop;
			    parent = parent.offsetParent;
   			 } 
  		 }  
  		 if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' )) {
   		    pos[0] -= document.body.offsetLeft;
   		    pos[1] -= document.body.offsetTop;        
     	 }   
     }             
     if(el.parentNode) {
         parent = el.parentNode;
     } 
     else 
     {
        parent = null;
     }
     while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') { // account for any scrolled ancestors
		  pos[0] -= parent.scrollLeft;
		  pos[1] -= parent.scrollTop;
          if (parent.parentNode) {
             parent = parent.parentNode;
          } 
          else 
          {
            parent = null;
          }
     }
     return {x:pos[0], y:pos[1]};
};