﻿var Douban=new Object();

Douban.EventMonitor = function(){
	this.listeners = new Object();
}
Douban.EventMonitor.prototype.broadcast=function(widgetObj, msg, data){
	var lst = this.listeners[msg];

	if(lst != null){
		for(var o in lst){
			lst[o](widgetObj, data);
		}
	}
}
Douban.EventMonitor.prototype.subscribe=function(msg, callback){
	var lst = this.listeners[msg];
	if (lst) {
		lst.push(callback);
	} else {
		this.listeners[msg] = [callback];
	}
}
Douban.EventMonitor.prototype.unsubscribe=function(msg, callback){
	var lst = this.listener[msg];
	if (lst != null){
		lst = lst.filter(function(ele, index, arr){return ele!=callback;});
	}
}

// Page scope event-monitor obj.
var event_monitor = new Douban.EventMonitor();

function load_event_monitor(root) {
	var re = /a_(\w+)/;
	var fns = {};
	$(".j", root).each(function(i) {
		var m = re.exec(this.className);
		if (m) {
			var f = fns[m[1]];
			if (!f) {
				f = eval("Douban.init_"+m[1]);
				fns[m[1]] = f;
			}
			f && f(this);
		}
	});
}

$(function() {
	load_event_monitor(document);
});

Douban.prettify_form = function(form) {
	$('input:submit', form).each(function(i) {
		var btn = $('<a href="#" class="butt"></a>').text($(this).val());
		btn.click(function() {
			cleanTip();
			form.submit();
			return false;
		});
		$(this).hide().after(btn);
	});
}


var get_form_fields = function(form) {
	var param = {};
	$(':input', form).each(function(i){
		var name = this.name;
		if (this.type == 'checkbox') {
			if (this.checked) param[name] = this.value;
		} else if (this.type == 'submit'){
			if (/selected/.test(this.className)) param[name] = this.value;
		} else {
			if (name) param[name] = this.value;
		}
		//alert(this.name)
	});
	return param;
}

//
var remote_submit_json = function(form, func) {
	$.post(form.action, get_form_fields(form), function(ret){
		var json = eval('('+ret+')'); func(json);
	});

}


//
//var remote_submit_json = function(form, func) {
//	var fvalue = get_form_fields(form);
	//alert(fvalue['err']);
//	if(fvalue['err'] == undefined){
//		$(':submit',form).attr('disabled', 1);
//		$('textarea',form).attr('disabled', 1);
//		$.post(form.action, fvalue, function(ret){
//			var json = eval('('+ret+')'); func(json);
//		});
//	}
//}




/* entry vote button */
Douban.init_evb = function(o) {
	var eid = $(o).attr("id").split("-")[1];
	$(o).submit(function() {
		var url = "/j/entry/" + eid + "/vote";
		$.post(url, function(ret) {
			var r = eval("("+ret+")");
			event_monitor.broadcast(this, "entry_"+eid+"_voted", r);
			$(o).html("你的投票已经提交，谢谢。")
			$("#nf-"+eid).hide();
			$("#nf_s-"+eid).hide();
		});
		return false;
	});
}

/* entry vote count */
Douban.init_evc = function(o) {
	var eid = $(o).attr("id").split("-")[1];
	event_monitor.subscribe("entry_"+eid+"_voted", function(caller, data) {
		var count = data.rec_count;
		if (count) {
			$(o).html(""+count+"人推荐").removeClass("hidden");
		}
	});
}

/* entry nointerest button */
Douban.init_enb = function(o) {
	var eid = $(o).attr("id").split("-")[1];
	$(o).submit(function() {
		var url = "/j/entry/" + eid + "/nointerest";
		$.post(url, function(ret) {
			$(o).html("你的投票已经提交，谢谢。");
			$("#a_evb-"+eid).hide();
			$("#evb_s-"+eid).hide();
		});
		return false;
	});
}

/* blog entry folding */
Douban.init_bef = function(o) {
	var eid = $(o).attr('id').split('entry-')[1];
	var unfolder = $('.unfolder',o);
	var folder = $('.folder',o);
	var s = $('.entry-summary',o);
	var f = $('.entry-full',o);
	
	unfolder.hover(function(){
		$(this).find("img").attr("src","../homopic/arrow0.gif");
	},function(){
		$(this).find("img").attr("src","../homopic/arrow2.gif");
	});
	folder.hover(function(){
		$(this).find("img").attr("src","../homopic/arrow1.gif");
	},function(){
		$(this).find("img").attr("src","../homopic/arrow3.gif");
	});

	unfolder.click(function(){
		if(f.text() == ""){
			var loadtip = $('<div class="loadtip">正在载入...</div>');
			var loadhl = setTimeout(function(){$('.source',o).before(loadtip);}, 200);
			var url = '/j/entry/'+eid+'/';
			$.getJSON(url, function(j){
				clearTimeout(loadhl);
				loadtip.hide();
                $.post(url+'view', {});
				f.html(j.content).find('a').attr('target','_blank');
				f.show();
				s.hide();
			});
		}else{
			f.show();
			s.hide();
		}
		unfolder.hide();
		folder.show();
		return false;
	});
	folder.click(function(){
		s.show();
		f.hide();
		folder.hide();
		unfolder.show();
	});
}

Douban.init_unfolder = function(o){
	$(o).click(function(){
		var rid = $(o).attr('id').split('-')[1];
	  //var url = '/j/review/'+rid+'/fullinfo';        
		var url = '/shop/fullinfo.asp?atid='+rid;
		$.getJSON(url, function(r) {
			$('#review_'+rid+'_short').hide();
			$('#review_'+rid+'_full').html(r.html);
			$('#review_'+rid+'_full').show();
			$('#af-'+rid).hide();
			$('#au-'+rid).show();
			load_event_monitor($('#review_'+rid+'_full'));
		});
		return false;
	});
	$(o).hover(function(){
		$(this).find("img").attr("src","../homopic/arrow0.gif");
	},function(){
		$(this).find("img").attr("src","../homopic/arrow2.gif");
	});
}

Douban.init_folder = function(o){
	$(o).click(function(){
		var rid = $(o).attr('id').split('-')[1];
		$('#review_'+rid+'_full').hide();
		$('#review_'+rid+'_short').show();
		$(o).hide();
		$('#af-'+rid).show();
	});
	$(o).hover(function(){
		$(this).find("img").attr("src","../homopic/arrow1.gif");
	},function(){
		$(this).find("img").attr("src","../homopic/arrow3.gif");
	});
}



/* blog entry voters folding */
Douban.init_bevf = function(o) {
	var eid = $(o).attr('id').split('bevs-')[1];
	var h = $('.voters_header',o);
	if (!h.length) return;
	h.hover(function(){$(this).addClass('clickable_title');},
		function(){$(this).removeClass('clickable_title');});
    var v = $('#vsl',o);
	var l = $('.link', o);
	var m = $('#more_voters',o);
    
    var fn = function(e) {
		var f = $(".mv",o);
		if (f.length) {
			var d = f.toggle().css('display');
			l.text(d=='none' ? "更多推荐者" : "隐藏");
			if (m.length)
				m.toggle().css('display');
		} else {
			t=$('<li>正在装载...</li>');
			if (v.length) {
				v.append(t);
			} else {
				h.after(v=$('<ul id="vsl" class="user-list pl indent"></ul>'));
				v.append(t);
			}
			var url = '/j/entry/'+eid+'/voters?start=8';
			$.getJSON(url, function(j) {
				t.css('display','none');
				t.before($(j.html));
				if (m.length) {
					m.css('display','none');
				} 
			});
			$('.link', o).text("隐藏");
		}
		return false;
	}
	h.click(fn);
	l.click(fn);
};


/* blog collection buttons beside blog icons */
var collect_blog = function(sid, interest, code, title, o) {
	var url = "/j/subject/"+sid+"/interest";
	$.post(url, {interest: code}, function(ret) {
		var html = "已将“"+title+"”加入到你的"+interest+"列表<br/>可点击页面顶部的“"+interest+"”查看";
		event_monitor.broadcast(o, 'blog-collected', {sid:sid});
		var s = $(o).parent();
		var oldhtml = s.html();
		s.html(html);
		s.addClass('alert');
		s.fadeOut(10000, function() {
			s.html(oldhtml);
			s.removeClass('alert');
			s.show();
		});
	});
};
Douban.init_bcb = function(o) {
	var sid = $(o).prev().attr('href').split('/')[2]
	var title = $(o).prev().text();

	$(o).html('<a href="javascript:void(0)" class="gact" title="加入到我必看的blog">必看</a> <a href="javascript:void(0)" class="gact" title="加入到我关注的blog">关注</a>');
	event_monitor.subscribe('blog-collected', function(caller, data){
		if (data.sid == sid) {
			$(o).html("");
		}
	});

	$('a:first', o).click(function() {
		collect_blog(sid, "必看", 'do', title, o);
		return false;
	});
	$('a:last', o).click(function() {
		collect_blog(sid, "关注", 'collect', title, o);
		return false;
	});
}

Douban.init_guidelink = function(o) {
	$(o).click(function() {
		window.open('/help/guide1', '', 'width=640,height=400');
		return false;
	});
};

Douban.init_closelink = function(o) {
	$('<a href="#">关闭</a>').appendTo($(o)).click(function() {
		window.close();
		return false;
	});
};

function ext_links() {
	es = $('.entry-summary');
	es.each(function (i) {
		var a = $(es[i]).find('a');
		a.each(function (j) {
			a[j].target = '_blank';
		});
	});
}

Douban.init_confirm_link = function(o) {
	$(o).click(function(){
		var text = $(this).attr('title') || $(this).text();
		return confirm("真的要"+text+"?");
	});
}

var populate_tag_btns = function(title, div, tags, hash){
	if (tags.length) {
		var p = $('<p style="line-height:180%" class="pl">'+title+'<br/></p>');
		$.each(tags, function(i,tag) {
			var btn = $('<span class="tagbtn"/>').addClass(hash[tag.toLowerCase()]?'rdact':'gract').text(tag);
			p.append(btn).append(' &nbsp; ');
		});
		div.append(p);
	}
}

Douban.init_interest_form = function(form) {
	$(":submit",form).click(function(){
		$(this).addClass('selected');
	});
	var btns = {}, selected = {};
	var select = function(tl) {
		if (btns[tl]) {
			selected[tl] = true;
			$.each(btns[tl], function(i, btn) {
				$(btn).removeClass('gract').addClass('rdact');
			});
		}
	}
	var deselect = function(tl) {
		if (btns[tl]) {
			delete selected[tl];
			$.each(btns[tl], function(i, btn) {
				$(btn).removeClass('rdact').addClass('gract');
			});
		}
	}
	var update = function() {
		var tags = $.trim(form.tags.value.toLowerCase()).split(' '), hash = {};
		$.each(tags, function(i, t){
			if (t != '') { select(t); hash[t] = true; }
		});
		for (t in selected) { if (!hash[t]) deselect(t) }
	};

	update();
	form.tags.focus();

	$(form).submit(function() {

		//var sid = $(this).attr('action').split('/')[3];
		var sid = $(this).attr('action').split('?bookid=')[1];
		remote_submit_json(this,function(data){
			//***原来有的代码，没有执行的意思，留下权为备忘 ******
			$("#collect_form_"+sid).html('') 
			if ($('#src_pbtn', form).length) { 
				window.location.href = window.location.href.split('?')[0];
			}else{
				close_dialog();
			}
			//*********************************************
		});
			$('input', '#submits').hide();
			$('td', '#submits').append('<span class="m">正在保存...</span>');

			setTimeout(function(){
				$('#dialog').fadeOut(close_dialog,function(){
						window.location.href = window.location.href;
					});
			},400);
			
		//return true ;
		return false;
	});
	
	$(form.cancel).click(function(){
	    var sid = $(form).attr('action').split('/')[3];	    
		$("#collect_form_"+sid).html('');
	});

	$('.tagbtn', form).each(function(i){
		var tl = $(this).text().toLowerCase();
		if (btns[tl]) btns[tl].push(this);
		else btns[tl] = [this];
	}).click(function(){
		var tag = $(this).text();
		var tags = $.trim(form.tags.value).split(' '), present=false, tl=tag.toLowerCase(), i;
		tags = $.grep(tags, function(t, i){
			if (t.toLowerCase() == tl) {
				deselect(tl); present=true; return false;
			} else return true;
		});
		if (!present) { tags.push(tag); select(tl); }
		var content = tags.join(' ');
		form.tags.value = (content.length > 1) ? content+' ' : content;
		form.tags.focus();
	});

	$(form.tags).keyup(update);
}

Douban.init_addchecked = function(o){
//var addchecked = function(o) {
	//alert("OK");
	$("input[@name=submit_vi]").click( function () {
			var checked_val = $("input[@name=submit_vi][@checked]").val();
			$("input[@name=interest]").val(checked_val)
			} ); 
}

Douban.init_stars = function(o){
	var ratewords = {1:'很差', 2:'较差', 3:'还行', 4:'推荐', 5:'力荐'};
	var lighten_stars = function(i) {
		var rating = $(':hidden', o).attr('value') || 0;
		$('#rating #stars img', o).each(function(j){
			this.src = '../homopic/' + ((j<i) ? 'sth' : ((j<rating) ? 'st' : 'nst')) + '.gif';
		});
		if (i != 0) {
			$('#rating #rateword', o).text(ratewords[i]);
		} else {
			$('#rating #rateword', o).text(rating ? ratewords[rating] : '');
		}
	}

	lighten_stars(0);
	$('#rating img', o).mouseover(function(){
		lighten_stars(this.id.charAt(4));
	});
	if($(':hidden', o).attr('name') == 'rating'){
		$('#rating img', o).click(function(){
			var rating = this.id.charAt(4);
			$(':hidden', o).attr('value', rating);
			lighten_stars(rating);
		});
	}
	$('#rating #stars', o).mouseout(function(){
		lighten_stars(0);
	});
}

var voteuse_act = function(useful, id, type) {
	if (useful) {
		url = "/j/" + type + "/" + id + "/useful";
	} else {
		//url = "/j/review/" + id + "/useless";
		url = "review_tuopiao.asp?oryes=0&review_id="+ id;
	}
	
	$.post(url, {}, function(){
	//$.post(url, {}, function(sjson){
		$('#voteuse_'+id).html('<span class="m gtleft">你的投票已经提交，谢谢。</span>');
		//var ret = eval('('+sjson+')');
		//if (ret.result) {
			//$('#voteuse_'+id).html('<span class="m gtleft">你的投票已经提交，谢谢。</span>');
			//$('#userate_'+id).html('<p id="userate_%s" class="pl">' + ret.usecount + '/' + ret.totalcount + '的人觉得此评论有用:</p>');
		//}
		
		return false;
	});
}


var voteuseful = function(id) {
	var _ = id.split('-');
    if(_[0]=='d'){
       var type = "doulist";
    }
    else{
       var type = "review";
    }
	return voteuse_act(true, _[1], type);
}
var voteuseless = function(id) {
	var _ = id.split('-');

    if(_[0]=='d'){
		var type = "doulist";
    }
    else{
		var type = "review";
    }
		
	return voteuse_act(false, _[1], type);

}

/* show add contact*/
Douban.init_show_add_contact = function(o) {    
    var uid = $(o).attr('id').split('showac_')[1];
    $(o).click(function() {
            url="/j/people/"+uid+"/contactform";
		    $.get(url, {}, function(ret) {
			    contact_form_update(ret, uid);
        	});
        	return false;
		});
		
}

Douban.init_tries_to_listen = function(o) {
    $(o).click(function(){
        var isFF=!document.all;
        var w = 384;
        var h = 450;
        var left = (screen.width-w)/2;
        var top = isFF?(screen.height-h)/2:50;
        window.open($(o).attr('href'),'','width='+w+',height='+h+',top='+top+',left='+left+',scrollbars=0,resizable=0,status=1');
        return false;
    });
}

var contact_form_update = function(data, uid) {
		$("#divac").html(data);		
		$("#contact_message").keyup(function(){
		    if($("#contact_message")[0].value=="")		    
		    {$("#captcha").hide();}
		    else{$("#captcha").show();}
		        
		});
		$("#submitac").submit(function(form){
		    form.action = "/j/people/"+uid+"/contact";
		    remote_submit_json(form,function(r) {			    
			    if (r['return'])
			    {$("#mycontact").html(r['html'])}
			    else{contact_form_update(r['html'], uid);}			    
        	});
        	return false;
		});
		$("#cancelac").click(function(){		    
		    $("#divac").html("");
		});
}

Douban.init_review_full = function(o) {
    var i = $(o).attr('id').split('_');
    var rid = i[1];
    var stype = i[2];
    $('.link', o).click(function(){
        var url = '/j/review/'+rid+'/'+stype;       
        $.getJSON(url, function(r) {
            $(o).html(r.html);
            load_event_monitor($(o));
        });
        return false;
   });
}

Douban.init_show_login = function(o){
    $(o).click(function(){
        return pop_win.load('/shop/login_user.asp')
    });
}

Douban.init_show_logind = function(o){
    $(o).click(function(){
        return pop_win.load('../shop/login_user.asp')
    });
}

var set_cookie = function(dict, days){
    days = days || 30;
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    for (var i in dict){
        document.cookie = i+"="+dict[i]+expires+"; path=/";
    }
}

function get_cookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

Douban.init_hideme = function(o){
    $(o).click(function(){
        $(this).parent().parent().parent().hide();
    });
}

Douban.init_more = function(o){
    $(o).click(function(){
        lastObj = $(this).prev().find("input");
        ids = /(.*_)(\d+)$/.exec( lastObj.attr("id"));
        id = ids[1] + (parseInt(ids[2]) + 1);
        a = lastObj.clone();
		a.attr("value","");
        $(this).before('<br/>').before(a);
        a.attr('id',id).attr('name',id).wrap('<span></span>');
    })
}

Douban.init_search_text = function(o){
	//alert($(o).attr("value"))
	if($(o).attr("value") == "" || $(o).attr("value") == $(o).attr("title")){
	//if($(o).attr("value") == undefined || $(o).attr("value") == $(o).attr("title")){	
		$(o).addClass("greyinput");
		$(o).attr("value",$(o).attr("title"));
	}
	$(o).focus(function(){
		if($(this).attr("value") == $(this).attr("title")){
			$(this).removeClass("greyinput");
			$(this).attr("value","");
		}
	});
	$(o).blur(function(){
		if($(this).attr("value") == ""){
		//if($(this).attr("value") == undefined){
			$(this).addClass("greyinput");
			$(this).attr("value",$(this).attr("title"));
		}
	});
}

Douban.init_search_text2=function(b){if(!b.value||b.value==b.title){$(b).addClass("greyinput");b.value=b.title}$(b).focus(function(){$(b).removeClass("greyinput");if(b.value==b.title){b.value=""}});$(b).blur(function(){if(!b.value){$(b).addClass("greyinput");b.value=b.title}})}


Douban.init_checkreg = function(o){
	$(o).find('.butt').click(function(){
		var check = true;
		$(o).find('input').each(function(){
			if(this.type!='submit' && this.type!='button'){
				if(this.value == ''){
					$(this).next().css('display','inline');
					check = false;
				}else{
					$(this).next().css('display','none');
				}
			}
		});
		return check;
	});
}
function cleanTip(){
	if($("#page_focus")[0].title == $("#page_focus")[0].value){
		$("#page_focus")[0].value = '';
	}
}
Douban.init_submit_link = function(o){
	$(o).click(function(){
		$(o).parent().submit();
	});
}

var nowmenu = null;
var hidemenu = function(a){
	a.find('.down').css('display','inline');
	a.find('.up').hide();
	a.next().hide();
	nowmenu = null;
	$('body').unbind('mousedown');
}
var openmenu = function(a){
	if(nowmenu != null){
		hidemenu(nowmenu);
	}
	a.find('.up').css('display','inline');
	a.find('.down').hide();
	a.next().show();
	nowmenu = a;
	$('body').mousedown(function(){
		if(a.parent().attr('rel') != 'on'){
			hidemenu(a);
		}
	});
}
$(function(){
	$("a","#dsearch").each(function(){
		$(this).click(function(){
			urls = $(this).attr("href").split("?cat=");
			$("#ssform").attr("action", urls[0]);
			if(urls[1] != undefined){
				$('<input type="hidden" name="cat" value="' + urls[1] + '" />').appendTo($("#ssform"));
			}
			cleanTip();
			$("#ssform").submit();
			return false;
		});
	});
    $('.arrow').click(function(){
        if($(this).find('.up').is(':hidden')){
			openmenu($(this));
		}else{
            hidemenu($(this));
        }
		this.blur();
    });

    $('.arrow').parent().hover(function(){
        $(this).attr('rel','on');
    },function(){
        $(this).attr('rel','off');
    })
})
var show_dialog = function(div) {
	if (typeof document.body.style.maxHeight == "undefined") { // if IE6
		$('body', 'html').css({height: '100%', width: '100%'});
		$('html').css('overflow', 'hidden');
	}
	if ($('#overlay').length == 0) {
		$('body').append('<div id="overlay"></div><div id="dialog"></div>');
		$('#overlay').click(close_dialog);
	}
	if(div != null){
		$('#dialog').empty().append(div);
	}else{
		$('#dialog').html("<div class='loadpop'>正在载入，请稍候...</div>");
	}
	document.onkeyup = function(e){
		if (e == null) { // ie
			keycode = event.keyCode;
		} else { // mozilla
			keycode = e.which;
		}
		if (keycode == 27) { // close
			close_dialog();
		}
	}
}


var close_dialog = function() {
	$('#overlay').unbind('click');
	$('#dialog,#overlay').remove();
	if (typeof document.body.style.maxHeight == "undefined") {//if IE6
		$('body','html').css({height: 'auto', width: 'auto'});
		$('html').css('overflow', '');
	}
	document.onkeydown = '';
	return false;
}

Douban.init_collect_btn = function(o) {
	$(o).click(function(){
		if($('#hiddendialog').length){
			show_dialog($('#hiddendialog').html());
			load_event_monitor($('#dialog'));
		}else{
			show_dialog(null);
			var _ = $(this).attr('name').split('-');
			var btn_type = _[0];
			var sid = _[1];
			var interest = _[2]
            var rating = _[3]
			//var url = '/j/subject/'+sid+'/interest';
			var url = 'interest.asp?star_res='+rating+'&bookid='+sid+'&interest='+interest;
		//alert(url);
			var urltt = url;
			$.get(url, rating && {rating:rating} , function(ret) {
				if($('#dialog').length){
					var r = eval('('+ret+')');
					var html = $('<div></div>').html(r['html']);
					var tags = r['tags'];
					var content = tags.join(' ');
					$('input[@name=tags]', html).val((content.length > 1)? content + ' ' : content)
					var hash = {};
					$.each(tags, function(i,tag){hash[tag.toLowerCase()]=true;});
					populate_tag_btns('我的标签:', $('#mytags', html), r['my_tags'], hash);
					populate_tag_btns("清真书局成员常用的标签:", $('#populartags', html), r['popular_tags'], hash);
					if (btn_type == 'pbtn') $('form', html).append('<div id="src_pbtn"></div>'); //标记中追加
					$('#dialog').html(html);
					load_event_monitor(html);
				}
			});
		}
		return false;
	});
}

Douban.init_nine_collect_btn = function(o) {
    $(o).click(function(){
        var _ = $(this).attr('name').split('-');
        var btn_type = _[0];
        var sid = _[1];
        var interest = _[2];
        var url = '/j/subject/'+sid+'/interest';
        $.getJSON(url, interest && {interest: interest}, function(r) {
            var html = $('<div></div>').html(r.html);
            var tags = r.tags;
            var content = tags.join(' ');
            $('input[@name=tags]', html).val((content.length > 1)? content + ' ' : content);
            var hash = {};
            $.each(tags, function(i,tag){hash[tag.toLowerCase()]=true;});
            populate_tag_btns('我的标签(点击添加):', $('#mytags', html), r.my_tags, hash);
            populate_tag_btns("清真书局成员常用的标签(点击添加):", $('#populartags', html), r.popular_tags, hash);
            if (btn_type == 'pbtn')
                $('form', html).append('<div id="src_pbtn"></div>');
            $("#collect_form_"+sid).html("").append('<p class="ul"></p>').append(html);         
            load_event_monitor($("#collect_form_"+sid));
        });
        return false;
    });
}

Douban.init_rec_btn= function(o) {
	var _ = $(o).attr('name').split('-');
	//var url = '/j/recommend';
	var url = 'sava_rec.asp';
	var rdialog = 'rdialog-' + _[1] + '-' + _[2];
	
	var uid;
	var f = function(){
		uid = (_[1] == 'I')? $('input',$(o).parent())[0].value : _[2];
		var fcs = function(type){
			if(type == 'I'){
				var s = $('.text','#dialog');
				if(s.length)s[0].focus();
			}else{
				$('#dialog').find(':submit').focus();
			}
		}
		if($('#' + rdialog).length){
			show_dialog($('#' + rdialog).html());
			load_event_monitor('#dialog');
			fcs(_[1]);
		}else{
			$.getJSON(url, {type:_[1], uid:uid}, function(r){
				show_dialog(r.html);
				if(_[1]!='I'){
					var rechtml = $('<div id="'+rdialog+'"></div>');
					rechtml.html(r.html).appendTo('body').hide();
				}
				load_event_monitor('#dialog');
				fcs(_[1]);
			});
		}
		return false;
	}
	$(o).click(f);
	if(_[1] == 'I'){
		$(o).parent().parent().submit(f);
	}
}


Douban.init_rec_form = function(form) {
	///$(form).submit(function() {		
		//alert("OK");
		//remote_submit_json(this);
		//$('#dialog').html('<div class="loadpop m">推荐已提交</div>');
		//	setTimeout(function(){
		//		$('#dialog').fadeOut(close_dialog);
		//	},400);
	//	return false;
	//});

	//
	form.onsubmit = function(form) {		
        remote_submit_json(this);
		$('#dialog').html('<div class="loadpop m">推荐已提交</div>');
			setTimeout(function(){
				$('#dialog').fadeOut(close_dialog);
			},400);
		return false;
	} 
	set_len_limit(form, 140);
}


var set_len_limit = function(form, limit){
	var s = $(form).find(':submit');
	var oldv = s.attr('value');
	var check = function(){
		if(this.value != undefined && this.value.length > limit){
			s.attr('disabled',1).attr('value','评论字数不能超过'+limit+'字');
		} else {
			s.attr('disabled',0).attr('value', oldv);
		}
	}
	$('textarea', form).focus(check).blur(check).keydown(check).keyup(check);
}

Douban.init_rec_reply = function(o){
	var _ = $(o).attr('name').split('-');
	var url = '/j/rec_comment';
	if($(o).attr('rev') == undefined){
		$(o).attr('rev', 'unfold');
	}
	$(o).click(function(){
		if($(o).attr('rev') != 'unfold'){
			$(o).parent().parent().next().remove();
			$(o).html($(o).attr('rev'));
			$(o).attr('rev', 'unfold');
		}else{
			$.getJSON(url, {rid: _[2]}, function(r){
				$('<div class="recreplylst"></div>').insertAfter($(o).parent().parent()).html(r.html);
				load_event_monitor($(o).parent().parent().next());
				$(o).attr('rev', $(o).html()).html('隐藏回应');
			})
		}
		return false;
	})
}

Douban.init_reply_form = function(form){
	$(form).attr('action', $(form).attr('rev'));
	$(form).submit(function(){
		remote_submit_json(this, function(r){
			var replst = $(form).parent();
			$(replst).html(r.html);
			load_event_monitor(replst);
			var a = $('<a href="javascript:void(0)">添加回应</a>');
			$('form', replst).hide().after(a);
			a.click(function(){
				$(this).prev().show();
				$(this).remove();
			})
		});
		$(':submit',form).attr('disabled', 1);
		return false;
	})
	set_len_limit(form, 140);
}
Douban.init_noti_form = function(form){
	$(":submit",form).click(function(){
		$(this).addClass('selected');
	});
	$(form).attr('action','/j/notification/');
	$(form).submit(function(){
		action_ext = "?nid="+form.nid.value + "&extra="+form.extra.value;
		form.confirm.disabled = true;
		if (/selected/.test(form.confirm.className)) {action_ext = action_ext+"&confirm=y";}
		form.ignore.disabled = true;
		if (/selected/.test(form.ignore.className)) {action_ext = action_ext+"&ignore=y";}
		form.action = form.action+action_ext;
		remote_submit_json(this, function(r){
			$(form).parent().html(r.html);
		});
		return false;
	});
}

Douban.init_unfoldermulu = function(o){
	$(o).click(function(){
		$(o).click( function(r) {
			$('#mulu_short').hide();
			$('#mulu_full').html(r.html);
			$('#mulu_full').show();
			$('#af').hide();
			$('#au').show();
			load_event_monitor($('#mulu_full'));
			});
		return false;
	});

}

Douban.init_foldermulu = function(o){
	$(o).click(function(){
		$('#mulu_full').hide();
		$('#mulu_short').show();
		$(o).hide();
		$('#af').show();
	});	

}

Douban.init_tagedit = function(o){
	$(o).click(function(){
		$("#tagdel").hide()
		$("#tagedit").hide()
		$("#tag_from").show()
		return false;
	});
}

Douban.init_tagedit_from = function(form){
	$(form).submit(function() {
		var upedit_tags=$('#upedit_tags')[0].value;
		var _ = form.action.split('?tags=')[1];
		$.post("mybook.asp",{action:"edit",upedit_tags:upedit_tags,tags:_}, function(){
			$(':submit',form).attr('disabled', 1);
			$(':button',form).attr('disabled', 1);
			window.location.href = "mybook.asp?tags="+encodeURI(upedit_tags) ;
	 	 });
	return false;
	});
}

function js_parser(htm){
    var tag="script>",begin="<"+tag,end="</"+tag,pos=pos_pre=0,result=script="";
    while(
        (pos=htm.indexOf(begin,pos))+1
    ){
        result+=htm.substring(pos_pre,pos);
        pos+=8;
        pos_pre=htm.indexOf(end,pos);
        if(pos_pre<0){
            break;
        }
        script+=htm.substring(pos,pos_pre)+";";
        pos_pre+=9;
    }
    result+=htm.substring(pos_pre,htm.length);
    
    return {
        htm:result,
        js:function(){eval(script)}
    };
}


function center(elem){
    return {
        left:(document.documentElement.offsetWidth-elem.offsetWidth)/2+'px',
        top:(document.documentElement.clientHeight-elem.offsetHeight)*.45+'px'
    }
}

function pop_win(htm){
    if(!window.__pop_win){
        var pop_win_bg=document.createElement("div");
        pop_win_bg.className="pop_win_bg"
        document.body.appendChild(pop_win_bg)
        var pop_win_body=document.createElement("div");
        pop_win_body.className="pop_win";
        document.body.appendChild(pop_win_body)
        __pop_win={
            bg:pop_win_bg,body:pop_win_body,
            body_j:$(pop_win_body),bg_j:$(pop_win_bg)
        };
    }
    var b=__pop_win.body,body_j=__pop_win.body_j,dom=js_parser(htm);
    b.innerHTML='<a onclick="pop_win.close()" href="javascript:;" class="pop_win_close">X</a>'+dom.htm;
    body_j.css({display:"block"}).css(center(b)).css({visibility:"visible",zIndex:101});
    dom.js();
    __pop_win.bg_j.css({
        height:b.offsetHeight+20+"px",
        width:b.offsetWidth+20+"px",
        left:b.offsetLeft-10+"px",
        top:b.offsetTop-10+"px",
        zIndex:100
    }).show()
    
    if(!window.XMLHttpRequest){
        __pop_win.bg.style.top=""
    }
}
pop_win.close=function(){
    __pop_win.bg.style.display="none";
    __pop_win.body.innerHTML="";
    __pop_win.body.style.display="none";
}

pop_win.load=function(url,cache){
    pop_win("加载中,请稍等...")
    $.ajax({url:url,success:pop_win,cache:cache||false})
    return false
}

var new_remote_submit_json = function(form, func, disable, action) {
    var fvalue = get_form_fields(form);
    if(fvalue['err'] != undefined) return;
    $(':submit,:input',form).attr('disabled',disable==false?0:1);
    var act = action || form.action;
	
    $.post(act, fvalue, function(ret){
        var json = eval('('+ret+')'); func(json);
		//alert(json.datename)
    });
}

Douban.init_upform_form = function(form) {					  
	form.onsubmit = function() {	
        new_remote_submit_json(this, function(data){
			var count = data.datename;
			$('#dialog').html('<div class="loadpop m">'+count+'，请等待数据更新！</div>');
			setTimeout(function(){
				$('#dialog').fadeOut(close_dialog,function(){
					window.location.href = window.location.href;
					});
			},1000);
			});
		return false;
	} 
}
