﻿// 将空间组中的一个控件显示,其他的隐藏
/* elearray 空间的名称数组["ddfd","adfadsfdsaf","adfadsf"]
*  showdiv  要显示的控件的名称
*/
function ShowSingleElement(EleArray,ShowEle)
{ 
    var array=$(EleArray);
    array.each(function(index, domEle)
    {
       if(domEle.id==ShowEle.attr("id"))
            $(domEle).show();
       else
            $(domEle).hide();
    });
}

// 将空间组中的一个控件样式改变成新样式,其他改变为原样式
/* EleArray  空间的名称数组["ddfd","adfadsfdsaf","adfadsf"]
*  showEle  要显示的控件的名称
*  originclass 控件原有的样式(class name)
*  newclass 控件的新样式(class name)
*/
function ModifySingleElementClass(EleArray,ShowEle,originclass,newclass)
{
    var array=$(EleArray);
     array.each(function(index,domEle)
     {
        if(domEle.id==ShowEle.attr("id"))
        {
            $(domEle).removeClass(originclass);
            $(domEle).addClass(newclass);
        }
        else
        {
            $(domEle).removeClass(newclass);
            $(domEle).addClass(originclass);
        }
     });
}

/**
**单选指定容器控件对象内的复选框
** EleContainer容器控件对象
** CurrentCheckbox当前复选框对象
**/
function SingleCheckedByElement(EleContainer,CurrentCheckbox)
{
    if(CurrentCheckbox.attr("checked"))
    {
    
        var chekArray= $(EleContainer).find("input:checkbox");
        chekArray.each(function(index, checkElement)
        {
           
            if(checkElement.id==CurrentCheckbox.attr("id"))
                checkElement.checked=true;
            else
                checkElement.checked=false;
        });
    }
}


/**
** 全选指定容器控件内的复选框
** EleContainer 容器控件对象
** Checked选中,还是取消
**/
function MultiCheckedByElement(EleContainer,Checked)
{
    var chekArray= $(EleContainer).find("input:checkbox");
    chekArray.each(function(index,checkElement)
    {
         checkElement.checked=Checked; 
    });
} 


/**
** 全选指定容器控件内的复选框
** EleContainer 容器控件对象
** Suffix 复选框的id前缀
** Checked选中,还是取消
**/
function MultiCheckedByElementBySuffix(EleContainer,Suffix,Checked)
{
   var chekArray= $(EleContainer).find("input:checkbox");
   var suffixlength=Suffix.length;
   chekArray.each(function(index,checkElement)
   {
        var tempsffix=checkElement.id.substr(0,suffixlength);
        if(Suffix!=tempsffix)
            return ;
        checkElement.checked=Checked;
   });
}


/****
 ** 获取指定控件容器对象中的所有选中的复选框的value,组成字符串
 ** EleContainer 容器控件对象
 ** valueType 0:ID,1:Value,2:Name
 ** Checked选中,还是取消,-1所有,0未选中,1选中
 ** Separator: 分割符号
 **/
function GetCheckStrByCheckedFromElement(EleContainer,valueType,Checked,Separator)
{
    if(Checked==true)
        Checked="1";
    else if(Checked==false)
        Checked="0";
        
    if(Separator==null || Separator=="undefined")
        Separator=",";
        
    var chekArray= $(EleContainer).find("input:checkbox");
    var codeString="";
    chekArray.each(function(index,checkElement)
    {
        if(Checked=="1")
        {
            if(checkElement.checked)
            {
                if(valueType==0)
                    codeString+=checkElement.id+Separator;
                else if(valueType==1)
                    codeString+=checkElement.value+Separator;
                else if(valueType==2)
                    codeString+=checkElement.name+Separator;
            }
        }
        else if(Checked=="0")
        {
            if(!checkElement.checked)
            {
                if(valueType==0)
                    codeString+=checkElement.id+Separator;
                else if(valueType==1)
                    codeString+=checkElement.value+Separator;
                else if(valueType==2)
                    codeString+=checkElement.name+Separator;
            }
        }
        else if(Checked=="-1")
        {
            if(valueType==0)
                codeString+=checkElement.id+Separator;
            else if(valueType==1)
                codeString+=checkElement.value+Separator;
            else if(valueType==2)
                codeString+=checkElement.name+Separator;
        }
    });
    if(codeString.length>0)
    {
	    codeString=codeString.substr(0,codeString.length-1);
    }
    return codeString;
}

/****
 ** 获取指定控件容器对象中的所有选中的复选框的value,组成字符串
 ** EleContainer 容器控件对象
 ** Suffix 复选框的id前缀
 ** valueType 0:ID,1:Value,2:Name
 ** Checked选中,还是取消,-1所有,0未选中,1选中
 ** Separator: 分割符号
 **/
function GetCheckStrByCheckedFromElementBySuffix(EleContainer,Suffix,valueType,Checked,Separator)
{
    if(Checked==true)
        Checked="1";
    else if(Checked==false)
        Checked="0";
        
     if(Separator==null || Separator=="undefined")
        Separator=",";
        
    var chekArray= $(EleContainer).find("input:checkbox");
    var codeString="";
    var suffixlength=Suffix.length;
    
    chekArray.each(function(index,checkElement)
    {
        var tempsffix=checkElement.id.substr(0,suffixlength);
        if(Suffix!=tempsffix)
            return ;
            
        if(Checked=="1")
        {
            if(checkElement.checked)
            {
                if(valueType==0)
                    codeString+=checkElement.id+Separator;
                else if(valueType==1)
                    codeString+=checkElement.value+Separator;
                else if(valueType==2)
                    codeString+=checkElement.name+Separator;
            }
        }
        else if(Checked=="0")
        {
            if(!checkElement.checked)
            {
                if(valueType==0)
                    codeString+=checkElement.id+Separator;
                else if(valueType==1)
                    codeString+=checkElement.value+Separator;
                else if(valueType==2)
                    codeString+=checkElement.name+Separator;
            }
        }
        else if(Checked=="-1")
        {
            if(valueType==0)
                codeString+=checkElement.id+Separator;
            else if(valueType==1)
                codeString+=checkElement.value+Separator;
            else if(valueType==2)
                codeString+=checkElement.name+Separator;
        }
       
    });
    if(codeString.length>0)
    {
	    codeString=codeString.substr(0,codeString.length-1);
    }
    return codeString;
}

/**
**反选指定控件容器内对象中的复选框
** EleContainer控件容器对象
**/
function RefactorCheckboxByElement(EleContainer)
{
    var chekArray= $(EleContainer).find("input:checkbox");
    chekArray.each(function(index,checkElement)
    {
         checkElement.checked=!checkElement.checked;
    });
}


/**
**反选指定控件容器内对象中的复选框
** EleContainer控件容器对象
** Suffix 复选框id的前缀
**/
function RefactorCheckboxByElementBySuffix(EleContainer,Suffix)
{
    var chekArray= $(EleContainer).find("input:checkbox");
    var suffixlength=Suffix.length;
    chekArray.each(function(index,checkElement)
    {
        var tempsffix=checkElement.id.substr(0,suffixlength);
        if(Suffix!=tempsffix)
            return ;
        checkElement.checked=!checkElement.checked;
          
    });
}


/**根据类型值(id字符串，name字符串,value字符串),绑定容器中的复选框
** div_container 容器控件对象
** data 值字符串
** valueType 0:ID,1:Value,2:Name 
** isChecked选中,还是取消true/false
** Separator 值分隔符号
**/
function SetCheckedByElement(EleContainer,Data,valueType,Checked,Separator)
{
    var array=Data.split(Separator);
    var chekArray= $(EleContainer).find("input:checkbox");
    chekArray.each(function(index,checkElement)
    {
        for(var j=0;j<array.length;j++)
        {
            if(valueType==0)
            {
                if(array[j]==checkElement.id)
                {
                   checkElement.checked=Checked;
                   break;
                }
            }
            else if(valueType==1)
            {
                if(array[j]==checkElement.value)
                {
                   checkElement.checked=Checked;
                   break;
                }
            }
            else if(valueType==2)
            {
                if(array[j]==checkElement.name)
                {
                   checkElement.checked=Checked;
                   break;
                }
            }
        }
    });
}


/**判断容器种的复选框是否时全部选中,或者不全部选中
** EleContainer容器
** Checked选中,还是取消true/false
**/
function IsAllCheckBoxSelected(EleContainer,Checked)
{
    var retValue=true;
    var chekArray= $(EleContainer).find("input:checkbox");
    chekArray.each(function(index,checkElement)
    {
        if(checkElement.checked!=Checked)
        {
            retValue=false;
        }
    });
    return retValue;
}


/**根据value值，选中列表某项
* list 列表框或者下来列表框对象
* seletedValue 选择的数值 
* valueType 1用value绑定,2用text绑定
* Checked 选中状态
* Separator 值分隔符号
*/
function SelectedListByValueOrText(list,seletedValue,valueType,Checked,Separator)
{
    
    if(seletedValue=="" || seletedValue=="undefined" || seletedValue==null)
        return;
    
    
    var array=seletedValue.split(Separator);

    var optionArray=$(list)[0].options;
    
    for(var i=0;i<optionArray.length;i++)
    {
        for(var j=0;j<array.length;j++)
    	{
            if(valueType=="1")
            {
	            if(optionArray(i).value==array[j])
	            {
		            optionArray(i).selected=Checked;
		            break;
	            }
	        }
	        else if(valueType=="2")
	        {
	            if(optionArray(i).text==array[j])
	            {
		            optionArray(i).selected=Checked;
		            break;
	            }
	        }
	    }
    };
}

/**
**获取指定列表框中的选中的值字符串
** list 列表框或者下拉列表框
** valueType 1用value绑定,2用text绑定
 ** Checked选中,还是取消,-1所有,0未选中,1选中
** Separator分隔符号
**/
function GetListStrByElement(list,valueType,Checked,Separator)
{

    if(Checked==true)
        Checked="1";
    else if(Checked==false)
        Checked="0";
        
    var returnvalue="";
    
    var optionArray=$(list)[0].options;
    
	for(i=0;i<optionArray.length;i++)
	{
	    var obj=optionArray(i);
	    if(Checked=="1")
	    {
	        if(obj.selected==true)
	        {
	            if(valueType==1)
		            returnvalue+=obj.value+Separator;	
		        else if(valueType==2)
		            returnvalue+=obj.text+Separator;	
		    }
		}
		else if(Checked=="0")
		{
		    if(obj.selected==false)
	        {
	            if(valueType==1)
		            returnvalue+=obj.value+Separator;	
		        else if(valueType==2)
		            returnvalue+=obj.text+Separator;	
		    }
		}
		else
		{
		    if(valueType==1)
	            returnvalue+=obj.value+Separator;	
	        else if(valueType==2)
	            returnvalue+=obj.text+Separator;
		}
	}
	if(returnvalue.length>0)
    {
         returnvalue=returnvalue.substr(0,returnvalue.length-1);
    }
    return returnvalue;
}


/**
**添加选项到指定列表框
** list下来框或者列表框
** value选项值
** text选项文本
**/
function AddItemsToList(list,value,text,Checked)
{
    var returnValue=true;
    var optionArray=$(list)[0].options;
    for(i=0;i<optionArray.length;i++)
	{
	    var obj=optionArray(i);
	    if(obj.value==value)
	    {
	       returnValue=false;
	       obj.selected=Checked;
	       break; 
	    }
	}
	if(!returnValue)
	    return ;
	    
    var op=document.createElement("Option");
	op.text=text;
	op.value=value;
	op.selected=Checked;
	optionArray.add(op);
}

/**
**从指定的列表框中删除指定值或者文本的项目(删除多个)
** list下来框或者列表框
** value 选项值或者文本
** valueType 1用value绑定,2用text绑定
**/
function DeleteItemsFromList(list,seletedValue,valueType,Separator)
{
   
    var array=seletedValue.split(Separator);
    for(var i=0;i<array.length;i++)
    {
        SingleDeleteItemsFromList(list,array[i],valueType);
    }

}
/**
**从指定的列表框中删除指定值或者文本的项目(删除单个）
** list下来框或者列表框
** value 选项值或者文本
** valueType 1用value绑定,2用text绑定
**/
function SingleDeleteItemsFromList(list,seletedValue,valueType)
{
   var optionArray=$(list)[0].options;
   for(var i=0;i<optionArray.length;i++)
   {
        var obj=optionArray(i);
        if(valueType==1)
        {
            if(obj.value==seletedValue)
            {
                optionArray.remove(i);
                 break;
            }
        }
        else
        {
            if(obj.text==seletedValue)
            {
               optionArray.remove(i);
               break;
            }
        }
   }
}

/** 弹出指定的窗口,模式
*** sUrl 弹出窗口的地址 iWidth弹出窗口的宽 iHeight弹出窗口的高
**/
function ShowDialog(sUrl,iWidth,iHeight,win)
{
	if(!iWidth)	iWidth=400;
	if(!iHeight) iHeight=300;
	var feature = 'dialogWidth:'+iWidth+'px;dialogHeight:'+iHeight+'px;scroll:auto;status:no;resizeable:no;';
	var reObj = window.showModalDialog(sUrl,win,feature)
	return reObj;
}

/** 弹出指定的窗口，非模式
*** sUrl 弹出窗口的地址 iWidth弹出窗口的宽 iHeight弹出窗口的高
**/
function ShowForm(sUrl,iwidth,iheight)
{
    
    var top = (window.screen.height-iheight)/2;
	var left = (window.screen.width-iwidth)/2;
	top=top-20;
	var feature = 'top='+top+',left='+left+',scroll=auto,width='+iwidth+'resizable=yes,scrollbars=yes,height='+iheight;
	window.open(sUrl,'',feature);
}

/*获取地址栏查询参数或指定字符串中指定name对应的值
**paramName:参数名称
**/
function GetUrlParam( paramName) 
{ 
    var str=document.location.search;
    var oregex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ; 
    var oMatch = oregex.exec( str) ; 
    if ( oMatch && oMatch.length > 1 ) 
        return oMatch[1] ; 
    else 
        return '' ; 
}

/**
**去除掉由于模板而产生的多余前缀
**/
function GetQueryParms(EleContainer)
{
    var paraString="";
    var elementArray=$(EleContainer).find("input");
    var eleNameArray=null;
    var eleName="";
    elementArray.each(function(index,element)
    {
        eleNameArray=element.name.split("$");
        if(eleNameArray.length==3)
            eleName=element.name.split("$")[2];
        else
            eleName=element.name;
        if(element.value!="")
            paraString+=eleName+"="+element.value+"&";
     });
     
   
    elementArray=$(EleContainer).find("select");
    elementArray.each(function(index,element)
    {
        eleNameArray=element.name.split("$");
        if(eleNameArray.length==3)
            eleName=element.name.split("$")[2];
        else
            eleName=element.name;
            
        if($(element).val()!="")
            paraString+=eleName+"="+$(element).val()+"&";
    });
    
    if(paraString.length>0)
    {
         paraString=paraString.substr(0,paraString.length-1);
    }
    return paraString;
}
/**
**匹配时，已经名字为主，不以ID为主
*/
function SetQueryParmsToForm(EleContainer)
{
     var elementArray= $(EleContainer).find("input");
     var eleNameArray=null;
     var eleName="";
     elementArray.each(function(index,element)
     {
        eleNameArray=element.name.split("$");
        if(eleNameArray.length==3)
            eleName=element.name.split("$")[2];
        else
            eleName=element.name;
         
        var paraValue=GetUrlParam(eleName);
        if(paraValue!=null && paraValue!="")
        {
             element.value=unescape(paraValue);
        }
     });
     
     elementArray= $(EleContainer).find("select");
     elementArray.each(function(index,element)
         {
         
            eleNameArray=element.name.split("$");
            if(eleNameArray.length==3)
                eleName=element.name.split("$")[2];
            else
                eleName=element.name;
            
            var paraValue=GetUrlParam(eleName);
            if(paraValue!=null && paraValue!="")
                 SelectedListByValueOrText(element,paraValue,1,true,",");
         }
     );
}


/**
**判断制定的字符串中(1,2,3,6,abc,def)格式，存在指定值
**/
function CheckTargetIsExistInValue(targetValue,OriginValue,splitChar)
{
    if(OriginValue==null || OriginValue=="")
        return false;
        
    var retValue=false;
    var array=OriginValue.split(splitChar);
    for(i=0;i<array.length;i++)
    {
        if(targetValue==array[i])
        {
            retValue=true;
            break;
        }
    }
    return retValue;
}

/*名称：getStringLength
  功能：获取字符串长度
  参数：s - 字符串

  返回：字节长度
*/
function GetStringLength(s)
{   
    if(s=="" || s==null || s=="undefined")
        return 0;
      
	var len = 0;
	for(i=0;i<s.length;i++)
	{
		if(s.charCodeAt(i) > 255)
			len = len +2;
		else
			len = len +1;
	} 
	return len;
}

/**
**获得制定字符的制定长度的字符参
**/
function GetLengthString(s,srclength)
{
    var length=GetStringLength(s);
    
    if(srclength>=length)
        return s;
    
    var len = 0;
    var target_s="";
    for(i=0;i<s.length;i++)
	{
		if(s.charCodeAt(i) > 255)
			len = len +2;
		else
			len = len +1;
        
        if(len<=srclength)
            target_s=target_s+s.charAt(i);
        else
            break;
	} 
	return target_s;
}

/**
**获得Cookie解码后的值
**/
function GetCookieVal(offset)
{
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1)
    endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}

/**
**设定Cookie值
**/
function SetCookie(name, value)
{
    var expireDate=new Date();
   
    var argv = SetCookie.arguments;
    var argc = SetCookie.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;
    if(expires!=null)
        expireDate.setTime(expires);
    var newvalue= name + "=" + value +((expireDate == null) ? "" : ("; expires="+ expireDate.toGMTString()))
    +((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
    +((secure == true) ? "; secure" : "");

    document.cookie =newvalue;
}

/**
**删除Cookie
**/
function DelCookie(name)
{
    var exp = new Date();
    exp.setTime (exp.getTime() - 1);
    var cval = GetCookie (name);
    document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}

/**
**获得Cookie的原始值
**/
function GetCookie(name)
{
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen)
    {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
        return GetCookieVal(j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return null;
}

  /*   
    *---------------   DateAdd(interval,number,date)   -----------------   
    *   DateAdd(interval,number,date)     
    *   功能:实现VBScript的DateAdd功能.   
    *   参数:interval,字符串表达式，表示要添加的时间间隔.   
    *   参数:number,数值表达式，表示要添加的时间间隔的个数.   
    *   参数:date,时间对象.   
    *   返回:新的时间对象.   
    *   var   now   =   new   Date();   
    *   var   newDate   =   DateAdd("d",5,now);   
    *   update:2004-5-28   11:46   
    *---------------   DateAdd(interval,number,date)   -----------------   
    */
function  DateAdd(interval,number,date)   
{   
  switch(interval)   
  {   
      case   "y"   :   {   
              date.setFullYear(date.getFullYear()+number);   
              return   date;   
              break;   
      }   
      case   "q"   :   {   
              date.setMonth(date.getMonth()+number*3);   
              return   date;   
              break;   
      }   
      case   "m"   :   {   
              date.setMonth(date.getMonth()+number);   
              return   date;   
              break;   
      }   
      case   "w"   :   {   
              date.setDate(date.getDate()+number*7);   
              return   date;   
              break;   
      }   
      case   "d"   :   {   
              date.setDate(date.getDate()+number);   
              return   date;   
              break;   
      }   
      case   "hh"   :   {   
              date.setHours(date.getHours()+number);   
              return   date;   
              break;   
      }   
      case   "mm"   :   {   
              date.setMinutes(date.getMinutes()+number);   
              return   date;   
              break;   
      }   
      case   "ss"   :   {   
              date.setSeconds(date.getSeconds()+number);   
              return   date;   
              break;   
      }   
      default   :   {   
              date.setDate(date.getDate()+number);   
              return   date;   
              break;   
      }   
  }   
}   
    


/**
* 验证mail是否合法
**/
function ValidateEmail(srcStr)
{
    var expr='^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$';
    var Reg= new RegExp(expr);
    if(Reg.test(srcStr))
        return true;
    else
        return false;
}
/**
* 验证是否是由CharOrNum组成
**/
function ValidateChar(srcStr)
{
    var expr='^[a-zA-Z]|[0-9][a-zA-Z0-9_]*$';
    var Reg= new RegExp(expr);
    if(Reg.test(srcStr))
        return true;
    else
        return false;
}
/**
*验证是否合法钱数
**/
function ValidateMoney(srcStr)
{
   return ValidateNum(srcStr);
}
/**
*验证是否合法Url
**/
function ValidateUrl(srcStr)
{
    var expr='[a-zA-z]+://[^s]*';
    var Reg= new RegExp(expr);
    if(Reg.test(srcStr))
        return true;
    else
        return false;
}
/**
*验证是否合法数字
**/
function ValidateNum(srcStr)
{
    var expr='^(0|[1-9][0-9]*)$';
    var Reg= new RegExp(expr);
    if(Reg.test(srcStr))
        return true;
    else
        return false;
}
/**验证长度是否合法
**/
function ValidateLength(srcStr,minLength,maxLength)
{
     var length=GetStringLength(srcStr);
     if(length>=minLength && length<=maxLength)
        return true;
     else
        return false;
}
/**
*比较两个的值是否相等
**/
function CompareToObject(srcInput,destInput)
{
    var srcValue=toTrim(srcInput.value);
    var destValue=toTrim(destInput.value);
    var retv=false;
    (srcValue==destValue)?retv=true:retv=false;
    return retv;
}


/***
**虚拟构造的ArrayList，大于1000时性能将有影响
**/
function ArrayList()
{
    this.map = new Array();
    this.Item=function(key, value)
    {
        this.key = key;
        this.value = value;
    };
    this.setAt=function(key, value)
    {
        for (var i = 0; i < this.map.length; i++)
        {
            if ( this.map[i].key == key )
            {
                this.map[i].value = value;
                return;
            }
        }
        this.map[this.map.length] = new this.Item(key, value);
    };
    this.indexUp=function(index)
    {
        return this.map[index].value;
    };
    this.lookUp=function(key)
    {
        for (var i = 0; i < this.map.length; i++)
        {
            if ( this.map[i].key == key )
            {
                return this.map[i].value;
            }
        } 
        return null;
    };
    this.indexUpItem=function(index)
    {
        return this.map[index];
    };

    this.removeKey=function(key)
    {
        var v;
        for (var i = 0; i < this.map.length; i++)
        {
            v = this.map.pop();
            if ( v.key == key )
                continue;
      
            this.map.unshift(v);
        }
    };

    this.getCount=function()
    {
        return this.map.length;
    };

    this.isEmpty=function()
    {
        return this.map.length <= 0;
    };
    this.setEmpty=function()
    {
        this.map.length = 0;
    }
}



