//<![CDATA[
//reference /common/jsoul.base.js
//JSoul.plugin("uc/script/jsoul.mask.js");
JSoul.$(function(){
	JSoul.$mf = JSoul("#wrap").initEventControls();
});
/***JSoul prototype extend Method [Info Form]***/
/*******************JSoul原型扩展方法 [Build Upload]******************/
JSoul.fn.extend({
	/**
	 * 初始化事件需要的控件
	 * @return JSoul
	 */
	initEventControls:function(){
		var oPrompt = JSoul.buildPrompt();
		this.insertLast(oPrompt);
		var oFriend = JSoul.buildAddFriend();
		this.insertLast(oFriend);
		var oMsg = JSoul.buildMsg();
		this.insertLast(oMsg);
		var oFeedback = JSoul.buildFeedback();
		this.insertLast(oFeedback);		
		
		this.extend({
			prompt: JSoul(oPrompt).initPrompt(),
			addFriend: JSoul(oFriend).initAddFriend(),
			msg: JSoul(oMsg).initMsg(),
			msg: JSoul(oFeedback).initFeedback(),
			//重新绑定事件
			rebindEvents: function(){
				this.addFriend.initAddFriend();
				this.msg.initMsg();
				this.feedback.initFeedback();
			}
		});

		return this;
	},
	/**
	 * 默认事件控件
	 * @return JSoul
	 */
	defaultEventBind: function(name){
		var main = this.extend({
			closer: this.find(">closer").bindEvent({
				onclick: function(e){
					main.hiddenDialog();
				}
			}),
			//错误提示信息
			oInfo: this.find("h2").find("span"),
			//标题
			oTitle: this.find("dt")
		}).bindEvent({
			onsubmit: function(e){
				return main.onsubmitEvent(this);
			}
		});
		//only for IE 6
		if (!window.XMLHttpRequest) {
			JSoul.Onresize.register("eventControls." + name, this.initFixedTop(200), "fixedPosition");
		}
		return this;
	},
	/**
	 * 初始化提示信息
	 * @return JSoul
	 */
	initPrompt: function(){
		var main = this.initdefaultDialog();
		this.defaultEventBind("prompt").extend({
			//提交表单事件
			onsubmitEvent: function(oForm){
				this.hiddenDialog();
				return false;//禁止提交
			},
			//显示对话框时要调用的方法
			showHook: function(elem){
				return this;
			},
			//显示信息
			showWithInfo: function(info){
				this.oTitle.innerHtml(info);
				this.showDialog();
			}
		});;
		return this;
	},
	/**
	 * 初始化添加好友
	 * @return JSoul
	 */
	initAddFriend: function(){
		var main = this.initdefaultDialog(JSoul("@a,require,addfriend"));
		this.defaultEventBind("addFriend").extend({
			isGetTags: false,
			target: null,//事件触发目标
			oName:this.find("@dd,className,hidden"),
			oFriendId:this.find(">friendId"),
			oTags:this.find(">tagId").bindEvent({
				onchange: function(e){
					if(this.value == ""){
						main.oName.show();
					}else{
						main.oName.hidden();
					}
				}
			}),
			//提交表单事件
			onsubmitEvent: function(oForm){
				this.hiddenDialog();
				JSoul.$mf.prompt.showWithInfo("正在向服务器提交您的好友请求，请稍候...");
				JSoul.$xJson(this.target.href, function(json){
					JSoul.$mf.prompt.showWithInfo(json.returnInfo);
					if(json.isSucceed){
						oForm['remark'].value = "";
						oForm['tagId'].value = 0;
						oForm['name'].value = "";
						main.target.onclick = function(){
							JSoul.$mf.prompt.showWithInfo("您已经加过该用户为好友");
							return false;
						}
					}
				}, this.getQuery());
				return false;//禁止提交
			},
			//显示对话框时要调用的方法
			showHook: function(elem){
				this.target = elem;
				this.oFriendId.val(elem.rel);
				this.oTitle.innerHtml('把<a href="http://www.'+JSoul.domain+'/u/'+elem.rel+'" target="_blank">'+elem.rev+'</a>加为我的好友');
				//只允许拿一次好友关系类型
				if(!this.isGetTags){this.setFriendTags(elem);}
				return this;
			},
			//设置好友分组
			setFriendTags: function(elem){
				this.isGetTags = true;
				JSoul.$xJson(elem.getAttribute("tags"), function(json){
					if(main.oTags.length > 0){
						JSoul.setTagsOption(main.oTags.get(0), json.tags);
					}else{
						debug("Has not friend tag select");
					}
				});
			}
		});
		return this;
	},
	/**
	 * 初始化短信发送
	 * @return JSoul
	 */
	initMsg: function(){
		var main = this.initdefaultDialog(JSoul("@a,require,sendmsg"));
		this.defaultEventBind("msg").extend({
			oReceiveId:this.find(">receiveId"),
			target: null,//事件触发目标
			//提交表单事件
			onsubmitEvent: function(oForm){
				if(this.checkFormItems(oForm)){
					this.hiddenDialog();
					JSoul.$mf.prompt.showWithInfo("正在发送站内信，请稍候...");
					JSoul.$xJson(this.target.href, function(json){
						JSoul.$mf.prompt.showWithInfo(json.returnInfo);
						if(json.isSucceed){
							oForm['title'].value = "";
							oForm['content'].value = "";
						}
					}, this.getQuery());
				}
				return false;//禁止提交
			},
			//显示对话框时要调用的方法
			showHook: function(elem){
				this.target = elem;
				this.oInfo.innerHtml("");
				this.oReceiveId.val(elem.rel);
				this.oTitle.innerHtml('给<a href="http://www.'+JSoul.domain+'/u/'+elem.rel+'" target="_blank">'+elem.rev+'</a>发送站内信');
				return this;
			},
			//检查表单
			checkFormItems: function(oForm){
				if(oForm['title'].value.trim().length < 2){
					this.oInfo.innerHtml("标题不能少于2个字符");
					oForm['title'].focus();
				}else if (oForm['content'].value.trim().length < 5) {
					this.oInfo.innerHtml("内容不能少于5个字符");
					oForm['content'].focus();
				}else if (oForm['content'].value.trim().length > 800) {
					this.oInfo.innerHtml("内容不能多于800个字符");
					oForm['content'].focus();
				}else {
					return true;
				}
				return false;
			}
		});;
		return this;
	},
	/**
	 * 初始化网友举报
	 * @return JSoul
	 */
	initFeedback: function(){
		var main = this.initdefaultDialog(JSoul("@a,require,sendfeedback"));
		this.defaultEventBind("feedback").extend({
			oRID:this.find(">RID"),
			target: null,//事件触发目标
			//提交表单事件
			onsubmitEvent: function(oForm){
				if(this.checkFormItems(oForm)){
					this.hiddenDialog();
					JSoul.$mf.prompt.showWithInfo("正在提交举报信息，请稍候...");
					JSoul.$xJson(this.target.href, function(json){
						JSoul.$mf.prompt.showWithInfo(json.returnInfo);
						if(json.isSucceed){
							oForm['name'].value = "";
							oForm['email'].value = "";
							oForm['remark'].value = "";							
						}
					}, this.getQuery());
				}
				return false;//禁止提交
			},
			//显示对话框时要调用的方法
			showHook: function(elem){
				this.target = elem;
				this.oRID.val(elem.rel);
				this.oInfo.innerHtml("");
				return this;
			},
			//检查表单
			checkFormItems: function(oForm){
				var patEmail = new RegExp(JSoul.rex.mail);
				if (oForm['name'].value.trim().length == 0) {
					this.oInfo.innerHtml("感谢您对武房网的支持,请留下您的称呼");
					oForm['name'].focus();
				}				
				else if(!patEmail.test(oForm['email'].value.trim())){
					this.oInfo.innerHtml("邮箱地址格式有误");
					oForm['email'].focus();
				}
				else if (oForm['remark'].value.trim().length < 5) {
					this.oInfo.innerHtml("备注不能少于5个字符");
					oForm['remark'].focus();
				}else if (oForm['remark'].value.trim().length > 800) {
					this.oInfo.innerHtml("备注不能多于800个字符");
					oForm['remark'].focus();
				}else {
					return true;
				}
				return false;
			}
		});;
		return this;
	}
});
JSoul.extend({
	/**
	 * 建立对话表单
	 * @return HTMLFormElement
	 */
	buildEventForm: function(html){
		return JSoul.$b("form", {className: "dialog radius",method:"post", innerHTML: html});
	},
	/**
	 * 建立提示信息HTML
	 * @return HTMLFormElement
	 */
	buildPrompt:function(){
		var str = [];
		str.push('<div class="indialog">');
		str.push('<h2><input name="closer" type="button" class="closer" value=" " />提示信息<span></span></h2>');
		str.push('<div class="inbox"><dl class="bind"><dt></dt>');
		str.push('<dd class="contrls"><input name="act" type="submit" class="button" value="确定" /></dd>');
		str.push('</dl></div></div>');
		return JSoul.buildEventForm(str.join(''));
	},
	/**
	 * 建立添加好友HTML
	 * @return HTMLFormElement
	 */
	buildAddFriend:function(){
		var str = [];
		str.push('<div class="indialog">');
		str.push('<h2><input name="closer" type="button" class="closer" value=" " /></a>添加好友<span></span></h2>');
		str.push('<div class="inbox"><dl class="bind">');
		str.push('<dt>把<a href="#">Clear</a>加为我的好友</dt>');
		str.push('<dd>附言：<input name="remark" type="text" maxlength="100" class="text" /></dd>');
		str.push('<dd>分组：<select name="tagId"><option value="0" selected="selected">默认</option></select></dd>');
		str.push('<dd class="hidden">组名：<input name="name" type="text" maxlength="10" class="text" /></dd>');
		str.push('<dd class="contrls"><input name="act" type="submit" class="button" value="确定" />');
		str.push('<input name="friendId" type="hidden" />');
		str.push('</dd></dl></div></div>');
		return JSoul.buildEventForm(str.join(''));
	},
	/**
	 * 建立发送短信HTML
	 * @return Element
	 */
	buildMsg:function(){
		var str = [];
		str.push('<div class="indialog">');
		str.push('<h2><input name="closer" type="button" class="closer" value=" " />发送站内信<span></span></h2>');
		str.push('<div class="inbox"><dl class="bind">');
		str.push('<dt>给<a href="#">Clear</a>发送站内信</dt>');
		str.push('<dd>标题：<input name="title" type="text" maxlength="100" class="text" /></dd>');
		str.push('<dd>内容：</dd><dd><textarea name="content" cols="40" rows="8" class="textarea"></textarea></dd>');
		str.push('<dd class="contrls"><input name="act" type="submit" class="button" value="确定" />');
		str.push('<input name="receiveId" type="hidden" />');
		str.push('</dd></dl></div></div>');
		return JSoul.buildEventForm(str.join(''));
	},
	/**
	 * 建立网友举报HTML
	 * @return Element
	 */
	buildFeedback:function(){
		var str = [];
		str.push('<div class="indialog">');
		str.push('<h2><input name="closer" type="button" class="closer" value=" " />网友举报<span></span></h2>');
		str.push('<div class="inbox"><dl class="bind">');
		str.push('<dd><b>称呼：</b><input name="name" type="text" maxlength="10" class="text" /></dd>');
		str.push('<dd><b>邮箱：</b><input name="email" type="text" maxlength="100" class="text" /></dd>');
		str.push('<dd><b>举报说明：</b></dd><dd><textarea name="remark" cols="40" rows="8" class="textarea"></textarea></dd>');
		str.push('<input name="RID" type="hidden" />');		
		str.push('<dd class="contrls"><input name="act" type="submit" class="button" value="确定" />');
		str.push('</dd></dl></div></div>');
		return JSoul.buildEventForm(str.join(''));
	},	
	/**
	 * 设置分组类型选单
	 * @param {Object} elem
	 * @param {Object} tags
	 */
	setTagsOption: function(elem, tags){
		if(tags){
	        for (var i = 0, j = tags.length; i < j; i++) {
	            elem.options.add(new Option(tags[i].name, tags[i].id));
	        }
		}
		elem.options.add(new Option("自定义", ""));
	}
});
//]]>