/* <初始化部分 */
var Fanhall = new Object();

Fanhall.EventMonitor = function(){
	this.listeners = new Object();
}
Fanhall.EventMonitor.prototype.broadcast=function(widgetObj, msg, data){
	var lst = this.listeners[msg];
	if(lst != null){
		for(var o in lst){
			lst[o](widgetObj, data);
		}
	}
}
Fanhall.EventMonitor.prototype.subscribe=function(msg, callback){
	var lst = this.listeners[msg];
	if (lst) {
		lst.push(callback);
	} else {
		this.listeners[msg] = [callback];
	}
}
Fanhall.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 Fanhall.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("Fanhall.init_"+m[1]);
                fns[m[1]] = f;
            }
            f && f(this);
        }
    });
	/* 表单自动附加class */
	$('input[type="text"]').addClass('text');
	$('input[type="file"]').addClass('file');
	$('input[type="submit"]').addClass('submit');
}

$(function() {
	load_event_monitor(document);
});
/* 初始化部分结束> */


/* 顶部选单搜索框 */
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');
    })
})
function cleanTip(){
    if($("#top_search")[0].title == $("#top_search")[0].value){
        $("#top_search")[0].value = '';
    }
}


/* 顶部表单美化处理 */
Fanhall.prettify_form = function(form) {
	$('input:submit', form).each(function(i) {
		var btn = $('<a href="search/all" class="butt"></a>').text($(this).val());
		btn.click(function() {
			cleanTip();
			form.submit();
			return false;
		});
		$(this).hide().after(btn); $(this).remove();
	});
}


/*
■■■■■■■初始化动作定义函数群■■■■■■■
*/
/*
顶部搜索
*/
Fanhall.init_search_text = function(o){
    if(!o.value || o.value == o.title){
        $(o).addClass("searchtext");
        o.value = o.title;
    }
    $(o).focus(function(){
        $(o).removeClass("searchtext");
        if(o.value == o.title) o.value = "";
    });
    $(o).blur(function(){
        if(!o.value){
            $(o).addClass("searchtext");
            o.value = o.title;
        }
    });
}
Fanhall.init_submit_link = function(o){
	$(o).click(function(){
		$(o).parent().submit();
	});
}



/*
AJAX操作
*/

//直接操作链接
Fanhall.init_confirm_link = function(o) {
	var text = o.title || '删除';
	if(!o.name){
		$(o).click(function(){
			return confirm("真的要"+text+"?");
		});
	} else {
		var url = $(o).attr('href');
		var name = $(o).attr('name');
		$(o).click(function(){
			var bln = confirm("真的要"+text+"?");
			if(bln){
				$.getJSON(url,{}, function(){
					//alert("已经"+text+"。");
					$("#"+name).hide('slow');
				})
			}
			return false;
		})
	}
}
Fanhall.init_do_link = function(o) {
	var url = $(o).attr('href');
	var id = $(o).attr('name');
	//var text = o.title || $(o).text();

	//待判断 此是“关注”项
	//规则：name里是id，href是基本路径
	$(o).click(function(){
		$.get(url+id,null, function(r){
			if (r=='true')
			{
				$(o).parent().prepend('<span class="state">我在关注</span>');
				if ($(o).html()=='取消关注')
				{
					$(o).html('再次关注');
					$('.state').remove();
				}
				else
				{
					$(o).html('取消关注');
				}
			}
			else
			{
				prompt_dialog();
			}
		});
		return false;
	});
}
Fanhall.init_vote_link = function(o) {
	var url = $(o).attr('href');
	var id = $(o).attr('name');
	var num = parseInt($(o).attr('title'));
	var _ = $(o).attr('name').split('/');

	//规则：name里是id，href是基本路径
	$(o).click(function(){
		if (url)
		{
			$.get(url+id,null, function(r){
				if (r=='true')
				{
					if (_[1]==1)
					{
						$(o).attr('onclick',"alert('你已经顶过了');return false;");
						$(o).html('顶('+(num+1)+')');//<img src="images/good.gif" alt="" />
					}
					else
					{
						$(o).attr('onclick',"alert('你已经踩过了');return false;");
						$(o).html('踩('+(num+1)+')');//<img src="images/bad.gif" alt="" />
					}
					url ='';
					$(o).attr('href',"#");
					$(o).attr('class',"click");
				}
				else
				{
					prompt_dialog();
				}
			});
		}
		else
		{
			alert('已经点过了');
		}
		return false;
	});
}
Fanhall.init_doevent_link = function(o) {
	var url = $(o).attr('href');
	var id = $(o).attr('name');
	//var text = o.title || $(o).text();

	//待判断 此是“关注”项
	//规则：name里是id，href是基本路径
	$(o).click(function(){
		$.get(url+id,null, function(r){
			if (r=='true')
			{
				if ($(o).html()=='&lt;退出活动')
				{
					$(o).html('&lt;再次加入');
					$('.event > .meta > .state').remove();
				}
				else
				{
					$(o).parent().prepend('<span class="state">★我已加入</span>');
					$(o).html('&lt;退出活动');
				}
			}
			else
			{
				prompt_dialog();
			}
		});
		return false;
	});
}

//弹窗项之补充资料
Fanhall.init_contribute_btn= function(o) {
	var _ = $(o).attr('name').split('-');
    var url = 'ajax/contribute';
    var f = function(){
		show_dialog(null);
		$.getJSON(url, {type:_[0], id:_[1]}, function(data){
			if (data.bool==true)
			{
				$('#dialog').html(data.html);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}
//弹窗项之关注影片
Fanhall.init_mflink_btn= function(o) {
	var _ = $(o).attr('name').split('-');
    var url = 'ajax/tag';
    var f = function(){
		$.get('ajax/member_film_link/'+_[1],null, function(r){
			if (r=='true')
			{
				$(o).parent().prepend('<span class="state">★我在关注</span>');
				if ($(o).html()=='取消关注')
				{
					$(o).html('再次关注');
					$('.state').remove();
				}
				else
				{
					show_dialog(null);
					$.getJSON(url, {type:_[0], id:_[1]}, function(data){
						if (data.bool==true)
						{
							$('#dialog').html(data.html.replace('每次添加一个标签：', '给关注的影片加个标签？(每次只能添加一个)<br />'));
							load_event_monitor('#dialog');
						}
						else
						{
							prompt_dialog();
						}
					});
					$(o).html('取消关注');
				}
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}
//弹窗项之看过影片
Fanhall.init_mflinkseen_btn= function(o) {
	var id = $(o).attr('name');
    var url = 'ajax/member_film_link_seen/';
    var f = function(){
		show_dialog(null);
		$.getJSON(url+id, null, function(data){
			if (data.bool==true)
			{
				$('#dialog').html(data.html);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}
//弹窗项之发送推荐
Fanhall.init_recommend_btn= function(o) {
	var _ = $(o).attr('name').split('-');
    var url = 'ajax/recommend';
    var f = function(){
		show_dialog(null);
		$.getJSON(url, {type:_[0], id:_[1]}, function(data){
			if (data.bool==true)
			{
				$('#dialog').html(data.html);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}
//弹窗项之修改片单条目
Fanhall.init_flist_item= function(o) {
	var id = $(o).attr('name');
    var url = 'ajax/flist_item';
    var f = function(){
		show_dialog(null);
		$.getJSON(url, {id:id}, function(data){
			if (data.bool==true)
			{
				$('#dialog').html(data.html);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}
//弹窗项之修改片单描述
Fanhall.init_flist_des= function(o) {
	var id = $(o).attr('name');
    var url = 'ajax/flist_des';
    var f = function(){
		show_dialog(null);
		$.getJSON(url, {id:id}, function(data){
			if (data.bool==true)
			{
				$('#dialog').html(data.html);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}

Fanhall.init_ajax_form = function(form) {
    form.onsubmit = function(){
        remote_submit_json(this, function(r){
            $('#dialog').html(r.html);
            set_overlay();
        });
        return false;
    }
    $(form).set_len_limit(2000);
}

//弹窗项之加标签
Fanhall.init_tag_btn= function(o) {
	var _ = $(o).attr('name').split('-');
    var url = 'ajax/tag';
    var f = function(){
		show_dialog(null);
		$.getJSON(url, {type:_[0], id:_[1]}, function(data){
			if (data.bool==true)
			{
				$('#dialog').html(data.html);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}
Fanhall.init_tag_form = function(form) {
    form.onsubmit = function(){
        remote_submit_json(this, function(r){
            //$('#dialog').html(r.html);
            //set_overlay();
			close_dialog();
            $('#tags').append(r.back);
        });
        return false;
    }
    $(form).set_len_limit(2000);
}
//所需之函数
var get_form_fields = function(form) {
	var param = {};
	$(':input', form).each(function(i){
		var name = this.name;
		if (this.type == 'radio') {
			if (this.checked) param[name] = this.value;
        } else 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;
		}
		if(/notnull/.test(this.className) && this.value == ''){
			$(this).prev().addClass('errnotnull');
			param['err'] = 'notnull';
		}
	});
	return param;
}
var remote_submit_json = function(form, func, disable) {
    var fvalue = get_form_fields(form);
    if(fvalue['err'] == undefined){
        if(disable != false){
            $(':submit',form).attr('disabled', 1);
            $('textarea',form).attr('disabled', 1);
        }
        $.post(form.action, fvalue, function(ret){
            var json = eval('('+ret+')'); func(json);
        });
    }
}


//仅仅读取特定链接数据写入某处（如ajax搜索群组——查看详细，就是它了）▲制作中
//因button在firefox下无法return false故改写法
var getHtml = function(o) {
	var putin = $(o).attr('name');
    var url = $(o).attr('href');
	if ($(o).attr('href'))
	{
	$.get(url, {}, function(html){
		if (html)
		{
			$(putin).html(html);
		}
		else
		{
			prompt_dialog();
		}
	});
	}
	return false;
}


//dialog通用处理
var show_dialog = function(div) {
    if($('#dialog').length) return;
    $('body').prepend('<div id="overlay"></div><div id="dialog"></div>');
    if(div != null){
        $('#dialog').html(div);
    }else{
        $('#dialog').html("<div class='loadpop'>正在载入，请稍候...</div>");
    }
    set_overlay();
}

var set_overlay = function(){
    var oheight = ($.browser.msie?11:26),
        dialog=$('#dialog')[0],
        w=dialog.offsetWidth,
        left=(document.body.offsetWidth-w)/2+'px';
    
    $('#overlay').css({height:dialog.offsetHeight+oheight,width:w+26,left:left});
    dialog.style.left=left;
}
var close_dialog = function() {
    $('#overlay').unbind('click');
    $('#dialog,#overlay,.bgi').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 refine_dialog = function(){
	var agent = navigator.userAgent.toLowerCase();
	var top = 0.5 * ($.viewport_size()[1] - $('#dialog')[0].offsetHeight) + 140;
	$('#dialog,#overlay').css('top', top);
    set_overlay();
}
var bgi_dialog = function(){
    $('.bgi').remove();
    if(!$.browser.msie){
        $('<iframe></iframe>').addClass('bgi').css('height',$('#dialog')[0].offsetHeight).insertAfter($('#dialog'));
    }
}

var prompt_dialog = function(text){
	if(!text){
		text='<div style="text-align:left;padding:0 20px 20px 20px"><h2>抱歉，执行此操作需要先登录。</h2><form action="my/login" method="post" class=""><input type="hidden" name="n_id" value="3"  />昵称或Email:<br /><input type="text" id="v_logname" name="v_logname" value=""  /><br />密 码:<br /><input type="password" id="v_password" name="v_password" value=""  /> <a href="my/reset_password/">密码忘记了？</a><br /><input type="checkbox" id="rememberme" name="rememberme" value="1"  /><span style="color:gray">在这台电脑上记住我(一个月之内不用再登录)</span><br /><input type="submit" id="submit" name="submit" value="登 录"  /> <input type="button" onclick="close_dialog();" value="取 消"/>　 <a href="my/reg/">注册新帐号</a></form></div>';

		$('#dialog').html(""+text+"");//<div class='loadpop'></div>
		show_dialog(""+text+"");//<div class='loadpop'></div>
	}
	else
	{
		$('#dialog').html("<div class='loadpop'>"+text+"</div>");//
		show_dialog("<div class='loadpop'>"+text+"</div>");//
		setTimeout(function(){
			$('#dialog, #overlay').fadeOut(close_dialog);
		},1500);
	}
}








jQuery.fn.extend({
    set_len_limit : function(limit){
        var s = this.find(':submit:first');
        var oldv = s.attr('value');
        var check = function(){
            if(this.value && this.value.length > limit){
                s.attr('disabled',1).attr('value','字数不能超过'+limit+'字');
            } else {
                s.attr('disabled',0).attr('value', oldv);
            }
        }
        $('textarea', this).focus(check).blur(check).keydown(check).keyup(check);
    },

    set_caret: function(){
        if(!$.browser.msie) return;
        var initSetCaret = function(){this.p = document.selection.createRange().duplicate()};
        this.click(initSetCaret).select(initSetCaret).keyup(initSetCaret);
    },

    insert_caret:function(t){
        var o = this[0];
        if(document.all && o.createTextRange && o.p){
            var p=o.p;
            p.text = p.text.charAt(p.text.length-1) == '' ? t+'' : t;
        } else if(o.setSelectionRange){
            var s=o.selectionStart;
            var e=o.selectionEnd;
            var t1=o.value.substring(0,s);
            var t2=o.value.substring(e);
            o.value=t1+t+t2;
            o.focus();
            var len=t.length;
            o.setSelectionRange(s+len,s+len);
            o.blur();
        } else {
            o.value+=t;
        }
    },

    get_sel:function(){
        var o = this[0];
        return document.all && o.createTextRange && o.p ? 
            o.p.text : o.setSelectionRange ? 
            o.value.substring(o.selectionStart,o.selectionEnd) : '';
    }
})


//展开项之展开新闻
Fanhall.init_morenews_btn= function(o) {
	var _ = $(o).attr('name').split('-');
    var url = 'ajax/morenews/'+_[1];
    var f = function(){
		
		$('#'+_[0]).html('<img src="images/loading.gif" />');
		$.getJSON(url, {}, function(data){
			if (data.bool==true)
			{
				$('#'+_[0]).html(data.back);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}
//展开项之展开评论
Fanhall.init_morecomment_btn= function(o) {
	var _ = $(o).attr('name').split('-');
    var url = 'ajax/morecomment/'+_[1];
    var f = function(){
		if ($('#'+_[0]).css("display")=='none')
		{
			$('#'+_[0]+'_full').hide();
			$('#'+_[0]).show();
		}
		else
		{
			$('#'+_[0]).hide();
			$('#'+_[0]).after('<dd class="text" id="'+_[0]+'_full" style="float:left;width:75%"></dd>');
			$('#'+_[0]+'_full').html('<img src="images/loading.gif" />');
			$.getJSON(url, {}, function(data){
				if (data.bool==true)
				{
					$('#'+_[0]+'_full').html(data.back);
					//$('#'+_[0]).css({ float:"left", width:"75%" });
					load_event_monitor('#dialog');
				}
				else
				{
					prompt_dialog();
				}
			});
		}
        return false;
    }
    $(o).click(f);
}
//展开项之展开花絮
Fanhall.init_moresidelights_btn= function(o) {
	var _ = $(o).attr('name').split('-');
    var url = 'ajax/moresidelights/'+_[1];

    var f = function(){
		$('#sidelights').html('<img src="images/loading.gif" />');
		$.getJSON(url, {}, function(data){
			if (data.bool==true)
			{
				$('#sidelights').html(data.back);
				load_event_monitor('#dialog');
			}
			else
			{
				prompt_dialog();
			}
		});
        return false;
    }
    $(o).click(f);
}


function showFlash(host, flashvar, obj, shareid) {
	var flashAddr = {
		'youku.com' : 'http://player.youku.com/player.php/sid/FLASHVAR=/v.swf',
		'ku6.com' : 'http://player.ku6.com/refer/FLASHVAR/v.swf',
		'youtube.com' : 'http://www.youtube.com/v/FLASHVAR',
		'5show.com' : 'http://www.5show.com/swf/5show_player.swf?flv_id=FLASHVAR',
		'sina.com.cn' : 'http://vhead.blog.sina.com.cn/player/outer_player.swf?vid=FLASHVAR',
		'sohu.com' : 'http://v.blog.sohu.com/fo/v4/FLASHVAR',
		'mofile.com' : 'http://tv.mofile.com/cn/xplayer.swf?v=FLASHVAR',
		'tudou.com' : 'http://www.tudou.com/v/FLASHVAR',
		'ifeng.com' : 'http://v.ifeng.com/include/exterior.swf?guid=FLASHVAR',
		'quacor.com' : 'http://www.quacor.com/images/swf/player.swf?v=4&contentid=FLASHVAR',
		'music' : 'FLASHVAR',
		'flash' : 'FLASHVAR'
	};
	var flash = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="470" height="392">'
	    + '<param name="movie" value="FLASHADDR" />'
	    + '<param name="quality" value="high" />'
	    + '<param name="bgcolor" value="#FFFFFF" />'
	    + '<embed width="470" height="392" menu="false" quality="high" src="FLASHADDR" type="application/x-shockwave-flash" />'
	    + '</object>';
	var videoFlash = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="470" height="392">'
        + '<param value="transparent" name="wmode"/>'
		+ '<param value="FLASHADDR" name="movie" />'
		+ '<embed src="FLASHADDR" wmode="transparent" allowfullscreen="true" type="application/x-shockwave-flash" width="470" height="392"></embed>'
		+ '</object>';
	var musicFlash = '<object id="audioplayer_SHAREID" height="24" width="290" data="image/player.swf" type="application/x-shockwave-flash">'
		+ '<param value="image/player.swf" name="movie"/>'
		+ '<param value="autostart=yes&bg=0xCDDFF3&leftbg=0x357DCE&lefticon=0xF2F2F2&rightbg=0xF06A51&rightbghover=0xAF2910&righticon=0xF2F2F2&righticonhover=0xFFFFFF&text=0x357DCE&slider=0x357DCE&track=0xFFFFFF&border=0xFFFFFF&loader=0xAF2910&soundFile=FLASHADDR" name="FlashVars"/>'
		+ '<param value="high" name="quality"/>'
		+ '<param value="false" name="menu"/>'
		+ '<param value="#FFFFFF" name="bgcolor"/>'
	    + '</object>';
	var musicMedia = '<object height="64" width="290" data="FLASHADDR" type="audio/x-ms-wma">'
	    + '<param value="FLASHADDR" name="src"/>'
	    + '<param value="1" name="autostart"/>'
	    + '<param value="true" name="controller"/>'
	    + '</object>';
	var flashHtml = videoFlash;
	var videoMp3 = true;
	if('' == flashvar) {
		alert('媒体地址错误，不能为空');
		return false;
	}
	if('music' == host) {
		var mp3Reg = new RegExp('.mp3$', 'ig');
		var flashReg = new RegExp('.swf$', 'ig');
		flashHtml = musicMedia;
		videoMp3 = false
		if(mp3Reg.test(flashvar)) {
			videoMp3 = true;
			flashHtml = musicFlash;
		} else if(flashReg.test(flashvar)) {
			videoMp3 = true;
			flashHtml = flash;
		}
	}
	flashvar = encodeURI(flashvar);
	if(flashAddr[host]) {
		var flash = flashAddr[host].replace('FLASHVAR', flashvar);
		flashHtml = flashHtml.replace(/FLASHADDR/g, flash);
		flashHtml = flashHtml.replace(/SHAREID/g, shareid);
	}
	
//	if(!obj) {
//		$('flash_div_' + shareid).innerHTML = flashHtml;
//		return true;
//	}
//	if($('flash_div_' + shareid)) {
//		$('flash_div_' + shareid).style.display = '';
//		$('flash_hide_' + shareid).style.display = '';
//		obj.style.display = 'none';
//		return true;
//	}
	if(flashAddr[host]) {
//		var flashObj = document.createElement('div');
//		flashObj.id = 'flash_div_' + shareid;
//		obj.parentNode.insertBefore(flashObj, obj);
//		flashObj.innerHTML = flashHtml;
//		obj.style.display = 'none';
//		var hideObj = document.createElement('div');
//		hideObj.id = 'flash_hide_' + shareid;
//		var nodetxt = document.createTextNode("收起");
//		hideObj.appendChild(nodetxt);
//		obj.parentNode.insertBefore(hideObj, obj);
//		hideObj.style.cursor = 'pointer';
//		hideObj.onclick = function() {
//			if(true == videoMp3) {
//				//stopMusic('audioplayer', shareid);
//				flashObj.parentNode.removeChild(flashObj);
//				hideObj.parentNode.removeChild(hideObj);
//			} else {
//				flashObj.style.display = 'none';
//				hideObj.style.display = 'none';
//			}
//			obj.style.display = '';
//		}
		$("#flash_container").html(flashHtml);
	}
}
function popview(url,width,height){
	var url,width,height;
	if (width==undefined)width=895;
	if (height==undefined)height=780;
	//alert('status=yes,scrollbars=yes,resizable=yes,top=20,left=110,width='+width+',height='+height);
	window.open(url,'_blank','status=yes,scrollbars=yes,resizable=yes,top=20,left=180,width='+width+',height='+height);
}