var verify = {};
var const_mFill = "(此项为必填项，请填写)";

verify.getDivTips = function(tip){
	return "<div name='check_result' style='font-size:12px;color:#FF0033'>" + tip + "</div>";
}
verify.getSpanTips = function(tip){
	return "<span name='check_result' style='font-size:12px;color:#FF0033'>" + tip + "</span>";
}
verify.clearTips = function(){
	var i=0;
	var elements = helper.getElementsByNameFixed(document,"span","check_result");
	for(i=0;i<elements.length;++i){
		elements[i].removeNode(true);
	}
	var elements = helper.getElementsByNameFixed(document,"div","check_result");
	for(i=0;i<elements.length;++i){
		elements[i].removeNode(true);
	}
}
verify.verifySelect = function(parent,needTip){
	var hasError = false;
	var elements = parent.getElementsByTagName("select");
	for(var i=0;i<elements.length;++i){
		if(elements[i].selectedIndex == -1){
			if(needTip)
				elements[i].insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项为必选项，请选择)"));
			hasError = true;
		}
	}
	return hasError;
}
verify.verifyCheckBox = function(parent,name,needTip){
	var elements = parent.getElementsByTagName("input");
	var isChecked = false;
	var check = null;
	for(var i=0;i<elements.length;++i){
		if(elements[i].type.toLowerCase() == "checkbox" &&
				elements[i].name.search(new RegExp(name)) != -1)
		{
			if(check == null){
				check = elements[i];
			}
			if(elements[i].checked){
				isChecked = true;
				break;
			}
		}

	}

	if(!isChecked && check){
		if(needTip)
			check.insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项为必选项，请选择)"));
		return true;
	}
	return false;
}
verify.verifyOneCheckBox = function(parent,name,needTip){
	var elements = helper.getElementsByNameFixed(parent,"input",name);
	var checkCound = 0;
	for(var i=0;i<elements.length;++i){
		if(elements[i].checked){
			++checkCound;
		}
	}
	if(checkCound != 0 && elements.length != 0){
		if(needTip)
			elements[0].insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项为必选项，并且只允许选择一项，请选择)"));
		return true;
	}
	return false;
}
verify.verifyRadio = function(parent,name,needTip){
	var elements = helper.getElementsByNameFixed(parent,"input",name);
	var isChecked = false;
	for(var i=0;i<elements.length;++i){
		if(elements[i].checked){
			isChecked = true;
			break;
		}
	}
	if(!isChecked && elements.length != 0){
		if(needTip)
			elements[0].insertAdjacentHTML("beforeBegin",verify.getSpanTips("(此项为必选项，请选择)"));
		return true;
	}
	return false;
}
verify.verifyText = function(parent,needTip){
	var hasError = false;
	var elements = parent.getElementsByTagName("input");
	for(var i=0;i<elements.length;++i){
		if(elements[i].type == "text" && elements[i].value.replace(/^\s+|\s+$/g, "")==""){
			if(needTip)
				elements[i].insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项为必填项，请填写)"));
			hasError = true;
		}
	}
	return hasError;
}
verify.verifyTextArea = function(parent,needTip){
	var hasError = false;
	var elements = parent.getElementsByTagName("textarea");
	for(var i=0;i<elements.length;++i){
		if(elements[i].value.replace(/^\s+|\s+$/g, "")==""){
			if(needTip)
				elements[i].insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项为必填项，请填写)"));
			hasError = true;
		}
	}
	return hasError;
}

verify.verifyFile = function(parent,needTip){
	var hasError = false;
	var elements = parent.getElementsByTagName("file");
	for(var i=0;i<elements.length;++i){
		if(elements[i].value==""){
			if(needTip)
				elements[i].insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项为必填项，请填写)"));
			hasError = true;
		}
	}
	return hasError;
}

verify.mark = function(code,ret){
	if(code) return code;
	return ret;
}

//即时提示和检查
var instantverify = {};
instantverify.getDivTips = function(name,tip,color){
	if(!color)  color="FF0033";
	return "<div name='check_result_"+name+"' style='font-size:12px;color:#"+color+"'>" + tip + "</div>";
}
instantverify.getSpanTips = function(name,tip,color){
	if(!color)  color="FF0033";
	return "<span name='check_result_"+name+"' style='font-size:12px;color:#"+color+"'>" + tip + "</span>";
}
instantverify.clearTips = function(name){
	var elements = helper.getElementsByNameFixed(document,"div","check_result_"+name);
	for(var i=0;i<elements.length;++i){
		elements[i].removeNode(true);
	}
	var elements = helper.getElementsByNameFixed(document,"span","check_result_"+name);
	for(i=0;i<elements.length;++i){
		elements[i].removeNode(true);
	}
}
instantverify.insertTips = function(name,tip,htmltype,locatename){
	if(helper.getElementsByNameFixed(document,"div","check_result_"+name).length!=0||helper.getElementsByNameFixed(document,"span","check_result_"+name).length!=0)  return false;
	if(!locatename)  locatename=name;
	var elements = document.getElementsByName(locatename);
	if(elements && elements[0]){
		if(!htmltype || htmltype=='span')
			elements[0].insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,tip,'666666'));
		else
			elements[0].insertAdjacentHTML("afterEnd",instantverify.getDivTips(name,tip,'666666'));
		return true;
	}
	return false;
}
instantverify.numberValueCheck = function(name, tip, filterDef, locatename){
	instantverify.clearTips(name);
	var high = document.getElementsByName(name)[0];
	if(!locatename)  locatename=name;
	var locateelements = document.getElementsByName(locatename)[0];
	if(!high || !locateelements)  return false;

	if(high.value=='' || (filterDef!=null && filterDef.length==2 && (parseInt(high.value)<filterDef[0]||parseInt(high.value)>filterDef[1]))){
		locateelements.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_no.gif width=17 height=17>"+tip));
		return true;
	}

	if(high.value != "" && isNaN(high.value)){
		locateelements.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_no.gif width=17 height=17>此项必须为数字"));
		return true;
	}
	locateelements.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_yes.gif width=17 height=17>"));
	return false;
}

instantverify.stringLengthCheck = function(name, maxle, minle,htmltype,heightoffset){
	instantverify.clearTips(name);
	var high = document.getElementsByName(name)[0];
	if(!high)  return false;
	if(minle==null)  minle=0;
	if(heightoffset==null)  heightoffset=0;
	if(high.value.length < minle || high.value.length > maxle){
		if(!htmltype || htmltype=='span')
			high.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_no.gif width=17 height="+(17+heightoffset)+">请控制在"+minle+"-"+maxle+"字。"));
		else
			high.insertAdjacentHTML("afterEnd",instantverify.getDivTips(name,"<img src=http://idate.163.com/images/verify_no.gif width=17 height="+(17+heightoffset)+">请控制在"+minle+"-"+maxle+"字。"));
		return true;
	}else{
		if(!htmltype || htmltype=='span')
			high.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_yes.gif width=17 height="+(17+heightoffset)+">"));
		else
			high.insertAdjacentHTML("afterEnd",instantverify.getDivTips(name,"<img src=http://idate.163.com/images/verify_yes.gif width=17 height="+(17+heightoffset)+">"));
		return false;
	}
	return false;
}
instantverify.stringLengthWarn = function(name,tip, maxle,htmltype){
	instantverify.clearTips(name);
	var high = document.getElementsByName(name)[0];
	if(!high)  return false;
	if(high.value.length > maxle*0.9){
		if(!htmltype || htmltype=='span')
			high.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"还可以输入<font color=red>"+(maxle-high.value.length)+"</font>个字",'666666'));
		else
			high.insertAdjacentHTML("afterEnd",instantverify.getDivTips(name,"还可以输入<font color=red>"+(maxle-high.value.length)+"</font>个字",'666666'));
		if(high.value.length > maxle)  high.value=high.value.substring(0,maxle);
		return true;
	}else{
		if(!htmltype || htmltype=='span')
			high.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,tip,'666666'));
		else
			high.insertAdjacentHTML("afterEnd",instantverify.getDivTips(name,tip,'666666'));
		return false;
	}
	return false;
}

instantverify.verifySelectByName = function(name,locatename){
	instantverify.clearTips(name);
	var elements = document.getElementsByName(name);
	if(!locatename)  locatename=name;
	var locateelements = document.getElementsByName(locatename);
	if(elements && elements[0] && locateelements && locateelements[0]){
		if(elements[0].selectedIndex == -1 || elements[0].options[elements[0].selectedIndex].value == -1){
			locateelements[0].insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_no.gif width=17 height=17>此项为必选项，请选择"));
			return true;
		}else{
			locateelements[0].insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_yes.gif width=17 height=17>"));
		}
	}
	return false;
}

//提交到后台的即时提示和检查
var backgroundverify = {};
backgroundverify.highspan = {};
backgroundverify.stringLengthCheck = function(name, maxle, minle,checklevel){
	var high = document.getElementsByName(name)[0];
	if(!high)  return false;
	backgroundverify.highspan[name]=high.value;
	if(minle==null)  minle=0;
	if(checklevel==null)  checklevel=0;
	if(high.value.length < minle || high.value.length > maxle){
		instantverify.clearTips(name);
		high.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_no.gif width=17 height=17>请控制在"+minle+"-"+maxle+"字。"));
		return true;
	}else{
		var ajax = new AjaxWrap(checkContentCallBack);
		ajax.openText("checkcontent.do?id="+checklevel+"&content="+high.value, true);
		return false;
	}
	return false;
}

function checkContentCallBack(stask){
	var result = 0, content = "";
	if (stask) {
		result = stask.pop();
		content = stask.pop();
	}
	var name = null;
	for(var tmpname in backgroundverify.highspan){
		if (backgroundverify.highspan[tmpname] == content) {
			name = tmpname;
			break;
		}
	}
	if(name==null)  return false;
	var high = document.getElementsByName(name)[0];
	instantverify.clearTips(name);
	if(parseInt(result)==1){
		high.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_no.gif width=17 height=17>包含非法字符，请重新填写。"));
		return true;
	}else{
		high.insertAdjacentHTML("afterEnd",instantverify.getSpanTips(name,"&nbsp;&nbsp;&nbsp;&nbsp;<img src=http://idate.163.com/images/verify_yes.gif width=17 height=17>"));
		return false;
	}
}


//修改资料的检查
var reg = {};

function numberValueCheck(name, le){
	var high = document.getElementsByName(name)[0];

	if(high.value=='0'){
		high.insertAdjacentHTML("beforeBegin",verify.getDivTips(const_mFill));
		return true;
	}

	if(high.value != "" && isNaN(high.value)){
		high.insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项必须为数字"));
		return true;
	}else if(high.value.length > le){
		high.insertAdjacentHTML("beforeBegin",verify.getDivTips("(填入数字超过" + le + ")"));
		return true;
	}
	return false;
}

function stringLengthCheck(name, le){
    var high = document.getElementsByName(name)[0];
    if(high && high.value.length > le){
        high.insertAdjacentHTML("beforeBegin",verify.getDivTips("(不能超过" + le + "个字)"));
        return true;
    }
    return false;
}

function verifySelectByName(sname){
	var elements = document.getElementsByName(sname);
	if(elements && elements[0]){
		if(elements[0].selectedIndex == -1 || elements[0].options[elements[0].selectedIndex].value == -1){
			elements[0].insertAdjacentHTML("beforeBegin",verify.getDivTips("(此项为必选项，请选择)"));
			return true;
		}
	}
	return false;
}

var step1TextVars = ["nick"];

function myGetElementByName0(name){
	var na = document.getElementsByName(name);
	if(na){
		return na[0];
	}else
		return null;
}

reg.step1 = function(){
	verify.clearTips();
	var hasError = false;

	var st1 = document.getElementById('step1');
	hasError |= verify.mark(hasError,verify.verifyRadio(st1,"sex",true));

	hasError |= instantverify.numberValueCheck('stature', '请输入有效的身高数值', [120,250], 'stature_tip');
	hasError |= instantverify.numberValueCheck('avoirdupois', '请输入有效的体重数值', [25,180], 'avoirdupois_tip');
	hasError |= backgroundverify.stringLengthCheck('nick', 12, 1);
	if(typeof(curStep)=='undefined'||curStep!=1){
		hasError |= instantverify.stringLengthCheck("school", 15, 1);
	}else{
		hasError |= instantverify.verifySelectByName('province','city');
		hasError |= instantverify.verifySelectByName('nativeProvince','nativeCity');
	}
	return hasError;
}
reg.step2 = function(){
	verify.clearTips();
	var hasError = false;

	var veh = document.getElementsByName("vehicle")[0];
	if(veh.options[veh.selectedIndex].value!=0){
		hasError |= backgroundverify.stringLengthCheck("carType", 30, 1, 1);
//		hasError |= instantverify.stringLengthCheck("carNo", 30, 1);
	}
	hasError |= backgroundverify.stringLengthCheck("school", 15, 1, 1);
	var st2 = document.getElementById('step2');
	var cc = verify.mark(hasError,verify.verifySelect(st2,true));
	hasError |= instantverify.verifySelectByName('industry');
	hasError |= verify.mark(hasError,verify.verifyTextArea(st2,true));
	hasError |= verify.mark(hasError,verify.verifyCheckBox(st2,"language",true));

	return hasError;
}
reg.step3 = function(){
	verify.clearTips();
	var hasError = false;
	var st3 = document.getElementById('step3');
	hasError |= verify.mark(hasError,verify.verifySelect(st3,true));
	hasError |= verify.mark(hasError,verify.verifyText(st3,true));
	hasError |= instantverify.verifySelectByName('embracerProvince','embracerCity');
	hasError |= instantverify.stringLengthCheck('intro', 400,0,'div');
	hasError |= instantverify.stringLengthCheck('favorEmbracer', 400,0,'div');
	hasError |= instantverify.stringLengthCheck('favorDatePlan', 255,0,'div');

	return hasError;
}

reg.step4 = function(){
	verify.clearTips();
	var hasError = false;
	var st4 = document.getElementById('step4');
	hasError |= verify.mark(hasError,verify.verifyFile(st4,true));
	return hasError;
}

function getPhoneNo(){

	var pp = document.getElementsByName("phonepref")[0];
	var ps = document.getElementsByName("phonesuff")[0];
	var ph = document.getElementsByName("phoneNo")[0];
	if(pp && ps){
		if(pp.value != "" || ps.value != ""){
			ph.value = pp.value + "-" + ps.value;
		}else{
			ph.value = "";
		}
	}
}
reg.step5 = function(){
	var hasError = false;
	verify.clearTips();
	//hasError = verify.mark(hasError,verify.verifyRadio(step5,true));
	//getPhoneNo();
	hasError = verify.mark(hasError,verify.verifyText(step5,true));
	return hasError;
}

editPhoneCk = function(){
	var hasError = false;
	verify.clearTips();
	//hasError = verify.mark(hasError,verify.verifyRadio(step5,true));
	//getPhoneNo();
	hasError = verify.mark(hasError,verify.verifyText(editPhone,true));
	return hasError;
}
var step = 1;
function next(){
	var cmd = "reg.step" + step + "()";
	if(!eval(cmd)){
		if(step != 5){
			var modStyle = "step" + step + ".style.display='none';";
			modStyle += ("step" + (++step) + ".style.display='block';");
			eval(modStyle);
			var td = document.getElementById("prevstep");
			if(step >= 2){
				td.innerHTML = "<input type=\"button\" value=\"上一步\" onclick=\"prev()\">";
			}else{
				td.innerHTML = "";
			}

			if(step == 5){
				var nxt = document.getElementById("nextstep");
				nxt.value = "完成";
			}
		}else{
			var form1 = document.getElementsByName("form1")[0];
			if(form1){
				form1.submit();
			}else{
				alert("form1 not form");
			}
		}
	}
}

function prev(){
	var prev = document.getElementById("step" + --step);
	if(prev){
		var now = document.getElementById("step" + (step + 1));
		now.style.display = "none";
		prev.style.display = "block";
	}
}

var dating = {};
var dating_contact = "";
dating.verify = function(pt, asp){
	verify.clearTips();
	var hasError = false;
	var mpt = document.getElementById(pt);

	var topic = document.getElementById("topicid");
	var contact = document.getElementsByName("contact")[0];
	var contact_email = document.getElementsByName("contact_email")[0];
	if(topic!=null && topic.value.length<6) {
		alert("小i提醒：约会主题须多于6个字。");
		return true;
	}
	if(contact!=null && contact.value.length<6) {
		alert("小i提醒：请填写有效的手机号码。");
		return true;
	}
	if(contact_email!=null && contact_email.value.length<6) {
		alert("小i提醒：请填写有效的电子邮箱地址。");
		return true;
	}

	hasError |= verify.mark(hasError,verify.verifySelect(mpt,true));
	hasError |= verify.mark(hasError,verify.verifyTextArea(mpt,true));

	var tb1 = document.getElementById("dttable1");
	var tb2 = document.getElementById("dttable2");

	if(tb1){
		hasError |= verify.mark(hasError,verify.verifyText(tb1,true));
	}

	if(tb2){
		hasError |= verify.mark(hasError,verify.verifyText(tb2,true));
	}

	hasError |= verifySelectByName('dprovince');
	hasError |= verify.mark(hasError,verify.verifyRadio(mpt,"howToGo",true));
	hasError |= verify.mark(hasError,verify.verifyRadio(mpt,"howToReturn",true));
	hasError |= verify.mark(hasError,verify.verifyRadio(mpt,"feeAssign",true));
	hasError |= verify.mark(hasError,verify.verifyRadio(mpt,"gender",true));
	hasError |= checkQuestion(asp);
	calDate('byear', 'bmonth', 'bday', 'expireTime');
//	if(!hasError && myInfo.info.mobileNo == "" && document.getElementById('mdmobile').innerText == ""){
//			showModifyMobile();
//			dating_contact='';
//			return true;
//	}
	return hasError;
}

function checkQuestion(pt){
	var ret = false;
	for(var i = 0; i < 3; ++i){
		var nm = 'ask[' + i + ']';
		var ak = getElementByNameP(pt, nm);
		if(ak.value != ''){
			var fs = false;
			for(var j = 0; j < 3; ++j){
				var xx = 'answer[' + (3 * i + j) + ']';
				var an = getElementByNameP(pt, xx);
				if(an.value.replace(/^\s+|\s+$/g, "") == ''){
					fs = true;
				}
			}
			if(fs){
				var xx = 'answer[' + (3 * i) + ']';
				var an = getElementByNameP(pt, xx);
				an.insertAdjacentHTML("beforeBegin", verify.getDivTips("(此项必填)"));
			}
			ret |= fs;
		}
	}
	return ret;
}


function createFontNode(text){
	var fn = document.createElement("span");
	fn.style.color = "#ff0000";
	fn.name = "check_result";
	fn.innerText = text;
	return fn;
}

function checkInvite(){
	verify.clearTips();
	var texts = document.getElementById("inviteForm").elements;
	var errors = []
	for(var i = 0; i < texts.length; ++i){
		if(texts[i].value.replace(/^\s+|\s+$/g, "") == ""){
			errors.push(texts[i]);
		}
	}

	if(errors.length == 0){
		return true;
	}else{
		for(var i = 0; i < errors.length; ++i){
			var pa = errors[i].parentNode;
			pa.insertBefore(createFontNode("(该项不能为空)"), errors[i]);
		}
		return false;
	}
}

function checkInputMobile(){
	var hasError = false;
	verify.clearTips();
	//hasError = verify.mark(hasError,verify.verifyRadio(step5,true));
	//getPhoneNo();
	hasError = verify.mark(hasError,verify.verifyText(charge12588div,true));
	return hasError;
}

function checkResqiubo() {
	verify.clearTips();
	var hasError = false;
	var mpt = document.getElementById('mainpoint');
	hasError = verify.mark(hasError,verify.verifyTextArea(mpt,true));

	var postarea = document.getElementById("psid");
	if(postarea!=null && postarea.value.length<6) {
		alert("小i提醒：留言内容须多于6个字。");
		return true;
	}

	return hasError;

}
var setOuterHtml = function(s){
   var range = this.ownerDocument.createRange();
   range.setStartBefore(this);
   var fragment = range.createContextualFragment(s);
   //alert(fragment.xml);
   this.parentNode.replaceChild(fragment, this);
};

var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);

var _emptyTags = {
   "IMG":   true,
   "BR":    true,
   "INPUT": true,
   "META":  true,
   "LINK":  true,
   "PARAM": true,
   "HR":    true
};

function func() {
	var where=arguments[0].toLowerCase();
	var HTML=arguments[1];
	if (where=="afterbegin") {
		this.innerHTML=HTML+this.innerHTML;
		return;
	} else if (where=="beforeend") {
		this.innerHTML+=HTML;
		return;
	} else if (where=="beforebegin") {
		var parent=this.parentNode;
		var str="";
		var txt=document.createElement("I");
		txt.innerHTML=HTML;
		var temp=parent.insertBefore(txt,this);
		var df=document.createDocumentFragment();
		for (i=0;i<temp.childNodes.length;i++) {
			var n=temp.childNodes[i].cloneNode(true);
			df.appendChild(n);
		}
		for (i=0;i<parent.childNodes.length;i++) {
			if (parent.childNodes[i]==temp) {
				parent.replaceChild(df, temp);
				return;
			}
		}
	} else if (where=="afterend") {
		var parent=this.parentNode;
		var str="";
		var txt=document.createElement("I");
		txt.innerHTML=HTML;
		if (this.nextSibling) {
			var temp=parent.insertBefore(txt,this.nextSibling);
		} else {
			var temp=parent.appendChild(txt);
		}
		var df=document.createDocumentFragment();
		for (i=0;i<temp.childNodes.length;i++) {
			var n=temp.childNodes[i].cloneNode(true);
			df.appendChild(n);
		}
		for (i=0;i<parent.childNodes.length;i++) {
			if (parent.childNodes[i]==temp) {
				parent.replaceChild(df, temp);
				return;
			}
		}
	}
}

if (!isIE) {
  HTMLElement.prototype.__defineSetter__("outerHTML", setOuterHtml);
  
  HTMLElement.prototype.__defineSetter__("innerText", function (txt) { this.textContent = txt; });
  HTMLElement.prototype.__defineGetter__("innerText", function () { return this.textContent; });
  
  HTMLElement.prototype.__defineGetter__("outerHTML", function () {
   var attrs = this.attributes;
   var str = "<" + this.tagName;
   for (var i = 0; i < attrs.length; i++)
      str += " " + attrs[i].name + "=\"" + attrs[i].value + "\"";

   if (_emptyTags[this.tagName])
      return str + ">";

   return str + ">" + this.innerHTML + "</" + this.tagName + ">";
});

	HTMLElement.prototype.insertAdjacentHTML = func;
  
}
var global = {};
global.initConst = {};
global.gTemplates = {};
global.areaConst = {};
global.cert = {};
global.vip = {};
global.evaluation = {};
global.templateText = '';
var bLoadGlobalInfo = false;
var bLoadTemplate = false;
var bLoadConst = false;

global.gTemplates.get = function(id){
	if(global.gTemplates[id] == null){
		procTemplateByName(id);
		if(global.gTemplates[id]==null)  return '';
		//throw "unknow id";
	}
	
	return global.gTemplates[id];
}

function procTemplate(text){
	var regxb = new RegExp(/<!--dtemplate:B##([^-]+)-->/g);
	var regxe = new RegExp(/<!--dtemplate:E-->/g);

	regxb.lastIndex = 0;

	var rb, re;
	
	while((rb = regxb.exec(text)) != null){
		regxe.lastIndex = regxb.lastIndex;
		if((re = regxe.exec(text)) != null){
    		var data = text.substr(regxb.lastIndex, re.index - regxb.lastIndex);
 			try{
 				global.gTemplates[rb[1]] = TrimPath.parseTemplate(data);
 			}catch(e){
 				alert(rb[1] + " parse error. the info is: " + e.toString());
 			}
		}else{
            throw "cannot reach the end";
		}
	}
}
function procTemplateByName(name){
    var orgtext = global.templateText;
    var regxb = '<!--dtemplate:B##'+name+'-->';
    var regxe = '<!--dtemplate:E-->';
    var rb=orgtext.indexOf(regxb);
    var re=orgtext.indexOf(regxe,rb);
    if(rb==-1)  return;
    var data = orgtext.substring(rb, re);
    try{
 		global.gTemplates[name] = TrimPath.parseTemplate(data);
    }catch(e){
 		alert(rb[1] + " parse error. the info is: " + e.toString());
    }
}

function loadConst(xmlConst){
	var dlove = xmlConst.getElementsByTagName("const")[0].childNodes;
	for(var i = 0; i < dlove.length; ++i){
		if(dlove[i].attributes){
			var array = {};
			var items = dlove[i].childNodes;
			for(var j = 0; j < items.length; ++j){
				if(items[j].attributes){
					array[items[j].getAttribute("key")] = items[j].getAttribute("value");
				}
			}
			global.initConst[dlove[i].nodeName] = array;
		}
	}
	
	var area = xmlConst.getElementsByTagName("province");
	for(var i = 0 ; i < area.length; ++i){
		if(area[i].attributes){
			var array = [];
			var items = area[i].childNodes;
			for(var j = 0; j < items.length; ++j){
				if(items[j].attributes){
					array[parseInt(items[j].getAttribute("key"))] = items[j].getAttribute("value");
				}
			}
			global.areaConst[area[i].getAttribute("key")] = {value:area[i].getAttribute("value"),
													array:array};
		}
	}
	
	var cc = xmlConst.getElementsByTagName("cert")[0].childNodes;
	for(var i = 0; i < cc.length; ++i){
		if(cc[i].attributes){
			var array = {};
			var items = cc[i].childNodes;
			for(var j = 0; j < items.length; ++j){
				if(items[j].attributes){
					var obj = {};
					obj.value = items[j].getAttribute("value");
					obj.name = items[j].getAttribute("name");
					obj.type = items[j].getAttribute("type");
					obj.m = items[j].getAttribute("m");
					array[items[j].getAttribute("key")] = obj;
				}
			}
			array.name = cc[i].getAttribute("name");
			global.cert[cc[i].nodeName] = array;
		}
	}
	
	var vip = xmlConst.getElementsByTagName("vip")[0].childNodes;
	for(var i = 0; i < vip.length; ++i){
			if(vip[i].attributes){
				var array = {};
				var items = vip[i].childNodes;
				for(var j = 0; j < items.length; ++j){
					if(items[j].attributes){
						var obj = {};
						obj.value = items[j].getAttribute("value");
						obj.coin = items[j].getAttribute("coin");
						array[items[j].getAttribute("key")] = obj;
					}
				}
				global.vip[vip[i].nodeName] = array;
			}
	}
	
	for(var sex = 0; sex < 2; ++sex){
		var dlove = xmlConst.getElementsByTagName("evaluation_"+sex)[0].childNodes;
		global.evaluation[sex] = {};
		for(var i = 0; i < dlove.length; ++i){
			if(dlove[i].attributes){
				var array = {};
				var items = dlove[i].childNodes;
				for(var j = 0; j < items.length; ++j){
					if(items[j].attributes){
						array[items[j].getAttribute("key")] = items[j].getAttribute("value");
					}
				}
				global.evaluation[sex][dlove[i].nodeName] = array;
			}
		}
	}
	
	bLoadConst = true;
	checkInit();
}

function loadConst2(xmlConst){
	var dlove = xmlConst.getElementsByTagName("const")[0].childNodes;
	for(var i = 0; i < dlove.length; ++i){
		if(dlove[i].attributes){
			var array = {};
			var items = dlove[i].childNodes;
			for(var j = 0; j < items.length; ++j){
				if(items[j].attributes){
					array[items[j].getAttribute("key")] = items[j].getAttribute("value");
				}
			}
			global.initConst[dlove[i].nodeName] = array;
		}
	}
	
	var area = xmlConst.getElementsByTagName("province");
	for(var i = 0 ; i < area.length; ++i){
		if(area[i].attributes){
			var array = [];
			var items = area[i].childNodes;
			for(var j = 0; j < items.length; ++j){
				if(items[j].attributes){
					array[parseInt(items[j].getAttribute("key"))] = items[j].getAttribute("value");
				}
			}
			global.areaConst[area[i].getAttribute("key")] = {value:area[i].getAttribute("value"),
													array:array};
		}
	}
	
	var cc = xmlConst.getElementsByTagName("cert")[0].childNodes;
	for(var i = 0; i < cc.length; ++i){
		if(cc[i].attributes){
			var array = {};
			var items = cc[i].childNodes;
			for(var j = 0; j < items.length; ++j){
				if(items[j].attributes){
					var obj = {};
					obj.value = items[j].getAttribute("value");
					obj.name = items[j].getAttribute("name");
					obj.type = items[j].getAttribute("type");
					obj.m = items[j].getAttribute("m");
					array[items[j].getAttribute("key")] = obj;
				}
			}
			array.name = cc[i].getAttribute("name");
			global.cert[cc[i].nodeName] = array;
		}
	}
	
	bLoadConst = true;
	checkInit2();
}

function loadTemplate(text){
	procTemplate(text);
	bLoadTemplate = true;	
	checkInit();
}


function loadTemplate2(text){
	procTemplate(text);
	bLoadTemplate = true;	
	checkInit2();
}

function loadAllTemplate(text){
	global.templateText = global.templateText+text;
	showElement("status", false);
	if(!bLoadGlobalInfo){			//当登录后中转到非首页时,下面的判断为等待main.js是否下载完成
		bLoadGlobalInfo = true;
		checkInit();
	}
}

function hideLoading(){
		var ld = document.getElementById("loading");
		if(!ld)  {window.setTimeout("hideLoading()", 100); return;}
		ld.style.display = "none";
		if (document.getElementById("divMenu") && typeof(showAds) == "function") showAds();
}

//check iframe load
function chkld(){
	var ii = navigator.appName.indexOf("Explorer") > -1;
	
	var text = ii ? window.frames["mframe"].document.body.innerText :
				window.frames["mframe"].document.body.textContent;

	if(text != ""){
		try{
			processText(text);
		}catch(e){
			//alert("错误!");
		}
		window.frames["mframe"].document.location='about:blank';
	}
}
function chkldAlone(){
	var ii = navigator.appName.indexOf("Explorer") > -1;
	
	var text = ii ? window.frames["mframe"].document.body.innerText :
				window.frames["mframe"].document.body.textContent;

	if(text != ""){
		try{
			processText(text);
		}catch(e){
			//alert("错误!");
		}
	}
}

function playLoveSong(p) {
	var url = "";
	var sid = parseInt(p);
	if (!isNaN(sid)) {
		var songs = global["messageSongs"];
		for (var i = 0; i < songs.length; i++) {
			if (songs[i].id == sid) url = songs[i].url;
		}
	} else {
		url = p;
	}
	try {
		window.document.LoveSongPlayer.SetVariable("mcPlayer.url", url + "?" + Math.random());
	} catch (ex) {}
}

function movePlayer(target) {
	var t = document.getElementById(target);
//	if (t) {
//		var p = document.getElementById("LoveSongPlayer");
//		if (p) p.parentNode.removeChild(p);
//		t.innerHTML = LOVE_SONG_PLAYER_HTML;
//	}
	if (t && LOVE_SONG_PLAYER) {
		if (LOVE_SONG_PLAYER.parentNode != t) t.appendChild(LOVE_SONG_PLAYER);
//		playLoveSong("");
//		LOVE_SONG_PLAYER.style.display = "";
	}
}
function change_area(doc, pro, c){
	var province = doc.getElementsByName(pro)[0];
	var city = doc.getElementsByName(c)[0];
	
	city.options.length = 0;
	var length = 0;
	var arr = global.areaConst[province.options[province.selectedIndex].value].array;
	arr.each(function(value,i) {
		city.options[length] = new Option(value, i, length==0, false);
		++length;		
	}
	)
}

function change_area2(doc, pro, c, index){
	if(index==null)  index=0;
	var province = doc.getElementsByName(pro)[index];
	var city = doc.getElementsByName(c)[index];
	
	city.options.length = 0;
	var length = 0;
	var arr = global.areaConst[province.options[province.selectedIndex].value].array;
	arr.each(function(value,i) {
		city.options[length] = new Option(value, i, length==0, false);
		++length;		
	}
	)

}

var helper = {};
helper.getElementsByNameFixed  = function(parent,tagName,name){
	var es = new Array();
	var elements = parent.getElementsByTagName(tagName);
	for(var i=0;i<elements.length;++i){
		if(elements[i].name == name)
			es.push(elements[i]);
	}
	return es;
}

/**
 * 帮助页面展开和收起（显示和隐藏）帮助项的脚本
 * 
 * Company: 第三空间信息技术有限公? * author : bmh
 * 2005-04-12
*/

//展开（显示）所有项
function openAll(documentName) {
	//alert('openAll()');
	var help_tr;
	for(var i=1; ; i++) {
	  help_tr = documentName.getElementById('help_tr'+i);
	  if(help_tr==null||help_tr==undefined)break;
      openOne(help_tr);
	}
}

//收起（隐藏）所有项，参数为对象
function closeAll(documentName) {
	//alert('closeAll()');
	try {
	var help_tr;
	for(var i=1; ; i++) {
	  help_tr = documentName.getElementById('help_tr'+i);
	  if(help_tr==null||help_tr==undefined)break;
      closeOne(help_tr);
	}
   }catch(e){
   }
}

//展开（显示）特定项，参数为对象
function openOne(trName) {
	trName.style.display="";
}

//收起（隐藏）特定项，参数为对象
function closeOne(trName) {
	 trName.style.display="none"; 
}

//变换特定项，参数为对象
function changeOne(trName) {
	try {
	  old = trName.style.display;
	  if (old=="none") {	   
	    openOne(trName);
	  } else {
	    closeOne(trName); 
	  }
   }catch(e){
   }
}

//变换特定项，参数为字符串
function change(trNameStr) {
	try {
	  trName = window.document.getElementById(trNameStr)
	  old = trName.style.display;
	  if (old=="none") {	   
	    openOne(trName);
	  } else {
	    closeOne(trName); 
	  }
   }catch(e){
   }
}

//示范:
//openAll(window.document)
//closeAll(window.document)
//change('help_tr1')
//
//<tr id="help_tr1" style="DISPLAY:NONE ;border-right: 1 solid #000000" >


//<tr id="help_tr" style="DISPLAY:NONE ;border-right: 1 solid #000000" >
//javascript:change('help_tr')


function openNewWin(url, name) {
  window.open(url,name);
}

var zodiacBase = 1948;
var sa = [{mb:1, db:1, me:1, de:19},
				{mb:1, db:20, me:2, de:18}, {mb:2, db:19, me:3, de:20},
				 {mb:3, db:21, me:4, de:20},{mb:4, db:21, me:5, de:20},
				 {mb:5, db:21, me:6, de:21},{mb:6, db:22, me:7, de:22},
				 {mb:7, db:23, me:8, de:22},{mb:8, db:23, me:9, de:22},
				 {mb:9, db:23, me:10, de:23},{mb:10, db:24, me:11, de:21},
				 {mb:11, db:22, me:12, de:21},{mb:12, db:22, me:12, de:31}];
				 
function showPage(divname, id){
	var divs = document.getElementsByTagName("div");
	var exp = new RegExp(divname);
	for(var i = 0; divs && i < divs.length; ++i){
		if(divs[i].id.search(exp) != -1){
			divs[i].style.display = "none";
		}
	}
	
	var sh = document.getElementById(divname + id);
	if(sh)
		sh.style.display = "block";
}

function calDate(y, m, d, id){
	var year = document.getElementsByName(y);
	var month = document.getElementsByName(m);
	var day = document.getElementsByName(d);	
	var hid = document.getElementsByName(id);
	
	if(year[0] && month[0] && day[0] && hid[0]){
		hid[0].value = year[0].options[year[0].selectedIndex].value + "-" +
				month[0].options[month[0].selectedIndex].value + "-" +
				day[0].options[day[0].selectedIndex].value;
	}
}
function calDateHour(y, m, d, hid,mid){

	var year = document.getElementsByName(y);
	var month = document.getElementsByName(m);
	var day = document.getElementsByName(d);	
	var datestr = "";
	if(year[0] && month[0] && day[0]){
		datestr = year[0].options[year[0].selectedIndex].value + "-" +
				month[0].options[month[0].selectedIndex].value + "-" +
				day[0].options[day[0].selectedIndex].value;
	}
	var hour = document.getElementById(hid);
	var min = document.getElementById(mid);
	var ret = datestr + " "+hour.value+":"+min.value+":00";
	return ret;
}

function calZC(y, m, d, z, c){
	var year = document.getElementsByName(y);
	var month = document.getElementsByName(m);
	var day = document.getElementsByName(d);	
	var zd = document.getElementsByName(z);
	var co = document.getElementsByName(c);
	
	if(year[0] && month[0] && day[0] && zd[0] && co[0]){
		var yv = parseInt(year[0].options[year[0].selectedIndex].value);
		var mv = parseInt(month[0].options[month[0].selectedIndex].value);
		var dv = parseInt(day[0].options[day[0].selectedIndex].value);
	
		zd[0].value = Math.abs(yv - 1900) % 12;
		var csv = 0;
		
		for(var i = 0; i < sa.length; ++i){
			if(sa[i].me > mv){
				csv = i;
				break;
			}else if(sa[i].me == mv){
				if(dv <= sa[i].de){
					csv = i;
					break;
				}
			}
		}
		co[0].value = csv % 12;
		
		var zd_span = document.getElementById('zodiac_span');
		var co_span = document.getElementById('constellation_span');
		if(zd_span)  zd_span.innerHTML = global.convVar("zodiac", parseInt(zd[0].value));
		if(co_span)  co_span.innerHTML = global.convVar("constellation", parseInt(co[0].value));
	}
}


function noUrlProc(tplId, point){
	return function(msg){
		procPoint(tplId, point, global);
	}
}
var tmptplId,tmpPoint,tmpRoot;
function procPoint(tplId, point, root){
		var sendtime=getCookie("sendtime");
		var cometime=getCookie("cometime");
		if(cometime!=null && cometime>0 && sendtime!='' && cometime!=sendtime){
			var mpt = document.getElementById(point);
			if(point=="mainpoint" && (mpt==null || mpt.innerHTML == '')){}else{return;}
		}
 		if(tplId==null) {
                tplId = tmptplId;point=tmpPoint;root=tmpRoot;
        }
		var pt = document.getElementById(point);
		var tpl = global.gTemplates.get(tplId).process(root);
		if(pt && tpl){ 
			pt.innerHTML = tpl;
		}else{
			tmptplId = tplId;tmpPoint=point;tmpRoot=root;
            setTimeout("procPoint()", 500);
		}
}

function getExpiryDate(nodays){
	var UTCstring;
	Today = new Date();
	nomilli=Date.parse(Today);
	Today.setTime(nomilli+nodays*24*60*60*1000);
	UTCstring = Today.toUTCString();
	return UTCstring;
}

function setCookie(name,value, path, duration){
	cookiestring=name+"="+escape(value)+";path=" + path + ";EXPIRES="+getExpiryDate(duration);
	document.cookie=cookiestring;
}

function getCookie(cookiename) {
	var cookiestring=""+document.cookie;
	var index1=cookiestring.indexOf(cookiename);
	if(index1>0){
		cookiename=' '+cookiename;
		index1=cookiestring.indexOf(cookiename);
	}
	if (index1==-1 || cookiename=="")
		return ""; 
	
	var index2=cookiestring.indexOf(';',index1);
	var len = index1 + cookiename.length;
 	if (len == cookiestring.length || len == index2) {
 		return "";
 	}
 	if (index2==-1)
 		index2=cookiestring.length; 
	 return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
}

function isIE(){
	return navigator.appName.indexOf("Explorer") > -1;
}

function checkNavigate(id, checkp, tpl){
	if(!document.getElementById('mainpoint'))  {window.setTimeout("checkNavigate('mm_index')", 1000);return;}
	if(checkp != null){
		var cp = document.getElementById(checkp);
		if(cp == null && tpl != null){
			var mp = document.getElementById('mainpoint');
			mp.innerHTML = global.gTemplates.get(tpl).process(global);
		}
	}
	
	var nt = document.getElementById("index_row");
	if(nt==null) return;
	var sps = nt.cells;

	for(var _index = 0; _index < sps.length; ++_index){
		if(sps[_index].id != ""){
			var tdNode = sps[_index];
			var aid = tdNode.id + "_a";
			var ta = document.getElementById(aid);
			if(tdNode.id != id){
				tdNode.innerHTML = ta.outerHTML;
				tdNode.className = "c";
			}else{
				tdNode.innerHTML = "<table height='100%' align='center' cellpadding='0' cellspace='0' border='0'><tr><td class='c'>" + ta.outerHTML + "</td></tr></table>";
				tdNode.className = "lanmu_bg00";
			}
		}
	}
}

function openLayerCall(url){
	var ajax = new AjaxWrap(null);
	ajax.openText(url, true);
}

function pageCallBack(tid, beanName, point){
	return function(stask){
		var tmp = global.gTemplates.get(tid);
		global[beanName] = stask.pop();
		if(tmp == null){
			alert(templateId + " can't be getted");
		}else{	
			var sp = document.getElementById(point);
			if(sp)
				sp.innerHTML = tmp.process(global);
		}
	};
}

function formToRequestString(formname)
{
	var query_string='';
	var form_eleobj = document.getElementById(formname);
	if(!form_eleobj) return form_eleobj;
	var form_obj = document.getElementById(formname).elements;
	for (var i=0;i<form_obj.length ;i++)
	{
		var e=form_obj[i];
		if (e.name!='')
		{
			var element_value = "";
			if (e.type.toLowerCase()=='select'){
				element_value=e.options[e.selectedIndex].value;
			}else if (e.type.toLowerCase()=='checkbox' || e.type.toLowerCase()=='radio'){
				if (e.checked==false){
					continue;
				}
				element_value=e.value;
			}else{
				element_value=e.value;
			}
			query_string+=e.name+'='+element_value.replace(/\&/g,"%26") + '&';
		}

	}
	return query_string;
}

function getValueFromReqStr(reqstr, key) {
	if (typeof(reqstr) == "string") {
		var p = reqstr.split("&");
		for (var i = 0; i < p.length; i++) {
			if (p[i].indexOf(key + "=") == 0) return p[i].split("=")[1];
		}
	}
	return null;
}

function getMyCookieValue(name, key) {
	return getValueFromReqStr(getCookie(myInfo.info.id + name), key);
}

function BaseCall(templateId, tmpTag){
	this.templateId = templateId;
	this.tmpTag = tmpTag;
}

BaseCall.prototype.getCallBack = function(){
	var tag = this.tmpTag;
	var tpltId = this.templateId;
	return function(stask){
		var tmp = global.gTemplates.get(tpltId);
		global[tag] = stask.pop();
		if(tmp == null){
			alert(templateId + " can't be getted");
		}else{
			openWindowWrap(function(){
				return tmp.process(global);
			});
		}
	};	
}

function callAjax(url, callback){
	var ajax = new AjaxWrap(callback);
	ajax.openText(url, true);
}

function hrefClick(id){
	var regx = /([a-zA-Z]*)([0-9]*)/;
	
	var rb = regx.exec(id);
	
	if(rb != null){
		var node = document.getElementById(id);
		var ns = node.outerHTML;
		var targets = document.getElementsByTagName('span');
		for(var i = 0; i < targets.length; ++i){
			if(targets[i].id.indexOf(rb[1]) != -1){
				targets[i].outerHTML = global[rb[1] + "back"];
				global[rb[1] + "back"] = ns;
				node.outerHTML = "<span class='activePage' id='" + id + 
													"'>" + rb[2] + "</span>";
				break;
			}
		}
	}
}
function renderPageDivFunction(funstring, params, page){
	if(!params)  params = new Array();
	for(var i=0; i<params.length; ++i){
		funstring = funstring.replace("%"+i,params[i]);
	}
	funstring = funstring.replace("%p",page);
	return funstring;
}
function renderPageDivLoop(begin, end, current, funstring, params){
	var loopret = "";
	for(var i = begin ; i <= end; ++i){
		if(i == current){
			loopret += "<span class='sed' style='font-weight:bold;color:#676767;font-size:14px;'>" + i + "</span>";
		}else{
			loopret += "<span href='#' onclick='"+renderPageDivFunction(funstring,params,i)+";return false;' class='num' onMouseOver='overIndex(this);' onMouseOut='outIndex(this);'>" + i + "</span>"
		}
	}
	return loopret;
}
function renderPageDiv(pb, funstring, params){
	var current = parseInt(pb.current);
	var per = parseInt(pb.per);
	var total = parseInt(pb.total);
	var ret = "";
	var totpage = parseInt(Math.ceil(total / per).toFixed());
	var offset = (totpage!=11?1:0);
	
	if(totpage <= 1)  return ret;
	ret = "<div class='pageLink' style='margin-bottom:5px;'>";
	if(current > 1){
		ret += "<span class='num' href='#' onclick='"+renderPageDivFunction(funstring,params,current-1)+";return false;' onMouseOver='overIndex(this);' onMouseOut='outIndex(this);'><img src='images/icn_left.gif'>&nbsp;上一页</span>"; 
	}

	if(totpage<=10){
	//不足10个记录
		ret += renderPageDivLoop(1, totpage, current, funstring, params);
	}else if(current<=8){
	//偏向列首,在前10个记录
		ret += renderPageDivLoop(1, 10, current, funstring, params);
		ret += "...";
		ret += renderPageDivLoop(totpage-offset, totpage, current, funstring, params);
	}else if(current>=totpage-7){	
	//偏向列尾,在后10个记录
		ret += renderPageDivLoop(1, 1+offset, current, funstring, params);
		ret += "...";
		ret += renderPageDivLoop(totpage-9, totpage, current, funstring, params);
	}else{
	//在列中
		ret += renderPageDivLoop(1, 2, current, funstring, params);
		ret += "...";
		ret += renderPageDivLoop(current-4, current+4, current, funstring, params);
		ret += "...";
		ret += renderPageDivLoop(totpage-1, totpage, current, funstring, params);
	}
	
	if(current < totpage){
		ret += "<span class='num' href='#' onclick='"+renderPageDivFunction(funstring,params,current+1)+";return false;' onMouseOver='overIndex(this);' onMouseOut='outIndex(this);'>下一页&nbsp;<img src='images/icn_right.gif'></span>"; 
	}
	ret += "</div>";
	return ret;
}
function overIndex(span){
	span.style.backgroundColor = '#f2f6fb';	
	span.style.border = '1px solid #d0dbe7';
}

function outIndex(span){
	span.style.backgroundColor = '';	
	span.style.border = '#ffffff 1px solid';	
}

function photoChange(imgId){
	var imagep = document.getElementById(imgId);
	imagep.src = "file:///" + document.getElementsByName("file")[0].value;
}

function getElementByNameP(pid, name){
	var par = document.getElementById(pid);
	var tns = document.getElementsByName(name);
	for(var i = 0; i < tns.length; ++i){
		if(checkParent(tns[i], par))
			return tns[i];
	}
	return null;
}

function checkParent(sub, parent){
	var bb = sub.parentNode;
	while(bb != null){
		if(bb == parent){
			return true;
		}
		bb = bb.parentNode;
	}
	return false;
}

function fixTd(now, up){
	var ret = "";
	for(var i = now; i <= up; ++i){
		ret += "<td width='25%'>&nbsp;</td>";
	}
	return ret;
}

//生日转换为年龄的函数
function getAge(birth){//参数为出生年月,如1980-5-9
	if(birth==null)  return 0;
	birth = birth.replace('-','/');
    var now=new Date();
    var old=new Date(birth);
    return (now.getFullYear()-old.getFullYear());
}
function copyToClipboard(meintext){
    if (window.clipboardData){
         window.clipboardData.setData("Text", meintext);
    }else if (window.netscape){ 
	    try{
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		} catch (e) {
			alert('您的firefox安全限制限制您进行剪贴板操作，请打开’about:config’将signed.applets.codebase_principal_support’设置为true’之后重试');
			return false;
		}
        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=meintext;
        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);
    }
    return true;
}

function rdsex(sex){
	if(sex==0) return "_0";
}
function rdsexHim(sex){
	if(sex==0) return "她"; else return "他";
}
function isChinaMobile(mobileno){
	return /^1((3[4-9])||(5[0189]))\d{8}$/g.test(mobileno);
}

function setCurrentTab(tabIds, index, classPrefix) {
	for (var i = 0; i < tabIds.length; i++) {
		var tab = document.getElementById(tabIds[i]);
		if (tab) tab.className = classPrefix + (index == i ? "2" : "");
	}
}

Date.prototype.format = function(fs) {
	var rep = function(s, p, v) {
		if (s.indexOf(p) != -1) {
			return [s.replace(p, v), true];
		} else {
			return [s, false];
		}
	};
	var i, t;
	var keys = ["Y", "y", "m", "n", "d", "j", "H", "G", "h", "g", "i", "s"];
	var vals = [];
	vals.push(this.getFullYear().toString());//Y, a full numeric representation of a year, 4 digits
	vals.push(vals[0].substr(2));//y, a two-digit representation of a year
	t = (this.getMonth() + 1).toString();
	vals.push(t.length == 1 ? "0" + t : t);//m, numeric representation of a month, with leading zeros
	vals.push(t);//n, numeric representation of a month, without leading zeros
	t = this.getDate().toString();
	vals.push(t.length == 1 ? "0" + t : t);//d, day of the month, 2 digits with leading zeros
	vals.push(t);//j, day of the month without leading zeros
	t = this.getHours().toString();
	vals.push(t.length == 1 ? "0" + t : t);//H, 24-hour format of an hour with leading zeros
	vals.push(t);//G, 24-hour format of an hour without leading zeros
	t = this.getHours();
	t = t == 0 ? 12 : t > 12 ? t - 12 : t;
	t = t.toString();
	vals.push(t.length == 1 ? "0" + t : t);//h, 12-hour format of an hour with leading zeros
	vals.push(t);//g, 12-hour format of an hour without leading zeros
	t = this.getMinutes().toString();
	vals.push(t.length == 1 ? "0" + t : t);//i, minutes with leading zeros
	t = this.getSeconds().toString();
	vals.push(t.length == 1 ? "0" + t : t);//s, seconds with leading zeros
	var flag = true;
	if (typeof(fs) != "string" || fs.length == 0) {
		fs = "Y-m-d H:i:s";
	}
	while (flag) {
		for (i = 0; i < keys.length; i++) {
			t = rep(fs, keys[i], vals[i]);
			if (t[1] == true) {
				fs = t[0];
				flag = false;
			}
		}
		flag = !flag;
	}
	return fs;
};
function getDateStringByTime(time){
	if(time==0)  return "&nbsp;";
	var Stamp = new Date(parseInt(time)); var h = parseInt(Stamp.getHours()); var m = parseInt(Stamp.getMinutes()); var s = parseInt(Stamp.getSeconds());
	var month = parseInt(Stamp.getMonth())+1;var day= parseInt(Stamp.getDate());var year = parseInt(Stamp.getYear());
	if(h<10) h="0"+h;if(m<10) m="0"+m; if(s<10) s="0"+s;if(month<10) month = "0"+month; if(day<10) day = "0"+day;if(year<100) year = 1900+year;
	var datestr = year+"-"+month+"-"+day+" "+h+":"+m+":"+s;
	return datestr;
}
/** The JSON class is copyright 2005 JSON.org. */
//Array.prototype.______array = '______array';

var JSON = {
    org: 'http://www.JSON.org',
    copyright: '(c)2005 JSON.org',
    license: 'http://www.crockford.com/JSON/license.html',

    stringify: function (arg) {
        var c, i, l, s = '', v;

        switch (typeof arg) {
        case 'object':
            if (arg) {
                //if (arg.______array == '______array') {
                 if(Array.prototype.isPrototypeOf(arg)){
                    for (i = 0; i < arg.length; ++i) {
                        v = this.stringify(arg[i]);
                        if (s) {
                            s += ',';
                        }
                        s += v;
                    }
                    return '[' + s + ']';
                } else if (typeof arg.toString != 'undefined') {
                    for (i in arg) {
                        v = arg[i];
                        if (typeof v != 'undefined' && typeof v != 'function') {
                            v = this.stringify(v);
                            if (s) {
                                s += ',';
                            }
                            s += this.stringify(i) + ':' + v;
                        }
                    }
                    return '{' + s + '}';
                }
            }
            return 'null';
        case 'number':
            return isFinite(arg) ? String(arg) : 'null';
        case 'string':
            l = arg.length;
            s = '"';
            for (i = 0; i < l; i += 1) {
                c = arg.charAt(i);
                if (c >= ' ') {
                    if (c == '\\' || c == '"') {
                        s += '\\';
                    }
                    s += c;
                } else {
                    switch (c) {
                        case '\b':
                            s += '\\b';
                            break;
                        case '\f':
                            s += '\\f';
                            break;
                        case '\n':
                            s += '\\n';
                            break;
                        case '\r':
                            s += '\\r';
                            break;
                        case '\t':
                            s += '\\t';
                            break;
                        default:
                            c = c.charCodeAt();
                            s += '\\u00' + Math.floor(c / 16).toString(16) +
                                (c % 16).toString(16);
                    }
                }
            }
            return s + '"';
        case 'boolean':
            return String(arg);
        default:
            return 'null';
        }
    },
    parse: function (text) {
        var at = 0;
        var ch = ' ';

        function error(m) {
            throw {
                name: 'JSONError',
                message: m,
                at: at - 1,
                text: text
            };
        }

        function next() {
            ch = text.charAt(at);
            at += 1;
            return ch;
        }

        function white() {
            while (ch != '' && ch <= ' ') {
                next();
            }
        }

        function str() {
            var i, s = '', t, u;

            if (ch == '"') {
outer:          while (next()) {
                    if (ch == '"') {
                        next();
                        return s;
                    } else if (ch == '\\') {
                        switch (next()) {
                        case 'b':
                            s += '\b';
                            break;
                        case 'f':
                            s += '\f';
                            break;
                        case 'n':
                            s += '\n';
                            break;
                        case 'r':
                            s += '\r';
                            break;
                        case 't':
                            s += '\t';
                            break;
                        case 'u':
                            u = 0;
                            for (i = 0; i < 4; i += 1) {
                                t = parseInt(next(), 16);
                                if (!isFinite(t)) {
                                    break outer;
                                }
                                u = u * 16 + t;
                            }
                            s += String.fromCharCode(u);
                            break;
                        default:
                            s += ch;
                        }
                    } else {
                        s += ch;
                    }
                }
            }
            error("Bad string");
        }

        function arr() {
            var a = [];

            if (ch == '[') {
                next();
                white();
                if (ch == ']') {
                    next();
                    return a;
                }
                while (ch) {
                    a.push(val());
                    white();
                    if (ch == ']') {
                        next();
                        return a;
                    } else if (ch != ',') {
                        break;
                    }
                    next();
                    white();
                }
            }
            error("Bad array");
        }

        function obj() {
            var k, o = {};

            if (ch == '{') {
                next();
                white();
                if (ch == '}') {
                    next();
                    return o;
                }
                while (ch) {
                    k = str();
                    white();
                    if (ch != ':') {
                        break;
                    }
                    next();
                    o[k] = val();
                    white();
                    if (ch == '}') {
                        next();
                        return o;
                    } else if (ch != ',') {
                        break;
                    }
                    next();
                    white();
                }
            }
            error("Bad object");
        }

        function num() {
            var n = '', v;
            if (ch == '-') {
                n = '-';
                next();
            }
            while (ch >= '0' && ch <= '9') {
                n += ch;
                next();
            }
            if (ch == '.') {
                n += '.';
                while (next() && ch >= '0' && ch <= '9') {
                    n += ch;
                }
            }
            if (ch == 'e' || ch == 'E') {
                n += 'e';
                next();
                if (ch == '-' || ch == '+') {
                    n += ch;
                    next();
                }
                while (ch >= '0' && ch <= '9') {
                    n += ch;
                    next();
                }
            }
            v = +n;
            if (!isFinite(v)) {
                error("Bad number");
            } else {
                return v;
            }
        }

        function word() {
            switch (ch) {
                case 't':
                    if (next() == 'r' && next() == 'u' && next() == 'e') {
                        next();
                        return true;
                    }
                    break;
                case 'f':
                    if (next() == 'a' && next() == 'l' && next() == 's' &&
                            next() == 'e') {
                        next();
                        return false;
                    }
                    break;
                case 'n':
                    if (next() == 'u' && next() == 'l' && next() == 'l') {
                        next();
                        return null;
                    }
                    break;
            }
            error("Syntax error");
        }

        function val() {
            white();
            switch (ch) {
                case '{':
                    return obj();
                case '[':
                    return arr();
                case '"':
                    return str();
                case '-':
                    return num();
                default:
                    return ch >= '0' && ch <= '9' ? num() : word();
            }
        }

        return val();
    }
};
function ArrayInfoData(cmp){
	this.infoes = [];
	this.observeres = [];
	this.compare = cmp;
}

ArrayInfoData.prototype.register = function(observer){
	this.observeres.push(observer);
}

ArrayInfoData.prototype.removeAllListeners = function(){
	this.observeres = [];
}

ArrayInfoData.prototype.unregister = function(observer){
	with(this){
		for(var _index = 0; _index < observeres.length; ++_index){
			if(observeres[_index] == observer){
				observeres.splice(_index, 1);
			}
		}
	}
}
ArrayInfoData.prototype.findItem = function(idObj){
	with(this){
		for(var _index = 0; _index < infoes.length; ++_index){
			if(compare(infoes[_index], idObj)){
				return _index;
			}
		}
		return -1;
	}
}
	
ArrayInfoData.prototype.getById = function(idObj){
	var xxx;
	if((xxx = this.findItem(idObj)) != -1){
		return this.infoes[xxx];
	}else{
		return null;
	}
}

ArrayInfoData.prototype.deleteItem = function(idObj){
	var xxx;
	if((xxx = this.findItem(idObj)) != -1){
		var ret = this.infoes.splice(xxx, 1);
		forEach(this.observeres, unaryWrap('ondelete', ret));
	}
}

ArrayInfoData.prototype.addItem = function(obj){
	this.infoes.push(obj);
	forEach(this.observeres, unaryWrap('onadd', obj));
}

ArrayInfoData.prototype.addWithoutNoitify = function(obj){
	this.infoes.push(obj);
}

ArrayInfoData.prototype.changeItem = function(obj){
	var xxx;
	if((xxx = this.findItem(obj)) != -1){
		this.infoes[xxx] = obj;
		forEach(this.observeres, unaryWrap('onchange', obj));
	}
}

ArrayInfoData.prototype.changeAll = function(objs){
	this.infoes = objs;
	forEach(this.observeres, unaryWrap('onrefresh', objs));
}
//xxx AddData()????

function InfoData(){
	this.info = {};
	this.observeres = [];
}

InfoData.prototype.register = function(observer){
	this.observeres.push(observer);
}

InfoData.prototype.unregister = function(observer){
	with(this){
		for(var _index = 0; _index < observeres.length; ++_index){
			if(observeres[_index] == observer){
				observeres.splice(_index, 1);
			}
		}
	}
}
	
InfoData.prototype.changeAll = function(obj){
	this.info = obj;
	forEach(this.observeres, unaryWrap('onrefresh', obj));
}

InfoData.prototype.changeItem = function(obj){
	this.info = obj;
	forEach(this.observeres, unaryWrap('onchnage', obj));
}

function refreshData(stask){
	var name = stask.pop();
	window[name].changeAll(stask.pop());
}

function deleteData(stask){
	var name = stask.pop();
	window[name].deleteItem(stask.pop());
}

function changeData(stask){
	var name = stask.pop();
	window[name].changeItem(stask.pop());
}

function addData(stask){
	var name = stask.pop();
	window[name].addItem(stask.pop());
}

function deleteBatch(stask){
	var name = stask.pop();
	var idObjs = stask.pop();
	for(var i = 0; i < idObjs.length; ++i){
		window[name].deleteItem(idObjs[i]);
	}
}

function unaryWrap(func, param){
	return function(obj){
		obj[func](param);
	}
}

function forEach(arr, unary_func){
	for(var i=0; i< arr.length; i++){
		unary_func(arr[i]);
	}
}

function MsgCenter(){
	this.queue = {};
}

var mc = new MsgCenter();
var preTranslates = [];

function addMsgFilter(filter){
	preTranslates.push(filter);
}

function addMsg(msgId, procs){
	mc.queue[msgId] = procs;
}

function addMsgRange(b, e, procs){
	for(var i = b; i < e; ++i){
		mc.queue[i] = procs;
	}
}

function sendMessage(id, obj){
	
	if(obj == null){
		obj = {MSG:id};
	}else{
		obj.MSG = id;
	}
	if(!preTranslateMessage(obj))
		return;
	setCookie("sendtime", new Date().getTime(), "/", 10000);
	setCookie("cometime", "-1", "/", 10000);
	processMessage(obj);
	if (typeof(loadTipsInt) != 'undefined' && loadTipsInt == -1) {
		loadTipsInt=window.setTimeout("loadTips()", interval);
	}
}

function preTranslateMessage(msg){
	var ret = true;
	for(var i = 0; i < preTranslates.length; ++i){
		ret &= preTranslates[i](msg);
	}
	return ret;
}

function processMessage(msg){
	if(msg.MSG==1){		
        showElement('divMenu',true)
	}else{
    	showElement('divMenu',false)
	}

	var ps = mc.queue[msg.MSG];
	if(ps == null){
		throw "id: " + msg.MSG + " doesnot exist";
	}else {	
		for(var _index = 0; _index < ps.length; ++_index){
			ps[_index](msg);
		}
	}
}

function showLoad(msg){
	var ld = document.getElementById("status");
	if(ld){
		ld.innerText = msg;
		ld.style.display = "";
	}
}


function globalEmit(text) {
   if (text == null || text.length <= 0)
        return text;
    text = text.replace(/\r\n/g, '\\n');
   text = text.replace(/[\r\n]/g, '\\n');
    text = text.replace(/</g, '&lt;');
    text = text.replace(/>/g, '&gt;');
    return text;
 }

function globalUnemit(text) {
	text = text.replace(/\&lt;/g, '<');
	text = text.replace(/\&gt;/g, '>');
	return text;
}
 
function AjaxWrap(callBack) {
	this.req = null;
	this.callBack = callBack;
	if (window.XMLHttpRequest) {
		this.req = new XMLHttpRequest();
	}else if (window.ActiveXObject){
		try {
			this.req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) {
			try {
				this.req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				alert("unsuport navigate");
			}
		}
	}
	showElement("messageZone",true);
}

function execute(stask){
	while(stask.length > 0){
		if(Function.prototype.isPrototypeOf(stask[stask.length - 1])){
			var code = stask.pop();
			code.call(null, stask);
		}else{
			if(stask.length > 1){
				//alert("the left stask great than 1");
			}
			break;
		}
	}
}

function processText(text, cb){
	var stask = eval(globalEmit(text));
	var code = stask.pop();
	switch(parseInt(code)){
		case 4001:
			//session error
			hideLoading();
			document.getElementById('nosession').style.display='inline';
			if (typeof(loadTipsInt) != 'undefined') {
				window.clearTimeout(loadTipsInt);
				loadTipsInt = -1;
			}
			break;
		case 100:
			//object back;
			cb(stask);
			break;
		case 200:
			//operator back;
			execute(stask);	
			if(stask.length > 0 && cb){
				cb(stask);
			}
			break;
		case 300:
			cb(stask);
			if(stask.length > 0)
				execute(stask);
			break;
		case 500:
			if (typeof(loadTipsInt) != 'undefined') {
				window.clearTimeout(loadTipsInt);
				loadTipsInt = -1;
			}
			break;
		default:
			alert("unknow code: " + code);
	}
}

function 	afterResponse(){
	//do nothing
}

var COUNT_HTTPERR = 0,temp_counter=0;
function response(req,cb,bXML) {
	return function(){
		if (req.readyState == 4) {
			if(showElement&&mainjsLoaded)  {showElement("messageZone",false);}
			if (req.status == 200) {
				COUNT_HTTPERR = 0;
				showElement("status", false);
				if(bXML){
					cb(req.responseXML);
				}else{
					processText(req.responseText, cb);
				}
			}
			else if (req.status == 12029) {
				//alert("连接超时,请重新登陆)
				showLoad("连接超时");
			}
			else{
				COUNT_HTTPERR++;
				if (COUNT_HTTPERR >= 3) {
					showResult([{closeTag:"1",content:"系统维护中，请稍后再试。",tag:"0",title:"操作失败！"}]);
				}
				showLoad("HTTP error: " + req.status);
			}
		}
	}
}

AjaxWrap.prototype.postForm = function(url, content,bXML, sync){
	this.req.onreadystatechange = response(this.req, this.callBack, bXML);
	//for test + http://localhost:8080/dlove/
	this.req.open("POST", url, sync);
	this.req.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
	this.req.send(content);
}

AjaxWrap.prototype.postFormText = function(url, content,sync){
	this.postForm(url, content,false, sync);
}

AjaxWrap.prototype.postFormXML = function(url,content, sync){
	this.postForm(url, content,true, sync);
}

AjaxWrap.prototype.open = function(url, bXML, sync){
	this.req.onreadystatechange = response(this.req, this.callBack, bXML);
	//for test + http://localhost:8080/dlove/
	this.req.open("POST", url, sync);
	this.req.send("");
}

AjaxWrap.prototype.openEx = function(method, url, bXML, sync){
	this.req.onreadystatechange = response(this.req, this.callBack, bXML);
	//for test + http://localhost:8080/dlove/
	this.req.open(method, url, sync);
	this.req.send("");
}


AjaxWrap.prototype.openText = function(url, sync){
	this.open(url, false, sync);
}

AjaxWrap.prototype.openXML = function(url, sync){
	this.open(url, true, sync);
}

AjaxWrap.prototype.getXML = function(url, sync){
	this.openEx("GET", url, true, sync);
}

//this call only for get template
AjaxWrap.prototype.openTemplate = function(url){
	this.req.onreadystatechange = tplResponse(this.req, this.callBack);
	//for test + http://localhost:8080/dlove/
	this.req.open("GET", url, true);
	this.req.send("");

}

function tplResponse(req,cb) {
	return function(){
		if (req.readyState == 4) {
			if (req.status == 200) {
					cb(req.responseText);
			} else{
				alert("HTTP error: " + req.status);
			}
		}
	}
}

var lockopen = false;

function loadHistory(){
	if(!lockopen){
		if (typeof window.frames['histroyFrame'].document.body.innerText == "undefined" && typeof window.frames['histroyFrame'].document.body.__defineGetter__ == "function") {
			  window.frames['histroyFrame'].document.body.__defineGetter__("innerText", function () { return this.textContent; });
		}
		var vv = window.frames['histroyFrame'].document.body.innerText;
		if(vv != ""){
			if(window["closePhoto"]){
				var ph = document.getElementById('phototable');
				if(ph && ph.style.display != 'none'){
					closePhoto();
				}
			}
			var obj = JSON.parse(vv);
			try {
				processMessage(obj);
			} catch (ex) {}
		}
	}
}

var lastmsg = {MSG:1};
function writeHistory(msg){
	try{
    	var vv = window.frames['histroyFrame'].document.body.innerText;
    	if(vv && vv != "")  lastmsg=JSON.parse(vv);
    }catch(e){}
	lockopen = true;
	window.frames['histroyFrame'].document.close();
	window.frames['histroyFrame'].document.open();
	lockopen = false;

	window.frames['histroyFrame'].document.write(JSON.stringify(msg));
	lockopen = true;
	window.frames['histroyFrame'].document.close();
	lockopen = false;
	return true;
}
/**
 * TrimPath Template. Release 1.0.38.
 * Copyright (C) 2004, 2005 Metaha.
 * 
 * TrimPath Template is licensed under the GNU General Public License
 * and the Apache License, Version 2.0, as follows:
 *
 * This program is free software; you can redistribute it and/or 
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed WITHOUT ANY WARRANTY; without even the 
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var TrimPath;

// TODO: Debugging mode vs stop-on-error mode - runtime flag.
// TODO: Handle || (or) characters and backslashes.
// TODO: Add more modifiers.

(function() {               // Using a closure to keep global namespace clean.
    if (TrimPath == null)
        TrimPath = new Object();
    if (TrimPath.evalEx == null)
        TrimPath.evalEx = function(src) { return eval(src); };

    var UNDEFINED;
    if (Array.prototype.pop == null)  // IE 5.x fix from Igor Poteryaev.
        Array.prototype.pop = function() {
            if (this.length === 0) {return UNDEFINED;}
            return this[--this.length];
        };
    if (Array.prototype.push == null) // IE 5.x fix from Igor Poteryaev.
        Array.prototype.push = function() {
            for (var i = 0; i < arguments.length; ++i) {this[this.length] = arguments[i];}
            return this.length;
        };

    TrimPath.parseTemplate = function(tmplContent, optTmplName, optEtc) {
        if (optEtc == null)
            optEtc = TrimPath.parseTemplate_etc;
        var funcSrc = parse(tmplContent, optTmplName, optEtc);
        var func = TrimPath.evalEx(funcSrc, optTmplName, 1);
        if (func != null)
            return new optEtc.Template(optTmplName, tmplContent, funcSrc, func, optEtc);
        return null;
    }
    
    try {
        String.prototype.process = function(context, optFlags) {
            var template = TrimPath.parseTemplate(this, null);
            if (template != null)
                return template.process(context, optFlags);
            return this;
        }
    } catch (e) { // Swallow exception, such as when String.prototype is sealed.
    }
    
    TrimPath.parseTemplate_etc = {};            // Exposed for extensibility.
    TrimPath.parseTemplate_etc.statementTag = "forelse|for|if|elseif|else|var|macro";
    TrimPath.parseTemplate_etc.statementDef = { // Lookup table for statement tags.
        "if"     : { delta:  1, prefix: "if (", suffix: ") {", paramMin: 1 },
        "else"   : { delta:  0, prefix: "} else {" },
        "elseif" : { delta:  0, prefix: "} else if (", suffix: ") {", paramDefault: "true" },
        "/if"    : { delta: -1, prefix: "}" },
        "for"    : { delta:  1, paramMin: 3, 
                     prefixFunc : function(stmtParts, state, tmplName, etc) {
                        if (stmtParts[2] != "in")
                            throw new etc.ParseError(tmplName, state.line, "bad for loop statement: " + stmtParts.join(' '));
                        var iterVar = stmtParts[1];
                        var listVar = "__LIST__" + iterVar;
                        return [ "var ", listVar, " = ", stmtParts[3], ";",
                             // Fix from Ross Shaull for hash looping, make sure that we have an array of loop lengths to treat like a stack.
                             "var __LENGTH_STACK__;",
                             "if (typeof(__LENGTH_STACK__) == 'undefined' || !__LENGTH_STACK__.length) __LENGTH_STACK__ = new Array();", 
                             "__LENGTH_STACK__[__LENGTH_STACK__.length] = 0;", // Push a new for-loop onto the stack of loop lengths.
                             "if ((", listVar, ") != null) { ",
                             "var ", iterVar, "_ct = 0;",       // iterVar_ct variable, added by B. Bittman     
                             "for (var ", iterVar, "_index in ", listVar, ") { ",
                             iterVar, "_ct++;",
                             "if (typeof(", listVar, "[", iterVar, "_index]) == 'function') {continue;}", // IE 5.x fix from Igor Poteryaev.
                             "__LENGTH_STACK__[__LENGTH_STACK__.length - 1]++;",
                             "var ", iterVar, " = ", listVar, "[", iterVar, "_index];" ].join("");
                     } },
        "forelse" : { delta:  0, prefix: "} } if (__LENGTH_STACK__[__LENGTH_STACK__.length - 1] == 0) { if (", suffix: ") {", paramDefault: "true" },
        "/for"    : { delta: -1, prefix: "} }; delete __LENGTH_STACK__[__LENGTH_STACK__.length - 1];" }, // Remove the just-finished for-loop from the stack of loop lengths.
        "var"     : { delta:  0, prefix: "var ", suffix: ";" },
        "macro"   : { delta:  1, 
                      prefixFunc : function(stmtParts, state, tmplName, etc) {
                          var macroName = stmtParts[1].split('(')[0];
                          return [ "var ", macroName, " = function", 
                                   stmtParts.slice(1).join(' ').substring(macroName.length),
                                   "{ var _OUT_arr = []; var _OUT = { write: function(m) { if (m) _OUT_arr.push(m); } }; " ].join('');
                     } }, 
        "/macro"  : { delta: -1, prefix: " return _OUT_arr.join(''); };" }
    }
    TrimPath.parseTemplate_etc.modifierDef = {
        "eat"        : function(v)    { return ""; },
        "escape"     : function(s)    { return String(s).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); },
        "capitalize" : function(s)    { return String(s).toUpperCase(); },
        "default"    : function(s, d) { return s != null ? s : d; }
    }
    TrimPath.parseTemplate_etc.modifierDef.h = TrimPath.parseTemplate_etc.modifierDef.escape;

    TrimPath.parseTemplate_etc.Template = function(tmplName, tmplContent, funcSrc, func, etc) {
        this.process = function(context, flags) {
            if (context == null)
                context = {};
            if (context._MODIFIERS == null)
                context._MODIFIERS = {};
            if (context.defined == null)
                context.defined = function(str) { return (context[str] != undefined); };
            for (var k in etc.modifierDef) {
                if (context._MODIFIERS[k] == null)
                    context._MODIFIERS[k] = etc.modifierDef[k];
            }
            if (flags == null)
                flags = {};
            var resultArr = [];
            var resultOut = { write: function(m) { resultArr.push(m); } };
            try {
                func(resultOut, context, flags);
            } catch (e) {
                if (flags.throwExceptions == true)
                    throw e;
                var result = new String(resultArr.join("") + "[ERROR: " + e.toString() + (e.message ? '; ' + e.message : '') + "]");
                result["exception"] = e;
                return result;
            }
            return resultArr.join("");
        }
        this.name       = tmplName;
        this.source     = tmplContent; 
        this.sourceFunc = funcSrc;
        this.toString   = function() { return "TrimPath.Template [" + tmplName + "]"; }
    }
    TrimPath.parseTemplate_etc.ParseError = function(name, line, message) {
        this.name    = name;
        this.line    = line;
        this.message = message;
    }
    TrimPath.parseTemplate_etc.ParseError.prototype.toString = function() { 
        return ("TrimPath template ParseError in " + this.name + ": line " + this.line + ", " + this.message);
    }
    
    var parse = function(body, tmplName, etc) {
        body = cleanWhiteSpace(body);
        var funcText = [ "var TrimPath_Template_TEMP = function(_OUT, _CONTEXT, _FLAGS) { with (_CONTEXT) {" ];
        var state    = { stack: [], line: 1 };                              // TODO: Fix line number counting.
        var endStmtPrev = -1;
        while (endStmtPrev + 1 < body.length) {
            var begStmt = endStmtPrev;
            // Scan until we find some statement markup.
            begStmt = body.indexOf("{", begStmt + 1);
            while (begStmt >= 0) {
                var endStmt = body.indexOf('}', begStmt + 1);
                var stmt = body.substring(begStmt, endStmt);
                var blockrx = stmt.match(/^\{(cdata|minify|eval)/); // From B. Bittman, minify/eval/cdata implementation.
                if (blockrx) {
                    var blockType = blockrx[1]; 
                    var blockMarkerBeg = begStmt + blockType.length + 1;
                    var blockMarkerEnd = body.indexOf('}', blockMarkerBeg);
                    if (blockMarkerEnd >= 0) {
                        var blockMarker;
                        if( blockMarkerEnd - blockMarkerBeg <= 0 ) {
                            blockMarker = "{/" + blockType + "}";
                        } else {
                            blockMarker = body.substring(blockMarkerBeg + 1, blockMarkerEnd);
                        }                        
                        
                        var blockEnd = body.indexOf(blockMarker, blockMarkerEnd + 1);
                        if (blockEnd >= 0) {                            
                            emitSectionText(body.substring(endStmtPrev + 1, begStmt), funcText);
                            
                            var blockText = body.substring(blockMarkerEnd + 1, blockEnd);
                            if (blockType == 'cdata') {
                                emitText(blockText, funcText);
                            } else if (blockType == 'minify') {
                                emitText(scrubWhiteSpace(blockText), funcText);
                            } else if (blockType == 'eval') {
                                if (blockText != null && blockText.length > 0) // From B. Bittman, eval should not execute until process().
                                    funcText.push('_OUT.write( (function() { ' + blockText + ' })() );');
                            }
                            begStmt = endStmtPrev = blockEnd + blockMarker.length - 1;
                        }
                    }                        
                } else if (body.charAt(begStmt - 1) != '$' &&               // Not an expression or backslashed,
                           body.charAt(begStmt - 1) != '\\') {              // so check if it is a statement tag.
                    var offset = (body.charAt(begStmt + 1) == '/' ? 2 : 1); // Close tags offset of 2 skips '/'.
                                                                            // 10 is larger than maximum statement tag length.
                    if (body.substring(begStmt + offset, begStmt + 10 + offset).search(TrimPath.parseTemplate_etc.statementTag) == 0) 
                        break;                                              // Found a match.
                }
                begStmt = body.indexOf("{", begStmt + 1);
            }
            if (begStmt < 0)                              // In "a{for}c", begStmt will be 1.
                break;
            var endStmt = body.indexOf("}", begStmt + 1); // In "a{for}c", endStmt will be 5.
            if (endStmt < 0)
                break;
            emitSectionText(body.substring(endStmtPrev + 1, begStmt), funcText);
            emitStatement(body.substring(begStmt, endStmt + 1), state, funcText, tmplName, etc);
            endStmtPrev = endStmt;
        }
        emitSectionText(body.substring(endStmtPrev + 1), funcText);
        if (state.stack.length != 0)
            throw new etc.ParseError(tmplName, state.line, "unclosed, unmatched statement(s): " + state.stack.join(","));
        funcText.push("}}; TrimPath_Template_TEMP");
        return funcText.join("");
    }
    
    var emitStatement = function(stmtStr, state, funcText, tmplName, etc) {
        var parts = stmtStr.slice(1, -1).split(' ');
        var stmt = etc.statementDef[parts[0]]; // Here, parts[0] == for/if/else/...
        if (stmt == null) {                    // Not a real statement.
            emitSectionText(stmtStr, funcText);
            return;
        }
        if (stmt.delta < 0) {
            if (state.stack.length <= 0)
                throw new etc.ParseError(tmplName, state.line, "close tag does not match any previous statement: " + stmtStr);
            state.stack.pop();
        } 
        if (stmt.delta > 0)
            state.stack.push(stmtStr);

        if (stmt.paramMin != null &&
            stmt.paramMin >= parts.length)
            throw new etc.ParseError(tmplName, state.line, "statement needs more parameters: " + stmtStr);
        if (stmt.prefixFunc != null)
            funcText.push(stmt.prefixFunc(parts, state, tmplName, etc));
        else 
            funcText.push(stmt.prefix);
        if (stmt.suffix != null) {
            if (parts.length <= 1) {
                if (stmt.paramDefault != null)
                    funcText.push(stmt.paramDefault);
            } else {
                for (var i = 1; i < parts.length; i++) {
                    if (i > 1)
                        funcText.push(' ');
                    funcText.push(parts[i]);
                }
            }
            funcText.push(stmt.suffix);
        }
    }

    var emitSectionText = function(text, funcText) {
        if (text.length <= 0)
            return;
        var nlPrefix = 0;               // Index to first non-newline in prefix.
        var nlSuffix = text.length - 1; // Index to first non-space/tab in suffix.
        while (nlPrefix < text.length && (text.charAt(nlPrefix) == '\n'))
            nlPrefix++;
        while (nlSuffix >= 0 && (text.charAt(nlSuffix) == ' ' || text.charAt(nlSuffix) == '\t'))
            nlSuffix--;
        if (nlSuffix < nlPrefix)
            nlSuffix = nlPrefix;
        if (nlPrefix > 0) {
            funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');
            var s = text.substring(0, nlPrefix).replace('\n', '\\n'); // A macro IE fix from BJessen.
            if (s.charAt(s.length - 1) == '\n')
            	s = s.substring(0, s.length - 1);
            funcText.push(s);
            funcText.push('");');
        }
        var lines = text.substring(nlPrefix, nlSuffix + 1).split('\n');
        for (var i = 0; i < lines.length; i++) {
            emitSectionTextLine(lines[i], funcText);
            if (i < lines.length - 1)
                funcText.push('_OUT.write("\\n");\n');
        }
        if (nlSuffix + 1 < text.length) {
            funcText.push('if (_FLAGS.keepWhitespace == true) _OUT.write("');
            var s = text.substring(nlSuffix + 1).replace('\n', '\\n');
            if (s.charAt(s.length - 1) == '\n')
            	s = s.substring(0, s.length - 1);
            funcText.push(s);
            funcText.push('");');
        }
    }
    
    var emitSectionTextLine = function(line, funcText) {
        var endMarkPrev = '}';
        var endExprPrev = -1;
        while (endExprPrev + endMarkPrev.length < line.length) {
            var begMark = "${", endMark = "}";
            var begExpr = line.indexOf(begMark, endExprPrev + endMarkPrev.length); // In "a${b}c", begExpr == 1
            if (begExpr < 0)
                break;
            if (line.charAt(begExpr + 2) == '%') {
                begMark = "${%";
                endMark = "%}";
            }
            var endExpr = line.indexOf(endMark, begExpr + begMark.length);         // In "a${b}c", endExpr == 4;
            if (endExpr < 0)
                break;
            emitText(line.substring(endExprPrev + endMarkPrev.length, begExpr), funcText);                
            // Example: exprs == 'firstName|default:"John Doe"|capitalize'.split('|')
            var exprArr = line.substring(begExpr + begMark.length, endExpr).replace(/\|\|/g, "#@@#").split('|');
            for (var k in exprArr) {
                if (exprArr[k].replace) // IE 5.x fix from Igor Poteryaev.
                    exprArr[k] = exprArr[k].replace(/#@@#/g, '||');
            }
            funcText.push('_OUT.write(');
            emitExpression(exprArr, exprArr.length - 1, funcText); 
            funcText.push(');');
            endExprPrev = endExpr;
            endMarkPrev = endMark;
        }
        emitText(line.substring(endExprPrev + endMarkPrev.length), funcText); 
    }
    
    var emitText = function(text, funcText) {
        if (text == null ||
            text.length <= 0)
            return;
        //text = text.replace(/\\/g, '\\\\');
        text = text.replace(/[\/]/g, '\\/');
        text = text.replace(/\n/g, '\\n');
        text = text.replace(/"/g,  '\\"');
        funcText.push('_OUT.write("');
        funcText.push(text);
        funcText.push('");');
    }
    
    var emitExpression = function(exprArr, index, funcText) {
        // Ex: foo|a:x|b:y1,y2|c:z1,z2 is emitted as c(b(a(foo,x),y1,y2),z1,z2)
        var expr = exprArr[index]; // Ex: exprArr == [firstName,capitalize,default:"John Doe"]
        if (index <= 0) {          // Ex: expr    == 'default:"John Doe"'
            funcText.push(expr);
            return;
        }
        var parts = expr.split(':');
        funcText.push('_MODIFIERS["');
        funcText.push(parts[0]); // The parts[0] is a modifier function name, like capitalize.
        funcText.push('"](');
        emitExpression(exprArr, index - 1, funcText);
        if (parts.length > 1) {
            funcText.push(',');
            funcText.push(parts[1]);
        }
        funcText.push(')');
    }

    var cleanWhiteSpace = function(result) {
        result = result.replace(/\t/g,   "    ");
        result = result.replace(/\r\n/g, "\n");
        result = result.replace(/\r/g,   "\n");
        result = result.replace(/^(\s*\S*(\s+\S+)*)\s*$/, '$1'); // Right trim by Igor Poteryaev.
        return result;
    }

    var scrubWhiteSpace = function(result) {
        result = result.replace(/^\s+/g,   "");
        result = result.replace(/\s+$/g,   "");
        result = result.replace(/\s+/g,   " ");
        result = result.replace(/^(\s*\S*(\s+\S+)*)\s*$/, '$1'); // Right trim by Igor Poteryaev.
        return result;
    }

    // The DOM helper functions depend on DOM/DHTML, so they only work in a browser.
    // However, these are not considered core to the engine.
    //
    TrimPath.parseDOMTemplate = function(elementId, optDocument, optEtc) {
        if (optDocument == null)
            optDocument = document;
        var element = optDocument.getElementById(elementId);
        var content = element.value;     // Like textarea.value.
        if (content == null)
            content = element.innerHTML; // Like textarea.innerHTML.
        content = content.replace(/&lt;/g, "<").replace(/&gt;/g, ">");
        return TrimPath.parseTemplate(content, elementId, optEtc);
    }

    TrimPath.processDOMTemplate = function(elementId, context, optFlags, optDocument, optEtc) {
        return TrimPath.parseDOMTemplate(elementId, optDocument, optEtc).process(context, optFlags);
    }
}) ();
global.convVar = function(name, value){
	var cc = global.initConst[name];
	if(cc != null){
		return cc[value];
	}else{
		throw "const not found when conv " + name;
	}
}

global.convAnswer = function(name, value){
	var cc = global.initConst[name];
	if(cc != null){
		return cc[value].substr(2);
	}else{
		throw "const not found when conv " + name;
	}
}

global.convVar2 = function(name, info){
	var cc = global.initConst[name];
	if(cc != null){
		return cc[info[name]];
	}else{
		throw "const not found when conv " + name;
	}
}

global.convVarArr = function(name, values){
	var cc = global.initConst[name];
	if(cc != null){
		var ret = "";
		for(var i = 0; i < values.length; ++i){
			if(cc[values[i]])
				ret += cc[values[i]] + "；";
		}
		return ret.length > 0 ? ret.substr(0, ret.length - 1) : ret;
	}else{
		throw "const not found when conv" + name;
	}
}
global.convOnlineState = function(info){
	if(parseInt(info.online) == 1){
		return "<img src='images/online.gif' alt='" + "当前在线" + "' align='absmiddle'><span style='font-size:12px;color:#ff0033'>当前在线</span>";
	}else {
		return "<img src='images/offline.gif' alt='" + info.offStr + "' align='absmiddle'><span style='font-size:12px;color:#666666'>"+info.offStr+"</span>";
	}
}
global.convOnlineStateText = function(info,fontcolor,notonlinecolor){
	if(parseInt(info.online) == 1){
		if(!fontcolor)  fontcolor="#ff0033";
		return "<span style='font-size:12px;color:"+fontcolor+"'>当前在线</span>";
	}else {
		return "<span style='font-size:12px;color:" + (notonlinecolor ? notonlinecolor : "#666666") + "'>"+info.offStr+"</span>";
	}
}

global.convRank = function(rank){
	var base = "";
	var rk = parseInt(rank);
	var lev = rk % 5;
	if(rk != 0 && lev == 0){
		lev = 5;
	}
	var tag;
	switch(Math.ceil(rk / 5)){
		case 1:
			tag = "★";
			break;
		case 2:
			tag = "<img src='images/jf_shell.gif' border='0'>";
			break;
		case 3:
			tag = "<img src='images/jf_diamond.gif' border='0'>";
			break
		default:
			tag = "<img src='images/jf_bad.gif' border='0'>";
			break;
	}
	if (rk == 0) {
		base = tag;
	} else {
		for (var i = 0; i < lev; ++i) {
			base += tag;
		}
	}
	return "<a href=\"javascript:sendMessage(msg_helpjf)\" style='color:#ff0000;text-decoration:none'>" + base + "</a>";
}
global.sendMoon = function(uinfo){
	var showtext = ["陪我玩猜月饼游戏","中秋猜月饼游戏！"];
	return "<A style='TEXT-DECORATION:none;' href='http://idate.163.com/mooncake.html?ruid="+uinfo.id+"' target='_blank'><IMG src='images/cake.jpg' border='0'><SPAN style='cursor:pointer;display:inline-block;font-family:tahoma,verdana;height:20px;vertical-align:top;line-height:20px;margin-left:2px;padding:0 4px;BACKGROUND:#0061ff;COLOR:#ffffff;'>"+showtext[uinfo.sex]+"</SPAN></A>";
}

global.convMyRank = function(rank,credit){
	var base = "";
	var rk = parseInt(rank);
	var lev = rk % 5;
	if(rk != 0 && lev == 0){
		lev = 5;
	}
	var tag;
	switch(Math.ceil(rk / 5)){
		case 1:
			tag = "<img src='images/jf_star.gif' border='0' alt='"+credit+"'>";
			break;
		case 2:
			tag = "<img src='images/jf_shell.gif' border='0' alt='"+credit+"'>";
			break;
		case 3:
			tag = "<img src='images/jf_diamond.gif' border='0' alt='"+credit+"'>";
			break
		default:
			tag = "<img src='images/jf_bad.gif' border='0' alt='"+credit+"'>";
			break;
	}
	if (rk == 0) {
		base = tag;
	} else {
		for (var i = 0; i < lev; ++i) {
			base += tag;
		}
	}
	return "<a href=\"javascript:sendMessage(msg_helpjf)\">" + base + "</a>";
}

global.convVipFee = function(value){
	var cc = global.vip["vipfee"];
	if(cc != null){
		return cc[value];
	}else{
		throw "const not found when conv vipfee";
	}
}
function getCertConst(id){
	return global.cert[id];
}

global.renderOption = function(name, sel){
		var mp = global.initConst[name];
		var str = "";
		if (mp == null) {
			throw name + " option value null";
		} else {
			var tag = sel ? sel : 0;
			for (var i in mp) {
				str += "<option value='" + i + (i == tag ? "' selected>" : "'>")
						+  mp[i] + "</option>\n";
			}
		}
		return str;
}

global.renderOption2 = function(name, info){
		var mp = global.initConst[name];
		var str = "";
		if (mp == null) {
			throw name + " option value null";
		} else {
			var tag = info[name] ? info[name] : 0;
			for (var i in mp) {
				str += "<option value='" + i + (i == tag ? "' selected>" : "'>")
						+  mp[i] + "</option>\n";
			}
		}
		return str;
}

function changeContent(parent){
	var ctc = getElementByNameP(parent, 'contentOption');
	var cstr = getElementByNameP(parent, 'content');
	var mp = global.initConst['contentOption'];
	if(ctc.selectedIndex > 0){
		cstr.value = mp[ctc.options[ctc.selectedIndex].value] + ";";
	}
}


function checked(chk, indx){
	if(chk){
		for(var i = 0; i < chk.length; ++i){
			if(chk[i] == indx){
				return true;
			}
		}
	}
	return false;
}

global.renderCheckBox = function(name, col, chk){
		var mp = global.initConst[name];
		var cname = name;
		if(name.indexOf("speciality")!=-1)
			cname = "speciality";
		var str = "";
		var tdwidth = parseInt(100/col);

		if (mp == null) {
			throw name + " checkbox is null";
		} else {
			var length = 0;
			for (var i in mp) {
				
				if (length % col == 0) {
					str += "<tr>\n";
				}
				++length;
				str += "<td width="+tdwidth+"%><input class=none type=\'checkbox\' name=\'" + cname
						+ "[" + i + "]" + "\' value=\'" + i + "\'" + (checked(chk, i) ? " checked" : " ") + ">"
						+  mp[i] + "</td>\n";
				if (length % col == col ) {
					str += "</tr>\n";
				}
			}

			if (length  % col != col - 1) {
				str += "</tr>\n";
			}

		}
		return str;
}
global.renderRadio2 = function(name, newName, chk){
var mp = global.initConst[name];
	var str = "";

	if (mp == null) {
		throw name + " can't get";
	} else {
		var ch = chk ? chk : -1;
		for (var i in mp) {
			str += "<input type=\"radio\" name=\"" + newName + "\" value=\'"
					+ i + (ch == i ? "\' checked" : "\'") + " >" + mp[i];
		}
	}
	return str;
}

global.renderRadio = function(name, clickFun, chk) {
	var mp = global.initConst[name];
	var str = "";

	if (mp == null) {
		throw name + " can't get";
	} else {
		var ch = chk ? chk : -1;
		for (var i in mp) {
			str += "<input type=\"radio\" name=\"" + name + "\" value=\'"
					+ i + "\'" + (clickFun == null ? "" : "onclick=\'" + 
					clickFun + "(" + i + ")" + "\'") + (ch == i ? " checked" : "") + " >" + mp[i];
		}
	}
	return str;
}

global.renderContactRadio = function(){
	var mp = global.initConst["contactReason"];
	var str = "";

	if (mp == null) {
		throw name + " can't get";
	} else {
		for (var i in mp) {
				str += "<tr><td class='f14'><strong><input type=\"radio\" name=\"topic\" value=\'"
					+ mp[i] + "\'" + ">" + mp[i] + "</strong></td></tr>";
		}
	}
	return str;
}

global.convPosition = function(p, c){
	if(p==-1 || c==-1){
		return "省市不存在";
	}
	if(global.areaConst[p].array.length>1)
		return global.areaConst[p].value + "省" + global.areaConst[p].array[c] + "市";
	else
		return global.areaConst[p].value + "市";
}

global.convPosition2 = function(p, c){
	if(p==-1 || c==-1){
		return "省市不存在";
	}
	if(global.areaConst[p].array.length>1)
		return global.areaConst[p].value + "省<br>" + global.areaConst[p].array[c] + "市";
	else
		return global.areaConst[p].value + "市";
}

global.convProvince = function(p){
	if(p==-1){
		return "省市不存在";
	}
	if(global.areaConst[p].array.length>1)
		return global.areaConst[p].value + "省";
	else
		return global.areaConst[p].value + "市";
}
global.convPositionCity = function(p, c){
	if(p==-1 || c==-1){
		return "省市不存在";
	}
	if(global.areaConst[p].array.length>1)
		return global.areaConst[p].array[c] + "市";
	else
		return global.areaConst[p].value + "市";
}

global.renderProvince = function(sel){
	var ret = "";
	for (var i in global.areaConst) {
		ret += "<option value=" + i + (sel == i ? " selected" : " ") + ">"
						+  global.areaConst[i].value + "</option>\n";
	}
	return ret;
}

global.renderCity = function(pr, c){
	var ret =  "";
	if(pr != -1){
		var arr = global.areaConst[pr].array;
		if(typeof(arr.each)=='function'){
		arr.each(function(value,i) {
			ret += "<option value=" + i + (c == i ? " selected" : " ") + ">"
						+  value + "</option>\n";
		} )
		}else{
		for (var i in arr) {
			ret += "<option value=" + i + (c == i ? " selected" : " ") + ">"
						+  arr[i] + "</option>\n";
		}
		}
	}
	return ret;
}

global.renderEmbracerProvince = function(sel){
	var ret = "";
	for (var i in global.areaConst) {
		ret += "<option value=" + i + (sel == i ? " selected" : " ") + ">"
						+  global.areaConst[i].value + "</option>\n";
	}
	return ret;
}

global.renderYear = function(def, from, to){
	if(def == -1){
		var nd = new Date();
		def = nd.getYear();
	}
	var ret = "";
	for (var i = from; i < to; ++i) {
		ret += "<option value=" + i + (def == i ? " selected" : " ") + ">"
						+  i  + "年</option>\n";
	}
	return ret;
}

global.renderMonth = function(def){
	if(def == -1){
		var nd = new Date();
		def = nd.getMonth() + 1;
	}
	var ret = "";
	for (var i = 1; i < 13; ++i) {
		ret += "<option value=" + i + (def == i ? " selected" : " ") + ">"
						+  i  + "月</option>\n";
	}
	return ret;
}

var startDay = 8;
var endDay = 30;

function calNextDay(inc){
	 var nd = new Date();
	 nd.setUTCDate(nd.getDate() + inc);
	 return nd;
}

global.renderLimitYear = function(){
	var ret = "";
	var st = calNextDay(startDay);
	var ed = calNextDay(endDay);
		
	for (var i = st.getYear(); i <= ed.getYear(); ++i) {
		ret += "<option value=" + (i%parseInt(1900)+1900) + (st.getYear() == i ? " selected" : " ") + ">"
						+  (i%parseInt(1900)+1900)  + "年</option>\n";
	}
	return ret;
}

global.renderLimitMonth = function(){
	var ret = "";
	var nm = getNextDayM(endDay);
	var up = getNextDayM(startDay);
	
	nm = nm < up ? up : nm;
	var ret = "";
	for (var i = up; i <= nm; ++i) {
		ret += "<option value=" + i + (up == i ? " selected" : " ") + ">"
						+  i  + "月</option>\n";
	}
	return ret;
}

var monthDayLimit = [31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31];

function isRunNian(year){
	return (((year % 4 == 0) && (year % 100!=0)) || (year % 400==0));
}

global.renderLimitDay = function(){
	var dt = calNextDay(startDay);
	var dl;
	var nd = calNextDay(endDay);
	var month = nd.getMonth()-1;
	if(month<0) month = 0;
	if(nd.getMonth() > dt.getMonth() || nd.getYear() > dt.getYear()){
		dl = monthDayLimit[month];
		if(dt.getMonth() == 1 && isRunNian(dt.getYear())){
			dl = 29;
		}
	}else{
		dl = nd.getDate();
	}
	
	var ret = "";
	for (var i = dt.getDate(); i <= dl; ++i) {
		ret += "<option value=" + i + (dt.getDate() == i ? " selected" : " ") + ">"
						+  i  + "日</option>\n";
	}
	return ret;
}

function changeLimitYear(yName, mName, dName){
	var slm = document.getElementsByName(mName)[0];
	var sld = document.getElementsByName(dName)[0];
	var sly = document.getElementsByName(yName)[0];
	
	var sely = parseInt(sly.options[sly.selectedIndex].value);

	var now = calNextDay(startDay);
	
	if(sely > now.getYear()){
		changeLimit(sely, 0, yName, mName, dName);
	}else{
		changeLimit(sely, now.getMonth(), yName, mName, dName);
	}
}


function changeLimit(year, /*month - !!!*/month, yName, mName, dName){
	var slm = document.getElementsByName(mName)[0];
	var sld = document.getElementsByName(dName)[0];
	var sly = document.getElementsByName(yName)[0];
	
	var now = calNextDay(startDay);
	
	var dd, du;
	var md, mu;
	
	var next = calNextDay(endDay);
	
	if(year > now.getYear()){
		md = 0;
		mu = next.getMonth();
	}else{
		md = now.getMonth();
		mu = next.getMonth() < now.getMonth() ? 11 : next.getMonth(); 
	}
	
	
	if(now.getMonth() == month){
		du = monthDayLimit[month];
		if(month == 1 && isRunNian(year)){
			du = 29;
		}
		dd = now.getDate();
	}else{
		if(next.getMonth() > month){
			du = monthDayLimit[month];
			if(month == 1 && isRunNian(year)){
				du = 29;
			}
		}else{
			du = next.getDate();
		}
		dd = 1;
	}
	
	var length = 0;
	slm.options.length = 0;
	for(var i = md + 1; i <= mu + 1; ++i){
		slm.options[length] = new Option(i + "月", i, (i - 1)==month, (i - 1)==month);
		++length;	
	}
	length = 0;
	sld.options.length = 0;
	for(var i = dd; i <= du; ++i){
		sld.options[length] = new Option(i + "日", i, length==0, false);
		++length;	
	}
}

function changeLimitMonth(yName, mName, dName){
	var slm = document.getElementsByName(mName)[0];
	var sld = document.getElementsByName(dName)[0];
	var sly = document.getElementsByName(yName)[0];
	var selm = slm.options[slm.selectedIndex].value - 1;
	
	var cy = parseInt(sly.options[sly.selectedIndex].value);
	
	changeLimit(cy, selm, yName, mName, dName);
}


function getNextDayM(n)
{
	 return calNextDay(n).getMonth() + 1;
}

function getNextDayD(n)
{
	 return calNextDay(n).getDate();
}

global.renderDay = function(def){
	if(def == -1){
		var nd = new Date();
		def = nd.getDate();
	}
	var ret = "";
	for (var i = 1; i < 32; ++i) {
		ret += "<option value=" + i + (def == i ? " selected" : " ") + ">"
						+  i  + "日</option>\n";
	}
	return ret;
}
global.nowTime = function(){
	return new Date();
}
global.renderLoop = function(from, to,sel,pre,post){
	var ret = "";
	for (var i = from; i <= to; ++i) {
		ret += "<option value=" +  i  + (sel == i ? " selected" : " ") + ">"
						+  pre + i + post  + "</option>\n";
	}
	return ret;
}
/*
		none,
		wait,
		suc,
		fail,
*/
global.certificate = function(name, UInfo){
	for(var i in global.cert){
		if(UInfo[i] == 2){
			for(var j in global.cert[i]){
				if(global.cert[i][j].value == name){
				  return "<img src='images/set_yes.gif' align='absmiddle'>";
				}
			}
		}
	}
	return "";
}

global.certificateNew = function(name, UInfo){
	if(UInfo[name]==2)
		return "<img src='images/my1_tj.gif' width='72' height='19' align='absmiddle'>";
	else
		return "<img src='images/my1_tj0.gif' width='72' height='19' align='absmiddle'>";
}

global.certificateText = function(name, UInfo){
	for(var i in global.cert){
		if(UInfo[i] == 2){
			for(var j in global.cert[i]){
				if(global.cert[i][j].value == name){
				  return true;
				}
			}
		}
	}
	return false;
}

global.convDateY = function(dateStr){
	return dateStr.split('-')[0];
}

global.convDateM = function(dateStr){
	return dateStr.split('-')[1];
}

global.convDateD = function(dateStr){
	return dateStr.split('-')[2];
}

global.renderCertItem = function(name, type, m, info){
	var ret = "";
	
	if(parseInt(m) == 0){
		if(type == "text"){
			return info[name];
		}else{
		 	return global.convVar2(name, info);
		}
	}
	
	switch(type){
		case "text":
			ret += "<input name='" + name + "' type='text' value='" + info[name] + "'>";
			break;
		case "radio":
			break;
		case "birthday":
			ret += "<input type='hidden' name='birthday' value='" + info.birthday + "'>";
			ret += "<select name='byear' size=1>";
			ret += global.renderYear(global.convDateY(info.birthday), 1930, 1992);
			ret += "</select>"
			ret += "<select name='bmonth' size=1 >";
			ret += global.renderMonth(global.convDateM(info.birthday));
			ret += "</select>";
			ret += "<select name='bday' size=1 >";
			ret += global.renderDay(global.convDateD(info.birthday));
			ret += "</select>";
			break;
		case "option":
            ret += global.renderOption2(name,info);
			if(name=="vehicle"){
				ret=ret.substring(ret.indexOf('\n'));
			}
			ret = "<select name='" + name + "' size=1>"+ret;
            ret += "</select>";
			break;	
		
	}
	return ret;
}

global.limitContent = function(content){
	if(content.length > 100){
		return content.substr(0, 100) + "...";
	}else{
		return content;
	}
}

function checkVehicle(){
	var veh = document.getElementsByName("vehicle")[0];
	if(veh.options[veh.selectedIndex].value==0){
		showElement('carTypeTr', false);
		showElement('carNoTr', false);
	}else{
		showElement('carTypeTr', true);
		showElement('carNoTr', true);
	}
}

global.renderDatingKind = function(dinfo){
	switch(dinfo.kind){
	case 1:
	case 2:
		return "约会";
	case 3:
		return "升级关系请求";
	case 4:
		return "加密友请求";
	}
}
/*function RealityItem(){
	var rItem = document.getElementsByName('satisfaction');
	document.getElementById('safetyTable').style.display = 'block';
}*/

function renderDeadTime(dinfo){
	if(dinfo.kind == 1){
		if(dinfo.deadTime==-1){
			return "[约会已经结束]";
		}else if(dinfo.deadTime==0){
			return "[当天]";
		}else{	
			return "[" + dinfo.deadTime + "天后]";
		}
	}
}

function convVarHidden(name, info){
	return "<input type='hidden' name='"+ name + "' " + "value='" + info[name] + "'>" +
			global.convVar2(name, info);			

}
global.renderLimitHour = function(){
	var ret = "";
	for (var i = 0; i <= 23; i++) {
		var add = ""+i;
		if(i<10) add = "0"+i;
		ret += "<option value="+add+">"+ i+"时</option>\n";
	}
	return ret;
}

global.renderLimitMin = function() {
	var ret = "";
	for (var i = 0; i <= 59; i++) {
		var add = ""+i;
		if(i<10) add = "0"+i;
		ret += "<option value="+add+">"+ i+"分</option>\n";
	}
	return ret;
}

/*************************************************************************

  dw_viewport.js
  version date Nov 2003
  
  This code is from Dynamic Web Coding 
  at http://www.dyn-web.com/
  Copyright 2003 by Sharon Paine 
  See Terms of Use at http://www.dyn-web.com/bus/terms.html
  Permission granted to use this code 
  as long as this entire notice is included.

*************************************************************************/  
  
var viewport = {
  getWinWidth: function () {
    this.width = 0;
    if (window.innerWidth) this.width = window.innerWidth - 18;
    else if (document.documentElement && document.documentElement.clientWidth) 
  		this.width = document.documentElement.clientWidth;
    else if (document.body && document.body.clientWidth) 
  		this.width = document.body.clientWidth;
  },
  
  getWinHeight: function () {
    this.height = 0;
    if (window.innerHeight) this.height = window.innerHeight - 18;
  	else if (document.documentElement && document.documentElement.clientHeight) 
  		this.height = document.documentElement.clientHeight;
  	else if (document.body && document.body.clientHeight) 
  		this.height = document.body.clientHeight;
  },
  
  getScrollX: function () {
    this.scrollX = 0;
  	if (typeof window.pageXOffset == "number") this.scrollX = window.pageXOffset;
  	else if (document.documentElement && document.documentElement.scrollLeft)
  		this.scrollX = document.documentElement.scrollLeft;
  	else if (document.body && document.body.scrollLeft) 
  		this.scrollX = document.body.scrollLeft; 
  	else if (window.scrollX) this.scrollX = window.scrollX;
  },
  
  getScrollY: function () {
    this.scrollY = 0;    
    if (typeof window.pageYOffset == "number") this.scrollY = window.pageYOffset;
    else if (document.documentElement && document.documentElement.scrollTop)
  		this.scrollY = document.documentElement.scrollTop;
  	else if (document.body && document.body.scrollTop) 
  		this.scrollY = document.body.scrollTop; 
  	else if (window.scrollY) this.scrollY = window.scrollY;
  },
  
  getAll: function () {
    this.getWinWidth(); this.getWinHeight();
    this.getScrollX();  this.getScrollY();
  }
  
}

function showElement(id, bshow, type){
	var tag = bshow ? (type?type:'inline') : 'none';
	var maintable = document.getElementById(id);
	
	if(maintable){
		maintable.style.display = tag;
	}else{
		//alert('the show element ' + id + " not exit");
	}
}

var layerCount = 1;
var layerStask = [];
var openCount=0;
var showCount = 0;

function showMask(tag){
	if(tag){
		resizeMask();
		showCount++;		
	}else{
		if(--showCount <= 0){
			showElement("mask", false);
		}
		
		if(showCount < 0){
			showCount=0;
		}
	}
}


function resizeMask(){
		var dMask = document.getElementById("mask");
		dMask.style.width = document.body.scrollWidth;
		dMask.style.height = document.body.scrollHeight+22;
		dMask.style.display = "";
}

function showResult(stask)
{
	global.message = stask.pop();
    global.message.content = globalUnemit(global.message.content);
	viewport.getScrollY();
	global.scrollTop = viewport.scrollY;
	global.scrollLeft = document.body.scrollLeft;
	var resultpoint = document.getElementById("resultpoint");
	resultpoint.outerHTML = global.gTemplates.get("result").process(global);
	
	var rm = document.getElementById("resultMessage");
	var rmwidth = document.getElementById("resultMessage").clientWidth;
	var rmheight = document.getElementById("resultMessage").clientHeight;
	rm.style.display = "none";
//	var rmheight = document.getElementById("resultMessageA").clientHeight + document.getElementById("resultMessageB").clientHeight + document.getElementById("resultMessageC").clientHeight;
	var t = (document.body.scrollTop + parseInt((document.body.clientHeight - rmheight) / 2)) + "px";
	var l = parseInt((document.body.clientWidth - rmwidth) / 2) + "px";
//	alert(rmwidth+" / "+rmheight);
	with (rm.style) {
		top = t;
		left = l;
		display = "";
	}
	var rmask = document.getElementById("resultMessageMask");
	if (rmask) {
		with (rmask.style) {
			top = t;
			left = l;
			height = rmheight + "px";
			display = "";
//			alert(top+" / "+left+" / "+height+" / "+width);
		}
	}
	
	showMask(true);
}

function showResultNoMask(stask)
{
	global.message = stask.pop();
	global.scrollTop = document.body.scrollTop;
	global.scrollLeft = document.body.scrollLeft;
	var resultpoint = document.getElementById("resultpoint");
	resultpoint.outerHTML = global.gTemplates.get("result").process(global);	
}
function showRWrap(t, c, tg){
	var obj = [{title:t, content:c, tag:tg}];
	showResult(obj);
}
function closeResult(){
	var mss = document.getElementById("resultMessage");
	mss.outerHTML = "<div id=\"resultpoint\"></div>";
	var rmask = document.getElementById("resultMessageMask");
	if(rmask!=null)  rmask.style.display = "none";
	showMask(false);
}


function showMiddleLayer(layerId){
	var point = document.getElementById("middlePoint");
	var tmp = global.gTemplates.get(layerId);
	if (tmp) {
		var mid = document.getElementById("middleLayer");
		mid.style.top = document.body.scrollTop;
		mid.style.display = "";
		point.innerHTML = tmp.process(global);
		showMask(true);
	}
}
function showMiddleLayerNoMask(layerId){
	var mid = document.getElementById("middleLayer");
	mid.style.top = document.body.scrollTop;
	mid.style.display = "";
	
	var point = document.getElementById("middlePoint");
	var tmp = global.gTemplates.get(layerId);
	point.innerHTML = tmp.process(global);	
}

function showMiddleLayerAlone(layerId){
	var mid = document.getElementById("middleLayer");
	//mid.style.top = document.body.scrollTop;
	mid.style.display = "";
	
	var point = document.getElementById("middlePoint");
	var tmp = global.gTemplates.get(layerId);
	point.innerHTML = tmp.process(global);
	showMask(true);
}

function closeMiddleLayer(){
	var mid = document.getElementById("middleLayer");
	mid.style.display = "none";
	
	showMask(false);
	if (global.doAfterLayerClose) {
		eval(global.doAfterLayerClose);
		global.doAfterLayerClose = "";
	}
}

function createLayerDiv(){
	var nd = document.createElement('div');
	var lp = document.getElementById('layerpoint');
	//xxx
	nd.style.cssText = lp.style.cssText;
	nd.style.display = "";
	nd.id = 'layerDiv' + layerCount++;
	var last = layerStask.length > 0? layerStask[layerStask.length - 1] : lp;
	last.style.display = "none";
	lp.parentNode.insertBefore(nd, last);
	layerStask.push(nd);
	return nd;
}
/*
function dbgstep(name){
	var ddd = document.getElementById('dbg');
	ddd.innerHTML = name;
}
*/
function closeLayer(f){
	if(layerStask.length == 1){
		playLoveSong("");
		layerStask.pop();
		showMask(false);
		//var lp = document.getElementById("layerpoint");
		//lp.innerHTML = "";
		showElement('layertable', false);
		showElement('mainpoint', true);
		resetFoot();
		if (!f && global.doAfterLayerClose) {
			eval(global.doAfterLayerClose);
			global.doAfterLayerClose = "";
		}
	}else{
		var top = layerStask.pop();
		var lp = document.getElementById("layerpoint");
		lp.innerHTML = top;
	}
}

function openWindowWrap(callProc){
	//var cd = createLayerDiv();
	var lp = document.getElementById("layerpoint");
	layerStask.push(lp.innerHTML);
	lp.innerHTML = callProc();
	if(layerStask.length == 1){
		showElement('mainpoint', false);
		var mt = document.getElementById('maintable');
		var lt = document.getElementById('layertable');
		lt.style.left = mt.offsetLeft;
		showElement('layertable', true);
		setFoot();
		showMask(true);
		if(browserHeight()>800)  setIframe();
	}else{
		setFoot();
		resizeMask();
	}
	//var cl = document.getElementById('closeHandle');
	//cl.focus();
}
function openWindowWrapNoMask(callProc){
	//var cd = createLayerDiv();
	var lp = document.getElementById("layerpoint");
	layerStask.push(lp.innerHTML);
	lp.innerHTML = callProc();
	if(layerStask.length == 1){
		showElement('mainpoint', false);
		var mt = document.getElementById('maintable');
		var lt = document.getElementById('layertable');
		lt.style.left = mt.offsetLeft;
		showElement('layertable', true);
		setFoot();
		//showMask(true);
	}else{
		setFoot();
		//resizeMask();
	}
	//var cl = document.getElementById('closeHandle');
	//cl.focus();
}

function setFoot(){
	var ft = document.getElementById('foot');
	var lt = document.getElementById('layertable');
	var mt = document.getElementById('maintable');
	ft.style.position="absolute";
	ft.style.left = lt.offsetLeft;
	
	var mb = mt.offsetLeft + mt.offsetHeight;
	var lb = lt.offsetLeft + lt.offsetHeight;
	
	ft.style.top = mb > lb ? mb : lb;
}

function resetFoot(){
	var ft = document.getElementById('foot');
	ft.style.position="relative";
	ft.style.top = "";
	ft.style.left = "";

}
////////////////////////////////////////////////////////////////////////////////
//						amaininit.js初始化									  //
////////////////////////////////////////////////////////////////////////////////

global.defaultIndex = "msg_index";
global.indexParam = null;
global.defaultStyle = "dlove.css";
var indexCookieName = "defaultIndex";
var styleCookieName = "defaultStyle";
var indexParamName = "indexParam";
var timeStamp = 0;
var interval = 1000 * 60 * 4;

global.sFilter = {province:0,city:0,age:1,ageBegin:18,ageEnd:25,sex:0,marriage:-1,aim:-1,height:-1,heightBegin:-1,heightEnd:-1,degree:-1,income:-1,industry:-1,smoke:-1,drink:-1,house:-1};

// msg define
var msg_index = 1;
var msg_pubdating = 25;

var msg_editinfo = 50;

var msg_commenddating = 60;

var msg_setcenter_b = 100;

var msg_dating_b = 200;

var msg_friend_b = 400;

var msg_photo_b = 600;

var msg_edit_b = 700;

var msg_help_b = 800;

var msg_uinfo_b = 900;

var msg_calinder = 1000;

var msg_search=1100;

var msg_alonepage = 1200;

var initLoadCompleted = false;
var mainjsLoaded = false;
var initLoadAfterMainjsCounter = 0;
var litemainLoaded = false;

function checkInit()
{
	if(bLoadTemplate && bLoadGlobalInfo && bLoadConst){
		var df = window[global.defaultIndex];
		eval("paramx="+global.indexParam);
		if(df == null || mc.queue[df]==null){
			setCookie(myInfo.info.id + indexCookieName, "msg_index", "/", 10000);
			global.idxLoginMsg={};
			if(paramx!=null)  global.idxLoginMsg=paramx;
			global.idxLoginMsg.MSG=global.defaultIndex;
		}else{
			if(global.indexParam==null) {
				sendMessage(df);
			}
			else{
				if (df == 3) {
					var x = {};
					x.MSG = msg_showuinfo;
					x.id = paramx.id;
					processMessage(x);
//					sendMessage(msg_showuinfo,paramx);
				}
				paramx.MSG = df;
				processMessage(paramx);
//				sendMessage(df,paramx);
			}
			if(df!=msg_index)  hideLoading();
		}
		loadTips();

		if(!litemainLoaded && global.defaultIndex!="msg_retourl") {
			var atall = new AjaxWrap(loadAllTemplate);
			atall.openTemplate("litetemplates.htm", true);
			atall = new AjaxWrap(loadAllTemplate);
	        atall.openTemplate("maintemplates.htm", true);
		}
	}
}

function checkInit2()
{
	if(bLoadTemplate && bLoadGlobalInfo && bLoadConst){
		var df = window[global.defaultIndex];
		if(df == null){
			setCookie(myInfo.info.id + indexCookieName, "msg_index", "/", 10000);
			df = global.initmsg;
		}
		eval("paramx="+global.ztparam);
		sendMessage(global.initmsg,paramx);
		if(global.defaultIndex!='msg_index')  sendMessage(eval(global.defaultIndex));
		hideLoading();
	}
}

function initLoad(){
	var at = new AjaxWrap(loadTemplate);
	var ac = new AjaxWrap(loadConst);
	var ai = new AjaxWrap(loadMyInfo);

	at.openTemplate("indextemplate.htm", true);
	ai.openText("getmyinfo.do", true);
	ac.getXML("const.xml", true);
}

function initLoadAlone(inittemplate,initmsg,param){
    var at = new AjaxWrap(loadTemplate2);
	var ac = new AjaxWrap(loadConst2);
	var ai = new AjaxWrap(loadMyInfo2);
	global.initmsg = initmsg;
	global.ztparam = param;
	at.openTemplate(inittemplate, true);
	ai.openText("getalonemyinfo.do", true);
	ac.getXML("const.xml", true);
}
function initLoadTopic(tpid){
    var at = new AjaxWrap(loadTemplate2);
	var ac = new AjaxWrap(loadConst2);
	var ai = new AjaxWrap(loadMyInfo2);
	global.initmsg = msg_getargu;
	global.ztparam = "{arguId:"+tpid+"}";
	at.openTemplate("maintopic.htm", true);
	ai.openText("getalonemyinfo.do", true);
	ac.getXML("const.xml", true);
}
function initLoadjedate() {
	return initLoadAlone('edatejointp.htm',msg_joinedate);
}
function loadMyInfo2(stask) {
	myInfo.changeAll(stask.pop());
	bLoadGlobalInfo = true;
	loadIndex();
	checkInit2();
}

function loadMyInfo(stask)
{
	myInfo.changeAll(stask.pop());
	loadIndex();
	if(global.defaultIndex!="msg_index" && global.defaultIndex!="msg_retourl"){
		litemainLoaded = true;
		var atall = new AjaxWrap(loadAllTemplate);
		atall.openTemplate("litetemplates.htm", true);
		atall = new AjaxWrap(loadAllTemplate);
		atall.openTemplate("maintemplates.htm", true);
	}else{
		bLoadGlobalInfo = true;
	}
	loadStyle();
	checkInit();
	initLoadCompleted = true;
	initLoadAfterMainjs();
}


function loadIndex(){
	var di = getCookie(myInfo.info.id + indexCookieName);
	if(di != ""){
		global.defaultIndex = di;
		setCookie(myInfo.info.id + indexCookieName, "msg_index", "/", 10000);

	}
	var reparam = getCookie(myInfo.info.id + indexParamName);
	if(reparam!=""&&reparam!=";") {
		global.indexParam = reparam;
	}
}

function setStyle(st){
	var cssLink = document.getElementById("csslink");
	if(cssLink){
		cssLink.href = st;
	}

	if(!window.frames["mframe"])  {window.setTimeout("setStyle()", 500);return;}
    var idoc = window.frames["mframe"].document;
	var cl = idoc.getElementById("csslinkt");
	if(cl){
		cl.href = st;
	}
	global.defaultStyle = st;
}

function loadStyle(){
	var ds = getCookie(global.gUInfo.id + styleCookieName);
	if(ds != ""){
		global.defaultStyle= ds;
	}
	setStyle(global.defaultStyle);
}

function tipsCallBack(stask){
	if(stask)  global.tips = stask.pop();
	var subtitle = document.getElementById("subtitlepoint");
	if(!subtitle)  {window.setTimeout("tipsCallBack()", 1000);return;}
	var ret = global.gTemplates.get("tips").process(global);
	subtitle.innerHTML = ret;
}


var loadTipsInt =0 ;
function loadTips(){
	var at = new AjaxWrap(tipsCallBack);
	at.openText("gettips.do", true);
	loadTipsInt=window.setTimeout("loadTips()", interval);
}

function unloadConfirm()
{
	if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey){
		window.event.returnValue = "关闭提示：您正在关闭佳人有约，确定离开？";
	}
}

var transparent50Flag = false;

function transparentLoaded() {
	var dMask = document.getElementById("mask");
	if (transparent50Flag) {
		dMask.contentWindow.document.body.className = "bian50";
	}
	dMask.style.height = 1000;
}

function initLoadAfterMainjs(){
	if (mainjsLoaded && initLoadCompleted && initLoadAfterMainjsCounter == 0) {
		initLoadAfterMainjsCounter++;
		var hisobj = {};
		if (global.indexParam != null) eval("hisobj = " + global.indexParam);
		hisobj.MSG = eval(global.defaultIndex);
		writeHistory(hisobj);	//使用到main.js中的函数,所以放到最后加载
		//loadChatreqTips();
		if(getCookie(myInfo.info.id + indexCookieName)!="msg_closetip")  showMask(false);
		showElement("messageZone",false);
		var dMask = document.getElementById("mask");	//复原mask本来的style
		if (dMask) {
			//dMask.src="transparent.htm";	//会导致浏览器历史多出一条记录
			try {
				dMask.contentWindow.document.body.className = "bian50";
			} catch (ex) {}
			transparent50Flag = true;
			dMask.className = "bian50";
		}
		var slt = true;
		if (global.idxLoginMsg) {
			global.idxLoginMsg.MSG = eval(global.idxLoginMsg.MSG);
			switch (global.idxLoginMsg.MSG){
				case msg_qiubo_cp:
				case msg_showuserandsendgift:
				case msg_showComplainLayer:
					var x = {};
					x.MSG = msg_showuinfo;
					x.id = global.idxLoginMsg.id;
					processMessage(x);
					global.doAfterLayerClose = "showLoginTips();";
					slt = false;
					break;
				case msg_closetip:
					global.doAfterLayerClose = "showLoginTips();";
					slt = false;
					break;
			}
			processMessage(global.idxLoginMsg);
			hideLoading();
            showElement('divMenu',false);
	    }
	    if (slt) showLoginTips();
	}
}

var LOGINTIPS_REG2 = "personality|speciality|loveViewpoint|marriageViewpoint|hobby|favorSport|favorDish|favorPlace".split("|");

function showLoginTips() {
	var li = parseInt(getCookie("login_interval"));
	setCookie("login_interval","", "/", 10000);
	if (!isNaN(li) && li >= 7) {
		global.loginTips = {};
		var flag = true;
		global.loginTips.noHobby = true;
		for (var i = 0; i < LOGINTIPS_REG2.length; i++) {
			if (global.gUInfo[LOGINTIPS_REG2[i]].length != 0) {
				global.loginTips.noHobby = flag = false;
			}
		}
		if (global.gUInfo["intro"].length == 0) {
			global.loginTips.noIntro = flag = true;
		}
		if (global.gUInfo["hasPortrait"] == "0") {
			global.loginTips.noPortrait = flag = true;
		}
		if (flag) {
			showMiddleLayer("completeuserinfo");
		}
	}
	
	var vipreg = getCookie("vipreg");
	if (vipreg=='1') {
		setCookie("vipreg","0", "/", 10000);
		showMiddleLayer("vipregsuccess");
	}
	
}

var LOVE_SONG_PLAYER = null;

function initLoveSongPlayer() {
	LOVE_SONG_PLAYER = document.getElementById("LoveSongPlayer");
}
////////////////////////////////////////////////////////////////////////////////
//						edit.js初始化	 myInfo相关操作,getmyinfo的callback	  //
////////////////////////////////////////////////////////////////////////////////
function InfoView(){
	this.onrefresh = function(infoes){
		global.gUInfo = infoes;
	}

	this.onchange = function(item){}

	this.ondelete = function(item){}
}

var myInfo = new InfoData();
myInfo.register(new InfoView());
function ageselReg3(gUinfo) {

	var ageavg = parseInt( (parseInt(gUinfo.embracerAgeBegin) + parseInt(gUinfo.embracerAgeEnd)) /2);
	var agesel = 1;
	if(ageavg >= 18 && ageavg <=25 )
		agesel = 1;

	else if(ageavg >= 26 && ageavg <=35 )
		agesel = 2;

	else if(ageavg >= 36 && ageavg <=45 )
		agesel = 3;

	else if(ageavg >= 46  )
		agesel = 4;
    return agesel;
}


////////////////////////////////////////////////////////////////////////////////
//						misc.js初始化	 cPersons推荐用户、约会操作			  //
////////////////////////////////////////////////////////////////////////////////
var commendPerson = new ArrayInfoData(CmpCommendPersion);
function CmpCommendPersion(left, right){
	return left.id == right.id;
}
global.cPersons = null;
function cpView(){
	this.onrefresh = function(infoes){
		global['cPersons'] = infoes;
		hideLoading();
		procPoint('indexPage', 'mainpoint', global);
	}
}
commendPerson.register(new cpView());
global.idxdating=null;
var idxDating = new ArrayInfoData();
function idxDatingView() {
	this.onrefresh = function(infoes){
		global['idxdating'] = infoes;
	}
}
idxDating.register(new idxDatingView);


addMsg(msg_index, [procIndex]);

function procIndex(msg){
	initSFilter();
	if(global.cPersons)
		procPoint('indexPage', 'mainpoint', global);
	checkNavigate('mm_index');
	openLayerCall("getcommendperson.do");
	global.idxuserType = global.gUInfo.vipBalance >= 0 ? 5 : 1;
}

function initSFilter() {
	var sfAge = getMyCookieValue("searchperson", "age");
	var sfAgeBegin = getMyCookieValue("searchperson", "ageBegin");
	var sfAgeEnd = getMyCookieValue("searchperson", "ageEnd");
	var sfSex = getMyCookieValue("searchperson", "sex");
	var sfProvince = getMyCookieValue("searchperson", "province");
	var sfCity = getMyCookieValue("searchperson", "city");
	var sfMarriage = getMyCookieValue("searchperson", "marriage");
	var sfAim = getMyCookieValue("searchperson", "aim");
	var sfHeight = getMyCookieValue("searchperson", "height");
	var sfHeightBegin = getMyCookieValue("searchperson", "heightBegin");
	var sfHeightEnd = getMyCookieValue("searchperson", "heightEnd");
	var sfDegree = getMyCookieValue("searchperson", "degree");
	var sfIncome = getMyCookieValue("searchperson", "income");
	var sfIndustry = getMyCookieValue("searchperson", "industry");
	var sfSmoke = getMyCookieValue("searchperson", "smoke");
	var sfDrink = getMyCookieValue("searchperson", "drink");
	var sfHouse = getMyCookieValue("searchperson", "house");
	var sfVehicle = getMyCookieValue("searchperson", "vehicle");
	var sfHasCert = getMyCookieValue("searchperson", "hasCert");
	global.sFilter.age = sfAge ? sfAge: ageselReg3(global.gUInfo);
	global.sFilter.ageBegin = sfAgeBegin ? sfAgeBegin : global.gUInfo.embracerAgeBegin;
	global.sFilter.ageEnd = sfAgeEnd ? sfAgeEnd : global.gUInfo.embracerAgeEnd;
	global.sFilter.sex = sfSex ? sfSex : global.gUInfo.embracerSex;
	global.sFilter.province = sfProvince ? sfProvince : global.gUInfo.embracerProvince;
	global.sFilter.city = sfCity ? sfCity : global.gUInfo.embracerCity;
	global.sFilter.marriage = sfMarriage ? sfMarriage : global.gUInfo.embracerMarriage;
	global.sFilter.aim = sfAim ? sfAim : global.gUInfo.embracerAim;
	if (sfHeight) global.sFilter.height = sfHeight;
	if (sfHeightBegin) global.sFilter.heightBegin = sfHeightBegin;
	if (sfHeightEnd) global.sFilter.heightEnd = sfHeightEnd;
	if (sfDegree) global.sFilter.degree = sfDegree;
	if (sfIncome) global.sFilter.income = sfIncome;
	if (sfIndustry) global.sFilter.industry = sfIndustry;
	if (sfSmoke) global.sFilter.smoke = sfSmoke;
	if (sfDrink) global.sFilter.drink = sfDrink;
	if (sfHouse) global.sFilter.house = sfHouse;
	if (sfVehicle) global.sFilter.vehicle = sfVehicle;
	if (sfHasCert) global.sFilter.hasCert = sfHasCert;
}

////////////////////////////////////////////////////////////////////////////////
//						search.js初始化	 首页右边搜索栏的常量	  			  	  //
////////////////////////////////////////////////////////////////////////////////
var scsearch = {};
for(i=0;i<13;i++) {
	scsearch[i] = {};
	scsearch[i].type = i;
}
scsearch[1].title = "白领小资";
scsearch[2].title = "苗条美女";
scsearch[3].title = "单身富姐";
scsearch[4].title = "深闺待嫁";
scsearch[5].title = "知识青年";
scsearch[6].title = "晚婚女士";
scsearch[7].title = "职业经理";
scsearch[8].title = "魁梧猛男";
scsearch[9].title = "有房有车";
scsearch[10].title = "未娶好男人";
scsearch[11].title = "知识青年";
scsearch[12].title = "再续前缘";
function renderScsearch(start,end)
{
	if(global.gUInfo.sex == 0) {
		start += 6;
		end +=6;
	}
	var ret = "";
	for(i=start;i<=end;i++){
		ret += "·<a href='javascript:sendMessage(msg_scsearch,{type:"+scsearch[i].type+"})' style='color:#3782BB'>"+scsearch[i].title+"</a><br>"
	}
	return ret;
}
function renderIdxuserPage(pb) {
	var current = parseInt(pb.current);
	var per = parseInt(pb.per);
	var total = parseInt(pb.total);
	var ret = "";
	if(current>1)
		ret = ret+"<a href=javascript:sendMessage(msg_idxuser,{type:"+global.idxuserType+",page:"+(current-1)+"})>上一页</a>";
	if(current<total)
		ret = ret+"&nbsp;&nbsp;<a href=javascript:sendMessage(msg_idxuser,{type:"+global.idxuserType+",page:"+(current+1)+"})>下一页</a>";
	return ret;
}
function setIdxuserPage(stask)
{
        global.idxuspb = stask.pop();
}
function change_area2_fittable(){
	var province = document.getElementsByName('province')[0].options[document.getElementsByName('province')[0].selectedIndex];
	var provinceExpandTable = "|6|9|23|24|30|";
	var provinceWithoutLeadingSpace = "|24|30|";
	var pls = document.getElementsByName("provinceLeadingSpace");
	if (provinceExpandTable.indexOf("|" + province.value + "|") >= 0) {
		document.getElementById("idxussearch").style.width='100%';
		if (provinceExpandTable.indexOf("|" + province.value + "|") >= 0) {
			pls[0].style.display="none";
			pls[1].style.display="none";
		}
	} else {
		document.getElementById("idxussearch").style.width='92%';
		pls[0].style.display = "";
		pls[1].style.display = "";
	}
}
var IDX_SEARCH_TIPS=[
"",
"以下是根据您的<A href='javascript:sendMessage(msg_reg3)'>约会对象条件</A>推荐的会员",
"",
"以下是为约会做了充足的准备，成功率会较高的会员",
"以下是资料页面被点击次数最多的会员",
"<A href=http://idate.163.com/vipreg/about.html target=_blank>如何获得更高人气？</A>"
]
function genIdxSearchTips(type){
	var idxtipsflag = getCookie("idate_idxtips");
	if(idxtipsflag!='' && (idxtipsflag&(1<<type))>0){
		if(type==1 && global.tipsmask!=1 && (idxtipsflag&(1<<5))==0 && global.gUInfo.vipBalance<0)  type=5;
		else return '';
	}
	return IDX_SEARCH_TIPS[type];
}
function closeIdxSearchTips(type){
	var idxtipsflag = getCookie("idate_idxtips");
	if(idxtipsflag=='')  idxtipsflag=0; else idxtipsflag=parseInt(idxtipsflag);
	if(type==1){
		if((idxtipsflag&(1<<1))>0)  type=5;
		global.tipsmask=1;
	}
	idxtipsflag|=1<<type;
	setCookie("idate_idxtips",idxtipsflag, "/", 10000);
	showElement('idxtable_tips', false);
}
function getImageTail(id,picurl){
	if(id==null || id!=global.gUInfo.id || (picurl&&picurl.indexOf("eye_")>0) )  return '';
	var Stamp = new Date(); var h = parseInt(Stamp.getHours()); var m = parseInt(Stamp.getMinutes()); var s = parseInt(Stamp.getSeconds());
	if(h<10) h="0"+h;if(m<10) m="0"+m; if(s<10) s="0"+s;
	var datestr = "?t="+h+m;
	return datestr;
}
