/**
	DFZ mblog poster component
	example - http://ria.city.sina.com.cn/widget/weibo/mblog_poster.html
	@author zijian2@staff.sina.com.cn
*/


DFZ = window.DFZ || {};
DFZ.APP = DFZ.APP || {};
DFZ.APP.MblogPoster = (function() {
	var uniqueInstance = [];
	var opt = [];
	//上传图片成功后，文件名截断长度限制
	var img_name_max_len;
	// 模板对象
	var tpl = [];
	var pid = [];
	var result_data = [];
	var closeBtn = [];
	var textArea = [];
	var delImgBtn = [];
	var imgName = [];
	var imgPreview = [];
	var imgSelector = [];
	var imgFile = [];
	var imgForm = [];
	var submitBtn = [];
	var remainTextNum = [];
	var faceIcon = [];
	var faceCloseBtn = [];
	var faceShowBtn = [];
	var faceContainer = [];
	var imgUploading = [];
	var titleContainer = [];
	var imgPreviewContainer = [];
	var current_mbloger='';
	//--defaults options value--//
	var defaults=
			{
				site_id:		902,
				app_id:'',
				callback:		'http://ria.city.sina.com.cn/mblogupimgcallback.html',
				postUrl:		'http://mblog.henan.sina.com.cn/interface/tcommon/postaction/json_add_mblog.php',
				overlay:		true,
				dialog:			true,
				overlay_color:	'#333',
				z_index:		'99999',
				addContent:'',
				imgNameLen : 24,
				//items in tpl
				content:		'',
				title:			'发微博',
				titleContainer:'.dialog_title',
				closeBtn:		'.close_dialog',
				textArea:		'textarea',
				delImgBtn:		'.del_img_btn',
				imgName:		'.img_name',
				imgPreviewContainer:'.img_preview_container',
				imgPreview:		'.img_preview',
				imgSelector:	'.img_selector',
				submitBtn:		'.submit',
				remainTextNum:	'.remain_text_num',
				faceContainer:	'.dialog_mblog_face',
				faceCloseBtn:	'.close_face',
				faceShowBtn:	'.show_face',
				faceIcon:		'.face_icon',
				imgFile:		'.img_file',
				imgForm:		'.img_form',
				imgUploading:	'.img_uploading',
				customPostCallback:null,
				statPage:'',//统计页面地址
				//default tpl
				tpl_id:			false,
				tpl:			'<div class="dfz-dweibo-wrap">\
			<div class="dialog-con">\
				<div class="dialog-in">\
					<p class="dialog-tit"><strong class="dialog_title">${title}</strong><a href="javascript:;" onclick="return false;" class="close close_dialog">关闭</a></p>\
					<div class="dialog-mblog">\
						<p class="dialog-tips"><span class="writescores">你还可以输入<em class="remain_text_num"></em>字</span><span>可以直接输入音乐或视频的url地址</span></p>\
						<p class="textarea"><textarea>${content}</textarea></p>\
						<div class="send-tit">\
							<input type="button" class="submit" value="" /><a href="javascript:;" onclick="return false;" class="face show_face">表情</a>{{tmpl tpl_img_form}}\
						</div>\
					</div>\
				</div>\
				<div class="dialog-bg"></div><iframe></iframe>\
			</div>\
			{{tmpl tpl_face}}\
			{{tmpl tpl_img_preview}}\
		</div>',
				tpl_img_preview:'<div class="img_preview_container" style="z-index:${img_preview_z_index}">\
	<div class="dialog_mblog_img">\
		<img src="" class="img_preview"><div class="dialog-bg"></div><iframe></iframe>\
	</div>\
	<i class="layerArrow layarrow2">&nbsp;</i>\
	</div>',
				tpl_img_form:'<div class="fimp img_selector">图片<form target="Upfiler_file_iframe_${id}" class="img_form" action="http://picupload.t.sina.com.cn/interface/pic_upload.php?marks=1&amp;markstr=http://t.sina.com.cn&amp;s=rdxt&amp;app=miniblog&amp;cb=${callback}" enctype="multipart/form-data" method="POST"><input type="file" class="img_file" name="pic1"></form><iframe frameborder="0" src="about:blank" name="Upfiler_file_iframe_${id}" id="Upfiler_file_iframe_${id}" class="fb_img_iframe" style="display: none;"></iframe></div>&nbsp;<span class="img_name"></span>',
				tpl_face:'<div class="dialog_mblog_face" style="z-index:${face_z_index}">\
		<div class="face_icons">\
			<a href="javascript:;" onclick="return false;" class="close close_face">关闭</a>\
			<ul>\
				<li><a title="足球" value="[足球]" class="face_icon" href="javascript:void(0)"><img alt="足球" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/football.gif" /></a></li>\
				<li><a title="哨子" value="[哨子]" class="face_icon" href="javascript:void(0)"><img alt="哨子" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/shao.gif" /></a></li>\
				<li><a title="红牌" value="[红牌]" class="face_icon" href="javascript:void(0)"><img alt="红牌" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/redcard.gif" /></a></li>\
				<li><a title="黄牌" value="[黄牌]" class="face_icon" href="javascript:void(0)"><img alt="黄牌" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/yellowcard.gif" /></a></li>\
				<li><a title="哈哈" value="[哈哈]" class="face_icon" href="javascript:void(0)"><img alt="哈哈" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/laugh.gif" /></a></li>\
				<li><a title="呵呵" value="[呵呵]" class="face_icon" href="javascript:void(0)"><img alt="呵呵" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/smile.gif" /></a></li>\
				<li><a title="衰" value="[衰]" class="face_icon" href="javascript:void(0)"><img alt="衰" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/cry.gif" /></a></li>\
				<li><a title="汗" value="[汗]" class="face_icon" href="javascript:void(0)"><img alt="汗" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/sweat.gif" /></a></li>\
				<li><a title="爱你" value="[爱你]" class="face_icon" href="javascript:void(0)"><img alt="爱你" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/love.gif" /></a></li>\
				<li><a title="嘻嘻" value="[嘻嘻]" class="face_icon" href="javascript:void(0)"><img alt="嘻嘻" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/tooth.gif" /></a></li>\
				<li><a title="哼" value="[哼]" class="face_icon" href="javascript:void(0)"><img alt="哼" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/hate.gif" /></a></li>\
				<li><a title="心" value="[心]" class="face_icon" href="javascript:void(0)"><img alt="心" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/heart.gif" /></a></li>\
				<li><a title="晕" value="[晕]" class="face_icon" href="javascript:void(0)"><img alt="晕" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/dizzy.gif" /></a></li>\
				<li><a title="怒" value="[怒]" class="face_icon" href="javascript:void(0)"><img alt="怒" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/angry.gif" /></a></li>\
				<li><a title="蛋糕" value="[蛋糕]" class="face_icon" href="javascript:void(0)"><img alt="蛋糕" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/cake.gif" /></a></li>\
				<li><a title="花" value="[花]" class="face_icon" href="javascript:void(0)"><img alt="花" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/flower.gif" /></a></li>\
				<li><a title="抓狂" value="[抓狂]" class="face_icon" href="javascript:void(0)"><img alt="抓狂" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/crazy.gif" /></a></li>\
				<li><a title="困" value="[困]" class="face_icon" href="javascript:void(0)"><img alt="困" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/sleepy.gif" /></a></li>\
				<li><a title="干杯" value="[干杯]" class="face_icon" href="javascript:void(0)"><img alt="干杯" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/cheer.gif" /></a></li>\
				<li><a title="太阳" value="[太阳]" class="face_icon" href="javascript:void(0)"><img alt="太阳" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/sun.gif" /></a></li>\
				<li><a title="下雨" value="[下雨]" class="face_icon" href="javascript:void(0)"><img alt="下雨" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/rain.gif" /></a></li>\
				<li><a title="泪" value="[泪]" class="face_icon" href="javascript:void(0)"><img alt="泪" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/sad.gif" /></a></li>\
				<li><a title="月亮" value="[月亮]" class="face_icon" href="javascript:void(0)"><img alt="月亮" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/moon.gif" /></a></li>\
				<li><a title="猪头" value="[猪头]" class="face_icon" href="javascript:void(0)"><img alt="猪头" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/pig.gif" /></a></li>\
				<li><a title="蜡烛" value="[蜡烛]" class="face_icon" href="javascript:void(0)"><img alt="蜡烛" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/candle.gif" /></a></li>\
				<li><a title="伤心" value="[伤心]" class="face_icon" href="javascript:void(0)"><img alt="伤心" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/unheart.gif" /></a></li>\
				<li><a title="风扇" value="[风扇]" class="face_icon" href="javascript:void(0)"><img alt="风扇" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/fan.gif" /></a></li>\
				<li><a title="冰棍" value="[冰棍]" class="face_icon" href="javascript:void(0)"><img alt="冰棍" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/ice.gif" /></a></li>\
				<li><a title="西瓜" value="[西瓜]" class="face_icon" href="javascript:void(0)"><img alt="西瓜" src="http://timg.sjs.sinajs.cn/t3/style/images/common/face/basic/watermelon.gif" /></a></li>\
			</ul>\
		</div>\
		<div class="dialog-bg"></div><iframe></iframe><i class="layerArrow">&nbsp;</i>\
	</div>'
	};
	
	
	//-----global functions ------// 
	function chkDefault(options)
	{
		for(key in defaults)
		{
			if(typeof(options[key])=='undefined')
			{
				options[key]=defaults[key];
			}
		}
		return options;
	}

	function getInstance( options ) 
	{
		if ( typeof(uniqueInstance[options.id])=='undefined' ) 
		{
			uniqueInstance[options.id] = constructor(options);	
		}
		return uniqueInstance[options.id];	
	}
	function checkInstance(options)
	{
		if ( typeof(uniqueInstance[options.id])=='undefined' ) 
		{
			return false;
		}
		return uniqueInstance[options.id];
	}
	function closeInstance(options)
	{
		// 注消
		if(typeof(tpl[options.id])!='undefined')
		{
			tpl[options.id].remove();
		}
		uniqueInstance[options.id] = null;
	}

	function constructor(options) 
	{
		try
		{
			
		
		// 模板
		var MARKUP;
		if(options.tpl_id)
		{
			MARKUP = document.getElementById(options.tpl_id).innerHTML;
		}
		else
		{
			MARKUP = options.tpl;
		}
		
		MARKUP='<div id="${id}" style="z-index:${z_index}">'+MARKUP+'</div>';
		
		if(options.dialog)
		{
			MARKUP+="<div style='position:absolute;background:${overlay_color};opacity:0.8;filter:alpha(opacity=80);width:100%;height:"+$(document).height()+"px;left:0;top:0;z-index:"+(options.z_index-1)+"'></div>";
		}

		$.template( "tpl_img_form",options.tpl_img_form );
		$.template( "tpl_face",options.tpl_face );
		$.template( "tpl_img_preview",options.tpl_img_preview );
		
		tpl[options.id] = $.tmpl($.template( MARKUP ), options );
		
		if(options.container)
		{
			tpl[options.id].appendTo($("#"+options.container));
		}
		else
		{
			tpl[options.id].appendTo(document.body);
		}

		closeBtn[options.id]		=	$("#"+options.id).find(options.closeBtn);
	
		textArea[options.id]		=	$("#"+options.id).find(options.textArea);
		delImgBtn[options.id]		=	$("#"+options.id).find(options.delImgBtn);
		imgName[options.id]			=	$("#"+options.id).find(options.imgName);
		imgPreview[options.id]		=	$("#"+options.id).find(options.imgPreview);
		imgSelector[options.id]		=	$("#"+options.id).find(options.imgSelector);
		imgFile[options.id]			=	$("#"+options.id).find(options.imgFile);
		imgForm[options.id]			=	$("#"+options.id).find(options.imgForm);
		submitBtn[options.id]		=	$("#"+options.id).find(options.submitBtn);
		
		remainTextNum[options.id]	=	$("#"+options.id).find(options.remainTextNum);
		
		faceCloseBtn[options.id]	=	$("#"+options.id).find(options.faceCloseBtn);
		faceIcon[options.id]		=	$("#"+options.id).find(options.faceIcon);
		faceShowBtn[options.id]		=	$("#"+options.id).find(options.faceShowBtn);
		faceContainer[options.id]	=	$("#"+options.id).find(options.faceContainer);
		
		imgUploading[options.id]	=	$("#"+options.id).find(options.imgUploading);
		titleContainer[options.id]	=   $("#"+options.id).find(options.titleContainer);
		imgPreviewContainer[options.id]=$("#"+options.id).find(options.imgPreviewContainer);
		
		function reset(options)
		{
			faceContainer[options.id].hide();
			pid[options.id]='';
			imgName[options.id].hide();
			imgPreviewContainer[options.id].hide();
			imgUploading[options.id].hide();
			imgSelector[options.id].show();
			titleContainer[options.id].html(options.title);
			textArea[options.id].val(options.content);
			imgFile[options.id].val('');
			imgUploading[options.id].hide();
			get_current_remain_text_num();
			
			if(options.dialog)
			{
				if(typeof(options.left)=='undefined')
				{
					options.left=$(document).width()/2-500/2;
				}
				if(typeof(options.top)=='undefined')
				{
					options.top=$(document).scrollTop()+document.documentElement.clientHeight/2-300/2;
				}
				//$("#"+options.id).draggable();
				$("#"+options.id).addClass("dialog-wrap");
				$("#"+options.id).css('z-index',options.z_index);
				$("#"+options.id).css('position','absolute');
				$("#"+options.id).css('left',options.left+'px');
				$("#"+options.id).css('top',options.top+'px');
			}
			else
			{
				closeBtn[options.id].hide();
			}
		}
		
		function get_current_remain_text_num()
		{		
			var current_content=textArea[options.id].val();
			if(typeof(current_content)!='undefined')
			{
				remainTextNum[options.id].html(140-current_content.length);
			}
		}

		function post_mblog()
		{
			if(!DFZ.APP.DialogLogin.hasLogin())
			{
					DFZ.APP.DialogLogin.open(function(){
						post_mblog();
					});
					return;
			}

			if(options.postUrl)
				{
					var addmblog_post_url = options.postUrl;
				}
					
				$.JSONP(addmblog_post_url,{
						content:textArea[options.id].val()+options.addContent,
						site_id:options.site_id,
						app_id:options.app_id,
						t:'jsonp',
						pid:pid[options.id],
						x: Math.random() 	
					}, function( json ) {
						if ( json.error === "0" ) {
							
							try
								{
									DFZ.APP.TIPS.simple({bigText:'分享成功',drag:true});
								}
								catch(e)
								{
									alert('分享成功');
								}

							if ($.isFunction( options.customPostCallback )) {
								options.customPostCallback(json.data.result);
							}
							
							if(options.dialog)
							{
								tpl[options.id].hide();
							}	
							if(options.location_url)
							{
								location.href = options.location_url;
							}
							reset(options);
						} 
						else 
						{
							alert(json.errmsg);	
						}
					});	
		}
		
		function bindEvent()
		{
			//---bind event--//
			//关闭按钮
			closeBtn[options.id].live('click',function(){
				tpl[options.id].hide();
			});
			//表情
			faceIcon[options.id].live('click',function(){
				var current_content=textArea[options.id].val();
				current_content+=$(this).attr('value');
				textArea[options.id].val(current_content);
			});
			faceCloseBtn[options.id].live('click',function(){
				faceContainer[options.id].hide();
			});
			faceShowBtn[options.id].live('click',function(){
					faceContainer[options.id].show();
				});
			//删除上传图片按钮
			delImgBtn[options.id].live('click',function(){
				imgName[options.id].hide();
				imgPreviewContainer[options.id].hide();
				imgPreview[options.id].attr('src','');
				imgSelector[options.id].show();
				pid[options.id]='';
				imgFile[options.id].val('');
				current_mbloger=options.id;
			});
			//选择上传的图片，提交图片到图片服务器
			imgFile[options.id].change(function(){
				imgSelector[options.id].hide();
				imgUploading[options.id].show();
				imgName[options.id].html('图片上传中..'+'&nbsp;<a href="javascript:;" class="del_img_btn">x</a>').show();
				if(!DFZ.APP.DialogLogin.hasLogin())
				{
					DFZ.APP.DialogLogin.open(function(){
						imgForm[options.id].submit();
						current_mbloger=options.id;
					});
				}
				else
				{
					imgForm[options.id].submit();
					current_mbloger=options.id;
				}

			});

			//提交发布微博客
			submitBtn[options.id].live('click',function(){
				post_mblog();	
			});
				
				textArea[options.id].live('keyup',function(){
					get_current_remain_text_num();
				});
	
			//ctrl+enter快捷提交
			$(textArea[options.id]).keypress(function(e){
				if(e.ctrlKey && e.which == 13 || e.which == 10) 
				{
					post_mblog();
				} 
				else if (e.shiftKey && e.which==13 || e.which == 10) 
				{
					post_mblog();
				}
			});	

		}

		bindEvent();

		
		return {
			open: function(options) 
			{
				if(typeof(tpl[options.id])!='undefined')
				{
					tpl[options.id].show();
				}
				return this;
			},
			close: function(options)
			{
				if(typeof(tpl[options.id])!='undefined')
				{
					tpl[options.id].hide();
				}
				return this;
			},
			reset : function(options)
			{
				reset(options);
			},
			get_instance:function()
			{
				if(typeof(tpl[options.id])!='undefined')
				{
					return tpl[options.id];
				}
			}
		}
		}
		catch(e)
		{
			alert(e);
		}
		
	}//end of constructor

	
	return {
		init: function( options ) {
			
			if(options.container)
			{
				options.id='DFZ_MBLOG_POSTER_'+options.container;
			}
			else
			{
				options.id='DFZ_MBLOG_POSTER_DIALOG';
			}
			
			var sid = options.site_id || 902;
			
			options.id = options.id+sid;

			options=chkDefault(options);
			if(options.statPage)
			{
				$("<iframe id='"+options.id+"_stat_iframe' name='"+options.id+"_stat_iframe' width='1px' height='1px' style='display:none' src='"+options.statPage+'?'+Math.random()*1000+"'></iframe>").appendTo(document.body);
			}
			
			options.face_z_index=options.z_index+500;
			options.img_preview_z_index=options.z_index+100;
			opt[options.id]=options;
			
			img_name_max_len=options.imgNameLen;
			
			var instance = checkInstance(options);

			if(!instance)
			{
				instance = getInstance(options);
			}
			
			instance.reset(options);
			instance.open(options);
			
			return instance;
		},
		add_img_success:function(cfg)
		{
			if(cfg.ret=='1')
			{
				var pic_url='http://ww2.sinaimg.cn/small/'+cfg.pid+'.jpg';
				//alert(current_mbloger);
				$("#"+current_mbloger).find('.img_preview').attr('src',pic_url);
				$("#"+current_mbloger).find('.img_preview_container').show();
				$("#"+current_mbloger).find('.img_selector').hide();
				
				var t=$("#"+current_mbloger).find('.img_file').val();
				var ts=t.split('\\');
				//alert(ts.length);
				t=ts[ts.length-1];

				if(t.length>img_name_max_len)
				{
					t=t.substr(0,img_name_max_len)+'..';
				}
				
				$("#"+current_mbloger).find('.img_name').html(t+'&nbsp;<a href="javascript:;" class="del_img_btn">x</a>').show();
				
				pid[current_mbloger]=cfg.pid;
			}
			else if(cfg.ret=='-1')
			{
				alert('请您先登录');
			}
			else if(cfg.ret=='-9')
			{
				alert('您上传的图片格式或大小有误');
			}
			else
			{
				alert('抱歉，上传图片失败');
			}
		}
		
	}	
})();

