////////////////////////////////////////////////////////
// 作者：
// 功能：按钮图标切换的函数
// 创建日期：
// 修改日期：
////////////////////////////////////////////////////////

function isValidBrowser() {
  var s = navigator.userAgent;
  if (s.indexOf("MSIE") == -1)
  {
    return false;
  }
  var ss = s.split(" ");
  var i=0;
  var version = 0;
  for(i=0;i<ss.length;i++)
  {
    if ( ss[i]=="MSIE" ) {
      version = ss[i+1].substring(0,1);
      break;
    }
  }
  if (version < 5) {
    return false;
  }
  return true;
}

function isCookieEnabled() {
  return window.navigator.cookieEnabled;
}
// Create a cookie with the specified name and value.
// The cookie expires at the end of the 20th century.
function SetCookie(sName, sValue,expires)
{
  var expireStr = "";
  var expireDate = new Date();
  var offset = 0-expireDate.getTimezoneOffset();
  offset = 0;
  var now = new Date();
  if (expires == 0) {
    expireDate = new Date(expireDate.valueOf()+offset*60*1000-86400000);
    expireStr = "; expires="+expireDate.toUTCString()+";";
  }
  else if (expires > 0){
    expireDate = new Date(expireDate.valueOf()+offset*60*1000+expires*1000);
    expireStr = "; expires="+expireDate.toUTCString()+";";
  }
//  alert(expireStr);
  document.cookie = sName + "=" + escape(sValue) + expireStr;

}

// Retrieve the value of the cookie with the specified name.
function GetCookie(sName)
{
  // cookies are separated by semicolons
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    // a name/value pair (a crumb) is separated by an equal sign
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0])
      return unescape(aCrumb[1]);
  }
  // a cookie with the requested name does not exist
  return "";
}



function confirmModifyRate() {
  //louyang 2002.1.11
  //return confirm("您即将修改您的计费策略。根据您选择的计费策略，系统可能会立即扣款！\n您确定要修改当前计费策略吗？");
  return confirm("您确定要修改计费策略吗？");
}

function confirmDeleteRate() {
  return confirm("您确定要删除计费策略吗？");
}

function confirmAddOrder(i) {
  if (i == '1'){
    return confirm("根据您选择的计费策略,系统会立即扣费\n\n       您确定要开通该业务吗？");
  }else{
    return confirm("您确定要开通该业务吗？");
  }
}
//louyang 2002.1.15
function confirmOpenView() {
  return confirm("您确定要开通视讯业务吗？");
}

function confirmDeleteView() {
  return confirm("您确定要取消视讯业务吗？");
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}





////////////////////////////////////////////////////////
// 作者：zhanyb
// 功能：客户端数据监测
// 创建日期：2000/6/10
// 修改日期：2000/7/06
////////////////////////////////////////////////////////

var	MsgBufSize=8;
var	Message	= new Array(MsgBufSize);
var	MsgFieldError ="参数输入错误，域名：";
Message[0]="删除该集团以及所有成员,是否确定?";
Message[1]="不能同时输入分机号和真实手机号";
Message[2]="分机号和真实手机号不能同时为空";
Message[3]="两次输入的密码不相同";
Message[4]="集团号，集团名称不能同时为空";
Message[5]="集团号，集团名称不能同时输入";
Message[6]="集团号必须以省号开头";
Message[7]="本系统对字符 ，'\"\\|;!><$ 敏感，请避免输入这些字符";
////////////////////////////////////////////////////////
// 显示报警消息正文
////////////////////////////////////////////////////////
function Refocus(field){
  field.focus();
  if (field.type=="text")
  {
    field.select();
  }
}

function DspAlert1(field,casenum,msg){
  var	temp;
  if(msg == null) msg = "";
  Refocus(field);
  temp=Schelmttl(field.name,casenum);
  alert('\n'+MsgFieldError+temp+msg+'\n');
}

function DspAlert(field,casenum){
  var	temp;
  Refocus(field);
  temp=Schelmttl(field.name,casenum);
  alert('\n'+MsgFieldError+temp+'\n');
}

function DAlert(field,msg){
//	  var temp;
  Refocus(field);
//	  temp=Schelmttl(field.name,casenum);
  alert('\n'+msg);
}

////////////////////////////////////////////////////////
// trim	一个字符串
////////////////////////////////////////////////////////
function trim(sData)
{
        if (sData == null)
          return "";
  while ((sData.length >0) &&	(( sData.charAt(0)==' '	 ) ||( sData.charAt(0)=='\t'  )))
  {
    sData=sData.substring(1,sData.length);
  }

  while ((sData.length >0) &&	(( sData.charAt(sData.length-1)==' '  )||sData.charAt(sData.length-1)=='\t'	))
  {
    sData=sData.substring(0,sData.length-1);
  }
  return sData;
}
////////////////////////////////////////
// 描述：去掉字符串中前后的空格和前面的0
////////////////////////////////////////
 function trimnum(sData)//去空格和0
 {
     if(sData == null)
     {
         return "";
     }
     while ((sData.length >0) &&(( sData.charAt(0)=='0' && sData.length > 1) || ( sData.charAt(0)==' ') ||( sData.charAt(0)=='\t'  )||( sData.charAt(0)=='\n'  )||( sData.charAt(0)=='\r')))
     {
         sData=sData.substring(1,sData.length);
     }

     while ((sData.length >0) &&	(( sData.charAt(sData.length-1)==' '  )||sData.charAt(sData.length-1)=='\t' ||sData.charAt(sData.length-1)=='\n' ||sData.charAt(sData.length-1)=='\r'	))
     {
         sData=sData.substring(0,sData.length-1);
     }
     return sData;
 }
/////////////////////////////////e///////////////////////
// 取得当前日期,格式yyyy-mm-dd
////////////////////////////////////////////////////////
function GetCurrentDate()
{
    var Year=0;
        var Month=0;
        var Day=0;
        var CurrentDate = new Date();

        return ChangeDateToString(CurrentDate);
}

////////////////////////////////////////////////////////
// 取得当前日期,若干天前后的日期,格式yyyy-mm-dd
////////////////////////////////////////////////////////
function GetDate(day)
{
    var ms=0;
        var CurrentDate = new Date();
    ms= CurrentDate.getTime();
    ms= ms + day*24*60*60*1000;
        var NewDate = new Date(ms);
    var sNewDate;
        sNewDate= ChangeDateToString(NewDate);
        return sNewDate;
}

////////////////////////////////////////////////////////
// 将日期类型转换成字符串型格式yyyy-mm-dd
////////////////////////////////////////////////////////
function ChangeDateToString(DateIn)
{
    var Year=0;
        var Month=0;
        var Day=0;
        var CurrentDate="";

        //初始化时间
        Year      = DateIn.getYear();
        Month     = DateIn.getMonth()+1;
        Day       = DateIn.getDate();

        CurrentDate = Year + "-";
        if (Month >= 10 )
        {
            CurrentDate = CurrentDate + Month + "-";
        }
        else
        {
            CurrentDate = CurrentDate + "0" + Month + "-";
        }
        if (Day >= 10 )
        {
            CurrentDate = CurrentDate + Day ;
        }
        else
        {
            CurrentDate = CurrentDate + "0" + Day ;
        }

        return CurrentDate;
}
////////////////////////////////////////////////////////
// 验证是否为空
////////////////////////////////////////////////////////
function ValidNull(field,casenum,AllowNull)	{
  if ((field.value.length==0 && AllowNull==true) ||
     field.value.length!=0 ){
    return true;
  }
  else {
    DspAlert(field,casenum);
    return false;
  }
}
////////////////////////////////////////////////////////
// 验证不能输入
// 作者：duym
////////////////////////////////////////////////////////
function BeNull(field,casenum)
{
  // field 有值时出错
  if ((field.value != null)&&(field.value != ""))
  {
  DspAlert1(field,casenum,"此参数不能输入");
  return false;
  }
  // field 无值时对
  return true;
}

////////////////////////////////////////////////////////
// 验证仅包含字母与数字
////////////////////////////////////////////////////////
function ValidKey(field,casenum) {
  var	valid =	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  var	ok = "yes";
  var	temp;
  for	(var i=0; i<field.value.length;	i++) {
    temp = "" +	field.value.substring(i, i+1);
    if (valid.indexOf(temp)	== "-1") ok	= "no";
  }
  if (ok == "no")	{
    DspAlert(field,casenum);
    return false;
  }
  return true;
}
////f//////////////////////////////////////////////////
//验证所有字符都在指定的字符集中
/////////////////////////////////////////////////////
 function letterInclude(sData,include){
    var i,templetter;
    if(include == null || include == "")
      return flase;
    for(i = 0;i <sData.length;i++){
       templetter = sData.charAt(i);
       if(include.indexOf(templetter) < 0)
         return false;
    }
    return true;
 }

//////////////////////////////////////////////////////
//验证所有字符都不在指定的字符集中
/////////////////////////////////////////////////////
 function letterNotInclude(sData,notinclude){
    var i,templetter;

    if(notinclude == null || notinclude == "")
      return true;
    for(i = 0;i <sData.length;i++){
       templetter = sData.charAt(i);
       if(notinclude.indexOf(templetter)>=0)
         return false;
    }
    return true;
 }

////////////////////////////////////////////////////////
// 验证第一个为字母,其他为字母与数字
////////////////////////////////////////////////////////
function ValidId(field,casenum)	{
  var	firstvalid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  var	valid =	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  var	ok = "yes";
  var	temp;

  if (firstvalid.indexOf(field.value.substring(0,	1))=="-1")
     {ok = "no"}
  else
     {
      for (var i=0;	i<field.value.length; i++) {
        temp = ""	+ field.value.substring(i, i+1);
        if (valid.indexOf(temp) == "-1") ok =	"no";
      }
     }
  if (ok == "no")	{
    DspAlert(field,casenum);
    return false;
  }
  return true;
}


////////////////////////////////////////////////////////
// 验证不包含特殊保留字的字符串,可以输入中文
////////////////////////////////////////////////////////
function ValidInvaKey(field,casenum) {
  var	invalid	;
  var	find = "no";
  var	temp;
  //begin v100r002.1 d123 IT21PT-461-E13891 zhuchengfang 2003-04-17
  //icpname,servicename,nodename检验时casenum=0
  //url检验时casenum=1
  //站点介绍、业务介绍 检验时casenum =2
  if (casenum == "0"){
  invalid = ",'\"\\|;!><$()<>:";
  }else if(casenum == "1"){
  invalid = ",'\"\\|;!><$()<>";
  }else{
  invalid = "\\\|!><$()<>";
  }
  //end v100r002.1 d123 IT21PT-461-E13891 zhuchengfang 2003-04-17
  for	(var i=0; i<field.value.length;	i++) {
    temp = "" +	field.value.substring(i, i+1);
    if (invalid.indexOf(temp) != -1) find =	"yes";
  }
  if (find ==	"yes") {
    Refocus(field);
    alert('\n'+"本系统对字符 "+invalid+" 敏感，请避免输入这些字符"+'\n');  //modify v100r002.1 d123 IT21PT-461-E13891 zhuchengfang 2003-04-17
    return false;
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证零
////////////////////////////////////////////////////////
function ValidZero(field,casenum) {
  if (field.value	== 0) {
    DspAlert(field,casenum);
    return false;
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证是否为整数(前后不可有空格)
// 输入:域名,操作索引号
// 输出:
//	   1、是整数，true
//	   2、不是整数，false，同时在浏览器中弹出消息框，指明哪个域输入非法
////////////////////////////////////////////////////////
function ValidDigit(field,casenum) {
  var	valid =	"0123456789";
  var	ok = "yes";
  var	temp;
  var	start =	0;

  //判断是否为负数
  if ( field.value.substring(start, start+1) == "-" )
  {
    start=1;
  }
  for	(var i=start; i<field.value.length;	i++) {
    temp = "" +	field.value.substring(i, i+1);
    if (valid.indexOf(temp)	== "-1") ok	= "no";
  }
  if (ok == "no")	{
     DspAlert(field,casenum);
     return false;
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证仅包含数字(大于等于0)
////////////////////////////////////////////////////////
function ValidDigitNotLessZero(field,casenum) {
  var	valid =	"0123456789";
  var	ok = "yes";
  var	temp;
  for	(var i=0; i<field.value.length;	i++) {
    temp = "" +	field.value.substring(i, i+1);
    if (valid.indexOf(temp)	== "-1") ok	= "no";
  }
  if (ok == "no")	{
     DspAlert(field,casenum);
     return false;
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证日期
////////////////////////////////////////////////////////
function ValidDate(field,casenum) {
// Checks for the following	valid date formats:
// YY/MM/DD	  YYYY/MM/DD   YY-MM-DD	  YYYY-MM-DD
// Also	separates date into	month, day,	and	year variables

//	var	datePat	= /^(\d{2}|\d{4})(\/|-)(\d{1,2})(\/|-)(\d{1,2})$/;
  var	datePat	= /^(\d{2}|\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
// To require a	4 digit	year entry,	use	this line instead:
  var	dateStr=field.value;
  var	matchArray = dateStr.match(datePat); //	is the format ok?
  if (matchArray == null)	{
    DspAlert(field,casenum);
    return false;
  }
  year = matchArray[1]; // parse date	into variables
  month =	matchArray[3];
  day	= matchArray[5];

  if (year.length!=4 || month.length!=2 || day.length!=2)	{
    DspAlert(field,casenum);
    return false;
  }

  if (month <	1 || month > 12) { // check	month range
    DspAlert(field,casenum);
    return false;
  }
  if (day	< 1	|| day > 31) {
    DspAlert(field,casenum);
    return false;
  }

  if ((month==4 || month==6 || month==9 || month==11)	&& day==31)	{
    DspAlert(field,casenum);
    return false;
  }
  if (month == 2)	{ // check for february	29th
    var	isleap = (year % 4 == 0	&& (year % 100 != 0	|| year	% 400 == 0));
    if (day>29 || (day==29 && !isleap))	{
      DspAlert(field,casenum);
      return false;
    }
  }
  return true;  // date is valid
}

////////////////////////////////////////////////////////
// 验证时间(12)	王明虎 2000-07-23 未被引用，注释掉
////////////////////////////////////////////////////////
//function ValidTimeFmt(field,casenum) {
// Checks if time is in	HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.
//
//	  var timePat =	/^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
//	  var timeStr=field.value;
//	  var matchArray = timeStr.match(timePat);
//	  if (matchArray ==	null) {
//		  DspAlert(field,casenum);
//		  return false;
//	  }
//	  hour = matchArray[1];
//	  minute = matchArray[2];
//	  second = matchArray[4];
//	  ampm = matchArray[6];
//
//	  if (second=="") {	second = null; }
//	  if (ampm=="")	{ ampm = null }
//
//	  if (hour.length!=2 ||	minute.length!=2 ||	(second!=null && second.length!=2))	{
//		  DspAlert(field,casenum);
//		  return false;
//	  }
//
//	  if (hour < 0	|| hour	> 23) {
//		  DspAlert(field,casenum);
//		  return false;
//	  }
//	  if (hour <= 12 &&	ampm ==	null) {
//		  if (confirm(Message[9])) {
//			  DspAlert(field,casenum);
//			  return false;
//		  }
//	  }
//	  if (hour > 12	&& ampm	!= null) {
//		  DspAlert(field,casenum);
//		  return false;
//	  }
//	  if (minute<0 || minute > 59) {
//		  DspAlert(field,casenum);
//		  return false;
//	  }
//	  if (second !=	null &&	(second	< 0	|| second >	59)) {
//		  DspAlert(field,casenum]);
//		  return false;
//	  }
//	  return true;
//}
//
////////////////////////////////////////////////////////
// 验证报表日期格式
////////////////////////////////////////////////////////
function ValidYearMonth(field,casenum) {
// Checks for the following	valid date formats:
//	 YYYYMM
// Also	separates date into	month, day,	and	year variables

// To require a	4 digit	year entry,	use	this line instead:
  var	dateStr=field.value;

  if (dateStr	== null||dateStr==""){
     DspAlert(field,casenum);
       return false;
  }
    if(isNaN(dateStr)){
      DspAlert(field,casenum);
      return false;
    }
    if (dateStr.length!=6){
     DspAlert(field,casenum);
       return false;
  }
   year=dateStr.substring(0,4);
     month=dateStr.substring(4,6);

  if (month <	1 ||  month	> 12){
    DspAlert(field,casenum);
      return false;
  }
  return true;  // date is valid
}

////////////////////////////////////////////////////////
// 验证时间(24)
////////////////////////////////////////////////////////
function ValidTime(field,casenum) {
// Checks if time is in	HH:MM:SS format.

  var	timePat	= /^(\d{1,2}):(\d{2})(:(\d{2}))$/;
  var	timeStr=field.value;
  var	matchArray = timeStr.match(timePat);
  if (matchArray == null)	{
    DspAlert(field,casenum);
    return false;
  }
  hour = matchArray[1];
  minute = matchArray[2];
  second = matchArray[4];


  if (second=="")	{ second = null; }


  if (hour.length!=2 || minute.length!=2 || (second!=null	&& second.length!=2)) {
    DspAlert(field,casenum);
    return false;
  }

  if (hour < 0  || hour >	23)	{
    DspAlert(field,casenum);
    return false;
  }

  if (minute<0 ||	minute > 59) {
    DspAlert(field,casenum);
    return false;
  }
  if (second != null && (second <	0 || second	> 59)) {
    DspAlert(field,casenum);
    return false;
  }
  return true;
}
////////////////////////////////////////////////////////
//用户字符串比较大小
//验证num1是否是在"0"~"num2"之间
///////////////////////////////////////////////////////
function isBelow(num1,num2){
  num1 = trimnum(num1);
  num2 = trimnum(num2);
  if (!letterInclude(num1,"0123456789") || !letterInclude(num2,"0123456789"))
    return false;

  if(num1.length > num2.length || (num1.length == num2.length && num1 > num2))
    return false;

  return true;
}
////////////////////////////////////////////////////////
// 验证大小比较
////////////////////////////////////////////////////////
function ValidRange(field,casenum,Lower,Higher)
{
    if (field.value.length ==0)
        return true;

  if (field.value>=Lower && field.value<=Higher){
    return true;
  }
  else {
    //DspAlert(field,casenum);
    return false;
  }
}

////////////////////////////////////////////////////////
// 验证范围
////////////////////////////////////////////////////////
function ValidLength(field,casenum,Lower,Higher) {

  var	len = GetStrLen(field.value);	//主要是区别中文, added by ZhangJin
  if (len>=Lower && len<=Higher){
    return true;
  }
  else {
    DspAlert(field,casenum);
    return false;
  }
}


//取中文的字节数, added by ZhangJin
function GetStrLen(AStr)
{
  var nCount = 0;
  var nLenByte = AStr.length;
  for(nPos = 0;nPos<nLenByte;nPos ++)
  {
    if(AStr.charCodeAt(nPos)>256)
      nCount = nCount + 2;
    else
      nCount = nCount + 1;
  }
  //window.alert(nCount);
  return nCount;

}


////////////////////////////////////////////////////////
// 验证定长数字字符串
////////////////////////////////////////////////////////
function ValidNumLen(field,casenum,Lower,Higher,AllowNull) {
  if (!ValidNull(field,casenum,AllowNull)){
    return false;
  }
  //修改
  if (field.value.length==0 && AllowNull==true)  {
          return   true;
  } //修改。允许为空且字段确实为空则不检查长度和小数点。

  if (!ValidDigitNotLessZero(field,casenum)){
    return false;
  }

  if (!ValidLength(field,casenum,Lower,Higher)){
    return false;
  }
  return true;
}


////////////////////////////////////////////////////////
// 验证定大小范围数字字符串
////////////////////////////////////////////////////////
function ValidNumRng(field,casenum,Lower,Higher,AllowNull) {
  if (!ValidNull(field,casenum,AllowNull)){
    return false;
  }

  if (!ValidDigitNotLessZero(field,casenum)){
    return false;
  }

  if (!ValidRange(field,casenum,Lower,Higher)){
    return false;
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证定长字符串
////////////////////////////////////////////////////////
function ValidKeyLen(field,casenum,Lower,Higher,AllowNull) {
  if (!ValidNull(field,casenum,AllowNull)){
    return false;
  }

  if (!ValidKey(field,casenum)){
    return false;
  }

  if (!ValidLength(field,casenum,Lower,Higher)){
    return false;
  }
  return true;
}


////////////////////////////////////////////////////////
// 下面的数据为业务数据类型检查
////////////////////////////////////////////////////////

////////////////////////////////////////////////////////
// 验证口令
////////////////////////////////////////////////////////
function ValidOprPsw(field,casenum,AllowNull) {
  if (field.value.length==0 && AllowNull){
    return true;
  }

  if (!ValidNull(field,casenum,AllowNull)){
        return false;
  }

  if (!ValidKey(field,casenum)){
    return false;
  }

  if (!ValidLength(field,casenum,1,8)){
    return false;
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证密码相同
////////////////////////////////////////////////////////
function ValidSame(field1,field2,casenum) {
  if (field1.value!=field2.value){
    DspAlert1(field2,casenum,Message[3]);
    return false;
  }
  return true;
}





/******************************************************/




//------------------------------------------------------------------
/******************************************************/
/******************************************************/


////////////////////////////////////////////////////////
// 验证业务费率RATE
// 作者：duym
////////////////////////////////////////////////////////
function ValidRateRate(field,casenum)
{
  if(!ValidNull(field,casenum,false))
  {
    return false;
  }

  if (!ValidRange(field,casenum,0,2147483647))




  {
    return false;
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证业务费率类型
// 作者：duym
////////////////////////////////////////////////////////
function ValidRateType(field,casenum,scp)
{
    // 如未提供	scp	本参数必须提供,否则参数不能输入
  if (scp.selectedIndex == 0)
  {
    if (!ValidNull(field,casenum,false))
    {
    return false;
    }
  }
  // 否则参数不能输入
  else
  {
    if (!BeNull(field,casenum))
    {
    return false;
    }
  }
  return true;
}

////////////////////////////////////////////////////////
// 验证业务费率GR1
// 作者：duym
////////////////////////////////////////////////////////
function ValidRateGR1(field,casenum,scp,tp)
{
  // 如提供 SCP 号,本参数不能提供
  if (scp.selectedIndex	!= 0)
  {
  if (!BeNull(field,casenum))
  {
    return false;
  }
  }
  // 如未提供	SCP	号,本参数必须提供
  else
  {
  // 不可为空
  if (!ValidNull(field,casenum,false))
  {
    return false;
  }
  // 必须为整数
  if(!ValidDigit(field,casenum))
  {
    return false;
  }

  if(tp.value	== "2")
  {
    if(field.value < 0)
    {
    DspAlert(field,casenum);
    return false;
    }
  }
  }
  return true;
}



//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
//pps 业务的check
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////
//检查手机号码
//////////////////////////////////////////////////////////////////////////////////////
function ValidMsisdn(field,casenum,AllowNull)
{
  if (field.value.length==0 && AllowNull)
  {
    return true;
  }

  if (!ValidNull(field,casenum,AllowNull))
  {
    return false;
  }

  if (!ValidDigitNotLessZero(field,casenum))
  {
    return false;
  }

  if (!ValidLength(field,casenum,11,11))
  {
    return false;
  }
  return true;
}

//////////////////////////////////////////////////////////////////////////////////////
//检查手机密码
//////////////////////////////////////////////////////////////////////////////////////
function ValidMSUBPSWD(field,casenum,AllowNull)
{
  if (field.value.length==0 && AllowNull)
  {
    return true;
  }

  if (!ValidNull(field,casenum,AllowNull))
  {
    return false;
  }

  if (!ValidDigitNotLessZero(field,casenum))
  {
    return false;
  }

  if (!ValidLength(field,casenum,8,8))
  {
    return false;
  }
  return true;
}//end of function ValidMSUBPSWD(field,casenum,AllowNull)



//检查是否以零开始
function ValidNotStartZero(field,casenum)
{
    if(field.value.substring(0,1) == "0")
    {
     DspAlert(field,casenum);
     return false;
  }
}

////////////////////////////////////////////////////////////////////////////////
//根据省号取业务区/地区
//输入:
//    PROVINCENOLIST    省号列表输入框
//    SERVAREANOLIST    业务区/地区列表输入框
//    ServAreaStr       字符串,业务区列表,一个典型的列表如下
//                      "01|beijing|01|23|"&"03002001|广州|03|20|"&"03075501|深圳|03|755|"
//						注意:双引号已被换为\10
//    ServOrArea        要显示的是业务区还是地区号(1 业务区  2 地区)
//    AllowNull          业务区/地区可否为空
//    author            王明虎
//    date              2000-10-14
////////////////////////////////////////////////////////////////////////////////
function getArea_6(PROVINCENOLIST,SERVAREANOLIST,ServAreaStr,ServOrArea,AllowNull)
{
  var iPoint=0;
  var iStart=0;
  var iEnd=0;
  var iCount=0;
//    alert("go into getArea");
  deleteAllItems(SERVAREANOLIST);

  //允许为空,增加一个空值
  if ( AllowNull == true)
  {
        option= new Option("","" );
    SERVAREANOLIST.options[iCount]=option;
    iCount=1;
  }

  var sProvinceNo = PROVINCENOLIST.options[PROVINCENOLIST.selectedIndex].value;

  if ( sProvinceNo == "null" || sProvinceNo == "")
  {
    return;
  }


  ServAreaStr = "& " +ServAreaStr;

  while (iPoint != -1)
  {
    //去掉第一个&和'\10'
    ServAreaStr = ServAreaStr.substring(2,ServAreaStr.length);
//    	alert("ServAreaStr="+ServAreaStr);
    var  sOneServAreaNo;
    var  sOneServiceName;
    var  sOneProvinceNo;
    var  sOneAreaNo;

    //业务区号
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }

    sOneServAreaNo = ServAreaStr.substring(0,iEnd);

    //由于mvpn业务的业务区号要求为六位，所以需要截取前面六位
    if (iEnd>=6)
        sOneServAreaNo = sOneServAreaNo.substring(0,6);

    ServAreaStr = ServAreaStr.substring(iEnd +1,ServAreaStr.length);
//    	alert("ServAreaStr after sOneServAreaNo="+ServAreaStr);

    //业务区/地区名
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }
    sOneServiceName = ServAreaStr.substring(0,iEnd);
    ServAreaStr = ServAreaStr.substring(iEnd +1,ServAreaStr.length);
//    	alert("ServAreaStr after sOneServiceName="+ServAreaStr);

    //省名
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }
    sOneProvinceNo = ServAreaStr.substring(0,iEnd);
    ServAreaStr = ServAreaStr.substring(iEnd +1,ServAreaStr.length);
//    	alert("ServAreaStr after sOneProvinceNo="+ServAreaStr);

    //地区号
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }
    sOneAreaNo = ServAreaStr.substring(0,iEnd);

    //+2的目的在于删除紧跟的双引号
    ServAreaStr = ServAreaStr.substring(iEnd +2,ServAreaStr.length);
      //alert("ServAreaStr after sOneAreaNo="+ServAreaStr);

    //之列表特定省号的业务区/地区
    if (sOneProvinceNo != sProvinceNo)
    {
      iPoint = ServAreaStr.indexOf('&');
      continue;
    }

        var option;
        if (ServOrArea == 1)
        {
      //区业务区号
          option= new Option(sOneServAreaNo.substring(0,6) +"|"+ sOneServiceName,sOneServAreaNo );
        }
        else
        {
      //地区号
           option= new Option(sOneAreaNo+"|"+ sOneServiceName,sOneAreaNo);
        }

    SERVAREANOLIST.options[iCount]=option;
    iCount++;

    iPoint = ServAreaStr.indexOf('&');

  }//end of 	while (iPoint <> -1)
}//end of function getArea(PROVINCENOLIST,SERVAREANOLIST,ServAreaStr,ServOrArea)





////////////////////////////////////////////////////////////////////////////////
//根据省号取业务区/地区
//输入:
//    PROVINCENOLIST    省号列表输入框
//    SERVAREANOLIST    业务区/地区列表输入框
//    ServAreaStr       字符串,业务区列表,一个典型的列表如下
//                      "01|beijing|01|23|"&"03002001|广州|03|20|"&"03075501|深圳|03|755|"
//						注意:双引号已被换为\10
//    ServOrArea        要显示的是业务区还是地区号(1 业务区  2 地区)
//    AllowNull          业务区/地区可否为空
//    author            王明虎
//    date              2000-10-14
////////////////////////////////////////////////////////////////////////////////
function getArea(PROVINCENOLIST,SERVAREANOLIST,ServAreaStr,ServOrArea,AllowNull)
{
  var iPoint=0;
  var iStart=0;
  var iEnd=0;
  var iCount=0;
//    alert("go into getArea");
  deleteAllItems(SERVAREANOLIST);

  //允许为空,增加一个空值
  if ( AllowNull == true)
  {
        option= new Option("","" );
    SERVAREANOLIST.options[iCount]=option;
    iCount=1;
  }

  var sProvinceNo = PROVINCENOLIST.options[PROVINCENOLIST.selectedIndex].value;

  if ( sProvinceNo == "null" || sProvinceNo == "")
  {
    return;
  }


  ServAreaStr = "& " +ServAreaStr;

  while (iPoint != -1)
  {
    //去掉第一个&和'\10'
    ServAreaStr = ServAreaStr.substring(2,ServAreaStr.length);
//    	alert("ServAreaStr="+ServAreaStr);
    var  sOneServAreaNo;
    var  sOneServiceName;
    var  sOneProvinceNo;
    var  sOneAreaNo;

    //业务区号
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }

    sOneServAreaNo = ServAreaStr.substring(0,iEnd);

    //由于mvpn业务的业务区号要求为六位，所以需要截取前面六位
    //if (iEnd>=6)
    //    sOneServAreaNo = sOneServAreaNo.substring(0,6);

    ServAreaStr = ServAreaStr.substring(iEnd +1,ServAreaStr.length);
//    	alert("ServAreaStr after sOneServAreaNo="+ServAreaStr);

    //业务区/地区名
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }
    sOneServiceName = ServAreaStr.substring(0,iEnd);
    ServAreaStr = ServAreaStr.substring(iEnd +1,ServAreaStr.length);
//    	alert("ServAreaStr after sOneServiceName="+ServAreaStr);

    //省名
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }
    sOneProvinceNo = ServAreaStr.substring(0,iEnd);
    ServAreaStr = ServAreaStr.substring(iEnd +1,ServAreaStr.length);
//    	alert("ServAreaStr after sOneProvinceNo="+ServAreaStr);

    //地区号
    iEnd = ServAreaStr.indexOf( '|')
    if (iEnd == -1)
    {
      return;
    }
    sOneAreaNo = ServAreaStr.substring(0,iEnd);

    //+2的目的在于删除紧跟的双引号
    ServAreaStr = ServAreaStr.substring(iEnd +2,ServAreaStr.length);
      //alert("ServAreaStr after sOneAreaNo="+ServAreaStr);

    //之列表特定省号的业务区/地区
    if (sOneProvinceNo != sProvinceNo)
    {
      iPoint = ServAreaStr.indexOf('&');
      continue;
    }

        var option;
        if (ServOrArea == 1)
        {
          //区业务区号
            option= new Option(sOneServAreaNo+"|"+ sOneServiceName,sOneServAreaNo );

          //option= new Option(sOneServAreaNo.substring(0,6) +"|"+ sOneServiceName,sOneServAreaNo );
        }
        else
        {
      //地区号
           option= new Option(sOneAreaNo+"|"+ sOneServiceName,sOneAreaNo);
        }

    SERVAREANOLIST.options[iCount]=option;
    iCount++;

    iPoint = ServAreaStr.indexOf('&');

  }//end of 	while (iPoint <> -1)
}//end of function getArea(PROVINCENOLIST,SERVAREANOLIST,ServAreaStr,ServOrArea)

////////////////////////////////////////////////////////////////////////////////
//删除一个列表中的全部
//输入:
//    LISTNAME          列表输入框
//    author            王明虎
//    date              2000-10-14
////////////////////////////////////////////////////////////////////////////////
function deleteAllItems( LISTNAME )
{
    var length1 = LISTNAME.length;
    for (var i=0; i <length1; i++)
    {
      LISTNAME.options[0]=null;
    }
}//end of function deleteAllItems( LISTNAME )


/*
  手机号码检查函数。使用方法；以控件（field,casenum）为输入数据，经过该函数处理后，形成MML命令所需要的
  数据格式的字符串并把该字符串copy到控件setfield。因此在相应的servlet中需要从控件setfield中取数据。

  格式要求：控件某行中的数据是一个手机号码、一个手机号码段或包含跳过字符。单个手机号码的前后都允许出现跳过字符，号码段前后或中间也允许出现跳过字符。
*/


function MSISDNalert(WrongRow){
  alert("手机号码第"+WrongRow+"行输入有错");
}
function isValidMsisdn(InputStr){
  var len=InputStr.length;
  if ((len==11) || (len==0)){return true;} else {return false;}
}
function AnalyseMSISDN(pField,casenum,setfield)
{

  if (!ValidNull(pField,casenum,false)){
  return false;
  }

  if(pField.value.length>32768)
  {
    alert("号码总长度不能超过32K");
    Refocus(pField);

    return false;
  }
  var ArrMSISDN=pField.value.split("\n");
  if(ArrMSISDN.length>2000)
  {
    alert("号码行数不能超过2000行");
    Refocus(pField);

    return false;
  }

  var MSISDNNO="0123456789";//手机号码允许的数字。
  var SpanString=" 	-";//分隔字符
  var SkipString=unescape("%09")+unescape("%0D")+unescape("%20")//+unescape("%0D");//跳过字符:TAB键、空格、ENTER键
  var temOutputStr="";
  for (var j=0;j<ArrMSISDN.length;j++)//对textarea中每个值进行号码分析。
  {
        var MSISDN1="";
        var MSISDN2="";
        temMSISDN="";
        var AnalyseState=0;//0:未分析到数字或分析到跳过字符；1：第一次分析数字；
        //2：分析到分隔字符；3：第二次分析数字；4：第二次分析数字完毕，遇到其它符号
  for (var i=0;i<ArrMSISDN[j].length;i++){
    var tempStr=ArrMSISDN[j].substring(i,i+1);
    switch(AnalyseState){
      case 0:
         if (MSISDNNO.indexOf(tempStr)>=0){
          AnalyseState=1;
          MSISDN1=MSISDN1+tempStr;
          break;
         }
         if (SkipString.indexOf(tempStr)>=0){
          break;
         }
               MSISDNalert(j+1);
               return false;
      case 1:
         if (MSISDNNO.indexOf(tempStr)>=0){
          MSISDN1=MSISDN1+tempStr;
          break;
         }
         if (SpanString.indexOf(tempStr)>=0){
            AnalyseState=2;
            break;
         }
         if (SkipString.indexOf(tempStr)>=0){
                    AnalyseState=4;
                    break;
         }
               MSISDNalert(j+1);
               return false;
      case 2:
         if (SpanString.indexOf(tempStr)>=0){
            break;
         }
         if (MSISDNNO.indexOf(tempStr)>=0){
          MSISDN2=MSISDN2+tempStr;
          AnalyseState=3;
          break;
         }
         if (SkipString.indexOf(tempStr)>=0){
                    AnalyseState=4;
                    break;
         }
               MSISDNalert(j+1);
               return false;
      case 3:
         if (MSISDNNO.indexOf(tempStr)>=0){
          MSISDN2=MSISDN2+tempStr;
          break;
         }
         if (SkipString.indexOf(tempStr)>=0){
                    AnalyseState=4;
                    break;
         }
               MSISDNalert(j+1);
               return false;
      case 4:
         if (SkipString.indexOf(tempStr)>=0){
            break;
         }
               MSISDNalert(j+1);
               return false;
      default:
               MSISDNalert(j+1);
               return false;
    }
  }
  if (!isValidMsisdn(MSISDN1)){
          MSISDNalert(j+1);
    return false;
  }
  if (!isValidMsisdn(MSISDN2)){
          MSISDNalert(j+1);
    return false;
  }
  if ((MSISDN1!="") && (MSISDN2!="")){
    if (MSISDN1>MSISDN2){
          MSISDNalert(j+1);
       return false;
    }
    temMSISDN=MSISDN1+"&&"+MSISDN2;
  }
  if ((MSISDN1!="") && (MSISDN2=="")){
    temMSISDN=MSISDN1;
  }
  if ((MSISDN1=="") && (MSISDN2!="")){
    temMSISDN=MSISDN2;
  }
  if ((MSISDN1=="") && (MSISDN2!="")){
    temMSISDN="";
  }

  if (temMSISDN!=""){
    if (temOutputStr==""){temOutputStr=temMSISDN;}
    else{temOutputStr=temOutputStr+"&"+temMSISDN;}
  }
  };
  if(temOutputStr==""){DspAlert(pField,casenum);return false;}
  setfield.value=temOutputStr;
  return true ;
}






//本函数可直接调用，也为setValue()服务
//当需要对某下拉列表初始化时，即可调用此函数
//函数名:setOptions
//函数参数格式:
//		parentvalue,上一级父节点的取值，它与linkage共同筛选options[]中的选项;
//		index,需要被初始化的下拉列表的索引
function setOptions(parentvalue,index)
{
//函数流程
//1.合法性检查
//2.取得options
//3.取得option_index
//4.取得linkage
//5.重构option

//合法性检查
if(index<0||index>=SelectList.length)
  return;

//定义变量
var select = SelectList[index];
var all=(parentvalue==''||parentvalue=='Null'||parentvalue=='null'||parentvalue=='NULL');

//取得options
var soptions = SelectOptions[index];
//取得option_index
var soption_index = SelectOptionIndexes[index];
//取得linkage
var slinkage = linkage[index];

//清空
select.options.length=0;
//重构option
for(var i=0;i<soptions.length;i++)
{
  //全部取出或符合条件
  if(all||soptions[i][slinkage]==parentvalue)
  {
    var val = soptions[i][soption_index[0]];
    var dsp = val;
    for(j=1;j<soption_index.length;j++)
    {
      dsp += '|'+ soptions[i][soption_index[j]]
    }
    select.options[select.options.length] = new Option(dsp,val);
  }
}//end of for


}

//本函数为setValues()服务
//当需要将有联动关系的两个select的同步时，将调用此函数
//函数名:setValue
//函数参数格式:index,表示当前节点的索引;childindex，表示需要改变的子节点的索引
function setValue(index,childindex)
{
//函数流程
//1.合法性检查
//2.调用setOptions()
//3.取得缺省值,赋值

//合法性检查
if(index<0||index>=SelectList.length)
  return;
if(childindex<0||childindex>=SelectList.length)
  return;
if(index>=childindex)
  return;
//若父节点值为空则返回
var parentvalue=SelectList[index].value;
if(parentvalue==''||parentvalue=='Null'||parentvalue=='null'||parentvalue=='NULL')
  return;

//调用setOptions()
setOptions(parentvalue,childindex);

//取得缺省值,赋值
SelectList[childindex].value=SelectDefaults[childindex];

}

//本函数为多级联动服务
//当某一select的值变动时，将调用此函数
//函数名:setValues
//函数参数格式:index,当前下列列表框在多级联动中的索引
function setValues(index)
{
//函数流程
//1.参数合法性判断
//2.寻找一级子节点
//3.若无子节点，则返回,若有子节点，则重复以下步骤
//4.对每个子节点调用setValue(index,childindex)
//5.对每个子节点调用setValues(childindex)

//参数合法性判断
if(index<0||index>=SelectList.length)
  return;
//若当前值为空则返回
var val=SelectList[index].value;
if(val==''||val=='Null'||val=='null'||val=='NULL')
  return;

//寻找一级子节点
for(var i=index+1;i<mask.length;i++)
{
  if(mask[i]==index)
  {
    //对每个子节点调用setValue(index,childindex)
    setValue(index,i);
    //对每个子节点调用setValues(childindex)
    setValues(i);
  }
}

return;

}


function isCorrect(field,pattern,title,optional){
  if (field.value==""){
    if (optional=="true")
      return true;
    else{
      alert("请输入“"+title+"”!");
      field.focus();
      return false;
    }
  }else{
    if (!pattern.test(field.value)){
      alert("对不起，您输入的“"+title+"”格式不对，请检查并重新输入!");
      field.focus();
      field.select();
      return false;
    }
    else
      return true;
  }
}
function satisfy(exp,help){
  exp=exp.replace( /\$([A-Za-z0-9_]+\b)/g,"document.data.$1.value");
  if (eval(exp))
    return true;
  else{
    alert(help);
    return false;
  }
}


