﻿function gotoHelp(helpid)
{
    var uid = "5361567";//行业网生意用手号
    if(helpid && helpid != "0" && helpid.toString().length>5)
        uid = helpid;
    window.open('http://www.99114.com/syzs/syzs/tqagent_transferpage.htm?uin='+uid+'&agentid=970&transferpage=1&tq_bottom_ad_url=http://qtt.tq.cn/post/sendmain.html&tq_right_infocard_url=http://qtt.tq.cn/showcard.do&page=&ispaymoney=1&localurl=http://www.99114.com/&ltype=0',0,'width=598,height=425,location=no,resizable=0,scrollbars=0,status=no,toolbar=no,location=no,menu=no,top=100,left=200');
}

/*---------------------加为收藏--------------------*/
function gotoHistory(sourceid,sourcename,siteid)
{
    var alias = window.prompt("请输入收藏此信息的别名称",decodeURIComponent(sourcename));
    if(alias)
        alias = encodeURIComponent(alias);
    else
        alias = sourcename;
    var url = "/AJAX/AddHistory.ashx?p="+sourceid+"&n="+alias+"&s="+siteid;
    var ajax = new AJAX();
    ajax.Request(url,{method:"GET",onSuccess:okHistory,onFail:noHistory});
}
function okHistory(ajax)
{
    try
    {
        var text = decodeURIComponent(ajax.responseText);
        alert(text)
    }
    catch(ex){}
}
function noHistory(ajax)
{
    try
    {
        var text = decodeURIComponent(ajax.responseText);
        alert(text)
    }
    catch(ex){}
}
/*---------------------加为商友--------------------*/
function gotoFriend(memberid,siteid)
{
    var url = "/AJAX/AddMember.ashx?m="+memberid+"&s="+siteid;
    var ajax = new AJAX();
    ajax.Request(url,{method:"GET",onSuccess:okFriend,onFail:noFriend});
}
function okFriend(ajax)
{
    try
    {
        var text = decodeURIComponent(ajax.responseText);
        alert(text)
    }
    catch(ex){}
}
function noFriend(ajax)
{
    try
    {
        var text = decodeURIComponent(ajax.responseText);
        alert(text)
    }
    catch(ex){}
}

/*---------------------订单验证--------------------*/
function gotoOrder(id)
{
    if(id<=0)
    {
        alert("面议信息无法订购！");
        return false;
    }
    return true;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:遍历设置直至创建对象成功
*Example:
*--------------------------------------------------------------------------------------------------
*/
var Try = {
	these:function()
	{
		for(var i=0,len=arguments.length;i<len;i++)
		{
			var arg = arguments[i];
			try
			{
				var result = arg();
				if(result)
					return result;
			}
			catch (ex)
			{
				continue;
			}
		}
		return false;
	}
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:重设对象自己并赋于自己参数
*Example:function a(){};a=a.bind("oo");
*--------------------------------------------------------------------------------------------------
*/
Function.prototype.bind = function()
{
	var self = this;
	var args = [];
	for(var i=0;i<arguments.length;i++)
	{
		args[i] = arguments[i];
	}
	var obj = args.shift();
	return function()
	{
		var len = args.length;
		for(var i=0,len=arguments.length;i<len;i++)
		{
			args[len++] = arguments[i];
		}
		self.apply(obj,args);
	};
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:去除字符串左边的空格（全角、半角）
*Example:var x = " abcd";x = x.lTrim();
*--------------------------------------------------------------------------------------------------
*/
String.prototype.lTrim = function()
{
	var reg = /^[\s|　]*/gi;
	return this.replace(reg,"");
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:去除字符串右边的空格（全角、半角）
*Example:var x = "abcd ";x = x.rTrim();
*--------------------------------------------------------------------------------------------------
*/
String.prototype.rTrim = function()
{
	var reg = /[\s|　]*$/gi;
	return this.replace(reg,"");
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:去除字符串两边的空格（全角、半角）
*Example:var x = " abcd ";x = x.trim();
*--------------------------------------------------------------------------------------------------
*/
String.prototype.trim = function()
{	
	var reg = /(^[\s|　]*)|([\s|　]*$)/gi;
	return this.replace(reg,"");	
	/*
	return this.lTrim().rTrim();
	*/
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:获取字符串的长度(如果带参则获取真实长度)
*Example:var x = "abcd";x = x.len()或者x = x.len(true);
*--------------------------------------------------------------------------------------------------
*/
String.prototype.len = function()
{
	if(arguments.length==0)
	{
		return this.length;
	}
	var reg = /[\u4e00-\u9fa5]/gi;
	return this.replace(reg,"**").length;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:将当前对象克隆一个副本
*Example:var x = "abcd";var y = x.clone();
*--------------------------------------------------------------------------------------------------
*/
String.prototype.clone = function()
{
	return this;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:判断当前对象是否以某个串开始
*Example:var x = "abcd";var y = x.startsWith("a");
*--------------------------------------------------------------------------------------------------
*/
String.prototype.startsWith = function()
{
	if(arguments.length<=0)
		return false;
	return (this.indexOf(arguments[0])==0)
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:判断当前对象是否以某个串结束
*Example:var x = "abcd";var y = x.endWith("d");
*--------------------------------------------------------------------------------------------------
*/
String.prototype.endsWith = function()
{
	if(arguments.length<=0)
		return false;
	var value = arguments[0];
	return (this.substring(this.length-value.length)==value)
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:从当前串中左取指定长度的字符串
*Example:var x = "abcd";var y = x.left(5);
*--------------------------------------------------------------------------------------------------
*/
String.prototype.left = function()
{
	if(arguments.length<=0)
		return this;
	if(isNaN(arguments[0]))
		return this;
	return this.substring(0,Math.abs(arguments[0]));
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:从当前串中右取指定长度的字符串
*Example:var x = "abcd";var y = x.right(5);
*--------------------------------------------------------------------------------------------------
*/
String.prototype.right = function()
{
	if(arguments.length<=0)
		return this;
	if(isNaN(arguments[0]))
		return this;
	var len = Math.abs(arguments[0]);
	if((this.length-len)>0)
		return this.substring(this.length-len);
	else
		return this;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:将当前串以指定内容左扩展到指定长度
*Example:var x = "abcd";var y = x.padLeft(10,"0");
*--------------------------------------------------------------------------------------------------
*/
String.prototype.padLeft = function()
{
	if(arguments.length<=1)
		return this;
	if(isNaN(arguments[0]))
		return this;
	var len = Math.abs(arguments[0])-1;
	var value = arguments[1]+"";
	var strResult = this.valueOf();
	for(var i=0;i<len;i++)
	{
		strResult = value + strResult;
	}
	return strResult;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:将当前串以指定内容右扩展到指定长度
*Example:var x = "abcd";var y = x.padRight(10,"0");
*--------------------------------------------------------------------------------------------------
*/
String.prototype.padRight = function()
{
	if(arguments.length<=1)
		return this;
	if(isNaN(arguments[0]))
		return this;
	var len = Math.abs(arguments[0])-1;
	var value = arguments[1]+"";
	var strResult = this.valueOf();
	for(var i=0;i<len;i++)
	{
		strResult = strResult + value;
	}
	return strResult;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:将指定内容插入到当前串中指定位置
*Example:var x = "abcd";var y = x.insert(4,"999");
*--------------------------------------------------------------------------------------------------
*/
String.prototype.insert = function()
{
	if(arguments.length==0)
		return this;
	if(arguments.length==1)
		return (this.valueOf()+arguments[0].toString());
	if(isNaN(arguments[0]))
		return (this.valueOf()+arguments[1].toString());
	if(parseInt(arguments[0])<=0)
		return (arguments[1].toString()+this.valueOf());
	var len = this.length;
	var pos = Math.abs(arguments[0]);
	if(pos>=len)
		return (this.valueOf()+arguments[1].toString());
	var p1 = this.substring(0,pos);
	var p2 = this.substring(pos);
	return (p1+arguments[1].toString()+p2);
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:从当前串中删除指定位置的指定长度的内容
*Example:var x = "abcd";var y = x.remove(2)或者var y = x.remove(2,5);
*--------------------------------------------------------------------------------------------------
*/
String.prototype.remove = function()
{
	var s = "";
	if(arguments[0]>0)
		s = this.valueOf().substring(0,arguments[0]);
	if(arguments[0]+arguments[1]<=this.length)
		s += this.valueOf().substring(arguments[0]+arguments[1]);
	return s;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:获取当前串中是否包含指定串
*Example:var x = "abcd";var y = x.contains("a");
*--------------------------------------------------------------------------------------------------
*/
String.prototype.contains = function()
{
	if(arguments.length==0)
		return true;
	var value = arguments[0].toString();
	return (this.indexOf(value)>-1);
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，拷贝副本
*Example:var x = [];var y = x.clone();
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.clone=function()
{
	return ([].concat(this));
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，获取当前对象长度
*Example:var x = [];var y = x.size();
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.size=function()
{
	return this.length;
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，获取第一个数组元素
*Example:var x = ["aa","bb","cc"];var y = x.first();
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.first=function()
{
	return this[0];
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，获取数组最后一个元素
*Example:var x = ["aa","bb","cc"];var y = x.last();
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.last=function()
{
	return this[this.length-1];
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，判断数组中是否含有某个元素
*Example:var x = ["aa","bb","cc"];var y = x.indexOf("aa");
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.indexOf=function(arrElement)
{
	for(var i=0,len=this.length;i<len;i++)
	{
		if(this[i] == arrElement)
		{
			return i;
		}
	}
	return -1;
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，获取排除当前元素后得到的新数组
*Example:var x = ["aa","bb","cc"];var y = x.without("aa");
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.without=function(arrElement)
{
	var result = [];
	for(var i=0,j=0,len=this.length;i<len;i++)
	{
		if(this[i] == arrElement)
		{
			continue;
		}
		result[j++] = this[i];
	}	
	return result;
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，清空当前数组并返回
*Example:var x = ["aa","bb","cc"];var y = x.clear();
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.clear=function()
{
	this.length = 0;
	return this;
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展数组基类方法，在指定位置插入新的元素
*Example:var x = ["aa","bb","cc"];var y = x.insert("dd")或者var y = x.insert(2,"dd");
*--------------------------------------------------------------------------------------------------
*/
Array.prototype.insert = function()
{
	if(arguments.length==0) return this;
	if(arguments.length==1) return this.concat(arguments[0]);
	if(arguments.length==2)
	{
		var start = arguments[0];
		var value = arguments[1];
		var p1 = this.slice(0,start);
		var p2 = this.slice(start);
		return p1.concat(value).concat(p2);
	}
	else return this;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-01
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:扩展日期类，isLeapYear(),lunar(),getDays(),dateAdd(flag,number),dateDiff(flag,enddate)
*Example:var x = new Date();var y = x.lunar();
*--------------------------------------------------------------------------------------------------
*/
with(Date)
{
	//为当前日期添加指定日、月及年数后的新日期
	prototype.dateAdd = function(flag,number)
	{
		flag = flag.toLowerCase();
		number = parseInt(number);
		var d = new Date(this.getFullYear(),this.getMonth(),this.getDate());
		switch(flag)
		{
			case "day":
				d.setDate(d.getDate()+number);
				break;
			case "month":
				d.setMonth(d.getMonth()+number);
				break;
			case "year":
				d.setYear(d.getFullYear()+number);
				break;
			default:
				break;
		};
		return d;
	};
	//判断两个日期之间的相距日、月及年数
	prototype.dateDiff = function(flag,newdate)
	{
		switch(flag.toLowerCase())
		{
			case "day":
				var result = 0;
				var d,d1,d2;
				if(this.getFullYear()<newdate.getFullYear())
				{
					for(var i=this.getMonth()+1;i<=12;i++)
					{
						if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
							result += 31;
						else if(i==4 || i==6 || i==9 || i==11)
							result += 30;
						else if(this.isLeapYear())
							result += 29;
						else
							result += 28;
					}
					result -= this.getDate();
					
					for(var i=1;i<newdate.getMonth()+1;i++)
					{
						if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
							result += 31;
						else if(i==4 || i==6 || i==9 || i==11)
							result += 30;
						else if(newdate.isLeapYear())
							result += 29;
						else
							result += 28;
					}
					result += newdate.getDate();
					for(var i=this.getFullYear()+1;i<newdate.getFullYear();i++)
					{
						d = new Date(i,0,1);
						if(d.isLeapYear()) result += 366;
						else result += 365;
					}
				}
				else if(this.getFullYear()==newdate.getFullYear())
				{
					d1=this,d2=newdate;
					if(d1.getMonth()>d2.getMonth()) {d1 = newdate;d2=this;}
					result = d1.getDays();
					
					for(var i=d1.getMonth()+1;i<d2.getMonth();i++)
					{
						if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
							result += 31;
						else if(i==4 || i==6 || i==9 || i==11)
							result += 30;
						else if(d1.isLeapYear())
							result += 29;
						else
							result += 28;							
					}
					result -= d1.getDate();
					result += d2.getDate();
					if(d2==this) result *= -1;
				}
				else
				{
					result = -1 * newdate.dateDiff("day",this);
				}
				return result;
			case "month":
				return ((newdate.getFullYear()-this.getFullYear())*12+newdate.getMonth()-this.getMonth());
				break;
			case "year":
				return (newdate.getFullYear()-this.getFullYear());
			default:
				return 0;
		};
	};
	//判断当前日期是否为闰年
	prototype.isLeapYear = function(){
		var year = this.getFullYear();
		if(year%400==0 || (year%4==0 && year%100!=0)) return true;
		else return false;
	};
	//获取当前日期的天干地支信息
	prototype.lunar = function()
	{
		var tian = ["甲","乙","丙","丁","戊","已","庚","寅","壬","癸"];
		var di1 = ["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"];
		var di2 = ["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"];
		var result = [];
		var tian_index = (this.getFullYear()-3)%tian.length;
		tian_index = (tian_index==0)?(tian.length-1):(tian_index-1);
		var di_index = (this.getFullYear()-3)%di1.length;		
		di_index = (di_index==0)?(di1.length-1):(di_index-1);
		result[0] = tian[tian_index]+di1[di_index];
		result[1] = di2[di_index]+"年";
		return result;
	};
	//获取当前日期的当前月的天数
	prototype.getDays = function()
	{
		var i = this.getMonth()+1;
		var result = 0;
		if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)
			result = 31;
		else if(i==4 || i==6 || i==9 || i==11)
			result = 30;
		else if(this.isLeapYear())
			result = 29;
		else
			result = 28;
		return result;
	};
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-01
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:cookie操作类，静态方法get,set,erase(获取、添加、删除)
*Example:var x = new Cookie("name","value");Cookie.set(x);var y = Cookie.get("name");
*--------------------------------------------------------------------------------------------------
*/
function Cookie(name,value,seconds)
{
	this.name = name;
	if(value==null) this.value="";
	else if((typeof value).toLowerCase()=="undefined") this.value = "";
	else this.value = value;
	var d = new Date();
	if((typeof seconds).toLowerCase()=="object") d = seconds;
	else if((typeof seconds).toLowerCase()=="number") d.setTime(d.getTime()+seconds);
	else d.setTime(d.getTime()+24*60*60*1000);
	this.expires = d;
}
//静态设置方法
Cookie.set = function(cookie)
{
	if(cookie instanceof Cookie)
	{
		document.cookie = escape(cookie.name)+"="+escape(cookie.value)+";expires="+cookie.expires.toGMTString()+"/";
	}
}
//静态获取方法
Cookie.get = function(name)
{
	name = escape(name)+"=";
	var start,end;
	start = document.cookie.indexOf(name);
	if(start>=0)
	{
		start += name.length;
		end = document.cookie.indexOf(";",start);
		if(end==-1)
			end = document.cookie.length;
		result = unescape(document.cookie.substring(start,end));
	}
	else
		result = "";
	return result;
}
//静态删除方法
Cookie.erase =function(name)
{
	var d = new Date();
	d.setTime(d.getTime()-86400*1000);
	var c = new Cookie(name,"",d);
	Cookie.set(c);
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-02
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:块内容滚动类(ID或者对象，滚动宽度，滚动高度，滚动周期，滚动方向)
*Example:var x = new WBMarquee("div",150,120,10,"left");
*--------------------------------------------------------------------------------------------------
*/
function WBMarquee(element,width,height,delay,direction)
{
	var obj;
	var flag = false;
	var timer;
	var start;
	var speed = 1;
	direction = direction.toLowerCase();
	if((typeof element).toLowerCase()=="object") obj=element;
	else obj=document.getElementById(element);
	obj.style.width = width+"px";
	obj.style.height = height+"px";
	obj.style.overflow = "hidden";
	obj.onmouseover = pause;
	obj.onmouseout = resume;
	function pause(){flag = true;}
	function resume(){flag = false;}
	function up()
	{
		if(flag) return;
		if(obj.scrollTop>=obj.scrollHeight-height) obj.scrollTop = 0;
		else obj.scrollTop += speed;
	}
	function down()
	{
		if(flag) return;
		if(obj.scrollTop<=0) obj.scrollTop = obj.scrollHeight;
		else obj.scrollTop -= speed;
	}		
	function left()
	{
		if(flag) return;
		if(obj.scrollLeft>=obj.scrollWidth-width) obj.scrollLeft = 0;
		else obj.scrollLeft += speed;
	}
	function right()
	{
		if(flag) return;
		if(obj.scrollLeft<=0) obj.scrollLeft = obj.scrollWidth;
		else obj.scrollLeft -= speed;
	}
	if(direction=="up") start = up;
	if(direction=="down") start = down;
	if(direction=="left") start = left;
	if(direction=="right") start = right;
	timer = window.setInterval(start,delay);
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-02
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:历史收藏类(添加收藏、设置首页、页面跳转back/forward/go,其中go即可以回跳历史也可以打开新的页面)
*Example:onclick=$H.add(url,提示信息);onclick=$H.setHome(event,url);
*--------------------------------------------------------------------------------------------------
*/
var $H = {
	isIE:(navigator.userAgent.toLowerCase().indexOf("msie")>=0)?true:false,
	add:function(url,title)
	{
		if(!(/^http:\/\//gi.test(url)))
		{
			var host = location.protocol+"//"+location.hostname+":"+location.port
			if(/^\//gi.test(url)) url = host + url;
			else url = host + "/"+url;
		}
		if(!title) title = document.title;
		if(this.isIE && window.external) window.external.addFavorite(url,title);
		else if(window.sidebar) window.sidebar.addPanel(title,url,"");
	},
	setHome:function(e,url)
	{
		if(!url) url = location.href;
		try
		{
			if(!e) e = window.event;
			var element = (this.isIE)?e.srcElement:e.target;
			element.style.behavior = "url(#default#homepage)";			
			element.setHomePage(url);
			return;
		}
		catch (ex1)
		{
            try
            {
				if(window.confirm("将"+url+"设置为首页，继续吗？"))
				{
					netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
					var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch);
					prefs.setCharPref('browser.startup.homepage',url);
				}
            }
            catch (ex2)
            {
				var msg = "错误原因如下：\n";
				msg += "1、调用格式不正确，请按照History.setHome(事件，URL)格式调用!\n";
				msg += "2、您使用的为Mozilla FireFox等浏览器，当前设置不允许使用此功能，在地址栏中输入about:config更改signed.applets.codebase_principal_support键值为true即可。\n";
				msg += "3、浏览器不支持!\n";
				window.alert(msg);
            }
		}
	},
	back:function()
	{
		window.history.back();
	},
	forward:function()
	{
		window.history.forward();
	},
	go:function()
	{
		if(arguments.length==0) return;
		if(isNaN(arguments[0]))
			window.location = arguments[0];
		else
			window.history.go(arguments[0]);

	}
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:窗口类，打开新窗口、警告、提示、输入、跳转、打印、关闭、复制
*Example:$W.open(),$W.close(),$W.alert(),$W.confirm(),$W,prompt(),$W.redirect(),$W.setData("fslfj")
*--------------------------------------------------------------------------------------------------
*/
var $W = {
	close:function()
	{
		if(arguments.length==1)
			window.opener = null;
		window.close();
	},
	print:function()
	{
		var content = arguments[0]||"";
		var w = window.open('');
		w.document.open();
		w.document.write(content);
		w.document.close();
		return w;
	},
	open:function()
	{
		var url = arguments[0]||"";
		var mode = arguments[1]||"_blank";
		var feature = arguments[2]||"location=no,status=no,menubar=no,toolbar=no,resizable=no,top=0,left=0";
		var replace = false;
		var w = window.open(url,mode,feature,replace);
		w.document.title = "自定义窗口|版权所有|行业网";
	},
	alert:function()
	{
		var content = arguments[0]||"继续操作么？";
		window.alert(content);
	},
	confirm:function()
	{
		var content = arguments[0]||"继续操作么？";
		return window.confirm(content);
	},
	prompt:function()
	{
		var message = arguments[0]||"";
		var _default = arguments[1]||"";
		return window.prompt(message,_default);
	},
	redirect:function()
	{
		if(arguments.length==0) return;
		var url = arguments[0];
		window.location = url;
	},
	setData:function(data)
	{
		try
	    {
		    if(data.replace(/(^[\s|　]*)|([\s|　]$)/g,"").length==0)
		    {
			    return;
		    }
		    if(window.clipboardData) 
		    {
			    window.clipboardData.setData("Text", data);
		    }
		    else if (window.netscape) 
		    {
		        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		        var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		        if (!clip) return;
		        var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		        if (!trans) return;
		        trans.addDataFlavor('text/unicode');
		        var str = new Object();
		        var len = new Object();
		        var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		        var copytext=data;
		        str.data=copytext;
		        trans.setTransferData("text/unicode",str,copytext.length*2);
		        var clipid=Components.interfaces.nsIClipboard;
		        if (!clip) return false;
		        clip.setData(trans,null,clipid.kGlobalClipboard);
		    }
		    if(arguments.length==2)
		    {
			    window.alert("[=="+data+"==]已经成功复制到剪贴板上!");
		    }
		    else if(arguments.length == 1)
		    {
		        window.alert("已经成功复制到剪贴板上");
		    }
		    return false;
		}catch(ex){window.alert("您的浏览器不支持直接拷贝，请使用复合键Ctrl+C拷贝！");}
	}
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-02
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:消息提醒类(警告、确认、输入、跳转)
*Example:onclick=$M.confirm(event,url,提示信息);onclick=$M.alert(提示信息);onclick=$M.prompt(标题,默认值)
*--------------------------------------------------------------------------------------------------
*/
var $M = {
	isIE:(navigator.userAgent.toLowerCase().indexOf("msie")>=0)?true:false,
	confirm:function(e,url,msg)
	{
		if(arguments.length!=3) {this.alert("请参照Message.confirm(事件，URL，消息)格式调用!");return;}
		if(!msg) msg = "继续操作吗？";
		if(window.confirm(msg))
		{
			location = url;
		}
		else
		{
			if(!e) e = window.event;
			if(this.isIE)
			{				
				e.returnValue = false;
				e.cancelBubble = true;
			}
			else
			{
				e.stopPropagation();
				e.preventDefault();
			}
		}
	},
	alert:function(msg)
	{
		window.alert(msg);
	},
	prompt:function()
	{
		if(arguments.length==1) return window.prompt(arguments[0],"");
		if(arguments.length==2) return window.prompt(arguments[0],arguments[1]);
	},
	redirect:function()
	{
		if(arguments.length!=1) return;
		var url = arguments[0].toString();
		location = url;
	}
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-02
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:字符串缓存类
*Example:var x = new StringBuilder();x.append("aaa");x.append("bbb");var y = x.toString();
*--------------------------------------------------------------------------------------------------
*/
function StringBuilder()
{
	this._value = new Array();
	for(var i=0;i<arguments.length;i++)
	{
		this._value.push(arguments[i]);
	}
}
//追加方法
StringBuilder.prototype.append = function(value)
{
	this._value.push(value);
}
//获取串结果
StringBuilder.prototype.toString = function()
{
	return this._value.join("");
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-06
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:拖动层类,可以和浮动层配合使用
*Example:
*--------------------------------------------------------------------------------------------------
*/
var Drag = {
	source:"",
	dragged:false,
	oldMouse:[0,0],
	oldPoint:[0,0],
	$:function(){return document.getElementById(arguments[0]);},
	isIE:(navigator.userAgent.toLowerCase().indexOf("msie")>=0)?true:false,
	currentStyle:function()
	{
		if(!Drag.source) return null;
		if(Drag.isIE)
		{
			return Drag.source.currentStyle;
		}
		return document.defaultView.getComputedStyle(Drag.source,null);
	},
	getElement:function(e)
	{
		if(!e) e = window.event;
		return ((e.target)?e.target:e.srcElement);
	},
	down:function(e)
	{
		if(!e) e = window.event;
		var obj = Drag.getElement(e);
		var att = obj.getAttribute("drag");
		if(att && att.toLowerCase()=="head")
		{
			Drag.source = obj.parentNode;
			document.onmousemove = Drag.move;
			Drag.dragged = true;
			Drag.oldMouse[0] = e.clientX;
			Drag.oldMouse[1] = e.clientY;
			Drag.oldPoint[0] = parseInt(Drag.currentStyle().left)|0;
			Drag.oldPoint[1] = parseInt(Drag.currentStyle().top)|0;
		}
	},
	move:function(e)
	{
		if(!e) e = window.event;
		if(Drag.dragged && Drag.source)
		{
			Drag.source.style.zIndex = 10000;
			Drag.source.style.left = e.clientX-Drag.oldMouse[0]+Drag.oldPoint[0]+"px";
			Drag.source.style.top = e.clientY-Drag.oldMouse[1]+Drag.oldPoint[1]+"px";
			Drag.$("pos").innerHTML =(Drag.source.style.top);
		}
		$("pos").innerHTML = "Drag.oldPoint[0]:"+Drag.oldPoint[0]+",Drag.oldMouse[0]:"+Drag.oldMouse[0]+",e.clentX:"+e.clientX;
	},
	up:function(e)
	{
		Drag.dragged = false;
		if(Drag.source)
			Drag.source.style.zIndex = 9999;
		document.onmousemove = null;
	},
	enable:function()
	{
		if(arguments.length==0) return;
		var floatObject = arguments[0];
		var id;
		if(typeof floatObject == "object")
			id = floatObject.ID;
		else
			id = floatObject;
		var item = Drag.$(id);
		var head = Drag.$(id+"_t");
		item.setAttribute("drag","item");
		head.setAttribute("drag","head");
		var width = head.clientWidth-50;
		head.innerHTML = "<div drag='title' style='float:left;'></div>"+head.innerHTML;
		head.style.cursor = "move";
	},
	initialize:function()
	{
		document.onmousedown = Drag.down;
		document.onmouseup = Drag.up;
	}
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:判断当前浏览器类型
*Example:var x = $B().isIE;
*--------------------------------------------------------------------------------------------------
*/
var $B ={
	isIE:(navigator.userAgent.toLowerCase().indexOf("msie")>=0)?true:false
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-26
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:获取当前文档中的某个标签对象
*Example:var x = $("test");
*--------------------------------------------------------------------------------------------------
*/
function $(element)
{
	if (arguments.length > 1)
	{
		for (var i = 0, elements = [], length = arguments.length; i < length; i++)
		{
			elements.push($(arguments[i]));
		}
		return elements;
	}
	if ((typeof element).toLowerCase() == 'string')
	{
		element = document.getElementById(element);
	}
	return element;
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-10
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:DOM对象事件注册类
*Example:var x = $E.add(对象，事件名称，事件句柄)或者$E.remove(对象，事件名称，事件句柄);
*--------------------------------------------------------------------------------------------------
*/
var $E = {
	element:null,
	event:null,
	handler:null,
	add:function(element,e,handler)
	{
		if((typeof element)=="string" && element) $E.element = document.getElementById(element);
		if((typeof element)=="object" && element) $E.element = element;
		if(!$E.element) return false;
		$E.event = e.replace(/^on/gi,"").toLowerCase();
		$E.handler = handler;
		try
		{
			if(window.attachEvent) $E.element.attachEvent("on"+$E.event,$E.handler);
			else if(window.addEventListener) $E.element.addEventListener($E.event,$E.handler,false);
			else eval("$E.element.on"+$E.event+"=$E.handler");		
		}
		catch (ex)
		{
			return false;
		}
		return true;
	},
	remove:function(element,e,handler)
	{
		if((typeof element)=="string" && element) $E.element = document.getElementById(element);
		if((typeof element)=="object" && element) $E.element = element;
		if(!$E.element) return;
		$E.event = e.replace(/^on/gi,"").toLowerCase();
		$E.handler = handler;
		try
		{
			if(window.detachEvent) $E.element.detachEvent("on"+$E.event,$E.handler);
			else if(window.removeEventListener) $E.element.removeEventListener($E.event,$E.handler,false);
			else eval("$E.element.on"+$E.event+"=null");		
		}
		catch (ex)
		{
			;
		}
	},
	source:function(e)
	{
		if(!e) e = window.event;
		return ((e.target)?e.target:e.srcElement);
	}
};
/********************************************Float浮动类**************************************************/
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-02
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:浮动类
*Example:Float(ID);
*--------------------------------------------------------------------------------------------------
*/
var floatTop,floatLeft,floatWidth,floatHeight,docHeight,docWidth,objTimer,floatI = 0;
function Float(id)
{
	try
	{
		var obj = document.getElementById(id);
		floatTop = parseInt(obj.style.top,10);
		floatLeft = parseInt(obj.style.left,10);
		floatHeight = parseInt(obj.offsetHeight,10);
		floatWidth = parseInt(obj.offsetWidth,10);
		docWidth = document.documentElement.clientWidth;
		docHeight = document.documentElement.clientHeight;
		obj.style.top = parseInt(document.documentElement.scrollTop,10) + docHeight + 10 +"px";//  floatHeight
		obj.style.position = "absolute";
		obj.style.right = "1px";
		obj.style.display="";
		objTimer = window.setInterval("moveFloat('"+id+"')",1);
	}
	catch(e){}
}

function resizeFloat(id)
{
	floatI+=1;
	try
	{
		var obj = document.getElementById(id);
		floatHeight = parseInt(obj.offsetHeight,10);
		floatWidth = parseInt(obj.offsetWidth,10)
		docWidth = document.documentElement.clientWidth;
		docHeight = document.documentElement.clientHeight;
		obj.style.top = docHeight - floatHeight + parseInt(document.documentElement.scrollTop,10)+"px";
	}
	catch(e){}
}

function moveFloat(id)
{
	try
	{
		var obj = document.getElementById(id);
		if(parseInt(obj.style.top,10) <= (docHeight - floatHeight + parseInt(document.documentElement.scrollTop,10)))
		{
			window.clearInterval(objTimer);
			objTimer = window.setInterval("resizeFloat('"+id+"')",1);
		}
		floatTop = parseInt(obj.style.top,10);
		obj.style.top = floatTop - 5+"px";
	}
	catch(e){}
}

function closeFloat(id)
{
	document.getElementById(id).style.display="none";
	if(objTimer) window.clearInterval(objTimer);
}
/********************************************AJAX**************************************************/
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:创建AJAX类
*Example:var ajax = new AJAX();ajax.Request(url,{onSuccess:m1,onActive:m2,onFail:m3});
*function m1(obj){//obj即为AJAX对象}
*--------------------------------------------------------------------------------------------------
*/
function AJAX()
{
	//basic parameters
	this.error = ["错误列表如下：\n"];
	this.message = null;
	//necessary parameters
	this.method = "POST";
	this.url = null;
	this.asynchronous = true;
	//other parameter
	this.contentType = "application/x-www-form-urlencoded";
	this.parameters = "";
	this.encryption = false;
}
AJAX.prototype.createRequest = function()
{
	var request = null;
	if(window.XMLHttpRequest)
	{
		this.error.push(this.error.length+":运行平台不支持ActiveXObject;\n");
		request = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		this.error.push(this.error.length+":运行平台不支持XMLHttpRequest;\n");
		try
		{
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (ex)
		{
			this.error.push(this.error.length+":"+ex.message);
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}		
	}
	this.message = this.error.toString().replace(/,([0-9]+:)/g,"$1");
	return request;	
}
AJAX.onReadyStateChange = function()
{
	var self = AJAX.bind;
	var args = [];
	for(var i=0,len=arguments.length;i<len;i++)
	{
		args.push(arguments[i]);
	}
	return function()
	{
		if(args[0].readyState>=1 && args[0].readyState<=3)
		{
			if(args[1].onActive) AJAX.execute(args[0],args[1].onActive);
		}
		if(args[0].readyState == 4)
		{
			if(args[0].status == 200)
			{
				if(args[1].onSuccess) AJAX.execute(args[0],args[1].onSuccess);
			}
			else
				if(args[1].onFail) AJAX.execute(args[0],args[1].onFail);
		}
		else
		{
			if(args[1].onFail) AJAX.execute(args[0],args[1].onFail);
		}
	}
}
AJAX.execute = function()
{
	if(typeof(arguments[1])=="function")
		arguments[1](arguments[0]);
	else if(typeof(arguments[1])=="string")
		eval(arguments[1])(arguments[0]);	
}
AJAX.prototype.Request = function(url,obj)
{
	//To be sure request object exists
	var request = this.createRequest();
	if(!request)
	{
		this.error.push(this.error.length+":创建Ajax对象失败;");
		this.message = this.error.toString().replace(/,([0-9]+:)/g,"$1");
		return;
	}
	if(!url)
	{
		this.error.push(this.error.length+":请仔细填写请求相对或者绝对地址;");
		this.message = this.error.toString().replace(/,([0-9]+:)/g,"$1");
		return;
	}
	if(!obj.onSuccess)
	{
		this.error.push(this.error.length+":至少包括处理成功事件方法;");
		this.message = this.error.toString().replace(/,([0-9]+:)/g,"$1");
		return;
	}
	if(obj.encryption) this.encryption = true;
	//set url
	this.url = url;
	//set method
	if(/^(?:post|get)$/i.test(obj.method)) this.method = obj.method.toUpperCase();
	//set asynchronous
	if(obj.asynchronous && typeof(obj.asynchronous) == "boolean") this.asynchronous = true;
	else if(obj.asynchronous == "true") this.asynchronous = true;
	else if(obj.asynchronous == "false") this.asynchronous = false;
	else this.asynchronous = true;
	//parameters
	if(obj.parameters) this.parameters = obj.parameters;
	if(this.url.indexOf("?")>=0)
	{
		this.parameters = (this.parameters)?(this.url.split("?")[1] + "&" + this.parameters):(this.url.split("?")[1]);
		this.url = this.url.split("?")[0];
	}
	//set header
	if(obj.contentType) this.contentType = obj.contentType;
	//set encryption
	var ps = this.parameters.split("&");
	var ns = "";
	for(var i=0,len=ps.length;this.encryption && i<len;i++)
	{
		var p = ps[i].split("=");
		ns += p[0] + "=" + encodeURIComponent(p[1]);
	}
	if(ns) this.parameters = ns;
	//To be sure every request is differrent
	if(this.parameters) this.parameters = this.parameters + "&r="+Math.random();
	else this.parameters = "r="+Math.random();
	if(this.method == "POST")
	{
		request.onreadystatechange = AJAX.onReadyStateChange(request,obj);
		request.open(this.method,this.url,this.asynchronous);
		if(typeof(request.setRequestHeader)=="function") request.setRequestHeader("Content-Type",this.contentType);
		request.send(this.parameters);
	}
	else
	{
		this.url = (this.parameters) ? (this.url+"?"+this.parameters):(this.url);
		request.onreadystatechange = AJAX.onReadyStateChange(request,obj);
		request.open(this.method,this.url,this.asynchronous);
		if(typeof(request.setRequestHeader)=="function") request.setRequestHeader("Content-Type",this.contentType);
		request.send(null);
	}
}
/********************************************PinYinDictionary**************************************************/
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-06-25
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:得到汉字串首字的首拼音的第一个字母
*Example:var x = "中华人民共和国";x = PinYinDictionary.getFirstAlpha(x);
*--------------------------------------------------------------------------------------------------
*/
var PinYinDictionary = {	a:[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,356,67,,247,,,,330,378,277,286,338,,20,362,,90,39,,389,252,238,291,,256,18,355,48,69,301,36,,,,68,,170,352,,278,293,,94,351,,384,,,85,,42,,173,,64,,330,57,332,386,,167,137,241,,,,205,,136,,327,190,356,,383,336,375,119,80,164,,243,233,251,,102,,36,356,,,217,136,247,355,337,340,,,,,293,,,127,,,,,,,186,179,,270,,,,,,,,,,,249,,,,,,,,171,,362,382,,291,79,40,362,156,,365,119,247,336,134,,,96,,351,342,,,,127,,331,144,,131,109,356,31,116,203,,340,134,320,170,,,,253,19,,342,,,,,265,,,,,356,291,265,164,67,371,133,246,39,,378,133,132,,266,48,,,181,,24,394,291,309,378,88,339,,,,321,265,249,,94,,56,174,356,,,277,,356,203,192,,,,353,,384,238,,336,129,128,,,,265,,84,,82,,247,,,,,,,,144,356,,,336,127,88,80,346,,,,,,384,361,126,124,362,,,277,332,42,,351,,286,32,181,24,,,332,386,,,,19,100,,213,,7,,174,,289,,301,,301,128,,,,,,64,,,57,,,,,,,332,62,386,401,361,,316,,113,,327,288,362,356,86,401,99,219,321,213,,,360,328,249,,141,,235,,,163,,,353,6,,,128,205,,127,,,,,318,131,,356,291,,,,143,383,,,,37,152,,167,,291,,386,,361,,,202,,,69,,,,98,,356,,,338,,,183,,131,381,26,251,153,30,,221,,336,118,,,,,,253,,,,,,,,,,14,,,,50,76,256,,,,,140,,,,397,251,167,360,,,,,,304,88,,167,,243,9,362,301,,343,,362,,,39,,352,168,167,,,129,346,88,,137,,231,,,,,85,,2,,,,13,,,,,,,,,,,,,,103,10,,293,,,59,,139,,,,312,118,356,,316,,,132,,32,,,,149,138,,137,249,213,,393,335,182,,,,,,,,,,,,376,,383,,254,,,,,352,,,,128,127,,,,274,,332,239,,,,,,342,,,,,401,,320,,,,,,,,,129,,,,,,,395,,,,,,,,,,229,322,,,,183,,,84,32,156,,,,,88,,,167,,,,,8,,,,,,,,,,,,,,,,,,,,,,56,,312,,17,40,226,,,52,,,,,,4,,,,,,,,37,283,,,,,,,,,,,,,,,,,,,,340,,,,,,,337,,,,171,,,,,,,,,,,,136,282,,,,,131,129,390,,,,,304,,130,,,,,,238,,,,,,,,,,,134,348,,,,57,,,,,,,270,,,,,,,,,,,,,,,165,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,79,336,365,,363,345,38,379,,339,104,,146,,195,,,,73,,,323,301,352,,,,58,,70,,,,,,134,,,270,,,258,,,5,98,175,337,,161,98,,103,344,18,247,137,64,394,,353,129,292,,,127,31,,,,210,,,92,261,,,26,367,,,,,189,,,195,,268,,342,,140,221,,,,103,,384,,363,199,,,,,,,69,,,85,18,119,38,139,,155,355,166,,,,69,339,172,,,134,,,,247,,392,302,,170,,65,174,,,129,,49,,,,,,,,,,173,,219,,,127,81,,,85,,,,,,,88,,243,,142,123,,,61,,,345,,323,4,40,127,57,110,,370,59,65,,265,,,84,252,356,,143,,,40,333,,,344,120,,,,364,172,175,371,92,43,,40,,,285,,,,232,,,,234,167,,16,,134,101,,59,,,151,,,383,294,258,283,47,146,,105,,105,142,75,127,316,,,,,,,341,,159,249,,,101,129,,,316,,245,,,,,,330,,127,,,352,,,,9,,137,,290,129,,,,,88,,,94,,,,,,,,,,,240,,131,,251,139,,,,,,238,,,,,,,,126,,,356,,,,,,,,167,,258,7,98,128,336,186,172,,,,,69,386,223,132,257,287,,,,167,133,163,,,,,,,,,,,113,291,,,,19,,,,360,,195,,350,,,,,193,,164,,,,347,,143,,,,,,,203,,,,,253,,,,,,,,,,,,342,,,,,,,,,9,287,,,,99,336,365,,,,,9,48,,345,,,,,246,,234,88,,,,,13,120,10,,37,,,,366,,,130,155,,338,,,105,,,,83,,,,156,,,,,,,,,,,238,257,356,,,14,213,,291,,249,,275,,290,336,124,7,,,,120,342,,10,397,393,,57,186,206,,,19,,20,,14,20,377,141,178,361,178,,101,335,,,,332,,,383,189,357,332,,127,259,179,,138,342,,133,,,,,254,,,32,,76,320,167,,,167,,351,352,288,,,,,,,,26,,,167,,118,,,54,,363,,,340,352,,139,338,,40,136,,,,,301,,,,,,,,301,,,,,257,,,,339,,277,23,,,,,,361,29,127,361,297,81,,,,80,,,293,,257,292,14,347,,232,,,,303,66,,,150,100,137,174,,59,150,383,131,379,5,67,146,310,37,291,361,,244,355,112,301,311,,164,65,127,,,,362,,37,94,,354,,113,127,65,,321,199,118,167,323,340,375,338,,183,0,185,,,,140,,173,326,357,83,13,,253,,,87,5,74,84,,110,320,148,299,247,,383,357,,336,33,,,337,44,,333,118,,336,,351,,,76,,,56,,36,,93,88,,,,,204,,184,356,56,229,167,10,363,107,,250,336,,,,,,209,,174,,361,,385,,,,,,,,,101,394,332,,113,208,338,235,,,289,119,199,,,137,,366,,75,,234,,,,,375,113,,136,360,88,,385,,141,100,141,,,176,69,219,,301,,,,,,104,375,,356,172,394,197,194,383,354,127,,141,,368,,146,124,,,,339,,,346,,352,,356,1,242,289,,117,,75,328,108,367,,,231,340,1,96,155,351,55,341,13,364,,120,,153,75,,127,221,202,359,,,,,,94,228,37,287,167,204,,,151,341,,,,380,375,,,,,,,20,,116,97,,94,,352,,,,,308,45,,1,,,,,,337,312,401,,,336,,,,,,,185,,,,,163,,308,370,122,,,127,,,85,,119,,292,332,294,32,,167,,,,359,,,,,283,,327,119,,385,,147,393,,286,,,173,0,,,,,,52,,,,,313,57,,,,,,46,,,,,83,,,238,283,159,371,,,230,,280,389,217,,,,,,,19,67,162,341,,,37,316,,136,,141,360,332,206,285,,,159,132,118,110,66,,,,264,,357,,,335,,,,42,124,,,337,113,,156,,,,,,,,348,,,,,,,,,,167,,375,,196,,236,,156,,362,,177,151,,,,,,0,346,,,,304,,,1,308,,,,146,309,278,35,,303,,,,,,291,94,,132,,334,,301,37,112,308,,109,,253,217,113,,,78,,,63,1,,321,,4,,,,,,303,303,,62,247,,,,,,,25,128,,,240,,89,100,,,,,,,,,347,,,185,,,165,71,,,,12,358,,,194,,,,,41,237,,,,386,33,,399,,301,,,171,,337,,,,114,,,,,,,,,,,,,28,131,355,,,,,,61,,,246,139,253,,,178,,,,,,228,,133,,,,247,76,370,356,291,,,,,349,,,,,89,,,,,276,238,,,,,,,,,270,112,,,,,,,,112,316,,,,21,,,,,,,,,,,,,,,,341,,,,,,,,,,,,126,,,,,,,,262,,,,,131,,,,,,,,,,,,,,207,,,,,,,,,,207,,,55,,,256,301,,129,124,343,357,206,324,,74,,,,,,,119,,363,,,157,48,,,332,181,,,,174,100,,,107,323,361,,,,246,362,,363,,258,362,254,,,,,,,,,,,,,,,,,,122,,,323,,,,290,,,,,367,332,94,,336,105,238,356,62,,,381,,,,,,155,32,247,,,127,,383,,7,,,,,140,,,82,,11,311,143,121,401,148,,,,,,153,,,129,311,167,5,336,84,391,244,,,157,,311,,327,91,243,64,,213,,238,,,,4,,,203,146,,,,62,34,,,,,,44,159,176,176,178,,,,,344,69,,,,,,165,89,,,,,,,,75,,,,,357,80,99,363,66,,147,286,,76,,64,,351,152,,,,142,,208,,,,363,,,,,,,,,,97,1,,,,,,,,186,,,36,285,,,172,,246,36,,,291,350,107,,,214,,362,20,,,,238,,,,,,,,,56,,2,,,,,383,,,,356,235,127,,,279,,,151,,312,,,,73,133,,,,237,,323,,,,249,,,,75,,,,357,,,,,66,,118,9,,,62,,,,,,143,,,,,,352,,,,,71,,,,,,,,,,,,,,,166,,,,,,,,309,36,,,,304,,,309,,,,312,,,,,,276,,,,,,,94,,,,,,317,363,,,,,,,,,,,,,,,,,,293,,37,187,,134,,293,,,,360,,,,,,,,,286,203,,,,,,250,170,,,,374,347,,,,,,,,,201,74,,,,,,,,,,,,,,,,,,,127,,,,,13,,,,360,,,,,,,,,,,,113,,,,112,,,,,,,,,,,,,,,262,,,,,,,291,265,,390,,290,,,146,,,119,,,356,,,,,,,,,81,,40,,,10,,,,,,88,,338,,,,,156,337,329,,,304,75,,355,,,99,,,,,357,126,,55,,317,310,88,,354,353,111,,291,,,322,,,356,152,128,75,,155,,,,,169,122,,352,,,247,205,85,,84,,,156,396,,247,,,11,356,130,313,369,,337,,,,,,64,,288,,,4,,,,,,,,,,,,,,227,223,,205,,129,309,,,,112,,,,300,270,83,331,,390,88,185,,265,,,352,,,,,71,127,,,354,133,,196,,,,,220,,,,,13,362,327,,,82,336,362,105,,,213,385,,,55,,,,,,,191,,247,,,252,,,,,,,,203,,,,394,291,,,,,132,100,301,344,332,,,285,242,,354,,130,293,,,,,,131,,163,,,356,,,,127,,,,,,,,,,,,,29,,357,,,,394,,332,,328,177,351,263,131,179,243,,,167,,,,,308,,332,,,,,215,,,,204,,,138,289,,,62,,76,,,,195,,,,,,,,362,328,,339,,257,,,,,,32,,,,76,,,,,,244,,,330,15,,,,,,,,,,,132,,,,,125,,,,,,,,13,,,,,134,,,161,,,,,,,,,,358,31,289,320,,,336,,,,,347,,,,,,,,,,,,,,,,,,,191,,,,,,,,191,363,,,,,,,,,,,,,,,4,,,,,,,,238,337,,358,,,37,,,,,,99,,,128,279,,,,,,,127,,,339,,,,,,1,,242,,240,,165,,,,378,,,,167,62,,352,,,32,,,211,,201,,,,,,250,,,,,,,,,,,,,,,,,,,,,,,,337,,,,,,,,,,,,,13,285,,,,,,,,,,,,,,,,,,,,,,,,,,,216,,358,,,201,,,,,,,,,297,,,,,,,,,,,,,,,,394,132,,139,149,365,,394,53,307,88,10,394,341,,193,,,9,127,100,223,349,,,109,179,,208,,,,293,31,,394,,88,,,,,270,,,217,,,,219,,309,105,376,,362,292,2,,302,330,,,117,,,,194,,57,,395,103,385,67,330,356,9,291,,38,289,146,348,291,361,122,,,,339,98,,,,,367,,,109,352,341,128,,35,268,,,,154,17,304,,,127,,127,357,194,150,,,,,88,,,,191,,110,362,,,,,,,,,,253,201,29,,101,,,336,171,,,376,,,,,,171,,122,,,,,,,,53,73,301,350,59,,,292,,85,,,288,,130,,,332,400,,,,,341,,287,,,79,89,129,,35,,286,,89,32,,,,,361,,361,171,,354,,,,,89,,,,,136,,,91,,,,291,357,37,145,213,133,332,216,137,238,28,,,137,,,257,316,132,336,,,291,243,127,342,,,,377,,,,76,,,,,293,,323,183,,337,,183,137,,,,,,,,,326,,285,,,,,,,,356,247,,,,,362,,306,247,,,,,,351,,,,127,249,,,247,27,,,29,,257,92,339,4,161,59,5,,,,,,146,99,,,,,,352,,346,128,174,,,,56,,364,,119,,198,2,,,,,69,,156,,189,,,356,,,,,,,350,,,,,,,69,,,,,,,383,,,,,,,,338,,,131,382,179,,76,,362,,,251,,,85,,,,,,,,,,,140,,,,,,,163,160,,,149,38,,,,,,,247,,,,,,52,,351,,,,,139,,,107,,,,,,341,,352,302,,12,,,,377,100,,,,,,329,,,,,,,,,367,354,,,,,,,,,127,,,290,191,249,,,,,,,,,,,,268,,,362,,177,,,,,,,,,,,,302,,394,332,,,54,,,,,127,,,,,,,,,,,,,,378,,,,,,,,,,,,,,,,,,,,,,,173,,,,61,,,,,,,,,,,,,,,,,,,,,,,,,,356,,,,,,,,,,,,,,64,,,,,,,,332,,,,,,,,,,,,,,,,42,385,,,350,33,,,98,401,251,137,98,,336,,,29,256,,127,356,301,5,,,340,,,,,,350,133,,,13,291,20,,295,81,,291,,,,337,,,332,378,312,,,235,230,319,,169,383,385,19,383,62,,,,,,,,,56,381,,,,,,337,8,,,39,,,,,,332,32,,,371,107,189,,,,,194,,335,88,,,,,,,123,,,,,,,,187,203,,,,,,378,,,88,,,81,43,,,,,,,,,,,,,,,,91,243,214,,18,,344,,354,122,361,361,,104,238,,,,390,,254,13,,,43,105,,,,347,178,336,,151,358,62,234,64,,196,97,,88,,233,83,340,,,,,346,71,401,,,,,,320,,,,,,13,,2,293,144,360,327,,,,,362,,,,,,,,,,,169,162,,,,,,,133,4,158,,,171,,,,,31,,,,,,,,,,,,,342,,173,,,,,,,,,,,,352,320,,,129,,,,,214,142,14,356,247,221,,,,356,,13,356,,,,291,,291,,98,,357,,88,117,,,37,,,,62,378,,,,,194,339,119,,223,134,,,194,,330,,274,,,,,,,,57,250,,13,,,,99,,,,,,,,,,,,,,,,,,105,58,,178,324,124,383,,,,,356,,,,277,344,,321,,352,,,22,15,,17,237,,,378,358,,37,,,,233,,356,,34,13,,,,331,382,50,,134,56,,350,115,353,121,183,118,,,,347,,323,,,160,,60,231,337,,,32,,,,,362,,,,,,,123,,350,,,354,332,,,,,,,382,,60,,,,,131,124,,,,,,343,,13,356,,,163,,,127,265,,31,311,314,314,,,,53,383,331,188,,,,317,,,384,38,,,336,,,361,,,302,153,,14,383,,,35,,,,214,,,220,,,343,,119,142,84,121,310,302,336,229,32,43,,,,33,,,401,373,353,,,223,,382,230,20,,,119,,55,169,301,,,56,356,,,,127,237,344,363,213,102,88,,,,252,,,,,,40,,,,,,395,73,,,356,,211,350,291,,,,,,,,169,,123,,,149,,116,,,293,,,,353,124,,,128,,,,,124,394,347,,,227,115,78,146,69,317,98,,337,248,,,147,,,76,,321,352,142,26,208,365,,360,,,,157,251,,,,,337,,,316,110,,,,,356,,124,,10,,,,302,258,,156,,336,361,,,122,,,364,,218,,,259,348,249,,198,,83,10,,52,,,,127,,,344,59,,,,,,,,,254,39,,,,134,330,,,,,,126,,,,316,,,331,,119,,337,32,,332,124,,,,,,64,137,23,36,,10,252,23,57,103,75,,,340,391,,123,,,264,344,,,,,,251,39,,,,,249,,362,362,,,,198,13,356,,,,,,76,,,,,362,,,,,91,365,,,166,84,,156,156,,,,304,,,,,,,,,,,,,,,,,,,,363,,,,,,,,,47,,249,,123,,289,,,288,,,,203,,,,,,,,314,,,,,187,,,,,124,142,,,,,,,,332,,,,,360,,144,,,,,,,,,,,,,,,,,,,,16,,,374,,,,,,251,,,,,,,,,73,,,,,,,,,,38,110,247,,,134,,,,,,,,,,,40,,,,,,,110,,,,69,,,,,,342,,4,189,,,,,,192,161,,173,,,,,,,,,,,,,,,,,,226,,,,,,,,,,,,,,,193,,,,,,,,,,356,,,,,,,92,,94,,336,129,347,293,268,337,36,335,132,,,250,126,250,377,,247,128,,,,127,,143,127,,90,61,,,,,132,,129,,178,,,,,46,56,,,119,,,,,,119,167,82,308,14,,135,,,,285,119,83,,292,,22,375,,,246,5,55,266,,,,327,,,144,,,,,,,,150,,,249,383,,158,192,279,353,220,7,34,263,,,7,,,88,,,238,,,76,,379,36,127,,,,33,,,,,139,5,,,,,,,356,293,387,,322,70,144,380,,88,234,,,,324,150,181,250,,119,9,,,237,,,238,310,,,,,9,,,,62,,,,201,,35,351,39,,198,,,88,,386,57,30,203,214,159,88,,7,231,173,,102,,137,327,5,,327,4,137,393,232,379,6,,,213,,,176,129,,360,161,219,19,371,,,158,291,132,382,,98,,258,296,,366,145,,,,,242,388,291,204,,37,101,,,,,383,252,2,,,,,152,,,318,,,,,328,,,,383,179,,335,309,342,208,58,131,382,127,124,,,1,,225,54,,,,381,,,308,,,,,,,356,320,,,330,,,,,336,140,,321,157,,,393,,183,5,110,287,217,138,,,,,20,,,,,,,,,163,307,,129,122,59,,,,237,,172,,,,6,137,,,1,,,,,44,132,,,204,214,,,,,339,,64,,,,,75,292,65,245,,378,,127,313,248,,231,,,,355,,139,,,,,,,,180,,311,34,,132,,149,325,352,54,,137,317,249,,6,,,178,102,,,383,57,,31,,103,,363,,,,,,362,,156,,,269,,,,396,348,196,316,,29,,,,356,,,,,,,,2,,351,335,,41,,,,,,142,136,,,132,,,,,288,,363,,355,,375,,,,,161,,253,31,94,177,,,131,,,,,,41,377,,,19,40,,,54,279,,,,,,,129,303,,93,,300,278,,,,,226,,,,312,,7,55,,,,,,,249,,,,,,342,,,29,,94,,78,,,288,293,6,354,17,,311,,,,,,,,18,,295,,,,376,,,,,,182,,,,,,,,,52,,201,,,,383,,,,,,,,,,,201,201,380,,,,,,,,171,,358,139,,241,,,,,,,,,,36,275,,,301,110,,,400,,,,,390,,,,,,34,,,,,171,,,251,19,54,,389,,,,,214,,342,178,,51,,110,,,,91,,165,,,285,,,,,,,,25,254,,122,,253,,,,,238,19,,,,,,303,,,,393,,344,,21,,,,,,,,,,,,,,,,,,,,,,,,,,232,,,,,,,,,126,,,,,,,,,368,,,,,,262,,,,,,,,,,,,,398,,,,,,139,,,207,383,,,,,,81,292,,361,90,,98,,,82,382,,,,,,100,,,341,194,,,62,,,198,,136,,,,37,4,,,131,,169,,13,32,,,,91,277,,,74,,,,,131,134,,,,293,,251,,382,,,88,,,,,,,,,,,,,,,,333,,,,376,17,,,,83,7,,161,,,,70,,171,,119,342,,,381,,335,,,133,37,,88,,377,,393,,72,,301,343,,,,,,,,,82,,,362,291,,,,233,,377,189,183,235,,,,,348,134,,213,397,,,175,,,,356,247,,,,,,,,,336,,127,,,267,57,136,383,370,,,350,347,89,159,91,110,,,,,291,155,,,331,,,,,,365,,3,371,,,157,,,,112,,32,,199,125,,,,356,337,343,,,,311,,,,368,,344,358,,,,,45,,191,401,,,,,379,,291,,362,,,189,213,32,,,,,,385,,339,,,33,,123,,,,,,,,133,286,,,352,,,284,341,355,365,124,110,,,330,,,,,290,,20,,,336,,124,,35,,,,,,246,134,337,,,,254,,134,105,,,383,,,,170,,,,368,,348,,,338,,,,,156,,,,,293,,,,,224,2,,,,,,199,,,,,,,,,,1,127,,,,,,203,,,,,,9,,,,,339,,,,,326,,,,,,,,,,,,,,,,,,,,,,,,,,,293,,350,354,246,,,,,,,,,337,,,207,,,,,,,364,,257,355,97,,,113,,25,,,187,,374,316,399,,,,,,,,364,361,271,237,,88,,,257,,,,300,381,,162,,,,331,,33,,247,,,,,,,193,,203,,332,201,11,375,,293,,386,,,246,75,,,,,127,,,346,,,283,,366,258,,,91,,29,285,,,336,,167,344,22,53,,287,,,378,,,,,,71,,247,293,92,318,,,,160,,,353,185,196,,,111,,10,132,,93,354,,40,,230,,,,,386,,302,7,,127,,,99,,,238,,331,,82,,,,,337,,,,,381,,173,272,,191,,107,383,48,,,,293,370,,167,,129,36,,250,85,,341,,151,243,,,383,,341,128,128,99,,,,,,,,,327,,174,18,,,,,,,,,,,6,202,91,247,261,269,,,,380,338,361,,105,327,401,,219,,62,,,29,,,,136,,,129,,,146,205,386,,175,30,,,,,,,,,36,,291,383,,,,,375,,15,377,383,176,69,178,,167,161,,293,,296,,,247,167,,,,,,101,,,,341,,,,,,,,347,386,,,,,,,,145,163,,,,353,113,96,,,94,367,179,,132,116,105,313,104,332,155,,2,2,138,,393,,383,,321,278,,122,132,136,,,,,,,,,,,351,263,381,58,247,251,120,124,130,390,,308,,,,,,,,,88,,321,139,,,,,,,,,,170,,320,,191,8,,,,,,,,,100,,,,394,,,,97,,,,,,,,,,,287,,,,193,336,167,,,,,308,,316,342,,,293,,81,,,,,,,,,,,129,,174,,,,,,,195,,247,,106,,,,,8,,,395,,,127,,237,,,,,,312,,,62,,,,,,,,,,,281,,44,166,,,,146,,,,379,103,,84,,,,,107,,,,356,,,,,,170,,383,391,,137,,131,,,,,,,,,,,,,71,249,,,,182,,,,,,,,,327,,,355,,,,72,,,,,381,,,,42,,45,,,29,,,,,,,,,,,,,,,,,,342,,,129,,,40,,,169,166,,206,,,191,,,348,,,,,127,,,40,,,49,,,,,,142,256,358,,,177,,,,242,,90,,161,,362,35,183,137,,,,342,,,,,,,162,268,,,137,,,381,8,,,,,,,,,,,83,375,,,307,,342,,,,52,,,175,,,259,,,,309,,,,,,93,,,,,,,,,300,,44,,29,,121,,,,93,,,,,,,129,,,,17,386,,,,,,,,,,,,,247,,,,,119,,,,,,,,,,,25,,133,,,,,,,,,,,81,,,,,,,,,,,,,40,312,,,,,,,378,,201,,,,,,,337,,116,,,,,250,,358,,,,251,,,,,,,,400,364,,,,,,91,,,251,,,,,,,,,327,,,,,,,,137,36,,139,,,,,,340,,,,386,,,,,,,,,,,,40,,,,,,,,178,,,363,,,,311,,,,337,,,,,,,,,,253,,352,165,,,,,,19,,,,,,,,,254,,,,,,,,,173,,29,193,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,249,47,122,343,362,,,229,,,,,,,,,,,362,,,,,337,,356,247,,,,154,,,,,283,,,343,342,,249,,,94,,,,,,,,,,,,,337,,,,,,,,,383,382,47,20,336,247,,,329,,,,,,,,,,,,,,,56,,301,129,,,,,201,50,353,317,,56,286,,350,293,23,,240,,,,,365,169,,,383,,,,57,127,,,,,,17,,,,,,,,,356,,,,,,,,,293,229,72,,357,,,,,,,,64,,124,100,,,356,,,,,,336,,203,,191,,,71,362,13,13,13,238,,13,,189,,,,,,377,,,,,,,,,203,112,,,,311,,,,52,,277,,,,293,,,,129,,,,,,,,32,246,178,,,,,,257,,291,62,198,,188,247,241,205,,59,339,42,84,,,,88,,69,254,,357,,109,353,2,351,146,,,,57,183,254,,365,,298,,,,360,,,,,326,,,320,383,256,,,,51,124,,110,29,,,,,,337,,,,247,285,,110,,,,350,301,270,98,130,37,336,,,312,,,,194,100,331,,,,,,310,,127,,14,,333,,,345,,,,247,84,,,253,356,335,,363,111,,289,35,,,74,,,247,203,,,309,195,,,,,283,,235,,,,99,,191,,85,229,167,181,24,,332,119,201,,293,137,,,327,75,113,,,,,83,361,,383,379,100,377,352,,,,,342,256,,,,258,19,,194,,,,164,,,117,91,80,189,301,,,,81,,,219,,174,234,19,247,,213,,,386,,165,348,,,232,198,310,353,,360,,12,349,286,178,,182,342,244,371,134,,,132,,,124,,,357,,,,353,172,,127,,,,275,,,,,337,,386,130,182,,,69,,,,,,,133,,332,,,117,347,,,313,,,79,385,270,,350,,,,122,,126,328,248,231,,,175,,128,,249,130,131,381,,393,26,,153,127,175,,125,119,221,350,,,,,380,140,,8,,393,,337,,,122,,,246,,,112,162,,,,88,,,,,,362,,,109,133,,,,191,,,,,,323,,,217,,,341,288,,,360,,339,,,304,,138,27,316,,,,,,313,,163,160,169,332,335,,122,62,,273,129,378,280,88,103,,,296,351,,,355,,,110,,,113,,,,,,,393,64,,,,394,337,341,247,,,,173,312,,,,,293,,,,,208,,313,48,,,,83,302,,238,57,,,362,,91,,,,,357,52,,121,,,289,,45,,,,125,,352,,317,196,,,,,,,,,254,,,,,363,,178,394,71,,129,195,,,362,,289,289,,,386,,,362,,,257,71,,375,19,335,,,,333,,342,,332,,92,,,348,,146,,,,361,,196,,,,,,,,,231,191,,,,,,,,,324,195,,,,,236,129,,119,,340,,,377,,,,123,,,,,,,,,,,,256,,,352,,,,,,,,,,,,,,,,330,291,,,,156,,129,347,,,90,,,,,,312,363,,,,,,,,146,,,,175,,,199,,,356,,,246,,167,,,337,,,,,304,,253,303,,346,,268,125,,,213,309,,270,,,,40,233,,,,,64,,,,394,,,,88,,120,,394,313,315,,13,,,106,,,,383,352,288,187,358,,183,161,179,,17,311,,,,,,,,,,,62,,,,,119,,,,,,,,,240,,,,247,,,178,,,,,,177,,,,167,352,25,,,,,,,,,,,201,,,,161,,,,,348,356,187,,188,,182,,293,,378,,,122,,,,,,,,353,,,,,,,,358,341,,,,169,,332,,,,,,,,,,,232,,,,249,,178,,,,123,,,,171,,,,,,,311,33,,,,287,,386,,,,285,,31,,321,,,,,,,,36,,,,34,91,,,301,293,237,,,,,,,,,,,,,,161,,,,,370,,,,,,167,,,,,,,,,,,,4,,,31,,,57,,,,,,,127,,169,,,,,,,306,,,,,,,,160,17,,,,,,,,,,,,13,,112,270,,,,,,,,,,,,,246,393,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,246,,,,,,,,,110,358,,,,,,,,342,,,,,,,,,,,,,,,,,,84,,,,364,,,,,,,,,,,,,,,,,,,103,,,112,,,,,,,,,,,,,,,5,,,,,,,,,,,,,126,,197,,61,124,,,,,174,370,,136,,,,393,,367,23,353,,,,,105,,,,178,44,,,,352,,,,33,,259,144,74,,,383,,,332,250,,,,,,,,,,,,,,348,137,311,234,135,,310,,18,,,,386,375,64,,291,169,37,,,119,300,161,320,,,,,172,,353,,,,,,,,,,,,,,117,163,,386,,,,352,,,,,145,,81,287,355,124,,312,133,264,,337,,,,,,,,330,,237,,,,85,,,,,,,,,,,,352,110,,,,,,336,,,110,,122,192,,59,10,84,,,,,,,,,,,,131,,,,,,,,,33,352,352,,,,,261,,,,,,,,,,,,,,,72,,,,,348,,123,,129,,,,,,,,,,,,,,362,,283,,,,,,191,,347,379,332,,,,,,386,,,,9,119,,,,,14,,325,,,285,,,,,,,337,,,,,,345,,,,,350,,,,,268,,,,175,337,,,,,,293,356,,,,,,,,365,,,,4,,,,,,,187,,286,,,,337,,,,,,,,,,261,,,,,,,,,,,171,,,,,,81,352,,,,,,,,,,,362,,,,,370,,306,,,,,,,342,,,,,,,,,,,339,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,139,,,,,,,,,,,51,,387,,230,,,,363,1,,,,139,88,355,5,66,,354,,297,,232,,,,,,,,239,7,,,,231,71,,,,,66,,,,361,,,351,,220,,242,,202,,203,163,,,,189,203,,336,,,,,129,100,,,290,,,249,,,,314,337,,,,336,100,337,167,,,127,,,,,,71,137,,129,,239,,,145,,,,,,,,,,,,,130,,,,,,,,,,,,,258,258,,81,256,,,,2,,390,104,185,361,,,,,,,,365,155,220,62,,,,10,,,,,234,338,,119,,83,,,,,99,,137,,,,,219,,115,131,,,,,,,268,292,,,71,338,291,153,382,362,307,362,13,,,138,167,,357,305,162,,,,,167,,339,,,,,,,213,,,,172,,,,,107,,194,32,356,,,,193,22,50,288,,,182,119,,,332,,,,344,386,189,332,,339,,,208,,,118,,,361,191,29,,,,,120,363,,,,,,,,,,,,,,134,,,378,,4,,,,,139,,,,,,,,,171,,,,,,,,,,,,342,309,,350,,,,,,,,,,,,,,,122,,,,,,348,,,183,,362,,331,,,67,,,127,,,,,136,,,,,185,,,,198,,,17,,,,,,,330,,191,,,332,122,339,,174,56,,,,64,,,337,19,,,,,244,,146,,,,,,128,198,285,,,381,,139,80,176,,,,,,,,98,,,,,182,,386,,,,,79,,354,,116,,,,7,,,,,124,,,,,,,,,,,,,,,,,256,,162,167,,,175,351,,,,,169,308,,,,,,,,,,137,35,,,,,,,393,,,119,247,,157,,247,,330,,48,,352,,,173,253,238,230,,,,,,255,,,,,189,,,,,,,,,,,,,,,,,,,,338,,363,,208,119,358,362,,272,280,,,,,,,,,,,,,,312,,,105,,,,,,354,1,,,,,,,133,,52,48,,167,,,,348,,,,378,,,358,,178,,,,,,,,,,,,123,,246,,,,,,,,,13,23,257,,,,,,,,,,,,,,,,,333,,,,,,,,,,,,,,,,,,,,,,,,368,,,,,,,,,,101,,66,,119,,240,7,262,,328,,,,,,,,334,229,,,,,174,,243,47,,,,,,,,20,,,,,381,,,,,,,,,193,,12,,374,,238,,,,,91,56,289,,317,,,290,,,,,,290,,,360,295,,88,360,12,,219,317,361,128,289,,64,,206,64,,67,120,,,367,,13,,,,,32,,,81,,,317,132,,258,332,,,,,232,,,,,175,11,381,347,,,,,,,,,180,247,,,,81,,,,,,,,362,,39,,,,127,330,,,,,,127,,,,324,,,130,,,,,238,,,,293,,356,,,67,,132,171,,94,136,,,285,,225,167,353,,361,5,132,,,,,,356,167,,43,85,386,234,238,91,146,47,,,57,381,,,315,137,127,,,,128,348,375,18,,382,360,134,258,,,356,,,,,353,,383,115,351,,70,,,321,,,238,,,,167,383,54,,336,283,163,,122,339,,,,,311,83,,,37,,,,,13,,,100,,,332,362,52,,386,,57,,,,,118,,159,,,,362,,,,,128,,356,177,279,,37,,,,333,127,,7,,175,30,292,,,55,16,311,,15,,,182,,,39,378,376,,,259,,,,201,,357,358,123,,,176,,,,,,,,,1,7,,,,,,,356,,238,,,,,,64,,160,,,,,348,,,,,,,,64,,,,257,,,,,,,,,105,,,61,,6,6,,,,370,,60,,132,123,105,,,93,,,131,,,1,,112,,,330,,,337,,,,,,,,,,,244,,,,,,,,,,238,,,385,140,,53,,,,,,,,,,,198,,,362,,,384,236,,358,,356,,,113,3,377,352,129,113,,156,,90,59,232,,,290,,,,193,,,,,,103,,,,,,,,,203,67,,347,188,,383,,,,340,74,,,232,,74,,,290,,,195,,,196,57,191,,143,,150,,,,,,,,,,,,356,290,,,,,381,195,,363,,,,394,,375,348,,,,306,,194,,,,,,37,155,138,202,,318,,352,,,,393,382,,308,,,,62,,,,,,,,,160,129,,,,,,,,,351,134,,,,,,298,306,71,,13,203,,213,,,132,22,,,,,,,,,,,,,71,,,,156,93,272,189,,,,196,39,,,,,,,146,303,338,,,199,187,,,,,,,,,,,,,240,36,,193,,,241,,251,,386,61,,299,,,,143,,,321,,173,,,,,,377,,100,,257,,,,,,,,,,,,,,139,,,,,,,,,,40,,,,189,133,,,,,,291,356,,383,,289,,137,,131,54,72,1,,,,,291,,,127,,91,,,,,337,81,155,58,185,283,,,,,,,120,,,247,143,,,,351,238,,352,,389,34,74,,352,,85,80,,375,,,,327,,62,376,381,,83,,,159,14,,,237,,,,244,,,289,366,1,167,176,321,,167,,40,,,,,105,,208,,,,,94,,344,,69,,337,,,300,338,251,,,,,,341,,,,,,,,,,,,,335,175,358,188,259,,,,,,,,,129,,,,,237,,,,,,,,,,,67,,65,,,178,1,306,,,10,,73,,,,330,64,,10,247,35,,,66,,385,,132,,14,,13,,,,,,,,,237,129,62,311,29,,,,,348,,,,,214,,,47,,,,8,,,,278,165,54,,,,,232,,,,380,146,,,,106,,,,,,,,,,,,,,,201,,,,254,,,,,,257,,61,,,173,,,123,,,,,,,131,,,,74,,,,,,,,,,,,,,130,,,,,,,,,,,193,,,,,,21,,,,,,,,,,,,,,,,19,,,,,,291,291,167,,288,,301,247,,,,,339,,247,383,,,,,,,,,,88,,,397,62,,,401,257,119,386,289,306,47,,194,,,340,,318,240,,,,,127,,381,,,,,,,,59,126,,247,,,,,,18,133,,,178,31,,,,,337,,,,,88,,,,,,,,,,,393,,,,,,,,,,,,,337,,,,,,,,,,,,262,,,,,,362,362,167,,253,113,,346,301,,323,,,91,,,18,,256,,384,,,,146,196,,,13,,,194,,,,,,,397,,,,201,36,,253,353,,383,,293,,394,,127,36,,,,,,,,132,,,356,,124,,,337,,162,88,,,183,,,,,36,,287,298,,,,,,265,,,6,,,383,,,,146,,39,,,304,,,,,,,,,,,,,,,,333,,,,127,,381,,59,128,127,,93,,,,,,,203,,,,,,,,,,,280,,,,,,306,,,,,,,,,,,,,,,,,,,,,,,,,262,,,,349,,136,255,337,255,149,,,,,42,392,323,,252,376,,14,,354,,,,,251,,,,354,383,,,318,131,43,135,,,,51,335,,151,146,,,,,156,70,,357,,,,362,137,,,,,,362,,,,,,,,,,,,176,,,,,,,,,,,,167,,,,,,,,,,,293,,,377,,,,,134,134,378,,,140,,321,302,,,,,,,132,,72,,,,,,,,,,386,386,,,362,,91,,,,71,127,,5,,127,,379,307,,,,119,,341,,,13,129,,,,290,,62,,,37,,167,,,,318,301,88,,11,,55,394,62,,401,,,99,,128,,,,,244,,129,,176,,14,,,,,,,339,,255,,61,,133,258,,,80,155,386,321,,55,,26,,150,,13,284,,382,,,365,,230,,,,,,,,,,,,291,,,341,287,,,352,,153,,39,,92,,,249,,129,,,,,13,,,,,,,,100,,,134,,,,19,127,,305,,,,,149,249,,,,103,363,,,,371,252,327,182,57,341,274,129,,,,340,,,381,,,,386,,,,,,,,,123,,,,,389,239,,,,,118,,,,,156,,177,,,,,,93,83,,,99,,,,51,,,,167,13,,,,37,,,,161,,,167,,,,,,237,,,,,70,,197,,,,,,,,,50,,,,105,304,,,178,,,,,,,72,,,,,,,,,64,,,,,,,61,123,,,368,,,,,,,,,,,,,,19,,,,,,,20,385,160,,,,,,,,,,,,127,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,194,62,,,,,,,165,339,394,,,,,,,,,,,,84,,,,,,,,5,167,,,244,,50,377,,,,318,167,337,304,,,394,,364,385,,,,,84,,,,170,,,170,23,134,,,,,,52,,,173,395,134,,,289,,,,269,,118,347,,119,,368,47,,,,,,,,93,312,256,,25,,,194,,,370,144,,,,,,,,130,,,,,,,226,,,,,,,,,,,,337,,,,,,,,,,,,,,,333,,,,,,,,,,,,,,,,,,,,,,304,,308,,,,,133,,,,394,,,,165,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,347,,,,,,,,,383,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,247,,,,,,,,254,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,194,,,,,,81,,,,,,361,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,398,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,136,362,117,385,339,94,364,127,330,155,127,265,332,365,,45,238,283,92,204,,395,181,84,383,333,82,,,220,293,339,91,342,88,169,397,289,337,383,384,385,7,88,40,287,356,134,56,8,268,132,151,263,,111,124,95,348,130,182,139,131,321,97,341,138,346,,306,313,127,316,127,347,174,,347,247,83,46,286,106,290,332,195,292,12,39,,175,258,395,377,330,183,391,394,146,340,129,195,161,316,196,127,,124,301,75,72,14,,99,391,122,62,183,14,198,363,133,88,270,381,85,,93,31,167,356,129,17,240,187,165,358,308,196,279,342,171,285,374,130,249,251,122,131,398,87,,92,,259,,,,,,,,358,,254,338,,,,,,,,,,,103,331,,,331,110,,182,88,,80,,,,,100,,92,5,,,,,,352,379,399,,,,383,,,161,293,,238,,,,,167,,,,,374,,,127,,,,,,,,,353,,250,,191,,,,,,93,,,,,,174,,,62,346,250,,339,,,260,,,308,,,,,,,,132,312,,337,,,,,,165,97,,,31,362,,356,,334,,,,37,,,,,356,,356,,174,,,,,,340,337,,,251,,,,,,,62,52,83,,,,386,129,,,239,,,,,113,,110,4,,356,,,,,,,,81,356,,,,354,163,,145,189,380,247,,,,,66,79,294,,,205,,165,,394,97,33,112,365,5,,,301,,,,126,,163,,,312,229,177,222,130,233,,,,,,,201,,79,,67,355,55,302,,,37,,57,,97,,,217,57,,,174,,,,171,176,383,219,,,,,107,,169,,,,242,,137,,,,,,,,,,,,,,,156,48,,,,,,,4,,,,,,,,,,,,,,362,,,,304,356,,301,379,,269,,165,127,,,,,,,123,,,341,,385,,71,92,268,91,,335,32,100,383,,88,83,,,,129,82,392,,204,3,147,,98,362,,354,,,249,,,83,,134,310,289,384,378,342,289,332,385,,57,,,,,,10,101,310,,,,,,,,233,381,,401,235,128,290,383,9,,,119,,,357,347,,176,69,141,178,134,223,352,,152,356,104,109,94,69,,131,,345,,2,,239,212,,,,,383,,,,52,,,186,127,,,153,275,369,247,208,194,221,179,,19,,330,,131,,,,54,,,,,,,,,,,,,,234,,,88,,327,216,,,,182,,169,,,,,,238,,,,,,,,317,,134,,159,355,0,,,,88,88,,83,250,330,,,,395,67,,,,,,49,,,,,344,,293,,206,,,,76,276,,354,129,,,362,,,,,88,339,213,195,328,315,325,8,,183,,,,,,94,,19,,,,,93,,17,,,,,,,15,,,312,201,337,,,,,,383,,,167,,237,,41,,,,,,,,,285,,,,,,,358,285,,,,,326,169,13,360,,,356,,,,279,,100,,,,,,,,,,,,,,,,,,,,,,,35,,,,369,,,394,,217,39,,,,,,383,383,,,,,,,381,136,,362,,354,362,38,,337,136,362,,,,,,288,288,,,291,,293,,317,,,,,,,42,299,,336,385,,42,285,356,,,,,7,,111,82,7,13,,384,129,24,,386,371,75,19,339,94,42,,178,,,337,,,,,,287,,,320,,332,,193,,,,292,,,,,,,,,303,,25,,,,,38,,,,,,,,,193,,,,,,96,170,129,,280,352,88,,,,,,356,,,131,1,205,,,132,,330,,,,194,,249,362,,287,345,71,,247,188,,,,,340,238,88,,,336,383,,285,,249,,,150,132,178,,127,253,247,363,84,5,272,343,127,120,,82,336,,,383,365,253,,,,351,88,,,48,,,14,,,332,167,,76,339,32,24,386,304,,363,261,174,310,318,,196,254,,,146,203,,9,99,198,356,,137,241,274,151,,,,,285,,,,11,,358,,,137,,,91,,243,,88,,,,,,393,189,81,252,189,189,5,47,201,,,37,,134,176,,216,,,358,255,,199,,,357,96,249,,,,,,,,,,,129,47,,,188,29,131,,88,,386,,130,124,357,29,,268,270,38,,321,,,,350,,,258,,,134,344,,25,,,,,,265,129,356,123,,167,,,,,,128,263,13,,251,124,127,58,,268,125,344,182,358,249,133,307,357,186,117,385,354,,,,,,,,113,13,,,62,323,306,,,,,,,,167,246,,,167,,,,,283,,,,137,191,,,,,289,,,320,361,,103,,361,,,,,,,,170,88,76,201,,,,,143,160,169,291,335,,339,126,361,358,358,,45,188,,,330,134,,,,129,,100,,,137,,140,,,113,,,,,88,,32,,302,,,,22,5,,323,19,110,,,,337,,,,246,57,,,,,,100,174,83,,,,,,352,397,,,,293,,,,247,,52,313,,13,,,,,247,193,243,332,57,,391,,,,,,,205,,,,319,182,,,,,,,358,358,358,341,275,,,,,,,,,348,,,,,,,362,,,,76,182,,,,,,,,,9,,,,,,,,,,,85,,,,,,386,,340,289,94,248,,,,,246,,69,,,,,,230,,119,369,128,,,,48,,332,,156,320,,337,,247,,,,,,,,62,,,,,31,142,156,,130,177,,231,,,,,,,,,162,,193,,,305,,,,,8,,,,,,,,,,,,,,153,,,246,,300,,,,382,129,127,,,78,,112,,381,,,347,,,,,268,334,,,291,,,270,308,,10,,,13,,,,,,,161,,127,167,,,362,,358,201,,,,,,237,,,,337,,,,,,,,,,,,171,,,347,,,,,,,,,,,,,304,,,,,197,,187,,,,380,,,332,,,,,50,,22,,,,,,,,,,214,293,,,,,,,,,,,250,70,169,173,150,1,13,,,,,,81,,,,,350,131,272,,,,,,,,,,,,257,,,124,,,,,399,,,,,,272,,,,139,,,,,,,,,,247,,365,,,,,334,127,117,,,165,,,,,,9,112,,332,,,,,,,,356,,,,,,,,,,,,349,13,,,,,,,,342,,,,117,,343,,,,303,293,350,,,,,,,270,,310,,,,,,,,93,,,,,,,,132,,,,,,24,196,,,339,,229,,,,,,,167,,,,,,,,315,,,,,81,,,,,,,,,,,,,,,,,,370,,,,126,,,,,,116,,,,,,,,,,,,201,,,,,217,,,,,,,,,,,,,,,,,257,,81,,,,,,,,,,,,,,,377,,,,213,,,,,,,,,,,,,,,,,,119,178,225,183,,,249,,,,,,347,,,,362,,,,107,,,,,,,,,38,256,,127,,,291,,,,,,,,117,124,193,94,306,338,30,291,356,185,,,,,,,,333,272,8,238,,,,,,357,,23,,,,,,,351,112,,,,,,98,370,,,132,88,37,70,,339,,,256,361,375,,,361,113,110,,,,261,,,,,,386,,,,100,,257,288,,174,100,57,,,167,36,257,202,,,124,,,,353,328,,386,,,158,131,,,,,94,,,,,255,,,,383,187,,380,128,208,301,247,,,,341,360,,,,,76,,293,,85,289,,,,380,336,88,167,,,40,,,,,352,320,,325,,335,383,,83,,194,,247,,,159,193,250,,337,,,,318,,,,,362,,,238,,,356,,,258,,,,254,,,107,330,,,,,,,,358,107,31,,,146,,342,,,,,362,,,,123,,14,,,,,,,88,,,361,256,189,,,,,,,,,88,,156,,,,119,,66,,,,,206,177,45,268,,,,162,233,,337,,,363,,,303,,268,,,,,,253,,,,312,,,,,,,,199,,,,,,,,,187,,,291,25,37,,4,,,,312,,240,,,,,182,,,384,,,295,,,,,,185,,,,189,337,,,,,,378,188,340,,,,,,,,237,,,,,232,,,,,123,,,,,124,,,,285,,,,,,,,,,,342,,,,,31,,,,,182,,,,,,,169,,,,,,,,,193,,270,126,,,,,197,,,,,,167,45,,,,,,,,,,,,,,,,138,,,,,,,71,,,257,,,,349,,,,227,343,,,,,,,344,352,,,,,,,339,,,132,,351,,,,,,,,116,257,356,,20,,,15,29,,285,35,,106,,295,,204,,,,,384,,,,,,265,253,133,,363,191,,4,216,,,128,,,56,,234,,,,,311,,,,346,,,,,,328,,,,,,232,,189,,,,,,,10,,337,,,,88,,,,,,248,,,,,94,,,,,22,172,,,390,58,,,147,,,,,36,,,,245,,356,362,,,256,260,,,,,,283,,,169,169,151,129,,,13,,,,,,,,75,15,,286,235,,,,182,107,,,337,,137,,,,101,,,,,,,,14,,,,,,113,,9,9,,,,,,10,40,183,,,,,,55,,,,270,,,,,325,37,,,,,249,,,,161,,380,,,,,,,,,,,250,,,340,,,,,,,,,,,,,,,,,,,,,,,,,,13,133,,,,,,,270,,,,,,,,,,,,,,,,,,,,,232,,,,337,,354,,311,,,88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,129,103,,105,194,291,31,161,139,127,337,62,,362,99,133,257,131,,,,139,,,,100,,399,,286,,,,,132,,98,40,,,,,304,,,,383,,,,119,,,,,,,,,,,,,352,,,,,,,117,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,394,,,,,,,,,,167,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,377,,,,,,,,,,,,,,,,362,315,,,,,,,,,291,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,129,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,254,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,134,,,,,,238,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,127,67,88,265,127,132,117,313,262,285,247,,350,356,350,127,,130,124,229,137,351,209,347,76,181,,302,85,288,82,139,382,100,113,243,397,291,,375,304,381,62,385,47,257,379,,356,356,155,165,291,101,291,132,124,36,386,289,120,57,99,258,105,350,356,382,90,340,29,125,347,,132,336,362,251,336,93,361,124,155,300,302,77,254,386,396,226,71,393,83,146,332,362,298,289,65,31,170,392,306,311,,356,202,35,66,123,129,342,349,355,332,76,362,348,31,394,2,352,62,194,239,,201,58,304,342,354,8,291,249,194,133,187,380,129,200,311,373,251,161,246,139,352,249,377,35,100,,,,,,,,,,126,,,,,70,130,,37,,,330,,,,,,,,,291,,,,,326,,,,,,,340,122,,,,,,,,112,362,,,,,,,,17,,,,,383,9,30,,,,,,,,65,,,346,,,,113,201,,189,,,,,,,,238,,,,201,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,381,88,,98,22,371,339,6,378,126,383,81,311,242,14,99,386,103,79,129,13,291,319,105,155,56,189,83,113,356,372,383,128,124,394,173,178,369,394,90,133,256,381,160,288,88,71,127,293,286,47,,,97,235,57,160,,391,88,389,276,371,352,368,,374,285,358,91,37,,288,206,,,,113,,380,,,396,,,136,88,379,91,247,,,,,,,,,,35,,,252,33,,,,,364,257,,,,,,394,,,172,,,,,,,,,,,312,,,,257,,,,,,,,,,,,,,368,,397,230,9,,,74,,88,,352,,383,309,,,,364,250,,310,,,,,5,66,,327,128,,234,,,,,383,88,,,285,19,,137,167,96,,,,339,131,,,,152,,105,255,156,,,178,,,,318,,129,,251,13,339,75,127,,127,,,,,,,,349,,,,170,360,,39,,,309,,,,,46,,,,,,,,,121,137,37,,,316,19,,,,,,22,395,,383,,64,383,,75,,,,384,,,,41,129,,,137,,,342,239,269,,316,,,129,59,54,337,309,,,,,,217,232,,,,,,,50,,,,,,,,,,,,,12,,,16,,,61,28,,81,40,,74,,50,,139,,,,,,246,,,51,,370,,,,386,,40,,,,,,,,173,172,,,,31,,,,,,,,398,,342,,,,,,,,,,,,,289,98,,,257,,,75,,,,,,,,312,,,,,,,,,,,,,,,,,,,,332,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,34,375,105,348,,265,389,76,181,271,117,100,146,178,385,383,356,119,381,167,354,254,291,367,383,131,,258,178,131,380,88,170,214,10,124,106,331,,46,394,49,88,127,,293,235,363,338,377,178,380,173,343,100,,47,13,,,,159,,,,,14,14,,14,,,,,35,270,,,,,,,,14,,,,171,55,,,249,362,,247,350,,107,186,,,,,,358,,365,133,,351,81,336,,,122,380,,133,363,332,169,37,,,318,,356,135,128,,56,79,62,244,,66,371,,293,,,134,,,,194,12,127,,,,391,,,325,302,291,313,233,118,213,,,348,350,20,,341,,322,386,256,62,,323,,316,70,,,321,104,,291,36,304,370,260,85,,,,167,,,,,,,122,56,178,,,,,,156,332,,356,,,182,13,,362,,,74,306,,42,,,362,,,,,,14,,76,338,123,256,59,,,,356,99,,,175,,,,,,,309,249,,354,,,4,,,,,370,380,,,,,,173,400,,,,,,,,137,,13,354,,342,306,,,,,196,,,159,,,,,,356,,61,,360,,110,,188,,255,,155,,,,82,344,204,,,8,,,,342,,336,,361,110,310,256,,238,18,287,10,,62,396,355,173,,,386,,,362,,,252,383,,122,,,131,,,,162,128,153,382,,365,,,,337,,,,88,93,112,,,,140,358,,,,167,365,20,,,238,,107,,311,,,,,35,,,,57,,,,,70,352,,,,76,,138,,,,,,,,,,,,,,,,,,,,,13,,,,,357,,,,352,378,,,,,,,,,,,,285,,244,,,,,,,,396,,,,,,,,,,174,,,85,,,361,67,256,393,235,385,356,91,,136,,,,,347,,,84,,,365,310,,,327,50,110,100,304,,,,199,163,,39,,321,383,339,130,36,,323,131,191,151,305,165,,,,352,284,215,,,,,,235,,45,,399,,50,157,316,,,119,347,344,,,,,,,,194,258,,,,,,,109,312,,,,,,,163,,,20,131,337,,,,,167,137,,,,,350,,,,,,,,,,,,,22,,361,291,,167,384,355,170,,133,,,,,,,,,,,88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,129,,,,,,,,,,,,,,,,,,,,,,,,,,255,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,179,,,,,,,,,,,,,,,,,,,,,,,,,,336,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,368,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,202,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,175,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,343,,,,,,,,,,,,,,,,,,,,,,,,,,,89,356,381,67,379,244,171,323,249,42,285,,81,65,192,227,,30,,90,20,310,137,74,33,384,204,10,92,7,249,364,253,140,336,99,144,82,126,70,220,5,362,249,382,249,100,19,146,244,20,19,364,398,203,311,128,64,361,319,19,174,300,249,189,,291,348,309,13,213,238,75,,145,163,79,,,361,36,128,355,208,,36,321,183,65,357,142,375,386,337,320,68,,120,258,283,108,354,94,199,382,280,131,356,31,38,312,2,357,270,386,163,246,,160,314,169,148,341,308,167,374,40,107,93,76,346,54,180,85,343,175,142,129,272,316,170,253,137,0,250,380,226,54,189,11,,60,146,157,,337,100,182,44,391,133,,339,138,126,235,311,67,129,137,193,394,252,,142,250,301,76,29,251,384,72,303,,122,1,71,191,177,,83,191,201,381,,94,217,,138,217,204,175,93,8,356,128,17,,15,312,187,182,,360,134,62,397,348,,343,139,171,246,178,73,161,246,51,250,61,126,165,,393,169,356,29,15,,,340,,,,,,,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,192,296,285,352,,13,333,43,273,332,339,117,129,198,144,192,375,208,105,333,309,198,183,,80,94,113,157,136,364,162,,362,352,32,337,333,125,352,352,31,161,257,,158,259,113,317,,259,143,,88,,,73,,249,336,,,,,,,,7,,,,271,,,134,82,353,357,381,132,,,,,397,401,64,,0,327,,10,,88,127,178,176,35,344,,177,201,130,,,339,,,,90,285,,,,,,13,,,,383,,70,363,,40,,,217,365,339,235,,396,,,,,,44,,238,174,313,339,,,,,,,,,,,,,,362,176,,332,,,306,,123,,306,357,,,,94,,,156,1,337,,,378,,,,,,,,,,,306,,,,,,,,,337,,,124,,,167,,,391,,,307,138,206,,259,352,,,345,351,127,100,,383,,,47,360,137,40,,,182,,,65,,,,,,,,,,,39,,,,,,,,362,362,349,,,,,333,,,,167,,,174,165,,9,,,,,336,,347,127,,,341,,320,381,235,191,,,,126,283,83,,,,213,,,173,,,,,,297,,338,,,,,,,,,,,,357,,,1,,,339,,178,,,,,,5,238,,,,,186,,,,,,,,,,,,,,,,,,,,254,130,,,134,,,134,,64,,,83,,145,194,195,,,355,,,,94,,,,,,,,,,133,349,,5,,,,,,55,,,,,,,,,353,,,,,,342,,2,,,,55,251,,187,,,,251,,,,,,,,137,,,269,,,,,,,,137,,14,,129,,,99,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,332,265,,110,332,365,313,136,,,,,,357,,365,287,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,355,67,254,110,340,299,347,347,330,100,74,247,7,302,111,362,178,174,244,134,132,128,,94,358,,146,356,242,,325,110,,358,146,316,,76,389,352,76,217,187,64,278,112,,31,270,242,258,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,85,,,15,275,137,,303,,,240,15,15,,,,83,291,,,,,,,,307,340,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,352,,,23,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,319,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,360,313,,,,,,,,,,,,,,,,127,,344,326,337,265,362,37,81,357,129,291,9,301,,356,79,263,340,,,131,,18,19,,76,362,210,,,125,339,103,29,156,,303,31,,201,,175,346,133,187,277,389,207,292,156,107,340,,,,,,,,,,,,88,,,343,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,185,362,327,350,37,257,,19,183,369,291,301,88,137,396,386,327,223,128,356,310,341,185,,131,120,182,109,239,,167,36,352,,,140,247,247,146,391,,,23,239,383,,279,336,4,175,249,285,15,182,48,31,385,127,,340,100,,,,,,,,322,132,,,,,62,151,109,,118,,94,,,,13,146,248,,,177,,,,,,154,17,,,,,71,,306,,,,,93,,,,,,,,,157,,,,,189,,,,,318,,394,,261,,,,,,,,,,346,,127,,,,,,,,395,,,,,258,,,,,,,136,,,,17,,,,,,,,,,,,122,,,,172,,,,,,,,,,,,32,,,94,,,,,,,,,362,105,,,,,156,125,5,244,191,,352,341,170,,,,331,,332,,37,,,201,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,362,,,361,,178,82,,,5,243,214,178,,,88,,9,118,,310,105,132,,332,79,,,,,127,131,339,,340,350,97,167,169,129,167,291,318,106,283,122,,127,,254,174,,396,83,157,32,100,213,214,65,134,,291,394,84,66,,,,,,276,76,256,88,123,,,14,279,4,247,309,103,354,,,164,15,349,16,187,198,360,,,105,285,173,400,,,167,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,216,136,127,363,199,,229,351,,9,381,100,69,178,351,,353,,37,257,363,,327,301,383,79,101,346,,,94,179,117,,19,167,138,100,76,362,339,316,336,259,196,2,,10,237,,45,,,,119,,76,119,,47,191,336,,354,,,,,129,113,,358,380,175,171,131,136,362,178,,,358,119,,103,,,,,,,,,,,54,178,,,127,,,,,140,386,,,194,,,,,,,247,178,,,,,,,,,,288,,173,,,,,,,186,,,,,,,,,,,,,,257,,,,88,,,185,,190,124,,,,,,123,,,,,117,,,,293,167,214,,114,,,249,,,,201,,,56,40,361,,356,338,,257,,,254,,167,,71,23,,,,,2,,,,,,,,,,383,,88,88,,198,,,,,,,,,,,,,363,,327,67,,205,,,100,,,,313,,238,,,,,,,293,,84,,,,,,,,,,361,,,336,,,,,,,,337,,352,,13,,256,110,,,,,,375,,,,,,,,,,,,247,127,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,35,,,137,174,9,318,394,357,362,46,257,335,,,,,,,,,,,,,176,98,143,,,,105,364],	b:['a','ai','an','ang','ao','ba','bai','ban','bang','bao','bei','ben','beng','bi','bian','biao','bie','bin','bing','bo','bu','ca','cai','can','cang','cao','ce','cen','ceng','cha','chai','chan','chang','chao','che','chen','cheng','chi','chong','chou','chu','chuai','chuan','chuang','chui','chun','chuo','ci','cong','cou','cu','cuan','cui','cun','cuo','da','dai','dan','dang','dao','de','deng','di','dia','dian','diao','die','ding','diu','dong','dou','du','duan','dui','dun','duo','e','ei','en','er','fa','fan','fang','fei','fen','feng','fo','fou','fu','ga','gai','gan','gang','gao','ge','gei','gen','geng','gong','gou','gu','gua','guai','guan','guang','gui','gun','guo','ha','hai','han','hang','hao','he','hei','hen','heng','hong','hou','hu','hua','huai','huan','huang','hui','hun','huo','ji','jia','jian','jiang','jiao','jie','jin','jing','jiong','jiu','ju','juan','jue','jun','ka','kai','kan','kang','kao','ke','ken','keng','kong','kou','ku','kua','kuai','kuan','kuang','kui','kun','kuo','la','lai','lan','lang','lao','le','lei','leng','li','lia','lian','liang','liao','lie','lin','ling','liu','long','lou','lu','luan','lue','lun','luo','lv','m','ma','mai','man','mang','mao','me','mei','men','meng','mi','mian','miao','mie','min','ming','miu','mo','mou','mu','na','nai','nan','nang','nao','ne','nei','nen','neng','ni','nian','niang','niao','nie','nin','ning','niu','nong','nou','nu','nuan','nue','nuo','nv','o','ou','pa','pai','pan','pang','pao','pei','pen','peng','pi','pian','piao','pie','pin','ping','po','pou','pu','qi','qia','qian','qiang','qiao','qie','qin','qing','qiong','qiu','qu','quan','que','qun','ran','rang','rao','re','ren','reng','ri','rong','rou','ru','ruan','rui','run','ruo','sa','sai','san','sang','sao','se','sen','seng','sha','shai','shan','shang','shao','she','shen','sheng','shi','shou','shu','shua','shuai','shuan','shuang','shui','shun','shuo','si','song','sou','su','suan','sui','sun','suo','ta','tai','tan','tang','tao','te','teng','ti','tian','tiao','tie','ting','tong','tou','tu','tuan','tui','tun','tuo','wa','wai','wan','wang','wei','wen','weng','wo','wu','xi','xia','xian','xiang','xiao','xie','xin','xing','xiong','xiu','xu','xuan','xue','xun','ya','yan','yang','yao','ye','yi','yin','ying','yo','yong','you','yu','yuan','yue','yun','za','zai','zan','zang','zao','ze','zei','zen','zeng','zha','zhai','zhan','zhang','zhao','zhe','zhen','zheng','zhi','zhong','zhou','zhu','zhua','zhuai','zhuan','zhuang','zhui','zhun','zhuo','zi','zong','zou','zu','zuan','zui','zun','zuo'],
getFirstAlpha : function(pWord){
		pWord = pWord.split("")[0];
		if(pWord.length==1 && pWord.charCodeAt()>18000)
		{
			return (this.b[this.a[pWord.charCodeAt()-18000]]||"?").substring(0,1).toUpperCase();
		}
		else
		{
			return "?";
		}
	}
};
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-08-05
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:简体、繁体互相转换功能块
*Example:JTFT.initialize("jtft"),其中"jtft"是<A>标签的名称
*--------------------------------------------------------------------------------------------------
*/
var JTFT = {
	defaultFont:0,//默认是否繁体，0-简体，1-繁体
	element:null,//要进行转换的对象
	link:null,//功能对象
	className:"",//样式名称
	convertText:function(txt)//转换文本
	{
		if(txt==""||txt==null)return "";
		if(JTFT.defaultFont==1){return JTFT.convert2FT(txt);}
		else {return JTFT.convert2JT(txt);}
	},
	setFont:function()
	{
		if(JTFT.defaultFont==0)
		{
			JTFT.link.innerHTML = "简体中文";
			JTFT.defaultFont = 1;
		}
		else
		{
			JTFT.link.innerHTML = "繁体中文";
			JTFT.defaultFont = 0;
		}
	},
	convertFont:function(fobj)
	{
		JTFT.setFont();
		JTFT.convertBody(fobj);
	},
	convertBody:function(fobj)//转换对象，使用递归，逐层剥到文本
	{
		if(JTFT.link==null) return;
		var obj = null;
		if(typeof(fobj)=="object" && fobj != null)
		{
			JTFT.element = fobj.childNodes;
		}
		else 
		{
			JTFT.element=document.body.childNodes;
		}
		obj= JTFT.element;
		if(obj==null) return;
		for(var i=0;i<obj.length;i++)
		{
			var OO=obj.item(i);
			if("|BR|HR|TEXTAREA|".indexOf("|"+OO.tagName+"|")>0||OO==JTFT.link)continue;
			if(OO.title!=""&&OO.title!=null)OO.title=JTFT.convertText(OO.title);
			if(OO.alt!=""&&OO.alt!=null)OO.alt=JTFT.convertText(OO.alt);
			if(OO.tagName=="INPUT"&&OO.value!=""&&OO.type!="text")OO.value=JTFT.convertText(OO.value);
			if(OO.nodeType==3){OO.data=JTFT.convertText(OO.data);}
			else JTFT.convertBody(OO);
		}
	},
	jtDictionary:"皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄",
	ftDictionary:"皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調叠諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩",
	convert2FT:function(value)//将指定串转换为繁体
	{
		var str="",ss=JTFT.jtDictionary,tt=JTFT.ftDictionary;
		for(var i=0;i<value.length;i++)
		{
			if(value.charCodeAt(i)>10000&&ss.indexOf(value.charAt(i))!=-1)str+=tt.charAt(ss.indexOf(value.charAt(i)));
			else str+=value.charAt(i);
		}
		return str;
	},
	convert2JT:function(value)//将指定串转换为简体
	{
		var str="",ss=JTFT.jtDictionary,tt=JTFT.ftDictionary;
		for(var i=0;i<value.length;i++)
		{
			if(value.charCodeAt(i)>10000&&tt.indexOf(value.charAt(i))!=-1)str+=ss.charAt(tt.indexOf(value.charAt(i)));
			else str+=value.charAt(i);
		}
		return str;
	},
	registerEvent:function(element)//初始化简、繁体链接事件
	{
		if((typeof element)!="string")
		{
			alert("请指定要进行转换的功能按钮！");
			return;
		}
		var objects=document.anchors;
		for(var i=0,len=objects.length;i<len;i++)
		{
			if(objects[i].tagName.toLowerCase()=="a" && objects[i].name.toLowerCase()==element.toLowerCase())
			{
				JTFT.link = objects[i];//功能对象
				JTFT.defaultFont = (JTFT.link.innerHTML.toString().indexOf("简")>-1)?1:0;//根据显示内容进行纠正字体类型
				JTFT.link.href="javascript:JTFT.convertFont();";
				JTFT.link.className = JTFT.className;
				break;
			}
		}	
	},
	initialize:function(element)
	{
		JTFT.registerEvent(element);
	}
}
/*--------------------------------------------------------------------------------------------------
*Author:李善举
*CompletedDate:2008-07-11
*Editor:
*ModifiedDate:
*Version:V1.0
*Description:创建表单验证类,表单创建后要对其中元素进行事件注册，在验证表单中添加属性"enabled=true";
*Example:<form enabled="true">,在表单后调用WBForm.registerForm();进行初始化;
*前可以验证整数、小数、Email、联系方式（包括手机）、URL、邮编、英文、中文、混合、必填、重复、组合、标题、账号及自定义事件句柄等功
*能，并具有过滤数据库危险字符功能，
*此外添加了更多的提示信息功能，包括正常加载时提示信息，错误提示信息及正确时提示信息
*验证对象上添加dataType="类型" msg="正常提示信息" right="正确提示信息" wrong="错误提示信息" min="最小" max="最大" to="比较对象ID"
*如果要自定义验证事件则须另外添加e="onclick|onchange|onkeyup|onkeydown|onkeypress" h="自定义事件句柄"两个属性，在自定义事件句柄中
*需要反向回调WBForm.change(对象，true|false)
*重置时须调用WBForm.reset()来初始化表单状态
*--------------------------------------------------------------------------------------------------
*/
//Finally call WBForm.registerForm();Define Event call WBForm.change(obj,true|false);Reset call WBForm.reset();
var WBForm = {
	/*****regular*****/
	prefixFlag : ["*","※","√"],
	number    : /^[-]?\d+$/,//number
	decimal   : /^[-\+]?\d+(\.\d{1,2})?$/,//number with 2 point
	email     : /^([\w|_|-]+)@([\w|_|-]+)(\.[\w|_|-]+)+/i,//email
	telephone : /(^(\d{3,4})[-]?(\d{7,8})(-\d{1,4})?$)|(^\d{11}$)/,//telephone and mobile
	url       : /^http[s]?:\/\/(.*){1}/i,//url
	postcode  : /^[1-9]\d{5}$/,//postcode
	/*****regular and replace*****/
	title     : /(script)|(alert)|(confirm)|(window)|(document)|(write)|(writeline)|(<)|(>)/i,//safety characters
	account   : /^[-\w]*$/,//for the account,0-9,a-z,A-Z,-,_
	english   : /^[-_a-zA-Z][\w]*$/,//The attribute of min and max is necessary
	chinese   : /^[\u4e00-\u9fa5]+$/,//The attribute of min and max is necessary
	mixed     : /^.*$/,//The attribute of min and max is necessary
	/*****single*****/
	required  : true,//required
	repeated  : true,//The attribute of to is necessary
	danger    : /(like)|(insert)|(select)|(update)|(delete)|(drop)|(truncate)|(or)|(alter)|(column)|(grant)|(revoke)|(create)|(exec)|(execute)|(constraint)/i,//dangerous character
	error : "_msg",
	ID:[],
	$ : function(_element)
	{
		return document.getElementById(_element);
	},
	trim : function(str)
	{
		return str.replace(/(^[\s|　]*)|([\s|　]*$)/gi,"");
	},
	//To get the enabled form!The way is to add the attribute "enabled" and the value of "true"!
	getEnabledForm : function()
	{
		var _forms = document.forms;
		var _form = null;
		for(var i=0,len=_forms.length;i<len;i++)
		{
			var _enabled = (_forms[i].getAttribute("enabled") || "").toLowerCase();
			if(_enabled == "true")
			{
				_form = _forms[i];
				break;
			}
		}
		return _form;
	},
	getElements : function(_form)
	{
		var _elements = _form.elements;
		var result = [];
		for(var i=0,len=_elements.length;i<len;i++)
		{
			var type = (_elements[i].type || "").toLowerCase();
			switch(type)
			{
				case "text":
				case "password":
				case "textarea":
				case "radio":
				case "checkbox":
				case "select-one":
				case "select-multiple":
					result.push(_elements[i]);
					break;
				default:
					continue;
					break;
			};
		}
		return result;
	},
	//To get the event and the object
	getObjectByEvent : function(event)
	{
		var result = [];
		event = event || window.event;
		var obj = event.target?event.target:event.srcElement;
		result.push(event);
		result.push(obj);
		result.push(-1);//number
		result.push(false);//validate
		return result;
	},
	getObjectByElement : function(_element)
	{
		var result = [];
		result.push(null);
		result.push(_element);
		var validate = false;
		var _form = WBForm.getEnabledForm();//To get the enabled form
		var _elements = WBForm.getElements(_form);
		if(_form)
		{
			for(var i=0,len = _elements.length;i<len;i++)
			{
				if(_elements[i] == _element)
				{
					var _dataType = (_element.getAttribute("dataType") || "").toLowerCase();//To get the data type of the pointed element;
					if(_dataType) validate = true;
					result.push(i);
					break;
				}
			}
		}
		else
		{
			result.push(-1);
		}
		result.push(validate);
		return result;
	},
	//Reset the onsubmit of the enabled form
	//The parameter is the newer handler of submit
	resetSubmit : function(handler)
	{
		var _form = WBForm.getEnabledForm();//To get the enabled form
		if(!_form) return;
		if(!handler) return;
		var _submit = _form.onsubmit || null;
		try
		{
			handler = eval(handler);
		}
		catch (ex)
		{
			_form.onsubmit = function(){return false;};
		}

		if(_submit)
		{
			if(_submit())
				_form.onsubmit = function(){return handler();}//To reset the onsubmit of the enabled form
			else
				_form.onsubmit = _form.onsubmit;
		}
		else
		{
			_form.onsubmit = function(){return handler();}//To reset the onsubmit of the enabled form
		}
	},
	//To reset the tabindex of all the elements of the enabled form
	resetTabIndex : function()
	{
		var _form = WBForm.getEnabledForm();
		if(!_form) return;
		var _elements = WBForm.getElements(_form);//To get all the elements of the enabled form
		var _inputs = [];
		for(var i=0,len=_elements.length;i<len;i++)
		{
			_elements[i].tabIndex = 1000+i;//To reset the tabindex of the elements of the enabled form
		}
	},
	//To initialize the enabled form
	registerForm : function()
	{
		var _form = WBForm.getEnabledForm();
		if(!_form) return;
		var _elements = WBForm.getElements(_form);
		WBForm.ID.length = 0;//clear ID array;
		for(var i=0,len=_elements.length;i<len;i++)
		{
			WBForm.ID.push(i);//To record the number of all the elements;
			var _element = _elements[i];//To get the pointed element;
			var _dataType = (_element.getAttribute("dataType") || "").toLowerCase();//To get the data type of the pointed element;			
			var flag = false;
			var validate = false;
			switch(_dataType)
			{
				case "event":
					WBForm.registerDefineEvent(_element);
					break;
				case "number":
				case "decimal":
				case "title":
				case "account":
				case "english":
				case "chinese":
				case "mixed":
				case "email":
				case "telephone":
				case "url":
				case "postcode":
				case "required":
				case "repeated":
					WBForm.registerAutoEvent(_element);
					break;
			};
			if(_dataType) validate = true;
			WBForm.changeErrorSpan(_element,"msg");
			WBForm.resetSubmit("WBForm.validate");
		}
	},
	registerDefineEvent : function(_element)
	{
		var _event = (_element.getAttribute("e") || "").toLowerCase();//To get the defined event of the pointed element;
		var _handler = _element.getAttribute("h") || "";//To get the definde event handler of the pointed element;
		var flag = false;
		try
		{
			_handler = eval(_handler);
		}
		catch (ex)
		{
			flag = true;//The wrong handler
		}
		//onkeypress,onkeyup,onkeydown,onchange,onclick,onblur
		switch(_event)
		{
			case "onkeypress":
				if(!flag) _element.onkeypress = _handler;
				break;
			case "onkeyup":
				if(!flag) _element.onkeyup = _handler;
				break;
			case "onkeydown":
				if(!flag) _element.onkeydown = _handler;
				break;
			case "onchange":
				if(!flag) _element.onchange = _handler;
				break;
			case "onclick":
				if(!flag) _element.onclick = _handler;
				break;
			case "onblur":
				if(!flag) _element.onblur = _handler;
				break;
		};
	},
	registerAutoEvent : function(_element)
	{
		var _dataType = (_element.getAttribute("dataType") || "").toLowerCase();//To get the data type of the pointed element;
		if(_element.type=="checkbox") _element.onclick = WBForm.registerChildEvent;
		else _element.onkeyup = WBForm.registerChildEvent;
		_element.onblur = WBForm.registerChildEvent;
	},
	registerChildEvent : function(event)
	{
		event = event || window.event;
		var _array = WBForm.getObjectByEvent(event);
		var _event = _array[0];
		var _element = _array[1];
		var _dataType = (_element.getAttribute("dataType") || "").toLowerCase();//To get the data type of the pointed element;
		var min = _element.getAttribute("min");
		var max = _element.getAttribute("max");
		var to = _element.getAttribute("to")|| "";
		var msg = "msg";
		var value;
		if(_event && _event.keyCode>=37 && _event.keyCode<=40) return;//to allow top/right/bottom/left may move;
		switch(_dataType)
		{
			case "number":
			case "decimal":
			case "account":
			case "english":
			case "chinese":
			case "mixed":
				_element.value = WBForm.trim(_element.value);
				value = _element.value;
				if(WBForm[_dataType].test(value))//ok
				{
					if(/^(number)|(decimal)$/.test(_dataType)) value = parseFloat(value);
					else value = value.length;
					
					if(min && max && value>=parseFloat(min) && value<=parseFloat(max)) {msg = "ok";_element.setAttribute("ok",1);}
					else if(min && value>=parseFloat(min) && !max) {msg = "ok";_element.setAttribute("ok",1);}
					else if(max && value<=parseFloat(max) && !min) {msg = "ok";_element.setAttribute("ok",1);}
					else if(!min && !max) {msg = "ok";_element.setAttribute("ok",1);}
					else msg="wrong";
				}
				else msg="wrong";
				break;
			case "title":
				_element.value = WBForm.trim(_element.value);
				value = _element.value;
				if(!WBForm[_dataType].test(value))//ok
				{
					value = value.length;
					if(min && max && value>=parseFloat(min) && value<=parseFloat(max)) {msg = "ok";_element.setAttribute("ok",1);}
					else if(min && value>=parseFloat(min) && !max) {msg = "ok";_element.setAttribute("ok",1);}
					else if(max && value<=parseFloat(max) && !min) {msg = "ok";_element.setAttribute("ok",1);}
					else if(!min && !max) {msg = "ok";_element.setAttribute("ok",1);}
					else msg="wrong";
				}
				else msg = "wrong";
				break;
			case "email":
			case "telephone":
			case "url":
			case "postcode":
				_element.value = _element.value.replace(WBForm["danger"],"");
				value = _element.value;
				if(WBForm[_dataType].test(value)) {msg = "ok";_element.setAttribute("ok",1);}//ok
				else msg="wrong";
				break;
			case "required":
				value = WBForm.trim(_element.value).length;
				if(min && max && value>=parseFloat(min) && value<=parseFloat(max)) {msg = "ok";_element.setAttribute("ok",1);}
				else if(min && value>=parseFloat(min) && !max) {msg = "ok";_element.setAttribute("ok",1);}
				else if(max && value<=parseFloat(max) && !min) {msg = "ok";_element.setAttribute("ok",1);}
				else if(!min && !max && value>0) {msg = "ok";_element.setAttribute("ok",1);}
				else msg="wrong";
				break;
			case "repeated":
				value = WBForm.trim(_element.value);
				if(!WBForm.$(to)) msg="wrong";
				else if(value.length>0 && to && WBForm.$(to) && WBForm.$(to).value==value) {msg = "ok";_element.setAttribute("ok",1);}//ok
				else msg="wrong";
				break;
		};
		WBForm.changeErrorSpan(_element,msg);
	},
	validate : function()
	{
		var flag = true;
		for(var i=0,len=WBForm.ID.length;i<len;i++)
		{
			try
			{
				var o = document.getElementById(WBForm.error+i);
				var ok = o.getAttribute("ok");// || "-1";
				if(ok!="1")
				{
					flag = false;
					break;
				}
			}
			catch (ex){;}
		}
		return flag;
	},
	change : function(obj,flag)
	{
		var tagName = obj.tagName.toLowerCase();
		var type = obj.type.toLowerCase();
		var _element = obj;
		if(tagName=="input" && type=="checkbox")
		{
			var checkboxs = document.getElementsByName(obj.name);
			_element = checkboxs[checkboxs.length-1];
		}
		else if(tagName=="select" && type=="select-one") _element = obj;
		else if(tagName=="option") _element = obj.parentNode;
		flag?_element.setAttribute("ok",1):_element.setAttribute("ok",0);
		WBForm.changeErrorSpan(_element,"ok");
	},
	success : function()
	{
		var _form = WBForm.getEnabledForm();
		if(!_form) return;
		var _elements = WBForm.getElements(_form);
		var _element = null;
		for(var i=0,len=WBForm.ID.length;i<len;i++)
		{
			try
			{
				_element = _elements[i];
				_element.setAttribute("ok",1);
				WBForm.changeErrorSpan(_element,"ok");
			}
			catch (ex){;}
		}	    
	},
	reset : function()
	{
		var _form = WBForm.getEnabledForm();
		if(!_form) return;
		var _elements = WBForm.getElements(_form);
		var _element = null;
		for(var i=0,len=WBForm.ID.length;i<len;i++)
		{
			try
			{
				_element = _elements[i];
				_element.setAttribute("ok",0);
				WBForm.changeErrorSpan(_element,"ok");
			}
			catch (ex){;}
		}
	},
	changeErrorSpan : function(_element,flag)
	{
		//To insert the element of msg
		var exist = false;
		flag = (flag || "").toLowerCase();
		var color = "";
		var error = "msg";
		var prefix = "";
		var ok = "-1";
		if(flag == "msg") ok = "-1";
		if(flag == "wrong") ok = "0";
		if(flag == "right") ok = "1";
		if(flag == "ok") var ok = _element.getAttribute("ok");
		if(ok == "-1") {prefix = WBForm.prefixFlag[0];color = "#ee0000";error = "msg";}
		if(ok == "0") {prefix = WBForm.prefixFlag[1];color = "#ee0000";error = "wrong";}
		if(ok == "1") {prefix = WBForm.prefixFlag[2];color = "#0000ee";error = "right";}
		var span = WBForm.error;
		var _array  = WBForm.getObjectByElement(_element);
		var _element = _array[1];
		var validate = _array[3];
		var id = _array[2];
		if(validate)
		{
			var _new = null;
			var checkboxs = null;
			if(_element.type=="checkbox")
			{
				checkboxs = document.getElementsByName(_element.name);
				_element = checkboxs[checkboxs.length-1];
				_array  = WBForm.getObjectByElement(_element);
				id = _array[2];
			}
			if(document.getElementById(span+id))
			{
				_new = document.getElementById(span+id);
				exist = true;
			}
			else
			{
				_new = document.createElement("SPAN");
				_new.id = span+id.toString();
			}
			_new.style.color = color;
			_new.style.fontSize = "12px";
			_new.setAttribute("ok",ok);
			if(_element.type=="checkbox")
			{
				var tempmsg = "";
				for(var i=0,len=checkboxs.length;i<len;i++)
				{
					tempmsg = checkboxs[i].getAttribute(error) || "";
					if(tempmsg) break;
				}
				_new.innerHTML = tempmsg;
			}
			else
				_new.innerHTML = _element.getAttribute(error) || "";
			_new.innerHTML = "&nbsp;"+prefix+ _new.innerHTML;
			if(!exist) _element.parentNode.insertBefore(_new,_element.nextSibling);
		}
	}
};

