/* QUI */
QUI = {}

/* QUI.pg */
QUI.pg = {
	initHome: function(){
		var bannerID = 0;
		var switchBanner = function(i) {
			if(bannerID > 2) bannerID = 0;
			
			$("#Q_banner_btn").find("a").each(function(i){
				$(this).attr("class","s2");
				if(i==bannerID) {
					$(this).attr("class","s1");
				};
			});
			$("div.bgall").each(function(j){
				$(this).hide();
				if(j==bannerID) {
					$(this).show();
				};
			});
			bannerID++;			
		};

		var timeOutID = null;
		var hideSnap = function() {
			$("#bigsnap").hide().css({"top":"-400px", "left":"-400px"});
		};

		$("#Q_dy").click(function(){
			yjdy(25002);
		});

		$("img.Q_snapview").each(function(){
			$(this).mouseover(function(){
				window.clearTimeout(timeOutID);
				if($(this).attr("src") == "/img/soon.gif") {
					return;
				};
				var bigImgUrl = $(this).attr("src").replace("small","medium");
				var offset = {};
				$(this).offset({} ,offset);
				var dir = $(this).attr("snapdir");
				var snapTop = offset.top - 30;
				var snapLeft = -400;			
				if(dir == "right") {
					snapLeft = offset.left + 117;
					$("#bigsnap").attr("class","bigsnap1");
				} else {
					snapLeft = offset.left - 330;
					$("#bigsnap").attr("class","bigsnap2");
				}
				$("#bigsnap").css({"top":snapTop, "left":snapLeft}).show();
				$("#Q_prewimg").attr("src",bigImgUrl);
				$("#Q_prewImgLink").attr("href",$(this).attr("aURL"));
				$("#Q_prewdetail").attr("href",$(this).attr("aURL"));
				$("#Q_addpost").attr("href","/post?title="+encodeURIComponent($(this).attr("aTitle"))+"&uri="+encodeURIComponent($(this).attr("aLinkURL")));

				var strTitle = $(this).attr("aTitle");
				var titleLength = 20;
				if(strTitle.length > titleLength) {
					strTitle=strTitle.substring(0,titleLength) + "...";
				};
				$("#Q_prewurl").text(strTitle).attr("href",$(this).attr("aLinkURL")).attr("title",$(this).attr("aTitle"));
			}).mouseout(function(){
				timeOutID = window.setTimeout(hideSnap,250);
			});
		});
		$("#bigsnap").mouseover(function(){
			window.clearTimeout(timeOutID);
			$(this).show();
		}).mouseout(function(){
			$(this).hide();
		});

		window.setInterval(switchBanner,5000);

		$("#Q_banner_btn").find("a").each(function(i){
			$(this).mouseover(function(){	
				$("#Q_banner_btn").find("a").each(function(){
					$(this).attr("class","s2");
				});

				$(this).attr("class","s1");

				$("div.bgall").each(function(j){
					$(this).hide();
					if(j==i) {
						$(this).show();
						bannerID = j;
					};
				});
			}).mouseout(function(){
				if(bannerID != i) {
					$(this).attr("class","s2");
				};
			});
		});	

		QUI.fn.initLinkHover();
	},
	initGift: function(options){
		var offset = {};
		var _docwidth = $(document).width();
		$("#contdiv").css({"top":150,"left":(_docwidth/2-420)}).show();
		$("#picdiv").css({"top":300,"left":(_docwidth/2+100)}).show();
	}
};

/* QUI.fn */
QUI.fn = {
	initNavbar: function(options){
		var s = {
			navID: 0,
			className: "current"
		};
		
		if(options) {
			$.extend(s, options);
		};

		var NavID = "NavID_" + s.navID;

		$("#navbar > li > a").each(function(i){
			$(this).removeClass();
			if($(this).attr("id") == NavID) {
				$(this).addClass(s.className);
			};
		});
	},
	initLinkHover: function() {
		$("ul.linklist > li").each(function(){
			$(this).mouseover(function(){
				$(this).addClass("mv");
			}).mouseout(function(){
				$(this).removeClass("mv");
			});
		});
	},
	initLogin: function(){
		var s = {
			base: "/",
			backURL: "",
			resetURL: "/login/reset",
			authImgSrc: "http://ptlogin2.qq.com/getimage?aid=3000601",
			//authImgSrc: "http://nverify.qq.com/getimage?",
			searchAPI: "search/"
		};

		$("a.Q_showlogin").each(function(){
			$(this).click(function(){
				var _docwidth = $(document).width();
				var _docheight = $(document).height();
				var _top = 140;
				_top = Number($(this).attr("top"));
				var _left = (_docwidth-297)/2;
				/*
				s.backURL = document.referrer;
				if (s.backURL == window.location.href || s.backURL == '') {
					s.backURL = '/';
				}
				*/
				s.backURL = $(this).attr("backURL");
				$("#mask").css({"width":_docwidth, "height":_docheight}).show();
				$("#loginwin").css({"top":_top, "left":_left}).show();
				$("#actionfrm").attr("src",s.resetURL);
				var input_uin = $("input[@name=u]");
				input_uin.val($.cookie("lastLoginUin"));
				if(input_uin.val() == "") {
					input_uin.focus();
				} else {
					$("input[@name=p]").focus();
				};
				return false;
			});
		});

		$("div.Q_closelogin").each(function(){
			$(this).click(function(){
				if(s.backURL == "#") {
					$("#mask").hide();
					$("#loginwin").hide();
				} else if (s.backURL == "x") {
					window.close();
				} else {
					//top.location.href = s.backURL;
					if(document.referrer != ""){
						top.location.href = document.referrer;
					} else {
						top.location.href = "/";
					};					
				};
				return false;
			});
		});

		$("#icn").click(function(){
			if($(this).attr("class") != "ics") {
				$(this).removeClass().addClass("ics");
			} else {
				$(this).removeClass().addClass("icn");
			};
			$("#isn").toggle();
			$("#isnmenu").hide();
			return false;
		}).bind("keydown", function(event){
			if(event.keyCode == 32 || event.keyCode == 13) {
				if($(this).attr("class") != "ics") {
					$(this).removeClass().addClass("ics");
				} else {
					$(this).removeClass().addClass("icn");
				};
			} else {
				return true;
			};
			$("#isn").toggle();
			$("#isnmenu").hide();
			return false;
		});

		$("#isn").bind("click", function(event){
			event.stopPropagation();
			$("#isnmenu").toggle().find("a").each(function(){
				$(this).click(function(){
					var _days = $(this).attr("days");
					$("#isn").html($(this).html()).attr("days",_days);
					$("#isn").attr("days",_days);
					$("#isnmenu").hide();
				});
			});
			$("#loginwin").click(function(){$("#isnmenu").hide()});		
			$("#mask").click(function(){$("#isnmenu").hide()});
			return false;
		});

		$("#loginfrm").submit(function() {
			this.target = "actionfrm";
			$.cookie('lastLoginUin', this.u.value, {expires:7,domain:"shuqian.qq.com"});
			if($("#icn").attr("class")=="ics") {
				this.u1.value += "&time=" + $("#isn").attr("days");
			}
			preprocess(this);
			return true;
		});

		$("img.authimg").each(function(){
			$(this).click(function() {
				$(this).attr("src", s.authImgSrc + "&" + Math.random());
				$("input[@name=verifycode]").val("");
				if($("input[@name=u]").val() == ""){
					$("input[@name=u]").val("").focus();
				} else if($("input[@name=p]").val() == "") {
					$("input[@name=p]").focus();
				} else {
					$("input[@name=verifycode]").focus();
				};
				return false;
			});
		});

		$("a.authlink").each(function(){
			$(this).click(function() {
				$("img.authimg").click();
			});
			return false;
		});

		$("#frmsearch").submit(function(){
			var inputbox = $(this).find("input[@name=q]");			
			if($(inputbox).val() != $(inputbox).attr("msg")) {
				top.location.href = s.base + s.searchAPI + $(this).find("input[@name=q]").val();
			}
			return false;
		});
	},
	
	reset: function() {
		$("input[@name=p]").val("");
		//$("input[@name=verifycode]").val("");
		$("img.authimg").click();
		return false;
	},

	generateKey: function(uin) {
		var uinString = ''+uin+'';
		var uinPath = '';
		var counter = 0;
		var lastSlash = false;
		for(var i=0;i<uinString.length;i++)
		{
			uinPath += uinString.charAt(i);
			lastSlash= false;
			counter++;
			if(counter%2==0)
			{
				uinPath+='/';
				lastSlash=true;
			}
		}
		if(!lastSlash)
		{
			uinPath+='/';
		}
		return uinPath;
	},
	
	checkLogin: function(){
		var s = {
			base: "/",
			api: "login/check",
			loggedOut: "LoggedOut",
			loggedIn: "LoggedIn",
			showAlways : "showAlways",
			uinName: "topGreetingUser" /*,
			panelLink: "logined",
			panelLogin: "nologin",
			panelLinkNick: "loginedNick",
			panelLinkUin: "loginedUin",
			panelLinkLink: "MyLinkLogined"*/
		};
				
		var shuqian_auth = $.cookie("shuqian_auth");
		var skey = $.cookie("skey");
		var uin = $.cookie("uin");
		var shuqian_locale = $.cookie("shuqian_locale");

		
		var pars = {
			t: md5(shuqian_auth+skey+uin+shuqian_locale)
		};
		
		if(shuqian_auth||(skey&&uin)) {
			$.ajaxSetup({async:true});
			$.getJSON('/login/check', pars, function(json){
				if (json == 0) {
					$("." + s.loggedOut).show();
					$("." + s.loggedIn).hide();
					$("li." + s.showAlways).show();
					if(!shuqian_locale)
					{
						$.cookie("shuqian_locale", 'zh_CN', {expires: 365, path: '/', domain: 'shuqian.qq.com', secure: false});	//default locale
					}
				} else {
					var upload_time = $.cookie("ut");
					$("#" + s.uinName).html('&nbsp;<a href="/home/">'+json.n+'</a>').attr("title", json.u);
					$("." + s.loggedOut).hide();
					$("." + s.loggedIn).show();
					$("img.upic1").attr("src", 'http://data.shuqian.qq.com/img/snap/'+QUI.fn.generateKey(json.u)+'thumb.jpg?'+upload_time);
					$("#boxUin").html('<a href="/'+json.u+'/">'+$("#boxUin").attr("txt")+'</a>&nbsp;');
					$("#boxNick").prepend('<a class="nickname" href="/home/">'+json.n+'</a>');
					$("li." + s.showAlways).show();
					if(!shuqian_locale)
					{
						$.cookie("shuqian_locale", json.l, {expires: 365, path: '/', domain: 'shuqian.qq.com', secure: false});
					}
				}
			});
		} else {
			$("." + s.loggedOut).show();
			$("." + s.loggedIn).hide();
			$("li." + s.showAlways).show();
			if(!shuqian_locale)
			{
				$.cookie("shuqian_locale", 'zh_CN', {expires: 365, path: '/', domain: 'shuqian.qq.com', secure: false});	//default locale
			}
		}
		//$("li." + s.showAlways).show();
		return false;
	}, 
	
	initUinHome: function() {
		QUI.fn.initLinkHover();

		var oldKey = "";
		var timer = null;
		$("#Q_SearchKey").focus(function(){
			timer = setInterval(function(){
				var key = $.trim($("#Q_SearchKey").val()).toLowerCase();
				var status = false;
				if(key != oldKey) {
					oldKey = key;
					$("#UserTagList > ul > li").each(function(){
						//$(this).show();
						tag = $(this).find("a").text().toLowerCase();
						if(tag.substring(0,key.length) == key) {
							$(this).show();
						} else {
							$(this).hide();
						};
					});
				} else {
					return false;
				};
			}, 400);
		}).blur(function(){
			clearInterval(timer);
		});
	},

	initUserHome: function(options) {
		var s = {
			base: "/",
			editAPI: "edit/",
			deleteAPI: "delete/"
		};
		
		if(options) {
			$.extend(s, options);
		};

		var oldKey = "";
		var timer = null;
		var isExp = $.cookie("QBK_Extend");

		var expendAll = function(ex) {
			if(ex == "yes") {
				$("#Q_expendAll").val($("#Q_expendAll").attr("v2"));
			} else {				
				$("#Q_expendAll").val($("#Q_expendAll").attr("v1"));
			};
			$("tr.nor").each(function(){				
				if(ex == "yes") {
					$("#"+$(this).attr("id")+"_ext").show();
					$("#"+$(this).attr("id")+"_arrow").addClass("da");
					//$(this).addClass("mv");
				} else {
					$("#"+$(this).attr("id")+"_ext").hide();
					$("#"+$(this).attr("id")+"_arrow").removeClass("da");
					//$(this).removeClass("mv");
				};				
			});
		};

		$("#Q_expendAll").click(function(){
			isExp = $.cookie("QBK_Extend");
			if(isExp == "yes") {
				$.cookie("QBK_Extend", "no", {expires: 7, domain: '.shuqian.qq.com'});
				isExp = "no";
			} else {
				$.cookie("QBK_Extend", "yes", {expires: 7, domain: '.shuqian.qq.com'});
				isExp = "yes";
			};
			expendAll(isExp);
		});
		
		expendAll(isExp);

		$("a.Q_edit").each(function(){
			$(this).click(function(){
				var linkID = $(this).attr("linkid");
				$("#"+linkID+"_editor").html($("#editor").html());
				
				$("#"+linkID).hide();
				$("#"+linkID+"_ext").hide();
				$("#"+linkID+"_editor").show();

				var editorfrm = $("#"+linkID+"_editor").find("form");
				$(editorfrm).find("input[@name=uri]").val($.trim($("#"+linkID+"_link").attr("href")));
				$(editorfrm).find("input[@name=title]").val($.trim($("#"+linkID+"_link").text()));
				$(editorfrm).find("textarea[@name=desc]").val($.trim($("#"+linkID+"_desc").text()));
				
				var strTag = "";
				$("#"+linkID+"_tag").find("a").each(function(){
					strTag += $(this).text() + " ";
				});
				$(editorfrm).find("input[@name=tagsName]").val(strTag);
					
				var isPrivate = $("#"+linkID+"_private").val();
				
				$(editorfrm).find("input[@name=private]").each(function(){
					if($(this).val() == isPrivate) {
						$(this).attr("checked", true);
					} else {
						$(this).attr("checked", false);
					};
				});

				$(editorfrm).find("input[@type=button]").click(function(){
					$("#"+linkID).show();
					$("#"+linkID+"_ext").show();
					$("#"+linkID+"_editor").hide();					
				});
				
				$("#"+linkID+"_edit").find("form").submit(function(){
					var pars = {
						id: linkID,
						uri: "",
						title: "",
						description: "",
						tagsName: "",
						private: "",
						t: Math.random()
					};

					pars.uri = $.trim($(editorfrm).find("input[@name=uri]").val());
					pars.title = $.trim($(editorfrm).find("input[@name=title]").val());
					pars.description = $.trim($(editorfrm).find("textarea[@name=desc]").val());
					pars.tagsName = $.trim($(editorfrm).find("input[@name=tagsName]").val());
					pars.private = $.trim($(editorfrm).find("input[@name=private][@checked]").val());

					if(pars.uri == "") {
						alert(QUILanguage.nourl);
						$(editorfrm).find("input[@name=uri]").focus();
						return false;
					};
					if(pars.title == "") {
						alert(QUILanguage.notitle);
						$(editorfrm).find("input[@name=title]").focus();
						return false;
					};

					$(this).find("input[@type=submit]").val(" 修改中... ").attr("disabled","true");
					
					$.getJSON(s.base + s.editAPI, pars, function(json) {
						if(json.status == 0) {
							alert(json.msg);
						} else {
							$("#"+linkID+"_link").attr("href", json.msg.url).text(json.msg.title);
							$("#"+linkID+"_desc").text(json.msg.description);

							//alert(json.msg.tags);
							var linkTags = json.msg.tags.split(" ");
							var htmlTags = "";
							for(var i=0;i<linkTags.length;i++){
								htmlTags += "<a href='" + s.base + "home?t=" + linkTags[i] + "'>"+linkTags[i]+"</a> ";
							};
							$("#"+linkID+"_tag").html(htmlTags);

							if(json.msg.private == 0) {
								$("#"+linkID+"_private_0").hide();
								$("#"+linkID+"_private_1").show();
							} else {
								$("#"+linkID+"_private_0").show();
								$("#"+linkID+"_private_1").hide();
							};
							
							$("#"+linkID+"_private").val(json.msg.private);
							$("#"+linkID+"_editor").hide();
							$("#"+linkID+"_ext").show();
							$("#"+linkID).show();
						};
					});
					return false;
				});				
				return false;
			});
		});

		$("#frmDelete").submit(function() {
			var linkID = "linkID="+$(this).find("input[@name=linkID]").val();
			$.ajax({
				type: "POST",
				url: s.base + s.deleteAPI,
				dataType: "json",
				data: linkID,
				success: function(json) {
					if(json.status == 1) {
						top.location.reload();
					} else {
						alert(json.msg);
					};
				}
			});
			return false;
		});

		$("#Q_deleteAll").click(function(){
			var hasChecked = false;
			var linksID = "";
			$("input.Q_checkall").each(function() {
				if($(this).attr("checked")){
					hasChecked = true;
					linksID += $(this).attr("linkID") + ",";
					return;
				};
			});
			if(hasChecked == false) {
				alert(QUILanguage.deleteChoose);
			} else {
				if(confirm(QUILanguage.todelete)) {
					$(this).val(QUILanguage.deleting).attr("disabled","true");
					$("#frmDelete > input[@name=linkID]").val(linksID.substring(0, linksID.length-1));
					$("#frmDelete").submit();	
				};
			};
		});

		$("#Q_checkall").click(function(){
			var checked = $(this).attr("checked")?true:false;
			$("input.Q_checkall").each(function() {
				$(this).attr("checked",checked);
			});
		});

		$("#Q_SearchKey").focus(function(){
			timer = setInterval(function(){
				var key = $.trim($("#Q_SearchKey").val()).toLowerCase();
				var status = false;
				if(key != oldKey) {
					oldKey = key;
					$("#UserTagList > ul > li").each(function(){
						//$(this).show();
						tag = $(this).find("a").text().toLowerCase();
						if(tag.substring(0,key.length) == key) {
							$(this).show();
						} else {
							$(this).hide();
						};
					});
				} else {
					return false;
				};
			}, 400);
		}).blur(function(){
			clearInterval(timer);
		});

		$("tr.nor").each(function(){
			$(this).mouseover(function(){
				$(this).addClass("mv");
			}).mouseout(function(){
				if($.cookie("QBK_Extend") == "yes" || $("#"+$(this).attr("id")+"_ext").css("display") == "none") {
					$(this).removeClass("mv");
				};
			}).click(function(event) {				
				if(event.target.tagName == "TD" || event.target.tagName == "DIV") {
					$(this).addClass("mv");
					$("#"+$(this).attr("id")+"_ext").toggle();
					$("#"+$(this).attr("id")+"_arrow").toggleClass("da");
				} else if (event.target.tagName == "TR") {
					$(this).toggleClass("mv");
					$("#"+$(this).attr("id")+"_ext").show();
					$("#"+$(this).attr("id")+"_arrow").toggleClass("da");
				} else {
					
				};
			});
		});

		/*
		$("a.Q_delete").each(function(){
			$(this).click(function(){
				if(confirm("你确定要删除这个链接吗？")) {
					$("#actionfrm").attr("src",s.base + s.deleteAPI + $(this).attr("linkid"));
					return false;
				};
				return false;
			});
		});
		*/

		/*
		$("#Q_SearchKey").bind("keyup", function(event){
			var key = $.trim($(this).val().toLowerCase());
			var tag = "";
			$("#UserTagList > ul > li").each(function(i){
				$(this).show();
				if(event.keyCode == 8) return;
				tag = $(this).find("a").text();
				if(tag.substring(0,key.length) == key) {
					$(this).show();
				} else {
					$(this).hide();
				};
			});
		});
		*/
	},

	initPost: function(options) {
		var s = {
			pattern1: /[,，;；　]/g,
			pattern2: /[a-zA-z]+:\/\/[^s]*/i,
			replace: " ",
			titleLength: 80,
			descLength: 200,
			base: "/",
			userTagAPI: "service/tag",
			linkTagAPI: "service/linktag",
			uin: "0",
			link: ""
		};

		if(options) {
			$.extend(s, options);
		};

		/*
		$.getJSON(s.base + s.userTagAPI, {uin:s.uin,order:"asc",type:"alph",private:0}, function(json){
			var tmp = "";
			for(var i=0;i<json.length;i++){
				tmp += "<a href=''>" + json[i].tag + "</a>&nbsp; " ;
			}
			$("#UserTags").html(tmp);
		});
		*/

		var uri = $("input[@name=uri]");
		var title = $("input[@name=title]");
		var desc = $("input[@name=description]");
		var tags = $("input[@name=tagsName]");

		if(uri.val() == "") {
			uri.focus();
		} else if(title.val() == "") {
			title.focus();
		} else {
			tags.focus();
		}
		
		$("form[@name=frmnewpost]").submit(function(){
			var txtUri = uri.val();
			var txtTitle = title.val();
			var txtDesc = desc.text();
			var txtTags = tags.val();

			if(txtUri == "") {
				alert(QUILanguage.nourl);
				uri.val("");
				uri.focus();
				return false;
			};
			if(txtTitle == "") {
				alert(QUILanguage.notitle);
				title.val("");
				title.focus();
				return false;
			};
			if(txtTitle.length > s.titleLength){
				title.val(txtTitle.substring(0,s.titleLength));
			};
			if(txtDesc.length > s.descLength){
				desc.text(txtDesc.substring(0,s.descLength));
			};
			if(!s.pattern2.test(txtUri)) {
				uri.val("http://"+txtUri);
			};

			txtTags = txtTags.replace(s.pattern1, s.replace);
			tags.val(txtTags);

			return true;
		});
	}

	/*
	getUserTags: function(options) {
		var s = {
			base: "/",
			tagAPI: "service/tag"
		};

		var pars = {
			uin: "8118929",
			order: "desc",
			type: "freq",
			private: 0
		};

		var returnValue;
		$.getJSON(s.base + s.tagAPI, pars, function(json){
			alert(json);
			returnValue =  json;
		});
		return returnValue;
	}
	
	showUserTags: function(options) {
		var tagData = new Array();
		var tagSort = new Array();

		var s = {			
			type: "freq",
			num: 25
		};

		if(options) {
			$.extend(s, options);
		};

		$("#tagData > li").each(function(i){
			var tmpArr = new Array();
			tmpArr[0] = $(this).find("a").html();
			tmpArr[1] = parseInt($(this).attr("count"));
			if(isNaN(tmpArr[1])) tmpArr[1]=0;
			tmpArr[2] = $(this).html();
			tagData[i] = tmpArr;
		});

		tagSort[s.type] = QUI.fn.sortTags(tagData, {order:s.type, index:1});
		
		var tagString = "<ul>";
		
		for(var i=0;i<tagSort[s.type].length;i++){
			if(i < s.num)
			tagString += "<li>" + tagSort[s.type][i][2] + "&nbsp;&nbsp;<span class='num'>[" + tagSort[s.type][i][1] + "]</span></li>";
		};
		tagString += "</ul>";
		
		$("#UserTagList").html(tagString);
	},

	sortTags: function(data, options) {
		var tmp = data;
		var s = {
			inverse: true,
			order: "freq",
			index: 0
		};
		
		if(options) {
			$.extend(s, options);
		}

		tmp.sort(function(a, b) {
				var result;
				if (s.order == "freq") {
					result = a[s.index] - b[s.index];
				} else {
					result = a[s.index].charCodeAt(0) - b[s.index].charCodeAt(0);
				}
				return s.inverse?(0 - result):result;
			}
		);
		return tmp;
	}
	*/
};
