﻿//关闭 Loadding

try
{
    hideWait();   
}
catch(e)
{
}

var __STRING_QUOTE_SYM__ = '"'

var _ESC_ = {}
_ESC_['"'] = escape('"')
_ESC_["'"] = escape("'")
_ESC_["\r"] = escape("\r")
_ESC_["\n"] = escape("\n")
_ESC_[">"] = escape(">")
_ESC_["<"] = escape("<")

var _UNESC_ = {}
_UNESC_[escape('"')] = '"'
_UNESC_[escape("'")] = "'"
_UNESC_[escape("\r")] = "\r"
_UNESC_[escape("\n")] = "\n"
_UNESC_[escape(">")] = ">"
_UNESC_[escape("<")] = "<"

function kwSubstitute(s, kw) {
  if (!s || !kw) 
      return s
  var v = s || "" + s
  for (k in kw) 
      v = v.split(k).join(kw[k])
  return v
}

function isUndefined(x) {
   if (typeof x == 'undefined')
       return true
   return false
}


var __test_o__ = new Object()
var __string_constructor__ = "".constructor
var __list_constructor__ = [].constructor
var __dict_constructor__ = {}.constructor
var __object_constructor__ = __test_o__.constructor
var __native_code__ = Object.constructor


function ToCodeString(v, quotestring) {
  switch (v.constructor) {
      case __string_constructor__:
           if (quotestring) 
              return quoteString( kwSubstitute(v, _ESC_) )
           else
              return kwSubstitute(v, _ESC_)  
      case __list_constructor__:
           var ar=[] 
           for (var i=0; i<v.length;i++)
                ar[i] = ToCodeString(v[i],true)
           return '['+ar.join(',')+']'
           break
      case __dict_constructor__:
      case __object_constructor__:
           var ar=[]
           for (var k in v)
                if (v[k] != null) 
                    ar[ar.length] = quoteString(k) + ':' + ToCodeString(v[k], true) 
           return '{'+ar.join(',')+'}'
      default:
           return v
  }
}

function quoteString(s) {
    return __STRING_QUOTE_SYM__ + s + __STRING_QUOTE_SYM__ 
}



//getElementValue 
var NONE_VALUE = "None"

function getElementValue(elm) {
   switch (elm.type) {
       case "select-one":
           if (elm.options.length < 1) return ""
           return elm.options[elm.options.selectedIndex].value
       case "select-multiple":
           var ar = new Array()
           if (elm.options.length < 1) return ar 
           for (var i=0; i<elm.options.length; i++)
                if (elm.options[i].selected) 
                    ar[ar.length] = elm.options[i].value
           return ar

       case "checkbox":
		   if(elm.checked)
		      return elm.value 
		   else
    		  return "";

       case "radio":
           // one should always set value when creating a radio button.
           if (elm.checked) return elm.value 
           return NONE_VALUE 

       default:  
           if (elm.type == [].type) {
               if (elm[0].type == "radio") {
                   for (var i=0; i<elm.length; i++)
                        if (elm[i].checked) return elm[i].value
                   return NONE_VALUE 
               } else if (elm[0].type == "checkbox") {
                   var ar = new Array()
                   for (var i=0; i<elm.length; i++) 
                      if (elm[i].checked) ar[ar.length] = elm[i].value 
                   return ar
               }
           } else { //TEXT, TEXTAREA 
               return elm.value
           }
   }
}


function setElementValue(elm, new_value) {
   // add code by jgzhang at 2005-08-02 15:54.
   if (typeof elm == 'undefined') {
       //alert ('错误: 试图为一个非 form 元素设值 -- ' + new_value)
       return
   }
   // add end.
   switch (elm.type) {
       case "select-one":
       case "select-multiple":
            for (var i=0; i<elm.options.length; i++) {
                 if (elm.options[i].value == new_value) {
                     elm.options.selectedIndex = i
                     break 
                 }
            }
            return 

       case "checkbox":
            if (new_value&&new_value==elm.value) 
                elm.checked = true
            else 
                elm.checked = false
            return 

       case "radio":
            if (new_value) 
                elm.checked = true
            else 
                elm.checked = false 
            return 

       default:
           if (elm.type == [].type) {
               if (elm[0].type == "radio") {
                   for (var i=0; i<elm.length; i++) 
                      if (elm[i].value == new_value) {
                          elm[i].checked = true
                          break
                      }
               // some code fixed by lyz at 2006-03-27 17:23
               } else if (elm[0].type == "checkbox") {
                   for (var j=0; j<elm.length; j++) {
                      elm[j].checked = false
                   }
                   if (new_value.constructor == __list_constructor__) {
                       for (var i=0;i<new_value.length;i++) {
                           var _new_value = new_value[i] 
                           for (var j=0; j<elm.length; j++) {
                              if (elm[j].value == _new_value) {
                                  elm[j].checked = true
                                  break
                              }
                           }
                       }
                   }else {
                       for (var i=0; i<elm.length; i++) {
                          if (elm[i].value == new_value) {
                              elm[i].checked = true
                              break
                          }
                       }
                   }
               }
               // fixed end
           } else { //TEXT, TEXTAREA 
             elm.defaultValue = new_value
             elm.value = new_value
           }
  }
}


function dateCompare(asStartDate,asEndDate){
 var miStart = Date.parse(asStartDate.replace(/\-/g, '/'));
 var miEnd   = Date.parse(asEndDate.replace(/\-/g, '/'));
 return (miEnd-miStart)/(1000*24*3600);
}

function dateAdd(startdate,days){
    _startdate = startdate||""
    _days = days||0	
    if(_days&&_startdate!=""){
        _date = Date.parse(_startdate.replace(/\-/g, '/'))+parseInt(_days)*1000*24*3600;	
        _date = new Date(_date)
        return Date.formatdate(_date, "", true, true)
     }
}

Date.dateCompare = dateCompare
Date.dateAdd = dateAdd

Date.betweendate = function(dt, dt1, dt2) {
   //dt between dt1 and dt2
   var d = Date.str2Date(dt)
   var d1 = Date.str2Date(dt1)
   var d2 = Date.str2date(dt2)
   return (d2>d1 && d>d1 && d<d2) 
}

Date.sameday = function(dt1, dt2) {
   //dt: could be seconds after 1970 or date string, or datetime string
   if (typeof dt1 == typeof '') {
       var d1 = Date.str2date(dt1)
       var d2 = Date.str2date(dt2)
   } else {
       var d1 = new Date(dt1) 
       var d2 = new Date(dt2) 
   }
   return (d1.getFullYear() == d2.getFullYear() && d1.getMonth()==d2.getMonth() && d1.getDate() == d2.getDate() )
}

Date.str2epoch = function(dtstr) {
   return Date.parse(dtstr.replace(/\-/g, '/'))
}
Date.str2date = function(dtstr) {
   return new Date(Date.str2epoch(dtstr)) 
}
Date.second2date = function(t) {
   return new Date(t*1000)
}
Date.formatdate = function(d, sep, noseconds, notime) {
   var s=sep || '-'
   var yy=d.getFullYear()
   var mm=d.getMonth() + 1
   mm = mm<10 ? '0'+mm : mm
   var dd=d.getDate()
   dd = dd < 10 ? '0'+dd : dd
   var hh=d.getHours()
   hh = hh < 10 ? '0'+hh : hh
   var MM = d.getMinutes()
   MM = MM < 10 ? '0'+MM : MM
   var ss=Math.round(d.getSeconds())
   ss = ss < 10 ? '0'+ss : ss
   if (notime) 
         return yy+s+mm+s+dd
   else if (noseconds)
         return yy+s+mm+s+dd+' ' + hh+':'+MM
   else
         return yy+s+mm+s+dd+' ' + hh+':'+MM+':'+ss

}	

Date.currentdate = function (sep) {
   return Date.formatdate(new Date(), sep, true, true)
}
Date.currenttime = function () {
   return Date.formatdate(new Date(), '-')
}


//--byHjwang
function CheckRadio(theRadio){
    var theRadioLen = theRadio.length;
    var theRadioValue = false;
    if (theRadioLen == undefined){
        if (theRadio.checked){
            theRadioValue = theRadio.value;
        }
    }else{
        for (theRadioI=0;theRadioI<theRadioLen;theRadioI++){
            if (theRadio[theRadioI].checked){
                theRadioValue = theRadio[theRadioI].value;
                break;
            }
        }
    }
    return theRadioValue;
}	


//window = object.open([URL ][, name ][, features ][, replace]]]])
//URL：新窗口的URL地址
//name：新窗口的名称，可以为空
//featurse：属性控制字符串，在此控制窗口的各种属性，属性之间以逗号隔开。
//fullscreen= { yes/no/1/0 } 是否全屏，默认no
//channelmode= { yes/no/1/0 } 是否显示频道栏，默认no
//toolbar= { yes/no/1/0 } 是否显示工具条，默认no
//location= { yes/no/1/0 } 是否显示地址栏，默认no
//directories = { yes/no/1/0 } 是否显示转向按钮，默认no
//status= { yes/no/1/0 } 是否显示窗口状态条，默认no
//menubar= { yes/no/1/0 } 是否显示菜单，默认no
//scrollbars= { yes/no/1/0 } 是否显示滚动条，默认yes
//resizable= { yes/no/1/0 } 是否窗口可调整大小，默认no
//width=number 窗口宽度（像素单位）
//height=number 窗口高度（像素单位）
//top=number 窗口离屏幕顶部距离（像素单位）
//left=number 窗口离屏幕左边距离（像素单位）

//"popupwin":{"name":"","left":"","top":"","width":"","height":"","center":"no","menubar":"no","statusbar":"no","titlebar":"no","scrollbars":"no","resizable":"no","location":"no","alwaysraised":"no","directories":"no"}

function windowopen(surl,sname,feature){
	d=feature||{}
	_left=(typeof d["left"]=="undefined")?"":d["left"]
	_top=(typeof d["top"]=="undefined")?"":d["top"]
	_width=(typeof d["width"]=="undefined")?"":d["width"]
	_height=(typeof d["height"]=="undefined")?"":d["height"]
	_fullscreen=(typeof d["fullscreen"]=="undefined")?"no":d["fullscreen"]
	_channelmode=(typeof d["channelmode"]=="undefined")?"no":d["channelmode"]
}


//************** Array Prototype *********************************
if(!Array.prototype.shift) {
   Array.prototype.shift = function() {
         var firstElement = this[0]
	 this.reverse()
	 this.length = Math.max(this.length-1,0)
	 this.reverse()
	 return firstElement
       }
}

if(!Array.prototype.unshift) {
   Array.prototype.unshift = function() {
	this.reverse();
	for(var i=arguments.length-1;i>=0;i--){
		this[this.length]=arguments[i]
	}
	this.reverse()
	return this.length
   }
}

if(!Array.prototype.push) {
   Array.prototype.push = function() {
	for(var i=0;i<arguments.length;i++){
		this[this.length]=arguments[i]
	}
	return this.length
  }
}

if(!Array.prototype.pop) {
   Array.prototype.pop = function(){
        var lastElement = this[this.length-1]
	this.length = Math.max(this.length-1,0)
	return lastElement
   }
}
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf=function(o){
        for(var i=0;i<this.length;i++)
            if(this[i]==o)return i;
        return-1;
    }
}
if (!Array.prototype.lastIndexOf) {
    Array.prototype.lastIndexOf=function(o){
        for(var i=this.length-1;i>=0;i--)
            if(this[i]==o)return i;
        return-1;
    }
}
if (!Array.prototype.contains){
    Array.prototype.contains=function(o){
        return this.indexOf(o)!= -1;
    }
}
if (!Array.prototype.copy) {
    Array.prototype.copy=function(){
        return this.concat();
    }
}
if (!Array.prototype.removeAt) {
    Array.prototype.removeAt=function(i){
        return this.slice(0,i).concat(this.slice(i+1,this.length))
    }
}
if (!Array.prototype.remove) {
    Array.prototype.remove=function(o){
        var i=this.indexOf(o);
        if(i!= -1) return this.removeAt(i)
        return this
    }
}
if (!Array.prototype.comp) {
    Array.prototype.comp= function (lst) {
        var _lst1 = []
        var _lst2 = []
        for (var i=0;i<this.length;i++) {
            if (lst.indexOf(this[i])<0)
                _lst1[_lst1.length] = this[i]
        }
        for (var i=0;i<lst.length;i++) {
            if (this.indexOf(lst[i])<0)
                _lst2[_lst2.length] = lst[i]
        }
        return [_lst1, _lst2]
    }
}
if (!String.prototype.strip)  {
    String.prototype.strip=function() {
        var tmp = this.split(" ")
        while(tmp.length) {
            if (tmp[0] != "")
                break
            tmp=tmp.removeAt(0)
        }
        tmp.reverse()
        while(tmp.length) {
            if (tmp[0] != "")
                break
            tmp=tmp.removeAt(0)
        }
        return tmp.reverse().join(" ")
    }
} 



function RunGLNL(){
    var today=new Date();
    var d=new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
    var DDDD=(today.getYear()<100 ? today.getYear()+1900:today.getYear())+"年"+(today.getMonth()+1)+"月"+today.getDate()+"日";
    DDDD = DDDD + " " + d[today.getDay()];
    DDDD = DDDD+ " " + (CnDateofDateStr(today));
    //DDDD = DDDD+ " " + SolarTerm(today);
    document.write(DDDD);
}

function DaysNumberofDate(DateGL){
	return parseInt((Date.parse(DateGL)-Date.parse(DateGL.getYear()+"/1/1"))/86400000)+1;
} 

function CnDateofDate(DateGL){
	var CnData=new Array(
		0x16,0x2a,0xda,0x00,0x83,0x49,0xb6,0x05,0x0e,0x64,0xbb,0x00,0x19,0xb2,0x5b,0x00,
		0x87,0x6a,0x57,0x04,0x12,0x75,0x2b,0x00,0x1d,0xb6,0x95,0x00,0x8a,0xad,0x55,0x02,
		0x15,0x55,0xaa,0x00,0x82,0x55,0x6c,0x07,0x0d,0xc9,0x76,0x00,0x17,0x64,0xb7,0x00,
		0x86,0xe4,0xae,0x05,0x11,0xea,0x56,0x00,0x1b,0x6d,0x2a,0x00,0x88,0x5a,0xaa,0x04,
		0x14,0xad,0x55,0x00,0x81,0xaa,0xd5,0x09,0x0b,0x52,0xea,0x00,0x16,0xa9,0x6d,0x00,
		0x84,0xa9,0x5d,0x06,0x0f,0xd4,0xae,0x00,0x1a,0xea,0x4d,0x00,0x87,0xba,0x55,0x04
		);
	var CnMonth=new Array();
	var CnMonthDays=new Array();
	var CnBeginDay;
	var LeapMonth;
	var Bytes=new Array();
	var I;
	var CnMonthData;
	var DaysCount;
	var CnDaysCount;
	var ResultMonth;
	var ResultDay;
	var yyyy=DateGL.getYear();
	var mm=DateGL.getMonth()+1;
	var dd=DateGL.getDate();
	if(yyyy<100)
	{
		yyyy+=1900;
	}
	if ((yyyy < 1997) || (yyyy > 2020))
	{
		return 0;
	}
	Bytes[0] = CnData[(yyyy - 1997) * 4];
	Bytes[1] = CnData[(yyyy - 1997) * 4 + 1];
	Bytes[2] = CnData[(yyyy - 1997) * 4 + 2];
	Bytes[3] = CnData[(yyyy - 1997) * 4 + 3];
	if ((Bytes[0] & 0x80) != 0) 
	{
		CnMonth[0] = 12;
	}
	else 
	{
		CnMonth[0] = 11;
	}
	CnBeginDay = (Bytes[0] & 0x7f);
	CnMonthData = Bytes[1];
	CnMonthData = CnMonthData << 8;
	CnMonthData = CnMonthData | Bytes[2];
	LeapMonth = Bytes[3];
	for (I=15;I>=0;I--)
	{
		CnMonthDays[15 - I] = 29;
		if (((1 << I) & CnMonthData) != 0 )
		{
			CnMonthDays[15 - I]++;
		}
		if (CnMonth[15 - I] == LeapMonth )
		{
			CnMonth[15 - I + 1] = - LeapMonth;
		}
		else{
			if (CnMonth[15 - I] < 0 )
			{
				CnMonth[15 - I + 1] = - CnMonth[15 - I] + 1;
			}
			else 
			{
				CnMonth[15 - I + 1] = CnMonth[15 - I] + 1;
			}
			if (CnMonth[15 - I + 1] > 12 )
			{ 
				CnMonth[15 - I + 1] = 1;
			}
		}
	}
	DaysCount = DaysNumberofDate(DateGL) - 1;
	if (DaysCount <= (CnMonthDays[0] - CnBeginDay))
	{
		if ((yyyy > 1901) && (CnDateofDate(new Date((yyyy - 1)+"/12/31")) < 0))
		{
			ResultMonth = - CnMonth[0];
		}
		else 
		{
			ResultMonth = CnMonth[0];
		}
		ResultDay = CnBeginDay + DaysCount;
	}
	else
	{
		CnDaysCount = CnMonthDays[0] - CnBeginDay;
		I = 1;
		while ((CnDaysCount < DaysCount) && (CnDaysCount + CnMonthDays[I] < DaysCount))
		{
			CnDaysCount+= CnMonthDays[I];
			I++;
		}
		ResultMonth = CnMonth[I];
		ResultDay = DaysCount - CnDaysCount;
	}
	if (ResultMonth > 0)
	{
		return ResultMonth * 100 + ResultDay;
	}
	else
	{
		return ResultMonth * 100 - ResultDay;
	}
}

function CnYearofDate(DateGL){
	var YYYY=DateGL.getYear();
    var MM=DateGL.getMonth()+1;
    var CnMM=parseInt(Math.abs(CnDateofDate(DateGL))/100);
    if(YYYY<100) YYYY+=1900;
    if(CnMM>MM) YYYY--;
    YYYY-=1864;
    return CnEra(YYYY)+"年";
}

function CnMonthofDate(DateGL){
	var  CnMonthStr=new Array("零","正","二","三","四","五","六","七","八","九","十","冬","腊");
	var  Month;
  	Month = parseInt(CnDateofDate(DateGL)/100);
  	if (Month < 0)
  	{
  		return "闰" + CnMonthStr[-Month] + "月";
  	}
  	else
  	{
  		return CnMonthStr[Month] + "月";
  	}
} 

function CnDayofDate(DateGL){
	var CnDayStr=new Array("零",
    "初一", "初二", "初三", "初四", "初五",
    "初六", "初七", "初八", "初九", "初十",
    "十一", "十二", "十三", "十四", "十五",
    "十六", "十七", "十八", "十九", "二十",
    "廿一", "廿二", "廿三", "廿四", "廿五",
    "廿六", "廿七", "廿八", "廿九", "三十");
	var Day;
  	Day = (Math.abs(CnDateofDate(DateGL)))%100;
  	return CnDayStr[Day];
} 

function DaysNumberofMonth(DateGL){
	var MM1=DateGL.getYear();
    MM1<100 ? MM1+=1900:MM1;
	var MM2=MM1;
    MM1+="/"+(DateGL.getMonth()+1);
    MM2+="/"+(DateGL.getMonth()+2);
    MM1+="/1";
    MM2+="/1";
	return parseInt((Date.parse(MM2)-Date.parse(MM1))/86400000);
}

function CnEra(YYYY){
	var Tiangan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
	//var Dizhi=new Array("子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)","巳(蛇)","午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");
	var Dizhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
	return Tiangan[YYYY%10]+Dizhi[YYYY%12];
} 

function CnDateofDateStr(DateGL){
	if(CnMonthofDate(DateGL)=="零月") 
	{
		return "　请调整您的计算机日期!";
	}
  	else 
  	{
  		return "农历"+CnYearofDate(DateGL)+ " " + CnMonthofDate(DateGL) + CnDayofDate(DateGL);
  	}
} 

function SolarTerm(DateGL){
	var SolarTermStr=new Array(
        "小寒","大寒","立春","雨水","惊蛰","春分",
        "清明","谷雨","立夏","小满","芒种","夏至",
        "小暑","大暑","立秋","处暑","白露","秋分",
        "寒露","霜降","立冬","小雪","大雪","冬至");
  	var DifferenceInMonth=new Array(
        1272060,1275495,1281180,1289445,1299225,1310355,
        1321560,1333035,1342770,1350855,1356420,1359045,
        1358580,1355055,1348695,1340040,1329630,1318455,
        1306935,1297380,1286865,1277730,1274550,1271556);
  	var DifferenceInYear=31556926;
  	var BeginTime=new Date(1901/1/1);
  	BeginTime.setTime(947120460000);
  	for(;DateGL.getYear()<BeginTime.getYear();){
  		BeginTime.setTime(BeginTime.getTime()-DifferenceInYear*1000);
    }
    for(;DateGL.getYear()>BeginTime.getYear();)
    {
        BeginTime.setTime(BeginTime.getTime()+DifferenceInYear*1000);
    }
    for(var M=0;DateGL.getMonth()>BeginTime.getMonth();M++)
    {
        BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
    }
    if(DateGL.getDate()>BeginTime.getDate())
    {
        BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
        M++;
    }
    if(DateGL.getDate()>BeginTime.getDate())
    {
        BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
        M==23?M=0:M++;
    }
  	var JQ;
  	if(DateGL.getDate()==BeginTime.getDate())
  	{ 
	    JQ="　 今天是<font color='#FF9999'><b>"+SolarTermStr[M] + "</b></font>";
  	}
  	else if(DateGL.getDate()==BeginTime.getDate()-1)
  	{
	    JQ="　 明天是<font color='#FF9999'><b>"+SolarTermStr[M] + "</b></font>";
  	}
  	else if(DateGL.getDate()==BeginTime.getDate()-2)
  	{
	    JQ="　 后天是<font color='#FF9999'><b>"+SolarTermStr[M] + "</b></font>";
  	}
  	else
  	{
   		JQ=" "
   		if(DateGL.getMonth()==BeginTime.getMonth())
   		{
      		JQ+="　 本月";
   		}
   		else
   		{
     		JQ+="　 下月";
   		}
   		JQ+=BeginTime.getDate()+"日"+"<font color='#FF9999'><b>"+SolarTermStr[M]+"</b></font>";
  	}
	return JQ;
}

function CurentTime(){ 
    var now = new Date(); 
    var hh = now.getHours(); 
    var mm = now.getMinutes(); 
    var ss = now.getTime() % 60000; 
    ss = (ss - (ss % 1000)) / 1000; 
    var clock = hh+':'; 
    if (mm < 10) clock += '0'; 
    clock += mm+':'; 
    if (ss < 10) clock += '0'; 
    clock += ss; 
    return(clock); 
} 


function FromCodeString(s, isrecursive) {
  if (isrecursive) 
      var v = s
  else { 
      s=s.split('\n').join('')
      //s= kwSubstitute(s, _UNESC_) // add code by jgzhang at 2005-06-08 12:23
      eval( "var v=" + s )
  }
  switch (v.constructor) {
      case __string_constructor__:
           return kwSubstitute(v, _UNESC_) 
      case __list_constructor__:
           for (var i=0; i<v.length;i++)
                v[i] = FromCodeString(v[i], true)
           return v 
           break
      case __dict_constructor__:
           for (var k in v)
                v[k] = FromCodeString(v[k], true)
           return v 
      default:
           return v
  }
}

function MemDeepCopy(v) {
  switch (v.constructor) {
      case __string_constructor__:
           return ""+v 
      case __list_constructor__:
           var ret = []
           for (var i=0; i<v.length;i++)
                ret[i] = MemDeepCopy(v[i]) 
           return ret 
      case __dict_constructor__:
      case __object_constructor__:
      case __native_code__:
           var ret = {}
           for (var k in v)
                ret[k] = MemDeepCopy(v[k]) 
           return ret 
      default:
           if (typeof v == 'object') {
               var ret = {}
               for (var k in v)
                    ret[k] = MemDeepCopy(v[k]) 
               return ret 
           } 
           return v 
  }
}

String.prototype.replaceAll  = function(s1,s2){    
	return this.replace(new RegExp(s1,"gm"),s2);    
}    