﻿
function ch_co(ti,va)
  {
   ti.className=va;
    }



var Xclub=new Object();

Xclub.EventMonitor = function(){
	this.listeners = new Object();
}
Xclub.EventMonitor.prototype.broadcast=function(widgetObj, msg, data){
	var lst = this.listeners[msg];

	if(lst != null){
		for(var o in lst){
			lst[o](widgetObj, data);
		}
	}
}
Xclub.EventMonitor.prototype.subscribe=function(msg, callback){
	var lst = this.listeners[msg];
	if (lst) {
		lst.push(callback);
	} else {
		this.listeners[msg] = [callback];
	}
}
Xclub.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 Xclub.EventMonitor();

function load_event_monitor(root) {
	var re = /a_(\w+)/;
	var fns = {};
	$(".j", root).each(function(i) {
		var m = re.exec(this.className); // 查找 a_ 开始的Class
		if (m) {
			var f = fns[m[1]];
			if (!f) {
				f = eval("Xclub.init_"+m[1]);
				//alert("Xclub.init_"+m[1]);
				fns[m[1]] = f;
			}
			f && f(this);
		}
	});
}

$(function() {
	load_event_monitor(document);
});

Xclub.prettify_form = function(form) {
	$('input:submit', form).each(function(i) {
		var btn = $('<a href="#" class="butt"></a>').text($(this).val());
		btn.click(function() {
			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 (name) param[name] = this.value;
		}
	});
	return param;
}

var remote_submit_json = function(form, func) {
	$.post(form.action, get_form_fields(form), function(ret){
		var json = eval('('+ret+')');
		func(json);
	});
}

/* entry vote button */
Xclub.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("你的投票已经提交，谢谢。")
		});
		return false;
	});
}

/* entry vote count */
Xclub.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");
		}
	});
}

/* blog entry folding */
Xclub.init_bef = function(o) {
	var eid = $(o).attr('id').split('entry-')[1];
	var h = $('.entry-header', o);
	if (!h.length) { h = $('.entry-header-compact', o); }
	var t = $('a.pl2', h);
	h.hover(function(){$(this).addClass('clickable_title');},
		function(){$(this).removeClass('clickable_title');});
	var f = function(e){
		if (!e) var e = window.event;
		e.cancelBubble = true;
		if (e.stopPropagation) e.stopPropagation();
		if ($(this).is('a:not(.m)')) return true;

		t.toggleClass('m').toggleClass('bold');
		if ($('.entry-full', o).length) {
			var d = $('.entry-full', o).toggle().css('display');
			$('.link', o).text(d=='none' ? "展开全文" : "缩进全文");
			$('.a_hesl', o).css('display', d);
			if (d == 'none' && $(this).is('.link'))
				window.location='#entry-'+eid;
		} else {
			var p = $('.entry-summary', o);
			if (p.length) {
				p.removeClass('entry-summary').addClass('entry-full');
			} else {
				h.after(p=$('<p class="entry-full"></p>'));
			}
			p.append('<div class="loading">正在装载...</div>');
			var url = '/j/entry/'+eid+'/';
			$.getJSON(url, function(j) {
				p.html(j.content).find('a').attr('target', '_blank');
				o._status = 'loaded';
				$('.link', o).text("缩进全文");
				$('.a_hesl', o).show();
				if (!$('#entry'+eid+'.read-entry').length) {
					$.post(url+'view', {});
				}
			});
		}
		return false;
	};
	h.click(f);
	$('a', h).click(f);
	$('.link', o).click(f);
};

/* 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();
		});
	});
};
Xclub.init_bcb = function(o) {
	var a = $('../../.entry-icon/a[img]', o);
	var sid = a.attr('href').split('/')[2];
	var title = a.attr('title');

	$(o).html('<a href="#" class="gact" title="加入到我必看的blog">必看</a> <a href="#" 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;
	});
}

Xclub.init_guidelink = function(o) {
	$(o).click(function() {
		window.open('/help/guide1', '', 'width=640,height=400');
		return false;
	});
};

Xclub.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';
		});
	});
}

Xclub.init_confirm_link = function(o) {
	$(o).click(function(){
		var text = $(this).attr('title') || $(this).text();
		return confirm("真的要"+text+"?");
	});
}

Xclub.init_upfile_btn = function(o) {
	$(o).click(function(){
		var res_id = $(this).attr('id');
		var html = "<form action=\"/subject/"+res_id+"\" method=\"POST\" enctype=\"multipart/form-data\" class=\"j a_upfilepic_form\"><input name=\"res_id\" type=\"hidden\" value=\""+res_id+"\">"
		+ "<table width=\"100%\" border=\"0\">" +
  			"<tr>" +
    		"<td><h2>选择要上传的图片 ......</h2></td>" +
  			"</tr>"+
			"<tr>" +
    		"<td valign=\"top\"><input type=\"file\" name=\"uploadpic\" onpropertychange=\"showimg.src=this.value\" size=\"38\"/><br>注:仅支持.jpg/.gif/.png格式图片<br/><h2>图片描述:</h2><textarea name=\"ftext\" cols=\"40\" rows=\"5\"></textarea><br/><input name=\"show\" type=\"checkbox\" value=\"1\"/>我的真人秀</td>" +
    		"<td rowspan=\"3\"><img src=\"\" id=\"showimg\" width=\"100\" onerror=\"this.src='/pics/default.gif'\"></td>"+
  			"</tr>" +
  			"<tr>" +
    		"<td align='right'><br><input type=\"submit\" value=\"选好了,上传!\"/>&nbsp;<input type=\"button\" name=\"cancel\" value=\"-_-# 再传吧···\"/></td>" +
  			"</tr>"+
			"</table></form>";
		html = $('<div></div>').html(html); // 字串转html
		show_dialog(html);
		load_event_monitor(html);
		return false;
						});
	
	
}


Xclub.init_member_tj = function(o) {
	$(o).click(function(){
		
		
						
		var res_id = $(this).attr('id');
		var html = "<form action=\"/subject/"+res_id+"\" method=\"POST\" enctype=\"multipart/form-data\" class=\"j a_upfilepic_form\"><input name=\"res_id\" type=\"hidden\" value=\""+res_id+"\">"
		+ "<table width=\"100%\" border=\"0\">" +
  			"<tr>" +
    		"<td><h2>推荐 ......</h2></td>" +
  			"</tr>"+
 			"<tr>" +
    		"<td>请输入已有的资源编号:<input type='text' name='rid'><input type='hidden' name='res_id' value='"+res_id+"'><input type='hidden' name='action' value='tj'><input type='submit' name='submit' value='推荐'></td>" +
  			"</tr>"+
			"</table></form>";
		html = $('<div></div>').html(html); // 字串转html
		show_dialog(html);
		//load_event_monitor(html);
		return false;
						});
	
	
}



Xclub.init_upfilepic_form = function(form) {
	$(form.cancel).click(close_dialog);
}


Xclub.init_collect_btn = function(o) { // 处理投票的
	$(o).click(function(){
		var _ = $(this).attr('id').split('-');
		var btn_type = _[0];
		var sid = _[1];
		var interest = _[2];
		var url = '/j/subject/'+sid+'/interest_'+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("levix成员常用的标签:", $('#populartags', html), r.popular_tags, hash);
			if (btn_type == 'pbtn')
				$('form', html).append('<div id="src_pbtn"></div>');
			show_dialog(html);
			
			load_event_monitor(html);
		});
		return false;
	});
}

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);
	}
	$('#dialog').empty().append(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;
}

var populate_tag_btns = function(title, div, tags, hash){
	if (tags.length) {
		var p = $('<p style="line-height:180%">'+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);
	}
}



Xclub.init_interest_form = function(form) {
	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];
		$('#submits input', this).hide();
		$('#submits', this).append('<span class="m">正在保存...</span>');
		
		/*
		remote_submit_json(this, function(data){
			close_dialog();
			if ($('#src_pbtn', form).length) {
				window.location.href = window.location.href.split('?')[0];
			}
		});*/
		//return false;
		return true;
	});
	
	$(form.cancel).click(close_dialog);

	$('.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);

	var ratewords = {1:'很差', 2:'较差', 3:'还行', 4:'推荐', 5:'力荐'};
	var lighten_stars = function(i) {
		var rating = form.rating.value || 0;
		$('#rating #stars img', form).each(function(j){
			this.src = '/pics/' + ((j<i) ? 'sth' : ((j<rating) ? 'st' : 'nst')) + '.gif';
		});
		if (i != 0) {
			$('#rating #rateword', form).text(ratewords[i]);
		} else {
			$('#rating #rateword', form).text(rating ? ratewords[rating] : '');
		}
	}

	lighten_stars(0);

	$('#rating img', form).mouseover(function(){
		lighten_stars(this.id.charAt(4));
	}).click(function(){
		var rating = this.id.charAt(4);
		form.rating.value = rating;
		lighten_stars(rating);
	});
	$('#rating #stars', form).mouseout(function(){
		lighten_stars(0);
	});
}

var voteuse_act = function(useful, rid) {
	if (useful) {
		url = "/review/" + rid + "/useful";
	} else {
		url = "/review/" + rid + "/useless";
	}
	$.post(url, {}, function(sjson){
		var ret = eval('('+sjson+')');
		if (ret.result) {
			$('#voteuse_'+rid).html('<span class="m">你的投票已经提交，谢谢。</span>');
			$('#userate_'+rid).html('<p id="userate_%s" class="pl">' + ret.usecount + '/' + ret.totalcount + '的人觉得此评论有用:</p>');
		}
	});
}
var voteuseful = function(rid) {
	voteuse_act(true, rid);
}
var voteuseless = function(rid) {
	voteuse_act(false, rid);
}

/* show add contact*/
Xclub.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;
		});
		
}

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'])
			    {$("#divac").html(r['html'])}
			    else{contact_form_update(r['html'], uid);}			    
        	});
        	return false;
		});
		$("#cancelac").click(function(){		    
		    $("#divac").html("");
		});
}

Xclub.init_showPic = function(o) {    
    //var uid = $(o).attr('id').split('showac_')[1];
    $(o).click(function() {
			var imgPath = $(o).attr('src');
			imgPath = imgPath.replace("mpic","bpic");
			var htmlstr = "<div onClick='close_dialog();' style='background-color:#00CCFF; color:#FFFFFF; cursor:hand;'>点击关闭</div><center><img src='"+imgPath+"'/></center>";
			var html = $('<div></div>').html(htmlstr);
			show_dialog(html);
		});
		
}

Xclub.init_sendMsg = function(o) {
		var uid = $(o).attr('id').split('friend_')[1];
		
		html = "先打个招呼吧:<br><form method=\"POST\" class=\"j a_sendMsgForm\" id=\"submitac\"><textarea name=\"textarea\" cols=\"20\" rows=\"3\"></textarea><br/><input type=\"submit\" name=\"Submit\" value=\"确定\" /><input type=\"button\" name=\"cancel\" value=\"取消\" /></form>";
		
		html = $('<div></div>').html(html); // 字串转html
		
//		load_event_monitor(html);

		$(o).click(function() {
		$("#sendMsg").html(html);	
		return false;
			
						});
		
		$("#submitac").submit(function(form){
		    form.action = "/j/people/"+uid+"/friend";
		    remote_submit_json(form,function(r) {			    
			    $("#mycontact").html(r['html']);			    
        	});
        	return false;
		});

}

Xclub.init_show_add_friend = function(o) {
    var uid = $(o).attr('id').split('_')[1];
	var name = $(o).attr('id').split('_')[2];
    $(o).click(function() {
            url="/j/space/"+uid+"_"+encodeURIComponent(name)+"/friendform";
		    $.get(url, {}, function(ret) {
			    friend_form_update(ret, uid, name);
        	});
        	return false;
		});
		
}

var friend_form_update = function(data, uid, sname) {
		$("#divac").html(data);		
		$("#contact_message").keyup(function(){
		    if($("#contact_message")[0].value=="")		    
		    {$("#captcha").hide();}
		    else{$("#captcha").show();}
		        
		});
		$("#submitac").submit(function(form){
		    form.action = "/j/space/"+uid+"_"+sname+"/friend";
			
		    remote_submit_json(form,function(r) {	
		    		    $("#divac").html(r['html']);			    
        	});
        	return false;
		});
		$("#cancelac").click(function(){		    
		    $("#divac").html("");
		});
}

Xclub.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);
	});
}




Xclub.init_search_text = function(o){
	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") == undefined){
			$(this).addClass("greyinput");
			$(this).attr("value",$(this).attr("title"));
		}
	});
}

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');
    })
})



/* *
 * 检测密码强度
 * @param       string     pwd     密码
 */
function checkIntensity(pwd)
{
  var Mcolor = "#FFF",Lcolor = "#FFF",Hcolor = "#FFF";
  var m=0;

  var Modes = 0;
  for (i=0; i<pwd.length; i++)
  {
    var charType = 0;
    var t = pwd.charCodeAt(i);
    if (t>=48 && t <=57)
    {
      charType = 1;
    }
    else if (t>=65 && t <=90)
    {
      charType = 2;
    }
    else if (t>=97 && t <=122)
      charType = 4;
    else
      charType = 4;
    Modes |= charType;
  }

  for (i=0;i<4;i++)
  {
    if (Modes & 1) m++;
      Modes>>>=1;
  }

  if (pwd.length<=4)
  {
    m = 1;
  }

  switch(m)
  {
    case 1 :
      Lcolor = "2px solid red";
      Mcolor = Hcolor = "2px solid #DADADA";
    break;
    case 2 :
      Mcolor = "2px solid #f90";
      Lcolor = Hcolor = "2px solid #DADADA";
    break;
    case 3 :
      Hcolor = "2px solid #3c0";
      Lcolor = Mcolor = "2px solid #DADADA";
    break;
    case 4 :
      Hcolor = "2px solid #3c0";
      Lcolor = Mcolor = "2px solid #DADADA";
    break;
    default :
      Hcolor = Mcolor = Lcolor = "";
    break;
  }
  document.getElementById("pwd_lower").style.borderBottom  = Lcolor;
  document.getElementById("pwd_middle").style.borderBottom = Mcolor;
  document.getElementById("pwd_high").style.borderBottom   = Hcolor;

}

