var GPS = {};
	GPS.config = {
		a_login:						'/user/ajax_login/',
		editor_t :						'/ajax/ugc/twitter/',
		editor_s :						'/ajax/ugc/seed/',
		editor_p :						'/ajax/ugc/poll/',
		t_create :						'/tweet/create_tweet/',
		seed_create:					'/seed/ajax_seed_submit/',
		poll_create:					'/poll/submit_poll/',
		upload_path:					'/uploads/',
		upload_temp_path:				'/uploads/temp/',
		upload:							'/upload/ajax_upload/',
		upload_delete:					'/upload/ajax_delete/',
		upload_image_thumb_marker:		'_s',
		update_sign:					'/ajax/upsgn/',
		ajax_video_check:				'/ajax/ajax_video_check/',
		ajax_video_url:					'/ajax/ajax_video_load/',
		ajax_orgin_link_check:			'/ajax/ajax_seed_url_check/',
		getFeeds:						'/ajax/feed/',
		t_feed:							'/entity/tweet_feed/',
		t_feed_list:					'/entity/tweet_feed_list/',
		t_toolbar:						'/entity/tweet_feed_toolbar/',
		t_time:							'/entity/tweet_feed_time/',
		t_toolbar_form:					'/entity/tweet_feed_toolbar_form/',
		t_do_vote:						'/ajax/vote/',
		t_do_retweet:					'/ajax/share/',
		t_do_bookmark:					'/ajax/bookmark/',
		t_do_delete:					'/ajax/entity_deactivate/',
		t_do_reply:						'/ajax/comment/',
		t_do_recommend:					'/entity/recommend/',
		t_load_comments:				'/me/loadcomments/',
		t_do_delete_msg:				'/ajax/delete_msg/',
		c_do_poll:						'/entity/poll_item_form/',
		a_do_poll:						'/ajax/do_poll/',
		a_do_prediction:				'/prediction/bet/',
		c_do_prediction:				'/entity/prediction_item_form/',
		prediction_changePrediction:	'/prediction/change_a_position/',
		prediction_load_changes:		'/ajax/view_changes/',
		TImgUpload:						'/upload/face_img/',
		TImgDelete:						'/upload/face_img_delete/',
		ImageAvatarCrop:				'/upload/avatar_crop/',
		a_viewed_an_entity:				'/ajax/view_an_entity/',
		relation_with_me:				'/ajax/relation_with_me/',
		a_hot_tag_set:					'/ajax/trend_tags_setting/',
		a_hot_tag_load:					'/ajax/obtain_seed_trend_tags/',
		tag_autocompelete:				'/ajax/obtain_suggested_tags/',
		ReInvite:						'/ajax/reinvite/',
		friend_invite_agree:			'/friend/dofriend/',
		friend_invite_ungree:			'/friend/uninvite/',
		user_check_unused:				'/ajax/check_username/',
		lucky_money:					'/ajax/get_bonus/'
	}
	GPS.fancyLogin = function(obj){
		var $form 	= $(obj),
			$msg 	= $form.find("span.msg"),
			$submit	= $form.find("input.submit");
		
		var username = $form.find("input#username").val(),
			password = $form.find("input#userpwd").val(),
			remember = $form.find("input[type=checkbox]").is(":checked") ? 1 : 0; 
		
		if(jQuery.trim( username ) == ""){
			$msg.addClass("error").text("请输入用户名");
		}else if(jQuery.trim( password ) == ""){
			$msg.addClass("error").text("请输入密码");
		}else{
			var data = {
					username:username,
					password:password,
					remember:remember
				}
			$.ajax({
				url:		GPS.config.a_login,
				type:		"post",
				dataType:	"text",
				data:		data,
				beforeSend:	function(){
								$submit.attr("disabled","disabled");
								$msg.attr("className","msg").text("正在登录");
								if(!$msg.data("default")) $msg.data("default",$msg.text());
								interval = window.setInterval(function(){
											var text = $msg.text();
											if (text.length < $msg.data("default").length + 3 ){
												$msg.text(text + '.');
											} else {
												$msg.text( $msg.data("default") );
											}
										}, 200);
							},
				success:	function(msg){
								window.clearInterval(interval);
								if(msg){
									$msg.addClass("error").text(msg);
									$submit.removeAttr("disabled");
								}else{
									$msg.attr("className","msg info").text("登录成功,欢迎您回来!");
									window.setTimeout(function(){ 
										window.location.reload();
									},1000)
								}
							},
				error:		function(e){
								window.clearInterval(interval);
								$msg.addClass("error").text(e);
								$submit.removeAttr("disabled");
							}
			});
		}
	}
	GPS.Friend = {
		doUpdate:function(obj){
				var $obj 	= $(obj),
					$page	= $obj.parent().parent().parent().parent(),
					url 	= $obj.attr("href");
					
				var userid 	= url.substring(url.lastIndexOf("/") + 1,url.length);
					
				jQuery.post(url,function(){
					$page.empty().load( GPS.config.relation_with_me + userid );
				})
			},
		addFriend:function(obj){
				var $form 	= $(obj),
				$msg 	= $form.find("span.msg"),
				$submit	= $form.find("input.submit"),
				$summary = $form.find("textarea[name=summary]");
				if(jQuery.trim($summary.val()) == ""){
					$msg.addClass("error").text("请输入邀请理由");
				}else{
					var summary = $summary.val(),
						pid = $form.find("input[name=pid]").val(),
						tw_type = $form.find("input[name=tw_type]").val(),
						userguid = $form.find("input[name=userguid]").val();
					data="summary="+summary+"&pid="+pid+"&tw_type="+tw_type+"&userguid="+userguid;
					$.ajax({
						url:		GPS.config.t_create,
						type:		"post",
						dataType:	"text",
						data:		data,
						beforeSend:	function(){
										$submit.attr("disabled","disabled");
										$msg.attr("className","msg").text("正在发送邀请");
										if(!$msg.data("default")) $msg.data("default",$msg.text());
										interval = window.setInterval(function(){
													var text = $msg.text();
													if (text.length < $msg.data("default").length + 3 ){
														$msg.text(text + '.');
													} else {
														$msg.text( $msg.data("default") );
													}
												}, 200);
									},
						success:	function(msg){
										window.clearInterval(interval);
										if(msg){
											$msg.addClass("error").text(msg);
											$submit.removeAttr("disabled");
										}else{
											$msg.attr("className","msg info").text("成功发送邀请,请等待对方审核! 2秒后窗口将自动关闭!");
											window.setTimeout(function(){ 
												$.fn.fancybox.close();
											},2000)
										}
									},
						error:		function(e){
										window.clearInterval(interval);
										$msg.addClass("error").text(e);
										$submit.removeAttr("disabled");
									}
					});
				}
			},
		SendMsg:function(obj){
				/* fancy box to send msg */
				var $form 	= $(obj),
				$msg 	= $form.find("span.msg"),
				$submit	= $form.find("input.submit"),
				$summary = $form.find("textarea[name=summary]");
				var url = $form.attr("action");
				
				if(jQuery.trim($summary.val()) == ""){
					$msg.addClass("error").text("请输入内容");
				}else{
					var summary = $summary.val(),
						pid = $form.find("input[name=pid]").val(),
						tw_type = $form.find("input[name=tw_type]").val(),
						userguid = $form.find("input[name=userguid]").val();
					
					data="summary="+summary+"&pid="+pid+"&tw_type="+tw_type+"&userguid="+userguid;
					$.ajax({
						url:		url,
						type:		"post",
						dataType:	"text",
						data:		data,
						beforeSend:	function(){
										$submit.attr("disabled","disabled");
										$msg.attr("className","msg").text("正在发送私信");
										if(!$msg.data("default")) $msg.data("default",$msg.text());
										interval = window.setInterval(function(){
													var text = $msg.text();
													if (text.length < $msg.data("default").length + 3 ){
														$msg.text(text + '.');
													} else {
														$msg.text( $msg.data("default") );
													}
												}, 200);
									},
						success:	function(msg){
										window.clearInterval(interval);
										if(msg){
											$msg.addClass("error").text(msg);
											$submit.removeAttr("disabled");
										}else{
											$msg.attr("className","msg info").text("成功发送私信! 2秒后窗口将自动关闭!");
											window.setTimeout(function(){ 
												$.fn.fancybox.close();
											},2000)
										}
									},
						error:		function(e){
										window.clearInterval(interval);
										$msg.addClass("error").text(e);
										$submit.removeAttr("disabled");
									}
					});
				}
			},
		invite_agree:function(obj){
			///friend/dofriend/
			$.post( $(obj).attr("href") ,{},function(msg){
					if(msg){
						alert(msg)
					}else{
						$(obj).parents().fliter("li").remove();
					}
			})
			return false;
		},
		invite_ungree:function(obj){
			///friend/uninvite/966/1549
			$.post( $(obj).attr("href") ,{},function(msg){
					if(msg){
						alert(msg)
					}else{
						$(obj).parents().fliter("li").remove();
					}
			})
			return false;
		}
	}
	GPS.prediction_viewlog = function(obj,id){
		var $anchor = $(obj),
			$ul = $anchor.next();
		if(!$anchor.data("default")){ $anchor.data("default", $anchor.text()); }
		if($ul.is(":visible")){
			$anchor.text( $anchor.data("default") );
			$ul.remove();
		}else{
			if($ul[0]){
				$ul.empty();
			}else{
				$anchor.after("<ul class='loglist' style='display:none'></ul>");
				$ul = $anchor.next();

				$.ajax({
					url:GPS.config.prediction_load_changes + id,
					type:"post",
					dataType:"text",
					success:function(msg){
						var str = "";
						if (msg.indexOf(",") > -1){
							var arr = msg.split(",");
							for (var i=0,j = arr.length; i<j ; i++ ){
								str += "<li>"+arr[i]+"</li>";
							}
						}else{
							str = "<li>"+ msg +"</li>";
						}
						$ul.append(str);
					},
					error:function(){
						me.msg("对不起,加载失败,请重试!");
					}
				})

				$ul.show();
				$anchor.text("关闭");
			}
		}
	}
	GPS.do_poll = function( form ){
		var $form	= $(form),
			$msg	= $form.find(".msg"),
			$submit = $form.find("input.submit"),
			data	= {},
			interval;
		var $opts = $form.find("input[name^=opts]").filter(":checked");
		if($opts.length < 1){
			$msg.addClass("error").text("请选择您的投票!");
		}else{
			var opts = "",
				guid = $form.find("input[name=poll_guid]").val();

			for( var i=0, j=$opts.length; i<j; i++){
				opts = opts + $opts.eq(i).val() + "|";
			}
			if(opts.lastIndexOf("|") > 0){ opts = opts.substring(0, opts.length - 1); }
			data = {
					poll_guid : guid,
					opts:		opts
				}
			$.ajax({
				url:		GPS.config.a_do_poll,
				type:		"post",
				dataType:	"text",
				data:		data,
				beforeSend:	function(){
								$submit.attr("disabled","disabled");
								$msg.attr("className","msg").text("投票提交中");
								if(!$msg.data("default")) $msg.data("default",$msg.text());
								interval = window.setInterval(function(){
											var text = $msg.text();
											if (text.length < $msg.data("default").length + 3 ){
												$msg.text(text + '.');
											} else {
												$msg.text( $msg.data("default") );
											}
										}, 200);
							},
				success:	function(msg){
								window.clearInterval(interval);
								if(msg){
									$msg.addClass("error").text(msg);
									$submit.removeAttr("disabled");
								}else{
									$msg.attr("className","info").text("投票成功,正在更新.");
									window.setTimeout( function(){
										//$form.parent().parent().load( GPS.config.c_do_poll + guid)
										$form.parents().filter("div.poll_module").eq(0).load( GPS.config.c_do_poll + guid);
									} ,1000)
								}
							},
				error:		function(e){
								window.clearInterval(interval);
								$msg.addClass("error").text(e);
								$submit.removeAttr("disabled");
							}
			});
		}
	}
	GPS.setbox = {
		doSwitch:function(obj){
			var $obj = $(obj),
				$set_main = $obj.parent().parent().parent().find(".set_content");
							
			if(!$obj.data("default")) { $obj.data("default",$obj.text()); }
			if( $set_main.is(":hidden") ){
				$obj.text("取消");
				$set_main.slideDown();
			}else{
				$obj.text( $obj.text($obj.data("default")) );
				$set_main.slideUp();
			}
		},
		cancel:function(obj){
			var $obj = $(obj);
			var $main = $obj.parent().parent().parent().slideUp("fast");
			var $anchor = $main.parent().find("h3 .set_list a");
			$anchor.text($anchor.data("default"));
		}
	}
	GPS.getHotTag = function($obj){
		$.ajax({
			url:GPS.config.a_hot_tag_load,
			type:"post",
			dataType:"text",
			beforeSend:function(){
				$obj.hide();
			},
			success:function(msg){
				$obj.empty().html(msg).hide().slideDown(1000);
			}
		});
	}
	GPS.setHotTag = function( form ){
		var $form 		= $(form),
			$submit		= $form.find("input.submit"),
			tag_span 	= $form.find("select[name=tag_span]").val(),
			tag_num 	= $form.find("select[name=tag_num]").val();
		$submit.attr("disabled");
		$.ajax({
			url: GPS.config.a_hot_tag_set + tag_span + "/" + tag_num,
			type:"post",
			dataType:"text",
			success:function(msg){
				$submit.removeAttr("disabled");
				$form.parent().prev().find(".set_list a").click();
				var $main = $form.parent().next().find("ul");
				GPS.getHotTag( $main );
			}
		});
	}
	GPS.ExtraPlayer = {
		close:function(obj,resetFlag){
			$full = $(obj).parents().filter(".fullpic").eq(0);
			$full.hide().prev().show();
			if(resetFlag){
				$(obj).parents().filter(".fullpic").eq(0).empty();
			}
		},
		show:function(obj){
			$small = $(obj).parents().filter(".thumbpic").eq(0);
			$small.hide();
			$full = $small.next();
			$full.show();
			window.scroll(0,$full.offset().top - 30);
		}
	}
	GPS.ImgPlayer = {
		close:function(obj, resetFlag){
			GPS.ExtraPlayer.close(obj,resetFlag);
		},
		playPrev:function(obj){
			var $loader = $(obj).parent().find(".loader"),
				$full = $loader.parent(),
				$small = $full.prev(),
				$sects = $loader.find(".sect");
			var index = $sects.index($loader.find(".on"));
			index -= 1;
			if(index < 0){
				index = $sects.length-1;
			}
			GPS.ImgPlayer.playAt(index, $small, $full );
		},
		playNext:function(obj){
			var $loader = $(obj).parent().find(".loader"),
				$full = $loader.parent(),
				$small = $full.prev(),
				$sects = $loader.find(".sect");
			var index = $sects.index($loader.find(".on"));
			index += 1;
			if(index > $sects.length - 1){
				index = 0;
			}
			GPS.ImgPlayer.playAt(index, $small, $full );
		},
		playAt:function( index, $small, $full ){
			$full.find(".sect").filter(".on").removeClass("on");
			var $sect = $full.find(".sect").eq(index);
			$sect.addClass("on");
			if($sect.css("backgroundImage").indexOf("loading_1.gif") > -1){
				var imgurl = $small.find("img").eq(index).attr("src");
				imgurl = imgurl.replace(/small_/,'big_');
				$sect.css("backgroundImage","url("+imgurl+")");
				
				var full_imgurl = imgurl.replace(/big_/,"");
				full_imgurl = full_imgurl.replace(/thumbs/,'images');
				$sect.html("<a href='javascript:void(0)' onclick='GPS.ImgPlayer.close(this);return false;'>关闭</a>");
				$sect.append("<p class='view_orgin'><a href='"+ full_imgurl +"' target='_blank'>查看原图</a></p>")
			}
			
			$full.find(".loader").animate({
				left: -(index * $full.width())
			})
			if($full.find(".info span.page")[0]){
				$full.find(".info span.page b").text(index+1)
			}
		},
		play:function(obj){
			GPS.ExtraPlayer.show(obj);
			var $obj = $(obj),
				$small = $obj.parents().filter(".thumbpic").eq(0),
				$full = $small.next(),
				index = $small.find("a").index($obj),
				$list = $small.find("a");
			
			if(jQuery.trim($full.text()) == ""){
				$full.append("<div class='loader'></div><div class='info'></div>");
				for(var i=0,j=$list.length; i<j; i++){
					$full.find(".loader").append("<div class='sect'></div>");
				}
				$full.find(".loader").css("width",$full.width() * $list.length);
				$full.find(".loader .sect").css("width",$full.width());
				
				if($list.length > 1){
					$full.find(".info").prepend("<span class='page'>第<b></b>张/共"+$list.length+"张图片</span>")
					$full.prepend("<div class='playbtn prev'>prev</div><div class='playbtn next'>next</div>");
					$full.find(".playbtn").fadeTo(500,0)
						.hover(
							function(){
								$(this).fadeTo(500,.1)
							},function(){
								$(this).fadeTo(500,0);
							}
						)
					$full.find(".prev").click(function(){
						GPS.ImgPlayer.playPrev(this);
					})
					$full.find(".next").click(function(){
						GPS.ImgPlayer.playNext(this);
					})
				}
			}
			GPS.ImgPlayer.playAt( index, $small, $full );
		}
	}
	GPS.MediaPlayer = {
		close:function(obj, resetFlag){
			GPS.ExtraPlayer.close(obj,resetFlag);
		},
		play:function(obj,id){
			GPS.ExtraPlayer.show(obj);
			var $obj = $(obj),
				$small = $obj.parents().filter(".thumbpic").eq(0);
			if(jQuery.trim($full.text()) == ""){
				$full.append("<div class='loader'></div>");
				$.getJSON(GPS.config.ajax_video_url+id,function(data){
					if(data.error == ""){
						if(data.flashvars){
							var html = '<object width="446" height="326">';
							html += '<param name="movie" value="'+data.link+'"></param>';
							html += '<param name="allowFullScreen" value="true" />';
							html += '<param name="allowScriptAccess" value="always"/>';
							html += '<param name="wmode" value="transparent"></param>';
							html += '<param name="bgColor" value="#ffffff"></param>';
							html += '<param name="flashvars" value="'+data.flashvars+'" />';
							html += '<embed src="'+data.link+'" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="'+data.flashvars+'"></embed>';
							html += '</object>';
							$full.find(".loader").html(html);
						}else{
							$full.find(".loader").flash({
								src: data.link,
								width: 440,
								height: 360,
								flashvars: { playMovie: 'true' }
							});
						}
						$full.prepend("<div class='info'><a href='javascript:void(0)' onclick='GPS.MediaPlayer.close(this);return false;'>收起</a></div>");
					}else{
						$full.find(".loader").text(data.error);
						$full.prepend("<div class='info'><a href='javascript:void(0)' onclick='GPS.MediaPlayer.close(this,true);return false;'>收起</a></div>");
					}
				})
				
			}
		}
	}
	GPS.addCheckbox = function(obj, jBox ,ipt_name, input){
		var input 		= input? input : $(obj).prev(),
			input_val 	= jQuery.trim(input.val());
		if( input_val == ""){ input.get(0).focus(); return; }
		
		var is_exist = false; 
		for(var i=0,j=jBox.children().length; i<j; i++){
			if(jQuery.trim(jBox.children().eq(i).text()) == input_val ){
				is_exist = true;
				break;
			}
		}
		if(!is_exist){
			if(jBox.prev()[0]){
				for(var i=0,j=jBox.prev().children().length; i<j; i++){
					if(jQuery.trim(jBox.prev().children().eq(i).text()) == input_val ){
						is_exist = true;
						break;
					}
				}
			}
		}
		if(!is_exist){
			var dom_html = '<span>';
				dom_html += '<a class="remove" href="javascript:void(0)"></a>';
				dom_html += '<input type="checkbox" value="'+ input_val +'" name="'+ ipt_name +'" checked="checked">';
				dom_html += input_val;
				dom_html += '</span>';
				
			$(dom_html).appendTo(jBox).find("a.remove").click(function(){
				$(this).parent().remove();
			});
		}
		$(obj).prev().val("").focus();
	}
	GPS.getLuckyMoney = function(){
		var url = GPS.config.lucky_money;
		var button = $("#lucky_box button");
		$.ajax({
			url:		url,
			type:		"post",
			dataType:	"text",
			data:	't='+new Date(),
			beforeSend:	function(){
							button.attr("disabled","disabled")
						},
			success:	function(response){
							var data = eval('(' + response + ')'); 
							if(data.error){
								button.replaceWith(data.error)
							}else{
								button.replaceWith(data.msg)
								$("#lucky_box span.a").text(data.data.a)
								$("#lucky_box span.b").text(data.data.b)
								$("#lucky_box span.c").text(data.data.c)
							}
							var new_num = "" + data.data.a + data.data.b + data.data.c;
							$("#money_24 b").text( new_num - 0 + ($("#money_24 b").text()-0))
						},
			error:		function(e){
							button.replaceWith(e)
						}
			
		});
	}
var User = {}
	User.check_unused = function( input ){
		var $input = $(input),
			$input_val = jQuery.trim($input.val());
		if($input_val == ""){ 
			if($input.next()[0]){
				$input.next().addClass("error").text("昵称不能为空");
			}else{
				$("<span class='msg error' style='margin-left:5px;'>昵称不能为空</span>").insertAfter($input);
			}
			return;
		 }
		if($input_val == $input.data("default")){ return; }
		
		$.post(GPS.config.user_check_unused+"/"+$input_val, {}, function(msg){
			if(msg){
				if($input.next()[0]){
					$input.next().addClass("error").text(msg);
				}else{
					$("<span class='msg error' style='margin-left:5px;'>"+msg+"</span>").insertAfter($input);
				}
			}else{
				$input.next().text("")
			}
		})
	}

var GMsg	= {
		doing : false
	};

	GMsg.say = function(content,type){
		if(GMsg.doing){
			GMsg.clear();
		}
		GMsg.doing = true;
		$("#globle_msg .main").html(content).addClass( type )
		if(jQuery.browser.msie){
			$("#globle_msg").css("left",(document.body.scrollWidth - $("div.bodyer").children(":first-child").width())/2 + 10);
		}
		GMsg.output();
	}

	GMsg.output = function(){
		$("#globle_msg").fadeIn("slow", function(){
				GMsg.timer = window.setTimeout(function(){
					GMsg.close();
				},3000)
			}
		);
	}

	GMsg.close = function(){
		$("#globle_msg").fadeOut("slow", function(){
				$("#globle_msg .main").attr("className","main").empty();
				GMsg.progress = false;
				window.clearTimeout(GMsg.timer);
			}
		);
	}

	GMsg.clear = function(){
		$("#globle_msg .main").attr("className","main").empty();
		GMsg.progress = false;
		window.clearTimeout(GMsg.timer);
	}

var Editor = {};
	Editor.selectTxt	= function(obj,posS,posE){
		if(obj.setSelectionRange){
			obj.focus();
			obj.setSelectionRange(posS+1,posE); 
		}else{
			obj.focus();
			var rng = obj.createTextRange();
			rng.moveEnd('character',-($(obj).val().length - posE));     
			rng.moveStart('character',posS+1);    
			rng.select();
		}
	}
	Editor.moveTxt		= function(obj,pos){
		if(obj.setSelectionRange){
			obj.focus();
			obj.setSelectionRange(pos,pos);
		}else{
			obj.focus();
			var rng = obj.createTextRange();
			rng.moveStart("character",pos);
			rng.collapse(true);
			rng.select();
		}
	}
	Editor.build_upload = function( $form, id ){
		var msgbox = $form.find("div.toolbar .msg"),
			button = $form.find(".aPhoto");
		button.data('default',button.text());

		function deletePreview( obj ){
			var file = $(obj).prev().attr("src");
			file = file.substring( file.lastIndexOf("/")+1, file.length);
			$.post( GPS.config.upload_delete ,{"id":file,'type': id},function(msg){
					if(msg){
						msgbox.addClass("error").text(msg);
					}
					$(obj).parent().parent().parent().remove(); 
			})
		}

		var opts = {
					action: GPS.config.upload + id,
					name:id,
					onSubmit : function(file, ext)
						{
							msgbox.attr("className","msg").text('');
							button.text('正在上传');
							this.disable();
						},
					onComplete: function(file, response)
						{
							this.enable();
							var data = eval('(' + response + ')'); 
							if(data.error){
								button.text('重新上传');
								msgbox.addClass("error").text(data.error);
							}else{
								button.text('继续上传');
								var f_url = GPS.config.upload_temp_path + 
											data.msg.raw_name + 
											GPS.config.upload_image_thumb_marker +
											data.msg.file_ext;
							
								var html = '<a href="javascript:void(0);"><div><img src="'+ f_url +'" /><span class="delete">x</span></div></a>';
								$form.find("ol.p-f").append('<li>'+html+'</li>')
								
								$form.find("span.delete").html("X").click(
									function(){
										deletePreview(this);
									}
								)
							}
						}
					};
		
		function beforeCheck(){
			var flag = false;
			if($form.find("ol.p-f li").length >= 9){
				msgbox.addClass("error").text("最多上传9张图片");
				flag = true;
			}
			return flag;
		}
		new AjaxUpload(button,opts,beforeCheck);
	}
	Editor.build_media = function($form){
		var msgbox	= $form.find("div.aMedia_box .msg"),
			button	= $form.find(".aMedia"),
			$box	= $form.find(".aMedia_box"),
			$media	= $box.find("input.txt"),
			$submit = $box.find("input.submit"),
			$v_frm	= $box.find("div.form"),
			$v_data = $box.find("div.form_data");
		button.data('default',button.text());
		$submit.data('default',$submit.val());

		$v_data.find("a.delete").bind("click",function(){
			if(jQuery.trim($form.find("textarea[name=summary]").val()) == "#视频分享#"){
				$form.find("textarea[name=summary]").val("");
			}
		})
		
		Editor.build_POP($form,button,$box);
		$submit.click(function(){
			if(jQuery.trim($media.val()) == ""){
				msgbox.addClass("error").text("请输入视频地址")
				$media.focus();
				setTimeout(function(){ msgbox.removeClass("error").text("")}, 2000)
			}else{
				$.ajax({
					url:		GPS.config.ajax_video_check,
					type:		"post",
					dataType:	"json",
					data:		{"video_web_url":jQuery.trim($media.val())},
					beforeSend:	function(){
									$submit.attr("disabled","disabled");
									$media.attr("disabled","disabled");
									
									interval = window.setInterval(function(){
										$submit.val("正在提交");
										var text = $submit.val();
										if (text.length < 7 ){
											$submit.val(text + '.');
										} else {
											$submit.val( "正在提交" );
										}
									}, 200);
								},
					success:	function(data){
									window.clearInterval(interval);
									$submit.val($submit.data('default'))
									if(data.error == ""){
										button.addClass("checked");
										$v_frm.hide();
										$v_frm.find("input.txt").val(data.link);
										$v_data.find("span").html(data.link)
										$v_data.show();
										if(jQuery.trim($form.find("textarea[name=summary]").val()) == ""){
											$form.find("textarea[name=summary]").val("#视频分享#").focus();
										}
									}else{
										msgbox.addClass("error").text(data.error);
										$submit.removeAttr("disabled");
										$media.removeAttr("disabled").select();
										setTimeout(function(){msgbox.removeClass("error").text("")},2000)
									}
								},
					error:		function(e){
									window.clearInterval(interval)
									$submit.val($submit.data('default')).removeAttr("disabled");
									$media.removeAttr("disabled");
									msgbox.addClass("error").text(e);
									setTimeout(function(){msgbox.removeClass("error").text("")},2000)
									
								}
				});
			}
		})
	}

	Editor.build_topic = function( $form ){
		var me = this;
		var $button = $form.find(".aTopic"),
			$textarea = $form.find("textarea");
		$button.click(
			function(){
				var textarea = $textarea.get(0);
				var rng = null, pos1 = null, pos2 = null;
				var defaultStr = "#输入您的话题#";
				textarea.focus();

				if($textarea.val().indexOf(defaultStr) > -1 ){
					pos1 = $textarea.val().indexOf(defaultStr);
					pos2 = pos1 + defaultStr.length - 1;
					me.selectTxt(textarea,pos1,pos2);
				}else{
					$textarea.val($textarea.val() + defaultStr);
					pos1 = $textarea.val().length - defaultStr.length; 
					pos2 = $textarea.val().length - 1;
					me.selectTxt(textarea,pos1,pos2);
				}
			}	
		)
	}

	Editor.build_suggest = function( $form ){
		var me = this;
		var $button = $form.find(".aSuggest"),
			$textarea = $form.find("textarea");
		$button.click(
			function(){
				var textarea = $textarea.get(0);
				var defaultStr = "#意见反馈#",pos = null;
				var flag = true;
				textarea.focus();
				pos = $textarea.val().lastIndexOf(defaultStr);
				if(pos > -1){
					if(pos + defaultStr.length == $textarea.val().length){
						flag = false;
					}
				}
				if(flag){
					$textarea.val($textarea.val() + defaultStr);
				}
				pos = $textarea.val().length;
				me.moveTxt(textarea,pos);
			}	
		)
	}

	Editor.build_POP = function($form,button,$box){
		var $input	= $box.find("input.txt"),
			$submit = $box.find("input.submit"),
			$v_frm	= $box.find("div.form"),
			$v_data = $box.find("div.form_data");
		if(!$input[0]){
			$input = $box.find("textarea");
		}

		button.click(function(){
			if($box.is(":hidden")){
				$form.find(".pop_box").hide();
			}
			$box.toggle(function(){
				$input.focus();
			});
		})
		$box.find("span.close").click(function(){
			$box.hide();
			$input.val($v_data.find("span").eq(0).text())
		})

		$v_data.find("a.delete").bind("click",function(){
			$v_data.hide();
			$(this).parents().filter(".form_data").eq(0).find("span").eq(0).text("");
			$submit.removeAttr("disabled");
			$input.removeAttr("disabled").val("")
			$v_frm.show();
			$input.focus();
			button.removeClass("checked");
		})
	}

	Editor.build_link = function($form){
		var button	= $form.find(".aLink"),
			$box	= $form.find(".aLink_box");
		Editor.build_POP($form,button,$box);

		var $input = $box.find("input.txt"),
			$submit = $box.find("input.submit"),
			$v_frm	= $box.find("div.form"),
			$v_data = $box.find("div.form_data"),
			$msgbox = $box.find(".msg");
		$submit.data('default',$submit.val());
		$submit.click(function(){
			var url = jQuery.trim($input.val());
			if(url == ""){
				$msgbox.addClass("error").text("请输入原文链接")
				$input.focus();
				setTimeout(function(){ $msgbox.removeClass("error").text("")}, 2000)
			}else if(! /[a-zA-z]+:\/\/[^\s]*/.test(url)){
				$msgbox.addClass("error").text("原文链接格式有误")
				$input.select();
				setTimeout(function(){ $msgbox.removeClass("error").text("")}, 2000)
			}else{
				button.addClass("checked");
				$v_frm.hide();
				$v_data.find("span").html(url)
				$v_data.show();
			}
		})
	}
	Editor.build_remark = function($form){
		var button	= $form.find(".aRemark"),
			$box	= $form.find(".aRemark_box");
		Editor.build_POP($form,button,$box);

		var $input = $box.find("textarea"),
			$submit = $box.find("input.submit"),
			$v_frm	= $box.find("div.form"),
			$v_data = $box.find("div.form_data"),
			$msgbox = $box.find(".msg");
		$submit.data('default',$submit.val());
		$submit.click(function(){
			var url = jQuery.trim($input.val());
			if(url == ""){
				$msgbox.addClass("error").text("请输入点评内容")
				$input.focus();
				setTimeout(function(){ $msgbox.removeClass("error").text("")}, 2000)
			}else{
				var content = jQuery.trim($input.val());
				content = content.replace(/\n/g,"<br />");
				button.addClass("checked");
				$v_frm.hide();
				$v_data.find("span").html(content)
				$v_data.show();
			}
		})
		$v_data.find("a.edit").bind("click",function(){
			$v_data.hide();
			$v_frm.show();
			$input.select();
		})
	}

	Editor.send_before = function( form, $type ){
		var $form		= $(form),
			msgbox		= $form.find(".action .msg"),
			submit_btn	= $form.find("input[type=submit]");

		if(!submit_btn.data("default")) submit_btn.data("default", submit_btn.val() );

		submit_btn.val("正在提交").attr("disabled","disabled");
		msgbox.attr("className","msg").text("");
	}

	Editor.send_error = function( form, $type, msg ){
		var $form		= $(form),
			msgbox		= $form.find(".action .msg"),
			submit_btn	= $form.find("input[type=submit]");
		submit_btn.val(submit_btn.data("default")).removeAttr("disabled");
		msgbox.addClass("error").text( msg );
	}

	Editor.send_ok = function( form, $type ){
		var $form		= $(form),
			msgbox		= $form.find(".action .msg"),
			submit_btn	= $form.find("input[type=submit]");
		submit_btn.val("提交成功");
		msgbox.attr("className","msg").text( "" );
	}

	Editor.ajaxSend = function( form, $type, callback ){
		var ajax_url	= '',
			data		= {},
			file_sid	='',
			$form		= $(form),
			$msg		= $form.find('.action .msg');
		switch($type){
			case 'tweet':
				ajax_url	= GPS.config.t_create;
				file_sid	='tfile';
				break;
			case 'seed':
				ajax_url	= GPS.config.seed_create;
				file_sid	='sfile';
				break;
			case 'poll':
				ajax_url 	= GPS.config.poll_create;
				file_sid	= 'pfile';
			default:
		}

		var summary = $form.find("textarea[name=summary]").val(),
			tw_type = $form.find("input[name=tw_type]").val();
		data = {
			tw_type: tw_type,
			file_sid: file_sid,
			summary: summary
		}
		if($type == "tweet"){
			data.media_link = jQuery.trim($form.find("input[name=media_link]").val());
		}

		if($type == "seed"){
			var headline_ch = $form.find("input#headline_ch").val(),
				url			= $form.find("input[name=url]").val(),
				remark		= jQuery.trim($form.find("textarea[name=remark]").val()),
				seed_type	= $form.find("#seed_type").val();
			data.title = headline_ch;
			data.url = url;
			data.remark = remark;
			data.seed_type = seed_type;
			data.media_link = jQuery.trim($form.find("input[name=media_link]").val());
		}
		
		if( $type=="poll"){
			var title = jQuery.trim($form.find("input#title").val()),
				s_type = $form.find("input[name=s_type]:checked").val(),
				opts = '';
				
			var _vs 	= $form.find("input[name=opts]");
			
			for( var i=0, j=_vs.length; i<j; i++){
					var _v =  jQuery.trim(_vs.eq(i).val());
					_v = _v.replace(/\|/, "/");
					if(_v != ""){ opts = opts + _v + "|"; } 
			}
			if(opts.lastIndexOf("|") > 0){ opts = opts.substring(0, opts.length - 1); }
			data.title = title;
			data.s_type = s_type; 
			data.opts = opts;
			data.main = summary;
		}
		$.ajax({
			url:		ajax_url,
			type:		"post",
			dataType:	"text",
			data:		data,
			beforeSend:	function(){
							Editor.send_before( form, $type );
						},
			success:	function(msg){
							if(!msg){
								Editor.send_ok( form, $type );
								if(callback){
									setTimeout( callback, 1000 )
								}
							}else{
								Editor.send_error ( form, $type, msg );
							}
						},
			error:		function(e){
							Editor.send_error ( form, $type, msg );
						}
		});
	}
	Editor.submit_check = function( form, $type ){
		var flag	= true,
			$form	= $(form),
			$msg	= $form.find(".action span.msg"),
			$textarea = $form.find("textarea[name=summary]");
		switch ($type){
			case "seed":
				var $headline_ch = $form.find("#headline_ch");
				if(jQuery.trim( $headline_ch.val()) == "" || jQuery.trim($headline_ch.val()) == $headline_ch.data('default') ){
					$msg.addClass("error").text("请输入标题");
					$headline_ch.get(0).focus();
					flag = false;
				}else if(jQuery.trim($textarea.val()) == "" || jQuery.trim($textarea.val()) == $textarea.data('default')){
					$msg.addClass("error").text("请输入原文摘要");
					$textarea.get(0).focus();
					flag = false;
				}else{
					flag = true;
				}
				break;
			case "poll":
				var $title = $form.find("#title"),
					$opts_1 = $form.find("#opts_1"),
					$opts_2 = $form.find("#opts_2");
					
				if(jQuery.trim( $title.val()) == ""){
					$msg.addClass("error").text("请输入主题");
					$title.get(0).focus();
					flag = false;
				}else if(jQuery.trim($opts_1.val()) == ""){
					$msg.addClass("error").text("请输入选项内容");
					$opts_1.get(0).focus();
					flag = false;
				}else if(jQuery.trim($opts_2.val()) == ""){
					$msg.addClass("error").text("请输入选项内容");
					$opts_2.get(0).focus();
					flag = false;
				}else{
					flag = true;
				}
				break;
			default:
				if(jQuery.trim($textarea.val()) == ""){
					$msg.addClass("error").text("请输入内容.");
					$textarea.get(0).focus();
					flag = false;
				}
		}
		return flag;
	}
	Editor.submit = function( form, callback ){
		var $form = $(form), $type='';
		switch ($form.attr("id")) {
			case "frm_t":
				$type="tweet";
				break;
			case "frm_s":
				$type="seed";
				break;
			case "frm_p":
				$type="poll";
				break;
			default:
		}
		if(this.submit_check(form, $type)){
			this.ajaxSend( form, $type, callback );
		}
	}

var Toolbar = {};
	Toolbar.switchShow = function(obj, id){
		if( $(obj).hasClass("on") ){
			Toolbar.nolight(obj);
		}else{
			Toolbar.highlight( obj, id )
		}
	}
	Toolbar.highlight = function( obj, id ){
		var $toolbar = $(obj).parent(),
			me = this;
		me.reset( $toolbar );

		var $type = $(obj).attr("className");
		$(obj).addClass("on");
		$toolbar.find(".ebox").load(GPS.config.t_toolbar_form + id,function(){
			var $module = $toolbar.find("div."+$type).show();
			$toolbar.find(".ebox").show();
			if($type=="reply"){ me.loadComments( $module, id ); }
		});
	}
	Toolbar.nolight = function( obj ){
		$toolbar = $(obj).parent();
		$toolbar.find(".ebox").empty().hide();
		$(obj).removeClass("on");
	}
	Toolbar.reset = function( $toolbar ){
		$toolbar.find("a.on").removeClass("on");
		$toolbar.find(".ebox").hide().empty();
	}
	Toolbar.vote = function( obj, id ){
		$.ajax({
			url:		GPS.config.t_do_vote,
			type:		"post",
			data:		"entity_guid="+id,
			success:	function(msg){
				if(msg){
					alert(msg);
				}else{
					var $num = $(obj).find("b");
					$num.html($num.html() - 0 + 1);
					$(obj).attr("title","已推荐")
						.attr("href","javascript:void(0)")
							.attr().removeAttr("onclick")
								.wrap("<span class='disable'></span>");
					obj.blur();
				}
			}
		});
	}
	Toolbar.recommend = function( obj, id ){
		$.post( GPS.config.t_do_recommend+id);
		if(/^\s*推/.test($(obj).text())){
			$(obj).html("取消推到首页");
		}else{
			$(obj).html("推到首页");
		}
		obj.blur();
	}
	Toolbar.retweet = function( obj, id ){
		$.post( GPS.config.t_do_retweet, {"entity_guid":id } );
		var num = $(obj).find("b").html();
		if(/^\s*转发/.test($(obj).text())){
			$(obj).html("取消转发<span class='num'>(<b>"+ (num - 0 + 1) +"</b>)</span>");
			$(obj).attr("title","取消转发")
		}else{
			$(obj).html("转发<span class='num'>(<b>"+ (num - 1) +"</b>)</span>");
			$(obj).attr("title","转发")
		}
		obj.blur();
	}
	Toolbar.bookmark = function( obj, id ){
		$.post( GPS.config.t_do_bookmark ,{"entity_guid": id});
		var num = $(obj).find("b").html();
		if(/^\s*收藏/.test($(obj).text())){
			$(obj).html("取消收藏<span class='num'>(<b>"+ (num - 0 + 1) +"</b>)</span>");
			$(obj).attr("title","取消收藏")
		}else{
			$(obj).html("收藏<span class='num'>(<b>"+ (num - 1) +"</b>)</span>");
			$(obj).attr("title","收藏")
		}
		obj.blur();
	}
	Toolbar.del = function( obj, id ){
		Toolbar.switchShow(obj,id);
	}
	Toolbar.doDelete = function( form ){
		var $form	= $(form),
			id		= $form.find("input[name=pid]").val(),
			data	= "entity_guid=" + id,
			url		= GPS.config.t_do_delete;
		var $submit		= $form.find("input[type=submit]"),
			$msg		= $form.find(".msg");
		$.ajax({
			url:		url,
			type:		"post",
			dataType:	"text",
			data:		data,
			beforeSend:function(){
				$msg.html("").attr("className","msg");
				if(! $submit.data("default") ){ $submit.data("default", $submit.val()); }
				$submit.val("正在删除").attr("disabled","disabled");
			},
			success:function(msg){
				if(msg){
					$msg.addClass("error").html(msg);
					$submit.removeAttr("disabled").val($submit.data("default"));
				}else{
					$msg.attr("className","msg info").text("").prev().remove();
					$submit.remove();
					$form.parents().filter("li").eq(0).remove()
				}
			},
			error:function(e){
				$msg.addClass("error").html(e);
				$submit.removeAttr("disabled").val($submit.data("default"));
			}
		});
	}
	Toolbar.popDelReply = function(obj, id){
		art.dialog(
			{
				id:'_del_reply',
				content:'你确认要删除吗?',
				menuBtn:obj,
				width:220
			},
			function(){
				$.post(GPS.config.t_do_delete, {entity_guid:id})
				$(obj).parents().filter("li").eq(0).remove()
			},
			function(){
				//alert("bb")
			}
		);
		return false;
	}
	Toolbar.del_msg = function( obj, id ){
		Toolbar.switchShow(obj,id);
	}
	Toolbar.doDeleteMsg = function( form ){
		var $form	= $(form),
			id		= $form.find("input[name=entity_guid]").val(),
			position= $form.find("input[name=position]").val(),
			data	= { 'entity_guid':id, 'position': position},
			url		= GPS.config.t_do_delete_msg;
		var $submit		= $form.find("input[type=submit]"),
			$msg		= $form.find(".msg");

		$.ajax({
			url:		url,
			type:		"post",
			dataType:	"text",
			data:		data,
			beforeSend:function(){
				$msg.html("").attr("className","msg");
				if(! $submit.data("default") ){ $submit.data("default", $submit.val()); }
				$submit.val("正在删除").attr("disabled","disabled");
			},
			success:function(msg){
				if(msg){
					$msg.addClass("error").html(msg);
					$submit.removeAttr("disabled").val($submit.data("default"));
				}else{
					$msg.attr("className","msg info").text("").prev().remove();
					$submit.remove();
					$form.parent().parent().parent().parent().parent().remove();
				}
			},
			error:function(e){
				$msg.addClass("error").html(e);
				$submit.removeAttr("disabled").val($submit.data("default"));
			}
		});
	}
	Toolbar.reply_msg = function( obj, id ){
		Toolbar.switchShow(obj,id);
	}
	Toolbar.doReplyMsg = function( form ){
		var $form		= $(form),
			userguid	= $form.find('input[name=userguid]').val(),
			summary		= jQuery.trim($form.find("textarea").val()),
			tw_type		= $form.find('input[name=tw_type]').val(),
			data		= {},
			//url			= GPS.config.t_create;
			 url = $form.attr("action");
		var $submit		= $form.find("input[type=submit]"),
			$msg		= $form.find(".msg");
		data = {
			summary:summary,
			userguid:userguid,
			tw_type: tw_type
		}

		if(summary == ""){
			$msg.addClass("error").text("请输入内容");
			$form.find("textarea").get(0).focus();
		}else{
			$.ajax({
				url:		url,
				type:		"post",
				dataType:	"text",
				data:		data,
				beforeSend:function(){
					$msg.html("").attr("className","msg");
					if(! $submit.data("default") ){ $submit.data("default", $submit.val()); }
					$submit.val("正在提交").attr("disabled","disabled");
				},
				success:function(msg){
					if(msg){
						$msg.addClass("error").html(msg);
						$submit.removeAttr("disabled").val($submit.data("default"));
					}else{
						$form.find("textarea").val("");
						$submit.removeAttr("disabled").val($submit.data("default"));
						$msg.text("");
						var $anchor = $form.parent().parent().parent().find("a.reply_msg span");
						if( !/^已/.test($anchor.text()) ){
							$anchor.text( "已"+$anchor.text() );
						}
						$anchor.parent().removeClass("on");
						$form.parent().parent().empty();
					}
				},
				error:function(e){
					$msg.addClass("error").html(e);
					$submit.removeAttr("disabled").val($submit.data("default"));
				}
			});
		}
	}
	Toolbar.loadComments = function( $reply_form_div, id ){
		var root = $reply_form_div;
		if(root.find("div.comment")[0]){
			root.find("div.comment").empty().append("<h6 class='msg'></h6>");
		}else{
			root.prepend('<div class="comment"><h6 class="msg"></h6></div>');
		}
		var dom = root.find("div.comment h6");	
		
		$.ajax({
			url:		GPS.config.t_load_comments + id + "/" +new Date(),
			type:		"post",
			dataType:	"json",
			beforeSend:	function(){
					dom.data("default","加载中");
					dom.text( dom.data("default") );
					root.find("input.submit").attr("disabled","disabled");
					interval = window.setInterval(function(){
						var text = dom.text();
						if (text.length < dom.data("default").length + 3 ){
							dom.text(text + '.');
						} else {
							dom.text( dom.data("default") );
						}
					}, 200);
				},
			success:	function(data){
					root.find("input.submit").removeAttr("disabled");
					window.clearInterval(interval);
					dom.empty()
						
					if(data.commentCount > 0 ){
						var div = dom.parent();
						div.html('<h6><a href="'+data.moreUrl+'" title="查看全部">共<b>0</b>条评论</a>>></h6><ul></ul>');
						div.find("h6 b").html(data.commentCount);
						var list = data.entities;
						div.find("ul").append(list.join(""));
						div.parent().parent().parent().find("a.reply .num b").html(data.commentCount);
					}else{
						dom.text("暂无评论");
					}
				},
			error:		function(e){
					window.clearInterval(interval);
					dom.text("加载失败："+e);
					root.find("input.submit").removeAttr("disabled");
				}
			})
	}
	Toolbar.replyto = function(obj, id, father_id){
		var $li = $(obj).parent().parent();
		var $frm =	$li.parents().filter(".comment").eq(0).next();	//$li.parent().parent().next();
		var $uname = $li.children(':first-child').text();
		$uname = jQuery.trim($uname);
		var $fid = $frm.find("input[name=father_guid]");
		if(!$fid.data('default')){
			$fid.data('default', $fid.val());
		}
		$fid.val(father_id);

		if($frm.find('a.cancelReply')){
			$frm.find('a.cancelReply').parent().remove();
		}
		$frm.prepend('<p classs="replyto">回复:'+$uname+'&nbsp;&nbsp;<a class="cancelReply" href="javascript:void(0)" onclick="Toolbar.cancelReplyTo(this)">取消</a></p>');
		$frm.find("textarea").focus();
		window.scroll(0,$frm.offset().top - 100);	
		return false;
	}
	Toolbar.cancelReplyTo = function(obj){
		var $fid = $(obj).parent().parent().find('input[name=father_guid]');
		$fid.val($fid.data("default"));
		$(obj).parent().remove();
	}
	Toolbar.reply = function( obj, id, parentid ){
		if(parentid){ Toolbar.replyto( obj, id, parentid ); }
		else{
			if( $(obj).hasClass("on") ){
				Toolbar.nolight(obj);
			}else{
				Toolbar.highlight( obj, id )
			}
		}
	}
	Toolbar.doReply = function( form ,guid ){
		var $form		= $(form),
			id			= $form.find('input[name=pid]').val(),
			comment		= jQuery.trim($form.find("textarea").val()),
			father_guid = $form.find("input[name=father_guid]").val(),
			is_tweet	= '',
			data		= {},
			url			= GPS.config.t_do_reply;

		var $submit		= $form.find("input[type=submit]"),
			$msg		= $form.find(".msg");

		var $support	= $form.find("input[name=support]"),
			support		;

		if($form.find("input[name=is_tweet]").is(":checked")){
			is_tweet = "yes";
		}
		data = {
				comment:	comment,
				entity_guid:	id,
				father_guid:	father_guid,
				is_tweet:		is_tweet
			}
		if($support){
			$support = $support.filter(":checked");
			support = $support.val();
			data.support = support;
		}

		if(comment == ""){
			$msg.addClass("error").text("请输入内容");
			$form.find("textarea").get(0).focus();
		}else{
			$.ajax({
				url:		url,
				type:		"post",
				dataType:	"text",
				data:		data,
				beforeSend:function(){
					$msg.html("").attr("className","msg");
					if(! $submit.data("default") ){ $submit.data("default", $submit.val()); }
					$submit.val("正在提交").attr("disabled","disabled");
				},
				success:function(msg){
					if(msg){
						$msg.addClass("error").html(msg);
						$submit.removeAttr("disabled").val($submit.data("default"));
					}else{
						var $fid = $form.find("input[name=father_guid]");
						$fid.val( $fid.data("default") );
						$form.find("textarea").val("");
						$submit.removeAttr("disabled").val($submit.data("default"));
						$msg.text("");
						if($form.find('a.cancelReply')[0]){					// reply to:
							$form.find('a.cancelReply').parent().remove();
						}
						Toolbar.loadComments( $form.parent(), guid );
					}
				},
				error:function(e){
					$msg.addClass("error").html(e);
					$submit.removeAttr("disabled").val($submit.data("default"));
				}
			});
		}

		
	}

function Feed( idstr, opts ){
	this.id = idstr;
	this.$id = $("#"+this.id);
	this.$ul = null;
	this.$page = null;
	this.opts = {
		action: "getold",
		maxid :	0,
		minid : 0
	}
	this.interval = null;
	if(opts){  this.opts = $.extend( this.opts, opts); }
	this.init( this.opts );
	}
	Feed.prototype.load_view = function( obj, id, autoshow ){
		var li = $(obj),
			me = this;
			if( !autoshow ){ li.hide(); }
		$.ajax({
			url:		GPS.config.t_feed + id,
			type:		"post",
			dataType:	"text",
			beforeSend:	function(){
							li.addClass("loading");
						},
			success:	function(html){
							li.removeClass("loading").append($(html + "<div class='clear'></div>"));
							me.load_time(li,id);
							me.load_toolbar(li, id);
							if(autoshow){
								li.show();
							}
						},
			error:		function(e){
							//li.removeClass("loading").text("加载失败: "+e);
							li.text("");
						}
		});
	}
	Feed.prototype.load_toolbar = function(obj, id){
		$("<div class='toolbar'>&nbsp;</div>").insertBefore(obj.find(".clear:last")).load( GPS.config.t_toolbar+id);
	}
	Feed.prototype.load_time = function( obj,id ){
		obj.find(".status:last").load(GPS.config.t_time+id)
	}
	Feed.prototype.load = function( autoshow, opts ){
		var me = this,
			data = '';
		for( var key in opts ){
			data += (key + "=" + opts[key] + "&");
		}
		data += "timer="+new Date();
		
		var loadli = "", interval;
		
		if(autoshow){
			loadli = $("<li class='msg'>数据加载中</li>");
			loadli.data("default",loadli.text());
		}

		$.ajax({
			url:		GPS.config.getFeeds,
			type:		"post",
			dataType:	"json",
			data:		data,
			beforeSend:	function(){
							if(autoshow){
								if(opts.action == "getold"){
									loadli.appendTo(me.$ul);
								}else{
									loadli.prependTo(me.$ul);	
								}
								interval = window.setInterval(function(){
									var text = loadli.text();
									if (text.length < loadli.data("default").length + 3 ){
										loadli.text(text + '.');
									} else {
										loadli.text( loadli.data("default") );
									}
								}, 200);
							}
						},
			success:	function(data){
							if(autoshow){
								loadli.remove();
								window.clearInterval(interval);
							}
							
							me.opts.minid = data.minid;
							me.opts.maxid = data.maxid;

							var list = data.entities,
								ul = me.$ul,
								li = '';
							if(list.length > 0 ){
								$.each( list , function(i){
									//li += '<li id="_'+ list[i] +'"></li>';
									li += '<li></li>';
								})
								
								if(opts.action == "getold"){
									$(li).appendTo(ul).each(function(i){
										me.load_view( this, list[i],autoshow );
									})
								}else{
									$(li).prependTo(ul).each(function(i){
										me.load_view( this, list[i],autoshow );
									})
								}
							}

							if(opts.action == "getold"){
								if(data.isend){
									me.$page.removeClass("more").text("没有了");
								}else{
									if(!me.$page.hasClass("more")){
										me.$page.addClass("more").text("点击查看更多").hover(
											function(){ $(this).addClass("on"); },
											function(){ $(this).removeClass("on"); }
										).click(function(){
											if($(this).hasClass("more")){
												me.update( true, {action:"getold"} );
											}
										})
									}
								}
							}
						},
			error:		function(e){
							if(autoshow){
								loadli.text("加载失败: "+e);
								window.clearInterval(interval);
							}
						}
		});
	}
	Feed.prototype.init = function( opts ){
		var me = this;
		me.$id.load( GPS.config.t_feed_list , {action:"getnew"}, function(){
			me.$ul = me.$id.find("ul.feed");
			me.$page = me.$id.find(".pagination");
			me.update( true, opts );
		});
	}
	Feed.prototype.autoload = function(){
		var me = this;
		me.interval = window.setInterval(function(){
						me.update(false,{action:"getnew"},function(){ me.updateNotice(); })
					}, 60000);
	}
	Feed.prototype.update = function( autoshow, opts, callback ){
		if(opts){  this.opts = $.extend( this.opts, opts); }
		this.load( autoshow, this.opts );
		if(callback){
			callback();
		}
		if(autoshow){
			if(this.interval){
				window.clearInterval(this.interval);
			}
			this.autoload();
		}
	}
	Feed.prototype.updateNotice = function(){
		var me = this;
		var len = this.$ul.find("li:hidden").length;
		if(len > 0){
			if(this.$ul.prev()[0]){
				this.$ul.prev().html("有"+ len +"条新广播，刷新看看");
			}else{
				$("<p class='notice'>有"+ len +"条新广播，刷新看看</p>").insertBefore(this.$ul)
					.click(function(){
						$(this).next().find("li:hidden").show();
						$(this).remove();
						window.clearInterval(me.interval);
						me.autoload();
					})
			}
		}
	}

function FeedList(){}
	FeedList.close = function(obj){
		var $li = $(obj).parents().filter("li").eq(0);
		$li.removeClass("open");
	}
	FeedList.doOpen = function( obj , id ){
		var $obj = obj.attr() ? obj : $(obj);
		$obj.addClass("open");
		
		if($obj.hasClass("unread")){ 
			$obj.removeClass("unread");
			$.post( GPS.config.a_viewed_an_entity+id)
		}
		window.scroll(0,$obj.offset().top - 45);
	}
	
	FeedList.open = function(obj,id){
		var $li = $(obj).parents().filter("li").eq(0);
		var $main = $(obj).parents().filter(".section_main").eq(0);
		$main.find("li.open").removeClass("open");
		this.doOpen( $li, id );
	}

function Prediction(){}
	Prediction.timeUpdate = function( tArray, $obj ){
		var me = this,
			$timeEnd	= $obj;
			
		if(tArray[0] > 0){
			$timeEnd.html('<span class="day">'+tArray[0]+'</span>天<span class="hour">'+tArray[1]+'</span>小时<span class="minute">'+tArray[2]+'</span>分<span class="second">'+tArray[3]+'</span>秒');
		}else{
			$timeEnd.html('<span class="hour">'+tArray[1]+'</span>小时<span class="minute">'+tArray[2]+'</span>分<span class="second">'+tArray[3]+'</span>秒');
		}
	}
	Prediction.timeCount = function(　$obj ){
		var me = this,
			NowTime		= new Date(),
			$timeEnd	= $obj;
		
		if(!$timeEnd.data("default")){ $timeEnd.data("default",jQuery.trim($timeEnd.text()) ); }
		
		var timestr = $timeEnd.data("default");
		var timearr = timestr.split("-");
		var TimeEnd = new Date(timearr[0],timearr[1] - 0 - 1, timearr[2],00,00,00).getTime();
		var nMS		= TimeEnd - NowTime.getTime();
		
		var nD		= Math.floor(nMS/(1000 * 60 * 60 * 24));  
		var nH		= Math.floor(nMS/(1000*60*60)) % 24;  
		var nM		= Math.floor(nMS/(1000*60)) % 60;  
		var nS		= Math.floor(nMS/1000) % 60;  
		var nMS		= Math.floor(nMS/100) % 10;  
		
		if(nD>= 0){  
			me.timeUpdate([nD, nH, nM,nS ], $obj);
			setTimeout(function() { me.timeCount($obj)},1000);
		}else{
			$timeEnd.text("已结束");
		}
	}
	Prediction.moneyReset = function(obj){
		var $obj = $(obj),
			$form = $obj.parents().filter("form").eq(0);
			
		$form.find("input[name=amount]").val("");
		$form.find("div.bar button.on").removeClass("on");
		
		var $overage	= $form.find(".user .money b");
		if(!$overage.data("default")) { $overage.data("default", $overage.text()); }
		$overage.text( $overage.data("default") )
	}
	Prediction.addMoney = function(obj){
		function accSubtr(arg1,arg2){
			var r1,r2,m,n;
			try{
				r1=arg1.toString().split(".")[1].length
			}catch(e){r1=0}

			try{
				r2=arg2.toString().split(".")[1].length
			}catch(e){r2=0}
			m=Math.pow(10,Math.max(r1,r2));
			
			//动态控制精度长度
			n=(r1>=r2)?r1:r2;
			return ((arg1*m-arg2*m)/m).toFixed(n);
		} 
		var $obj	= $(obj),
			$form	= $obj.parents().filter("form").eq(0);
			$input	= $form.find("input[name=amount]"),
			$msg	= $form.find(".msg");
		
		var $overage	= $form.find(".user .money b");
		if(!$overage.data("default")) { $overage.data("default", $overage.text()); }		

		var oval	= $input.val() - 0;
		if (oval == ""){ oval = 0; }
		
		var nval	= $obj.text() - 0;
		if( nval > $overage.text() - 0){
			$msg.addClass("error").text("您的余额不足!");
			return;
		}
		
		var result = nval + oval;
		if( result > 100 ){
			$msg.addClass("error").text("每次下注金额不能高于100!");
			return;
		}
		$msg.removeClass("error").text("");
		$input.val( result );
		$obj.parent().find("button.on").removeClass("on");
		$obj.addClass("on");
		$overage.text( accSubtr($overage.text()-0, nval) );
		
		if($form.find("input[name=position]:checked").length > 0 ){
			var position =  $form.find("input[name=position]").eq(0).is(":checked")? "正方":"反方";
			$form.find(".msg").text("你目前态度:"+position+", 下注金额"+result);
		}else{
			$form.find(".msg").text("下注金额"+result+", 请选择您的支持方!");
		}
	}
	Prediction.build = function( isbet ){
		var me = this;
		$("div.prediction_form").each(function(){
			var $form = $(this);
			//position action
			$form.find("div.support button").click(function(){
				$form.find("div.support div.on").removeClass("on");
				$(this).parent().addClass("on");
				$(this).next().attr("checked","checked");
				
				var position = $form.find("input[name=position]").eq(0).is(":checked")? "正方":"反方";
				if($form.find("input[name=amount]").val() == ""){
					$form.find(".msg").text("你目前态度:"+position+", 点击筹码下注金额")
				}else{
					var nowMoney = $form.find("input[name=amount]").val();
					if(!isbet){
						$form.find(".msg").attr("className","msg").text("你目前态度:"+position+",下注金额"+nowMoney);
					}else{
						$form.find(".msg").attr("className","msg error").text("点击提交按钮确认修改为支持"+position);	
					}
				}
				if(isbet){
					$form.find("input.submit").removeAttr("disabled");
				}
				return false;
			})	
			
			//money action
			$form.find("div.bar button").click(function(){
				$(this).blur();
				if(!$form.find("div.bar").hasClass("disabled")){
					me.addMoney(this);
                }
                return false;
			})

			//money reset
			$form.find("a.reset").click(function(){
				me.moneyReset(this);
			})
			if($form.find(".status").find(".opened")[0]){
				me.timeCount($form.find(".timeleft"));
			}
		})
	}
	Prediction.submit = function( form ){
		var $form	= $(form),
			$msg	= $form.find(".msg"),
			$submit = $form.find("input.submit"),
			data	= {},
			interval;
		var $position 	= $form.find("input[name=position]").filter(":checked"),
			$amount		= $form.find("input[name=amount]");
		
		if($position.length < 1){
			$msg.addClass("error").text("请选择您的支持方!");
		}else if(jQuery.trim($amount.val()) == ""){
			$msg.addClass("error").text("请填入下注金额!");
			//$amount.get(0).focus();
		}else if(jQuery.trim($amount.val()) > 100){
			$msg.addClass("error").text("最高下注金额100!");
			//$amount.get(0).focus();
		}else{
			$position 		= $position.val();
			$amount			= $amount.val();
			var entity_guid	= $form.find("input[name=entity_guid]").val();
			//data	= "position="+$position+"&amount="+$amount+"&entity_guid="+entity_guid;
			data = {
					position : $position,
					amount:		$amount,
					entity_guid:entity_guid
				}
			$.ajax({
				url:		GPS.config.a_do_prediction,
				type:		"post",
				dataType:	"text",
				data:		data,
				beforeSend:	function(){
								$submit.attr("disabled","disabled");
								$msg.attr("className","msg").text("下注提交中");
								if(!$msg.data("default")) $msg.data("default",$msg.text());
								interval = window.setInterval(function(){
											var text = $msg.text();
											if (text.length < $msg.data("default").length + 3 ){
												$msg.text(text + '.');
											} else {
												$msg.text( $msg.data("default") );
											}
										}, 200);
							},
				success:	function(msg){
								window.clearInterval(interval);
								if(msg){
									$msg.addClass("error").text(msg);
									$submit.removeAttr("disabled");
								}else{
									$msg.attr("className","msg info").text("下注成功,正在更新.");
									window.setTimeout( function(){
										$form.parent().parent().load( GPS.config.c_do_prediction + entity_guid)
									} ,1000)
								}
							},
				error:		function(e){
								window.clearInterval(interval);
								$msg.addClass("error").text(e);
								$submit.removeAttr("disabled");
							}
			});
		}
			
	}
	Prediction.change = function(form){
		var $form	= $(form),
			$msg	= $form.find(".msg"),
			$submit = $form.find("input.submit"),
			data	= "",
			interval;
		
		var entity_guid 	= $form.find("input[name=entity_guid]").val();
		data	= "entity_guid="+entity_guid;
		
		$.ajax({
			url:		GPS.config.prediction_changePrediction,
			type:		"post",
			dataType:	"text",
			data:		data,
			beforeSend:	function(){
							$submit.attr("disabled","disabled");
							$msg.attr("className","msg").text("正在提交您的修改");
							if(!$msg.data("default")) $msg.data("default",$msg.text());
							interval = window.setInterval(function(){
										var text = $msg.text();
										if (text.length < $msg.data("default").length + 3 ){
											$msg.text(text + '.');
										} else {
											$msg.text( $msg.data("default") );
										}
									}, 200);
						},
			success:	function(msg){
							window.clearInterval(interval);
							if(msg){
								$msg.addClass("error").text(msg);
								$submit.removeAttr("disabled");
							}else{
								$submit.removeAttr("disabled");
								$msg.attr("className","msg info").text("修改成功,正在更新.");
								window.setTimeout( function(){
									$form.parent().parent().load( GPS.config.c_do_prediction + entity_guid)
									//$form.parents().filter("table.prediction").eq(0).parent().load( GPS.config.c_do_prediction + entity_guid);
								} ,1000)
							}
						},
			error:		function(e){
							window.clearInterval(interval);
							$msg.addClass("error").text(e);
							$submit.removeAttr("disabled");
						}
		});
	}

function build_upload_crop( upload_uid, save_url, guid ){
	var $coords		= null;
	var $upload_id	= upload_uid,
		url 		= save_url;
		
	var data = "id="+$upload_id;
	if(guid){
		data += "&entity_guid="+guid;
	}
	
	var	$uploader	= $("div.uploader"),
		$upload_btn = $uploader.find("span.submit"),
		$upload_msg	= $uploader.find(".msg");
		
		$upload_btn.data("default", $upload_btn.text());
	
	var $crop 			= $("div.croper"),
		$cancel_btn		= $crop.find("a.giveup"),
		$crop_msg 		= $crop.find("span.msg"),
		$save_btn		= $crop.find("button.save"),
		$editor			= $crop.find(".editor"),
		$preview 		= $crop.find(".preview");
	
	var $preview_w		= $preview.width() == 0 ? $preview.css("width"):$preview.width();
	var $preview_h		= $preview.height() == 0 ? $preview.css("height"):$preview.height();
	if(typeof($preview_w) == "string"){ $preview_w = parseInt($preview_w); }
	if(typeof($preview_h) == "string"){ $preview_h = parseInt($preview_h); }
		
	function giveupPic(){
		jQuery.post(GPS.config.TImgDelete + $upload_id);					// server delete tmp img
		$crop.hide(); $uploader.show();
		$save_btn.removeAttr("disabled").val($save_btn.data("default"));	// client img name 
		$crop_msg.attr("className","msg").text("");							// span.added hide
		$editor.html("");												// editor img reset
		$preview.html("");	
		$coords = null;
		return false;
	}
	
	function savePic(){
		$.ajax({
			url:	url + $coords.x+"/"+ $coords.y+"/"+ $coords.w+"/" + $coords.h +"/" +new Date(),
			type:	"post",
			dataType:"text",
			data:	data,
			beforeSend:function(){
				if(!$save_btn.data("default")){ $save_btn.data("default", $save_btn.val())}
				$save_btn.attr("disabled","disabled").val("正在保存");
			},
			success:function(msg){
				if(msg){
					$save_btn.removeAttr("disabled").val($save_btn.data("default"));
					$crop_msg.addClass("error").text("Error:"+msg+" 请再次保存或重新上传");
				}else{
					$save_btn.removeAttr("disabled");
					$crop_msg.attr("className","msg info").text("恭喜，操作成功。系统正在刷新。");
					window.setTimeout(function(){
						window.location.reload();
					},2000)
				}
			},
			error:function(msg){
				$save_btn.removeAttr("disabled").val($save_btn.data("default"));
				$crop_msg.addClass("error").text("Error:"+msg+" 请再次保存或重新上传");
			}
		});
	}
	function showPreview(coords){
		$coords = coords;
		if (parseInt(coords.w) > 0)
		{
			var rx = $preview.width() / coords.w;
			var ry = $preview.height() / coords.h;

			$preview.find('img').css({
				width: Math.round(rx * $editor.find('img').width()) + 'px',
				height: Math.round(ry * $editor.find('img').height()) + 'px',
				marginLeft: '-' + Math.round(rx * coords.x) + 'px',
				marginTop: '-' + Math.round(ry * coords.y) + 'px'
			});
		}
	}
	
	$cancel_btn.click( giveupPic )
	$save_btn.click( savePic )
	
	var opts = {
		action: GPS.config.TImgUpload + $upload_id,
		name:	$upload_id,
		onSubmit : function(file, ext)
			{
				$upload_msg.attr("className","msg").text('');
				$upload_btn.text('正在上传');
				this.disable();
			},
		onComplete: function(file, response)
			{
				this.enable();
				var data = eval('(' + response + ')'); 
				if(data.error){
					$upload_btn.text('重新上传');
					$upload_msg.addClass("error").text(data.error);
				}else{
					$uploader.hide();
						$upload_btn.text($upload_btn.data("default"));
						$upload_msg.attr("className","msg").text("");
					$crop.show();
					
					var f_url = GPS.config.upload_temp_path + 
											data.msg.raw_name +
											data.msg.file_ext;
											
					$editor.html('<img src="'+ f_url +'" class="cropbox" />');
					$preview.html('<img src="'+ f_url +'" />');

					jQuery('.cropbox').Jcrop({
						onChange: showPreview,
						onSelect: showPreview,
						minSize: [$preview_w, $preview_h],
						setSelect:   [ 0, 0, $preview_w, $preview_h ],
						aspectRatio: $preview_w/$preview_h
					});
				}
			}
		};
	new AjaxUpload($upload_btn,opts);
}

$(document).ready(
	function(){
		if($(".fancyLogin")[0]){
			$(".fancyLogin").each(
				function(){
					$(this).attr("href","/public/ajax_apps/login.html");
				}	
			)	

			$(".fancyLogin").fancybox({"frameHeight":220,"frameWidth":355})	
		}

		if($(".fancyAddFriend")[0]){
			$(".fancyAddFriend").fancybox({
				"frameHeight":220,"frameWidth":375,
				'callbackOnShow': function(){$('embed, object, select').css('visibility','hidden');},
				'callbackOnClose': function(){$('embed, object, select').css('visibility','visible');}
			})
		}		
		if($(".fancyMail")[0]){
			$(".fancyMail").fancybox({
				"frameHeight":220,"frameWidth":375,
				'callbackOnShow': function(){$('embed, object, select').css('visibility','hidden');},
				'callbackOnClose': function(){$('embed, object, select').css('visibility','visible');}
			})
		}		
		
		if($("div#globle_msg")[0]){
			$("div#globle_msg div.close").click(function(){
				GMsg.close();
			})
		}
		
		if($("div.help_box")[0]){
			$("div.help_box .help_anchor").hover(
				function(){
					$(this).parent().find("div.help_content").show()
					$(this).parent().hover(
						function(){},
						function(){
							$(this).find("div.help_content").hide();
						}
					)
				}
			)
		}
	}
)