if (typeof g_uname_minlength == 'undefined'){
	var g_uname_minlength = 3;
	var g_uname_maxlength = 15;
}else{
	g_uname_minlength = g_uname_minlength ||3;
	g_uname_maxlength = g_uname_maxlength ||15;
}

function getHDUrl(url){
	return g_seo_prefix + url + g_seo_suffix;
}

function strlen(str){
 var len=0;
 for(var i=0;i<str.length;i++){
 	if(str.charCodeAt(i)>127){
 		len++;
 	}
 	len++;
 }
 return len;
}
 
function getAction(url){
	var auth, re;
	re = /[a-z]+-[a-z]+/;
	auth = url.match(re);
	if (auth){
		auth = auth[0];
	} else {
		auth = '';
	}
	
	return auth;
}

function doLogin(E){
	var auth;
	if (E){
		g_forward = E.href;
	} else {
		g_forward = '';
	}
	
	if (g_regulars && g_forward){
		auth = getAction(g_forward);
		if (g_regulars.indexOf(auth) != -1){
			return true;
		}
	}
	
	if (g_isLogin === false){
		if(typeof g_api_url != 'undefined' && g_api_url){
			window.location.href=api_url;
		}
		if ($.dialog.exist("login")){
			changeverifycode();
			$.dialog.box('login', Lang.Login, 'url:'+ getHDUrl('user-boxlogin'));
		}else{
			$.dialog.box('login', Lang.Login, 'url:'+ getHDUrl('user-boxlogin'), '', function(){
				changeverifycode();
			});
		}
		
		return false;
	}else {
		return true;
	}
}

var Message = {
	sendto: '',
	box : function(username){
		this.sendto = username;
		if (doLogin()){
			var html = '<table border="0" width="400" class="send_massage"><tr><td width="60" >'+Lang.Subject+'</td>'
			+'<td><input id="messageSubject" type="text" class="inp_txt" maxlength="35"/></td></tr><tr><td>'+Lang.Content+'</td>'
			+'<td><textarea id="messageContent" cols="47" rows="6" class="area" style="width:312px"></textarea><br />'+Lang.TipMessageLength+'</td></tr>'
			+'<tr><td></td><td height="40"><input id="messageSubmit" onclick="Message.send()" type="submit" value="'+Lang.Submit+'" />'
			+'&nbsp;&nbsp;<span id="messageTip"></span></td></tr></table>';
			
			$.dialog.box('login', Lang.sendMessage + Lang.To + ' ' +username, html);
			
			$("#messageSubject").val('');
			$("#messageContent").val('');
			$("#messageSubject").focus();
			$("#messageSubmit").attr('disabled', false).val(Lang.Submit);
		}
		return false;
	},
	
	send: function(){
		var params = {'submit':'ajax', 'checkbox':0, 'sendto':this.sendto};
		params.subject = $("#messageSubject").val();
		params.content = $("#messageContent").val();
		
		params.subject = $.trim(params.subject);
		params.content = $.trim(params.content);		
		
		params.content = params.content.substr(0,300);
		
		if (params.subject == ''){
			$("#messageSubject").focus();
			$("#messageTip").css('color','red').html(Lang.TipMessageSubjectIsNull);
			return false;
		}
		
		if (params.content == ''){
			$("#messageContent").focus();
			$("#messageTip").css('color','red').html(Lang.TipMessageContentIsNull);
			return false;
		}
		$("#messageSubmit").attr('disabled', true).val(Lang.Submiting);

		$.post(getHDUrl("pms-sendmessage"), params, function(data, status){
			$("#messageSubmit").attr('disabled', false).val(Lang.Submit);
			if ( status == 'success'){
				if (data == 'OK'){
					//send success
					alert(Lang.TipMessageSendOk);
					$("#messageTip").html('');
					$.dialog.close('login');
				} else {
					//send false
					alert(Lang.TipMessageSendError);
				}
			} else {
				alert(Lang.TipMessageSendError);
			}
		});
	}
	
	
}

var boxLogin = {
	Err: null,
	Form: null,
	
	init: function(){
		this.Err = $('#box-login-error');
		this.Form = $("form[name='box-login']");
	},
	
	checkUserName: function(){
		var err = $('#box-login-error').css('color','#FF0000');
		var username = $.trim($("#box-login-username").val());
		if (strlen(username) < 1){//g_uname_minlength
			//Lang.TipUserName = Lang.TipUserName.replace('3',g_uname_minlength).replace('15',g_uname_maxlength);
			err.html(Lang.TipUserNameNull);
			return false;
		} else {
			var params = {username: username};
			$.post(getHDUrl("user-checkusername"), params, function(data, status){
				if ( status == 'success'){
					var isOK = data.lastChild.firstChild.nodeValue;
					if (isOK == 'OK'){//not exist
						err.html(Lang.TipUserNotExist);
					} else {
						err.html("");
					}
				} else {
					//net link error
				}
			});
		}
	},
	
	checkPsssword: function(){
		var err = $('#box-login-error').css('color','#FF0000');
		var pwd = $("#box-login-password").val();
		
		if (pwd.length == 0){
			err.html(Lang.TipPassword);
			return false;
		} else {
			err.html("");
		}
	},
	
	checkCode:function(){
		var err = $('#box-login-error').css('color','#FF0000');
		var code = $("#box-login-code").val();
		if (code.length < 4){
			err.html(Lang.TipCode);
			return false;
		} else {
			var params = {code: code};
			$.post(getHDUrl("user-checkcode"), params, function(data, status){
				if ( status == 'success'){
					var isOK = data.lastChild.firstChild.nodeValue;
					if (isOK == 'OK'){
						err.html("");
					} else {
						err.html(Lang.TipCode);
					}
				} else {
					//net link error
				}
			});
		}
	},
	
	checkAdmin: function(){
		$.get(getHDUrl("user-boxlogin")+"-"+Math.random(), function(data, status){
			if(status == 'success'){
				var data = $.trim(data), ul = $("ul#login");
				data = data.split(',');
				if(data[0] == 'admin'){
					 ul.find("li[name=admin]").show();
				}
				ul.find("a[href$=user-space]").attr('href', 'index.php?user-space-'+data[2]);
				//$("head").find("link[href$=hdwiki.css]").attr("href","style/"+data[1]+"/hdwiki.css");
				//$("head").find("link[href$=hdwiki.css]").remove();
				//$("head").append('<link href="style/'+data[1]+'/hdwiki.css" rel="stylesheet" type="text/css" media="all"/>');
			}
		});
	},
	
	go: function(){
		if (g_forward){
			location.href =g_forward;
		} else {
			location.reload();
		}
	},
	
	ok: function(username){
		var url = location.href;
		var re = /attachment|category|comment|doc|edition|list|reference|search|synonym|user/i;
		var ul = $("ul#login");
		var login = ul.find("li[name=login]"), register = ul.find("li[name=register]");
		
		if (login.size() == 0){
			login = ul.find("li:contains:('"+Lang.Login+"')");
		}
		if (register.size() == 0){
			register = ul.find("li:contains:('"+Lang.Register+"')");
		}
		
		if (g_forward || re.test(url) || ul.size() == 0){
			setTimeout(function(){
				boxLogin.go();
			}, 3000);
			return;
		}
		
		login.hide();
		register.hide();
		
		var html= '<li class="bor_no pad10">'+Lang.Wellcome+'<a href="index.php?user-space">'+username+'</a></li>'
				+'<li><a href="index.php?pms" id="header-pms">'+Lang.Mypms+'</a></li>'
				+'<li><a  href="index.php?user-profile">'+Lang.Profile+'</a></li>'
				+'<li name="admin" style="display:none"><a href="index.php?admin_main">'+Lang.SystemManage+'</a></li>'
				+'<li><a href="index.php?user-logout" >'+Lang.Logout+'</a></li>';
		ul.find("li:last").before(html);
		$.dialog.close('login');
		g_isLogin = true;
		this.checkAdmin();
	},
	
	check: function(){
		var err = $('#box-login-error').css('color','#FF0000');
		var username = $("#box-login-username").val();
		var password = $("#box-login-password").val();
		var code = $("#box-login-code");
		if (code.length > 0) code = code.val();
		else code = '****';
		
		//if (strlen(username) < g_uname_minlength){err.html(Lang.TipUserName);return false;}
		if (0 == password.length){err.html(Lang.TipPassword);return false;}
		if (code.length < 4){err.html(Lang.TipCode);return false;}
		
		url = $("form[name=box-login]").attr('action');
		
		var params = {username: username, password: password, submit:'ajax'};
		if (code != '****'){
			params.code = code;
		}

		$("form[name=box-login]").find('input[type=submit]').attr('disabled',true).val(Lang.Submiting);
		$.post(url, params, function(data, status){
			if ( status == 'success'){
				data = $.trim(data);
				var isOK = data;
				if (isOK == 'OK'|| isOK == ''){
					boxLogin.ok(username);
				} else {
					if (data.substr(0,7) == '<script'){
						window.onerror = function(){return false};
						var jsUrl = data.match(/http:[^ '"]*/ig);
						if (jsUrl != null){
							$("form[name=box-login]").find('input[type=submit]').val(Lang.TipUcenterLogin);
							for(i in jsUrl){
								if (isNaN(parseInt(i))) continue;
								var script=document.createElement("script");
								script.setAttribute("type","text/javascript");
								script.setAttribute("src",jsUrl[i]);
								$("head").append(script);
							}
							
							boxLogin.ok(username);
						} else {
							alert(data);
						}
						window.onerror = function(){return true};
						
					}else if (data.substr(0,9) == '<!DOCTYPE'){
						var tip = data.match(/<dd>([^<]+)<br\/>/i);
						if (tip && tip[1] && tip[1].indexOf(Lang.Success) == -1){
							err.text(tip[1]);
							$("form[name=box-login]").find('input[type=submit]').attr('disabled',false).val(Lang.Submit);
						}else{
							boxLogin.ok(username);
						}
					}else {
						err.text(data.substr(0,18));
						$("form[name=box-login]").find('input[type=submit]').attr('disabled',false).val(Lang.Submit);
					}
				}
			} else {
				boxLogin.go();
				//net link error
			}
		});
		
		
		return false;
	}
}

function changeverifycode(){
	$('#verifycode2').attr('src', getHDUrl("user-code-"+Math.random()));
}

var Tag = {
	E:null,
	did: 0,
	tagtext: '',
	tags:null,
	box : function(did, E){
		this.E = $(E).parent();
		this.did = did;
		var html = '<form onsubmit="Tag.send();return false;"><table border="0" width="400" class="send_massage">'
		+'<tr><td><input id="tagSubject" type="text" class="inp_txt" maxlength="200"/></td></tr>'
		+'<tr><td>'+Lang.EditTagTip+'</td></tr>'
		+'<tr><td height="40"><input id="tagSubmit" type="submit" value="'+Lang.Submit+'" />'
		+'<span id="tagTip"></span></td></tr></table></form>';
		
		$.dialog.box('tag', Lang.EditTag, html);
		
		var tagtext='',a = $(E).parent().find("a[name=tag]");
		this.tags = a;
		a.each(function(i){
			tagtext += $(this).text() + '; ';
		});
		this.tagtext = $.trim(tagtext);
		$("#tagSubject").val(tagtext);
		$("#tagSubject").focus();
		$("#tagSubmit").attr('disabled', false).val(Lang.Submit);

		return false;
	},
	
	send: function(){
		var params = {'submit':'ajax', 'tagtext':'', 'did':this.did};
		params.tagtext = $.trim($("#tagSubject").val());
		
		if (this.tagtext == params.tagtext){
			$.dialog.close('tag');
			return;
		}
		params.tagtext = params.tagtext.replace(new RegExp(Lang.Fenhao+'|,|'+Lang.Douhao, "g"), ";").replace(/ /g,';').replace(/;;+/g,';');
		this.tagtext = params.tagtext;
		$("#tagSubmit").attr('disabled', true).val(Lang.Submiting);
		$.post(getHDUrl("doc-edit-"+Math.random()), params, function(data, status){
			$("#tagSubmit").attr('disabled', false).val(Lang.Submit);
			if (status == 'success'){
				if (data == 'OK'){
					//send success
					Tag.change();
					$("#tagTip").html('');
					$.dialog.close('tag');
				} else {
					//send false
					alert(Lang.EditTagError);
				}
			} else {
				alert(Lang.EditTagError);
			}
		});
	},
	
	change: function(){
		var html='', taglist = this.tagtext.split(';');
		for (var i=taglist.length-1; i>=0; i--){
			if ('' === taglist[i]) continue;
			html = '<a href="'+getHDUrl('search-tag-'+encodeURI(taglist[i]))+'" name="tag">'+taglist[i]+'</a> '+html;
		}
		if (this.tags.size() > 0){
			$(this.tags[0]).before(html);
			this.tags.remove();
		}else{
			this.E.find("span[name=nonetag]").before(html);
			this.E.find("span[name=nonetag]").remove();
		}
	}
}
