﻿// JScript 文件
function Resize(target, width, height)
{
	var target = GetElement(target);
	if (target == null || target.width == null) return false;
	if (width > 0)
	{
		var b = width / target.width;
		target.width = width;
	}
	else if (height > 0)
	{
		var b = height / target.height;
		target.height = height;
	}
	return true;
}

function IsMobile(input)
{
	return /^1\d{10}$/.test(input);
}

function Enter(eventSource, target, mode)
{
	var t = GetElement(target);
	if (eventSource.keyCode == 13)
	{
		switch(mode)
		{
			case 'click':
				t.click();
				break;
			case 'focus':
				t.focus();
				break;
			case 'none':
				return false;
				break;
		}
	}
}

function GetElement(element)
{
	if (typeof(element) == "string")
	{
		return document.getElementById(element);
	}
	else if (typeof(element) == "object")
	{
		return element;
	}
}

String.format = function() 
{ 
	if(arguments.length == 0) return "";
	if(arguments.length == 1) return arguments[0];
	var reg = /{(\d+)?}/g;
	var args = arguments;
	var result = arguments[0].replace(reg, function($0, $1)
		{
			return args[parseInt($1)+1];
		})
	return result;
}

function IsNullOrEmpty(obj)
{
	if (obj == null || obj == undefined || obj == NaN)
	{
		return true;
	}
	else if (obj == "")
	{
		return true;
	}
	return false;
}

function GetStrLength(str)
{
	var length = 0;
	if (str != null)
	{
		for(var i = 0; i < str.length; i++)
		{
			length += (str.charCodeAt(i) > 255 ? 2 : 1);
		}
	}
	return length;
}

function GetSMSStrLength(str)
{
	var length = 0;
	if (str != null)
	{
		for(var i = 0; i < str.length; i++)
		{
			if (str.charCodeAt(i) > 255)
			{
				length = str.length * 2;
				break;
			}
			else
			{
				length++;
			}
		}
	}
	return length;
}

function GetSMSStrLength_HTTPEUCPComm(str)
{
	var length = 0;
	if (str != null)
	{
		length = str.length;
	}
	return length;
}


function GetRandomNum(max)
{
	var seed = Math.random();
	return parseInt(seed * 10) % max;
}

function EnterTo(targetID)
{
	var t = document.getElementById(targetID);
	if (t == null) return;
	if (event.keyCode == 13)
	{
		t.focus();
		t.click();
	}
}

function DisableButton()
{
	//var inputs = document.all.tags("input");
	var inputs = document.getElementsByTagName("input");
	for(var i = 0; i < inputs.length; i++)
	{
		if (inputs[i].type == "button" || inputs[i].type == "submit" || inputs[i].type == "reset")
		{
			inputs[i].disabled = true;
		}
	}
}

//window.onbeforeunload = DisableButton;

function SelectAll(targetName,event, checked)
{
    var itemCheck = checked;
    //itemCheck = checked == null ?  event.srcElement.checked : checked;
    itemCheck =checked==null ? event.srcElement!=null ? event.srcElement.checked : event.target.checked :checked;
    var selectedItem = document.getElementsByName(targetName);
    if (selectedItem != null)
    {
        if (selectedItem.length == null)
        {
			if (selectedItem.disabled == false)
			{
				selectedItem.checked = itemCheck;
			}
        }
        else
        {
            for(var i = 0; i < selectedItem.length; i++)
            {
			   if (selectedItem[i].disabled == false)
				{ 
					selectedItem[i].checked = itemCheck;
				}
            }
        }
    }
}

function SetValue(sourceID, targetID)
{
	var s = document.getElementById(sourceID);
	var t = document.getElementById(targetID);
	if (s != null && t != null)
	{
		t.value = s.value;
	}
}

function RemoveViewState(formID)
{
	var form = document.getElementById(formID);
	if (form == null)
	{
		alert('指定的表单不存在!');
	}
	else
	{
		for(var i = 1; i < arguments.length; i++)
		{
			if (form.children[arguments[i]] != null)
			{
				RemoveNode(arguments[i]);
				//form.removeChild(form.children[arguments[i]]);
			}
		}
		RemoveNode("__VIEWSTATE");
		RemoveNode("__EVENTTARGET");
		RemoveNode("__EVENTARGUMENT");
	}
	return;
}

function RemoveNode(nodeID)
{
	var ntype = GetNType()
	var target = document.getElementById(nodeID);
	if (target == null || target == undefined) return;
	if (ntype == "ie")
	{
		target.removeNode(true);
	}
	else
	{
		target.parentNode.removeChild(target);
	}
}

function GetNType()
{
	return document.body.removeNode != undefined ? "ie" : "mf";
}

function PostToPage(formID, url, method, disableButton, target)
{
	var form = document.getElementById(formID);
	if (form != null)
	{
		RemoveViewState(formID);
		form.method = method;
		form.action = url;
		if (target != null) form.target = target;
		form.submit();
		if (disableButton != false ) DisableButton();	
	}
}

function SelectChecked(strCheckControl, rqStream)
{
	if (rqStream != null && rqStream.replace(" ","") !="")
	{
		var ctl = eval("document.all." + strCheckControl);
		if (ctl == null)
		{
			return;
		}
		else
		{
			var s = rqStream.split(",");
			for(var i = 0; i < s.length;i++)
			{
				if (parseInt(ctl.value) == parseInt(s[i])) {ctl.checked = true;break;};
			}
		}
	}
}

function SelectValue(strSelectControl, value)
{
	var s = value;
	var bFind = false;
	var control = document.getElementById(strSelectControl);
	if (s != null && control != null)
	{
		for(var i = 0; i < control.options.length; i++)
		{
			control.options[i].selected = false;
			if (control.options[i].value == s)
			{
				control.options[i].selected = true;
				bFind = true;
			}
		}
		if (bFind == false)
		{
			control.selectedIndex = 0;
		}
	}
}

//2005年4月12日17时51分 
//功能：页面查询字符串设置/获取

/**************
  功能说明：自定义对象，包含了设置/获取当前面查询字符串的各种方法.使用时先创建该对象
            PageQueryString 初始化后，会将 location.search 中的内容以 "&" 为分隔符拆分入 qsBox 数组
            qsBox 数组中的元素形如 qsBox[0] = "sortid=5" ;qsBox[1] = "newsid=1";
            例：[1] var myPageQS = new PageQueryString();
  成员说明：
            属性：
            queryString : 当前页的查询字符串
            qsBox       : 将 queryString 查询字符串按键/值分组后的数组，每个元素的值都形如 "a=3"
            qsKey       : 将 qsBox 中的每个元素以 "=" 为分隔拆分后的结果， qsKey 存放 "=" 左边的键名
            qsValue     : 将 qsBox 中的每个元素以 "=" 为分隔拆分后的结果， qsValue 存放 "=" 右边的键值，为 "" 的值也存放在其中
            
            方法：
            SplitKeyValue(keyValueArray,returnKey,returnValue)
            CombKeyAndValue(key,value)
            GetKeyValue(keyName,keySet,valueSet)
            SetKeyValue(keyValue,keySet,valueSet,combQueryString)
            GetFieldsValue(keyString,keySet,valueSet)
            SetFieldsValue(keyValueString,keySet,valueSet)
**************/
function PageQueryString()
{
  this.queryString = location.search.replace("?",""); //当前页的查询字符串
  this.qsBox = this.queryString.split("&"); //将查询字符串按键/值分组后的数组
  this.qsKey = new Array(); //存储键，用索引和 this.qsValue 一一对应
  this.qsValue = new Array(); //存储值
  this.SplitKeyValue = SplitKeyValue;
  this.SplitKeyValue(this.qsBox,this.qsKey,this.qsValue);
  this.CombKeyAndValue = CombKeyAndValue;
  this.GetKeyValue = GetKeyValue;
  this.SetKeyValue = SetKeyValue;
  this.GetFieldsValue = GetFieldsValue;
  this.SetFieldsValue = SetFieldsValue;
}

/**************
  功能说明：将形如 qsBox 数组中的数据进行进一步拆分，以 "=" 为分隔符，"="左边为键名，右边为键值.
            拆分后，将键名存入 returnKey，键值存入 returnValue，returnKey和returnValue中的数据用数组索引一一对应
            当形如 "SortID=5" 的字符串被拆分后 returnKey[i] = sortid , returnValue[i] = 5 .拆分时会自动将键名转为小写形式
            形如 "SortID=" 的字符串被拆分后 returnKey[i] = sortid , returnValue[i] = ""
            当 PageQueryString 对象初始化后，自动调用 splitKeyValue ，并根据 qsBox 中的数据将拆分结果返回到 qsKey 和 qsValue 中
  参数说明：
    
    本方法可以自由调用～
    keyValueArray : 取形如 qsBox 的字符串数组，数组可以只有一个元素.
    returnKey     : 形如 new Array()，用来存放拆分后的键名，该键名将使用数组索引与 returnValue 中的元素一一对应
    returnValue   : 形如 new Array()，用来存放拆分后的键值，该键名将使用数组索引与 returnKey 中的元素一一对应
**************/
function SplitKeyValue(keyValueArray,returnKey,returnValue)
{
  for(var i = 0; i < keyValueArray.length; i++)
  {
    var temp = keyValueArray[i].split("=");
    if (temp.length == 2 && temp[0] != "")
    {
      returnKey[i] = temp[0].toLowerCase( );
      returnValue[i] = temp[1];
    }
  }
}

/**************
  功能说明：将形如 qsKey 和 qsValue 的数组中的数据，按照索引一一对应成 "qsKey=qsValue" 的形式.
            执行前会先检查 qsKey 和 qsValue 中的元素个数是否相等，并且当 qsValue 中的数值为空("")时，将跳过这个键值对.
  参数说明：
    key     : 至少包含一个元素的数组
    value   : 数组包含的元素个数必需和 key 所指定的数组中的元素个数相等
    返回值　: 形如 "sortid=1&newsid=3"，key 和 value 数组均可以只有一个元素，此时组合结果形如 "sortid=1"
**************/
function CombKeyAndValue(key,value)
{
  var innerQS = "";
  if ((key.length == value.length) && key[0] != "")
  {
    for(var i = 0; i < key.length; i++)
    {
      if (value[i] != "")
      {
        innerQS += key[i] + "=" + value[i] + "&";
      }
    }
  }
  if (innerQS.substr(innerQS.length-1,1) == "&")
  {
    innerQS = innerQS.substring(0,innerQS.length-1);
  }
  return innerQS;
}

/**************
  功能说明：从 keySet 中寻找指定的 keyName 键名，并返回 valueSet 中相应索引处的值
            在将 keyName 和 keySet 中的键名相比较时，会先把 keyName 转为小写形式
  参数说明：
    keyName : 需要返回值的键名
    keySet  : 键名数组，一般使用 PageQueryString 对象的 qsKey .
    valueSet: 键值数组，一般使用 PageQueryString 对象的 valueSet: .
**************/
function GetKeyValue(keyName,keySet,valueSet)
{
  var value = "";
  for(var i = 0; i < keySet.length; i++)
  {
    if (keySet[i] == keyName.toLowerCase())
    {
      value = valueSet[i];
    }
  }
  return value;
}

/**************
  功能说明：在当前的 keySet 中寻找相应的键名，并修改相应索引处 valueSet 的值，如果不存在该键名则创建它.创建时键名会转为小写形式存储
  参数说明：
    keyValue        : 形如 "s=5" 的字符串，只可以包含一个键值对.需要同时设置多个键的值请用 SetFieldsValue .
    keySet          : 键名数组，一般使用 PageQueryString 对象的 qsKey .
    valueSet        : 键值数组，一般使用 PageQueryString 对象的 valueSet: .
    modifySource    : 是否更新 keySet 和 valueSet 中的值
                      true  :更新
                      flase :不更新
    combQueryString : 
                      true  :重新组合 keySet 和 valueSet 中的内容，并返回形如 "a=5&b=3" 形式的字符串
                      false :不组合，返回 "";
**************/
function SetKeyValue(keyValue,keySet,valueSet,modifySource,combQueryString)
{
  var tempValue;
  var iPos;
  //alert("begin:setKeyValue:" + keyValue + "\n" + "keySet:" + keySet + "\n" + "valueSet:" + valueSet);
  var temp = keyValue.split("=");
  var newCombQueryString = "";
  if (temp.length == 2)
  {
    var modify;
    modify = false;
    for(var i = 0; i < keySet.length; i++)
    {
      if (keySet[i] == temp[0].toLowerCase())
      {
        tempValue = valueSet[i];
        iPos = i;
        valueSet[i] = temp[1];
        modify = true;
      }
    }
    if (modify == false)
    {
      keySet[keySet.length] = temp[0].toLowerCase();
      valueSet[valueSet.length] = temp[1];
    }
  }
  if (combQueryString == true)
  {
    newCombQueryString = this.CombKeyAndValue(keySet,valueSet);
  }
  if (modifySource == false)
  {
    if (modify == true)
    {
      valueSet[iPos] = tempValue;
    }
    else
    {
      keySet.splice(keySet.length - 1,1);
      valueSet.splice(valueSet.length - 1,1);
    }
  }
  //alert("End:\nsetKeyValue:" + keyValue + "\n" + "keySet:" + keySet + "\n" + "valueSet:" + valueSet + "\nresult:" + newCombQueryString);
  return newCombQueryString;
}

/**************
  功能说明：以 "a=1&b=2&c=3" 的形式返回多个指定键组合成的查询字符串，没有则返回 ""
  参数说明：
    keyString : 以 "a&b&c" 的形式输入需要查询的键名，其中 a,b,c 为要查询的键名，没有大小写要求.
    keySet    : 键名数组，一般使用 PageQueryString 对象的 qsKey .
    valueSet  : 键值数组，一般使用 PageQueryString 对象的 valueSet: .
    返回值    : 当某个键值为 "" 或不存在该键时，返回字符串中将不会出现该键值对
**************/
function GetFieldsValue(keyString,keySet,valueSet)
{
  var innerKeySet = keyString.toLowerCase().split("&");
  var result = "";
  for(var i = 0; i < innerKeySet.length; i++)
  {
    var tempKeyValue = this.GetKeyValue(innerKeySet[i],keySet,valueSet);
    if (tempKeyValue != "")
    {
      result += innerKeySet[i] + "=" + tempKeyValue + "&";
    }
  }
  if (result.substr(result.length-1,1) == "&")
  {
    result = result.substring(0,result.length-1);
  }
  return result;
}

/**************
  功能说明：以 "a=1&b=2&c=3" 的形式设置多个指定键的值，没有则创建该键，完成后返回形如 "a=1&b=2&c=3" 的设置结果.
  参数说明：
    keyValueString  : 以 "a&b&c" 的形式输入需要查询的键名，其中 a,b,c 为要查询的键名，没有大小写要求.
    keySet          : 键名数组，一般使用 PageQueryString 对象的 qsKey .
    valueSet        : 键值数组，一般使用 PageQueryString 对象的 valueSet: .
    modifySource    : 是否更新 keySet 和 valueSet 中的值
                      true  :更新
                      flase :不更新
    返回值          : 当某个键值为 "" 或不存在该键时，返回字符串中将不会出现该键值对
**************/
function SetFieldsValue(keyValueString,keySet,valueSet,modifySource)
{
  var result = "";
  var keyValue = keyValueString.split("&");
  //alert("11:" + keyValue);
  for(var i = 0; i < keyValue.length; i++)
  {
    this.SetKeyValue(keyValue[i], keySet, valueSet,modifySource, false);
  }
  result = this.CombKeyAndValue(keySet,valueSet);
  return result;
}
////////////////////////////王越 8 September 10:35 验证
//验证手机
function IsMobile(str)
{
  var reg=/^1\d{10}$/;
  if(reg.test(str))
    return true;
  else
    return false;
}
//验证国家编码
function IsCountryNumber(str)
{
  var reg=/^\d{2,5}$/;
  if(reg.test(str))
    return true;
  else
    return false;
}
//验证地区编码
function IsCityNumber(str)
{
  var reg=/^\d{3,4}/;
  if(reg.test(str))
    return true;
  else
    return false;
}
//验证电话
function IsPhoneNumber(str)
{
    var reg=/^\d{7,8}$/;
    if(reg.test(str))
      return true;
    else
      return false;
}
//验证分机号
function IsExtensionNumber(str)
{
    var reg=/^\d{1,8}$/;
    if(reg.test(str))
      return true;
    else
      return false;
}
//验证邮箱
function IsEmail(str)
{
  var reg=/^[^\._ ][\w\._]+@[\w\d\-]+\.[\w]+[\.]?[\w]*?[\.]?[\w]*$/;
  if(reg.test(str))
    return true;
  else
    return false;
}
//验证邮编
function IsZipCode(str)
{
    var reg=/^\d{1,6}$/;
    if(reg.test(str))
        return true;
    else
        return false;
}

function CopyText(htmlText){
	window.clipboardData.setData("text",htmlText);
	alert("已经把内容复制到剪贴版，您可以用 CTRL+V 粘贴。");
}

function ChangeSearch(key,value)
{
    if(value == "0") return;
    var result = "";
    qs = location.href;
    var param = qs.split('?');
    result = param[0] + "?" + key + "=" + value;
    /*if(param[1] != null && param[1] != "")
    {
        if(param[1].indexOf(key) != -1)
        {
            result = qs.replace(new RegExp(key + "=\\w*"),key + "=" + value);
        }
        else
        {
            result = qs + "&" + key + "=" + value;
        }
    }
    else
    {
        result = qs + "?" + key + "=" +value;
    }*/
    location.href = result;
}