/**
 * 反序列化函数
 * @author Poly 89490364a@gmail.com
 * @param {string} str
 * @return {object}
 */
function unParam(str)
{
	var exp=/[?#&^]([^=]+)=([^&$]+)/g;
	var result="";
	var pob={};
	while((result=exp.exec(str))!=null)
	{
		if(pob[result[1]])
		{
			if(typeof(pob[result[1]])=="string")
			{pob[result[1]]=[pob[result[1]],result[2]]}
			else
			{pob[result[1]].push(result[2])}
		}
		else
		{
			pob[result[1]]=result[2];
		}
	}
	return pob;
}

/**
 * 设置全局 AJAX 默认选项。
 */
$(function(){
	$.ajaxSetup({
		dataType:"json",
		timeout:"3000",
		type:"POST"
	});
});

/**
 * 不解释
 */
function toggleHover(){$(this).toggleClass("hover")}

/**
 * 设置星级
 */
function setStarLvl(){
	var star=$("img",this);
	var lvl=$("dfn",this).html().split(".");
	star.slice(0,lvl[0]).addClass("fullStar");
	if(parseInt(lvl[1]))
	{star.eq(lvl[0]).addClass("halfStar")}
}

/**
 * 初始化收藏弹出层。
 */
function col_dfn_init()
{
	var that=$(this);
	if (that.attr("initype") != "col_dfn") 
	{
		var popwin=that.parents(".popwin");
		var rel = popwin.data("relation");
		that.attr("initype", "col_dfn");
		$("dd", this).each(tagSelector);
		$("form", this).submit(function(e){
			var that = $(this);
			var event=new jQuery.Event("colset");
			event.param=that.serialize(); 
			event.url=that.attr("action");
			rel.trigger(event);
			popwin.hide();
			e.preventDefault();
		});
		$(".cancel",this).click(function(e){
			$(this).trigger("popdown");
			e.preventDefault();
		})
	}
}


/**
 * 初始化标签选择器。
 */
function tagSelector()
{
	var that=$(this);
	if (that.attr("initype") != "tagSelector") 
	{
		that.attr("initype", "tagSelector")
		var txtbox = $(".txtbox", this);
		var tags = $("a", this);
		tags.each(function(){
			var that = $(this);
			that.data("reg", new RegExp(that.html() + "(?=\\s|$)", "g"));
		});
		tags.click(function(e){
			var that = $(this);
			var str = txtbox.val();
			if (that.is(".selected")) {
				str = str.replace(that.data("reg"), "");
				that.removeClass("selected");
			}
			else {
				str = str + " " + that.html();
				that.addClass("selected")
			}
			txtbox.val(str.replace(/\s+/g, " ").replace(/^\s+|\s+$/, ""));
			that.blur();
			e.preventDefault();
		});
		txtbox.bind("change keyup", function(e){
			var that = $(this);
			var tester = that.val();
			tags.each(function(){
				var that = $(this);
				if (that.data("reg").test(tester)) {
					that.addClass("selected");
				}
				else {
					that.removeClass("selected");
				}
				that.data("reg").lastIndex = 0;
			});
		});
	}
}

/**
 * 初始ajax_detail
 */
function ajaxDetail()
{
	var that=$(this);
	if(that.attr("initype")!="ajaxDetail")
	{
		that.bind("show",show).bind("itemOn",function(){});
		var prev=$(".preview",this);
		var detail=$(".detail",this);
		prev.click(function(e){
			var that=$(this);
			if($(e.target).is(".btn"))
			{
				that.trigger("show").hide();
			}
		});
		detail.click(function(e){
			var that=$(this);
			if($(e.target).is(".btn"))
			{
				that.hide();
				prev.show();
				setTimeout(function(){that.trigger("itemOn");},0);
			}
		})
	}
	function show()
	{
		var that=$(this);
		if(detail.html())
		{
			detail.show();
			setTimeout(function(){that.trigger("itemOn");},0);
		}
		else
		{
			detail.load(that.attr("href"),function(){
				detail.show();
				setTimeout(function(){that.trigger("itemOn");},0);
			})
		}
	}
}

/**
 * 保存默认值
 */
function saveDef(){
	var that=$(this);
	if(!that.attr("source"))
	{
		that.attr("source",that.val());
		that.bind("checkClear",checkClear)
	}
	that.attr("default",that.val());
	that.val("");
}

/**
 * 读取默认值
 */
function loadDef(){
	var that=$(this);
	if(!$.trim(that.val()))
	{
		that.val(that.attr("default"));
	}
}

/**
 * 检查并清空初始值
 */
function checkClear()
{
	var that=$(this);
	if(that.attr("source")==that.val())
	{
		that.val("");
	}
}

/**
 * 检查是否登录。
 */
function checkLogin()
{
	$("#top_nav .popup").trigger("click");
}

/**
 * 过滤默认值
 */
function valFilter()
{
    var reg=/简述推荐理由/g
    $(":text").each(function(){
            var that=$(this);
            that.val(that.val().replace(reg,''));
        });
}

