$(document).ready(function(e){
	$(document).focus();
	$('#ajx-loader').ajaxStart(function(e){
    $(e.target).show();
  });
  $('#ajx-loader').ajaxComplete(function(e){
    $(e.target).hide();
  });
		
		getlatestmessage();
		eventInitialize();
		
		$("#timeline_holder").click(function() {
				if (shiftMessageTimer == null)
					shiftMessageTimer = setInterval("shiftMessage()", 3000);
			});
		
		var btPos = $("#bottom_line").offset();
		$("#time_show").css("top",(btPos.top + 1) + "px");
});

var messageComp = {
	currentPosition:50,
	level1MessageReachRange:0,
	level2MessageReachRange:0,
	level3MessageReachRange:0,
	level4MessageReachRange:0,
	messageIndex:0
};


var leftoffset = 50;
var highoffset = 21;
var level1coverrange = 0;
var level2coverrange = 0;
var level3coverrange = 0;
var level4coverrange = 0;
var currentdatelabel;
var messageinfo;
var checkIndex = 0;
var userinfo;
function goldInfo ()
{
	this.type = 0;
	this.moredata = false;
	this.offset = 0;
	this.knownuser = "";
	this.startprocess = false;
}
var gInfo = new goldInfo ();

var shiftMessageTimer = null;
var selqualifier = '';
function getlatestmessage(qualifier){
	//initialize  start
	$(".block_cnt").remove();
	$(".block_bg").remove();
	level1coverrange = 0;
	level2coverrange = 0;
	level3coverrange = 0;
	level4coverrange = 0;
	leftoffset = 50;
	highoffset = 21;
	if (shiftMessageTimer != null){
			clearInterval(shiftMessageTimer);
			shiftMessageTimer = null;
	}
	//initialize end...
	
	selqualifier = qualifier;
	var mUrl = "gmb/latestmessage.jsp";
	if(qualifier){
		mUrl = mUrl + "?qualifier=" + qualifier;
	}
	
	$.ajax({
		url:mUrl,
		data:{},
		error:function(){},
		success:getMessageFeedBack
	});
	
}

function getNextData()
{
	if (gInfo.moredata == false)
	{
		if (shiftMessageTimer != null)
		{
			clearInterval(shiftMessageTimer);
			shiftMessageTimer = null;
		}
			return;
	}
	gInfo.startprocess = true;
	
	if (shiftMessageTimer != null)
	{
		clearInterval(shiftMessageTimer);
		shiftMessageTimer = null;
	}
	
	var offset = (gInfo.offset + 1) *20;
	$.ajax({
							url:"gmb/latestmessage.jsp?qualifier=" + selqualifier,
							data:{"offset":offset},
							error:function(){},
							success:getMessageFeedBack
								});
}

function getMessageFeedBack(result)
{
try
	{
		gInfo.startprocess = false;
		var data = "var ownerdata =" + translateAjaxResult(result);	
		eval(data);
		messageinfo = ownerdata.hutongs;
		if (messageinfo.length == 0)
			return;
		
		gInfo.moredata = ownerdata.moredata;
		gInfo.offset = ownerdata.offset;
		
		userinfo = ownerdata.users;
		GenerateDateTimeLabel(new Date(messageinfo[0].posted));
		checkIndex = 0;
			while (checkIndex < messageinfo.length)
			{
				IterateParsing(checkIndex);
			}
	}
	catch (e)
	{
		alert(e.message);
	}
	
	shiftMessageTimer = setInterval("shiftMessage()", 3000);
	$("div.block_cnt").each(function (i){this.style.zIndex = (9999-i);});
	$("#timeline_holder .funlang:div").mousedown(function (e){ 	
			if (typeof(e.stopPropagation) == "undefined")
			e.cancelBubble = true;
		else
			e.stopPropagation();
			 return true;});
	$("#timeline_holder .funlang:div").mouseup(function (e){
		if (typeof(e.stopPropagation) == "undefined")
			e.cancelBubble = true;
		else
			e.stopPropagation(); return true;});
	$("#timeline_holder .funlang:div").mousemove(function (e){
		if (typeof(e.stopPropagation) == "undefined")
			e.cancelBubble = true;
		else
			e.stopPropagation(); return true;});
}

function shiftMessage()
{
	shiftcomp(50);
}

function GenerateDateTimeLabel(datevalue)
{
	var timecntholder = $id("timeline_cnt");
	var timebgholder = $id("timeline_bg");
	var s = "";
	var daycntElement = createEl('div', a = {'class':'block_cnt day_start'},{'left':leftoffset +'px'});
 	s += '<div class="div_one_line"></div>';
	s += '<div><div class="div_inner"></div><div class="div_bottom"></div></div>';
	daycntElement.innerHTML = s;
	timecntholder.appendChild(daycntElement);
	
	var daybgElement = createEl('div', {'class':'block_bg day_start'},{'visibility': 'visible','left':leftoffset +'px'});
		
		var today = new Date();
		today.setHours(0,0,0,0);
		datevalue.setHours(0,0,0,0);
		var yesterdate= new Date() 
		yesterdate.setDate(yesterdate.getDate()-1) ;
		yesterdate.setHours(0,0,0,0);
		var label = "";
		if (datevalue -today == 0)
			label = "今日";
		else if (datevalue - yesterdate == 0)
			label = "昨日";
		else
			label = (datevalue.getMonth()+1) + "月" +  datevalue.getDate() +"日";
	 s = '<div class="div_one_line" style="width: 46px;"></div>';
		s += '<div class="day_bg" style="width: 46px;">';
		s += '<div class="div_inner"></div>';
		s += '<div class="div_bottom"><span class="bottom_start">' + label + '</span>';
		s += '</div>';
		s += '</div>';

		daybgElement.innerHTML = s;
		timebgholder.appendChild(daybgElement);
		currentdatelabel  = datevalue;
		leftoffset += 46;
}

function IterateParsing(index)
{
	if (index >= messageinfo.length)
		return;
		var datevalue = new Date(messageinfo[index].posted);
		datevalue.setHours(0,0,0,0);
		if (datevalue < currentdatelabel)
			GenerateDateTimeLabel(datevalue);
		
		var starthour = new Date(messageinfo[index].posted);
		var endhour = new Date(starthour);
		starthour.setHours(starthour.getHours(),0,0,0);
		endhour.setHours(starthour.getHours() + 1,0,0,0);
		
		TimelineParsing(starthour,endhour,0);
}

function TimelineParsing(start,end,level)
{
		var count = getMessageNuminSection(start,end,level);

		if (count >= 3) 
		{
		 if (level == 0) {
					for (var i = 0; i < 3; i++) {
						var innerstarttime = new Date(start);
						innerstarttime.setHours(start.getHours(),60-(i+1)*20,0,0);
						var innerendtime = new Date(start);
						innerendtime.setHours(start.getHours(),60-(i)*20,0,0);
						TimelineParsing(innerstarttime,innerendtime,1);
					}
				}
				else if (level == 1){
						for (var i = 0; i < 6; i++){
							var innerstarttime = new Date(start);
							innerstarttime.setHours(start.getHours(),60-(i+1)*10,0,0);
							var innerendtime = new Date(start);
							innerendtime.setHours(start.getHours(),60-(i)*10,0,0);
							TimelineParsing(innerstarttime,innerendtime,2);
					}
				}
				else if (level == 2)
				{
					for (var i = 0; i < 12; i++)
						{
							var innerstarttime = new Date(start);
							innerstarttime.setHours(start.getHours(),60-(i+1)*5,0,0);
							var innerendtime = new Date(start);
							innerendtime.setHours(start.getHours(),60-(i)*5,0,0);		
							TimelineParsing(innerstarttime,innerendtime,3);
					}
				}
				else if (level == 3)
				{
					for (var i = 0; i < 60; i++)
						{
							var innerstarttime = new Date(start);
							innerstarttime.setHours(start.getHours(),60-(i+1)*1,0,0);
							var innerendtime = new Date(start);
							innerendtime.setHours(start.getHours(),60 - (i)*1,0,0);		
							TimelineParsing(innerstarttime,innerendtime,4);
					}
				}		
				else if (level == 4)
				{
				generateComponent(checkIndex,count,start,end,level);
				checkIndex += count;
				}		
		}
	
		else
		{
			if (count > 0)
			{
				generateComponent(checkIndex,count,start,end,level);
				checkIndex += count;
			}
			if (level == 0)
			{
			//	IterateParsing(checkIndex);
			}
		}
}

function getMessageNuminSection(starttime,endtime,level)
{
		var count = 0;
		var index = checkIndex;
		var totalItemNo = messageinfo.length;
		while (index < totalItemNo){
			var item = messageinfo[index];
			var posttime = item.posted;
			if (starttime < posttime && endtime >= posttime)
			{
					count++;
			}
			else if (starttime > posttime)
				break;
			index++;
		}

		return count;
}

var messagerange = 0;
var pretimelabeltxt = "";
function generateComponent(start,datano,starttime,endtime,level)
{
	var timecntholder = $id("timeline_cnt");
	var compwidth = 220;
	if (level== 0)
	{
		compwidth = 175;
	}
	
	var blockcntElement;
	var startposition = leftoffset;
	if (level== 0)
	{
		blockcntElement = createEl('div', {'class':'block_cnt hh_mm small_hh'},
					{'visibility': 'visible','left':startposition +'px'});	
	}
	else
	{
			blockcntElement = createEl('div', {'class':'block_cnt hh_mm'},
					{'visibility': 'visible','left':startposition +'px'});
	}

	var blockno = 1;
	var s = "";
	s += '<div class="div_one_line"></div>';
	s += '<div>';
	s += '<div class="div_inner"></div>';
	s += '<div class="div_bottom"></div>';
	s += '</div>';
	for (i = 0 ; i < datano; i++)
	{ 
		var target = messageinfo[start + i];
		var id = target.messageid;
		var posttime = target.posted;
		var range = endtime - starttime;
		var diff = posttime - starttime;
		var rate = diff/range;
		var relativepos = compwidth - compwidth * rate;
		
		messagerange = startposition + relativepos;
		var fllevel = caltopposition(messagerange);
		var top = 21;
		if (fllevel == 1)
		{
			level1coverrange = messagerange + 275;
			top = 21;
		}
		else if (fllevel == 2)
		{
			level2coverrange = messagerange + 275;
			top = 111;
		}
		else if (fllevel == 3)
		{
			level3coverrange = messagerange + 275;
			top = 201;
		}
		else if (fllevel == 4)
		{
			level4coverrange = messagerange + 275;
			top = 291;
		}
		else if (fllevel == 5)
		{
			blockcntElement.innerHTML = s;
			timecntholder.appendChild(blockcntElement);
			s = "";
			s += '<div class="div_one_line"></div>';
			s += '<div>';
			s += '<div class="div_inner"></div>';
			s += '<div class="div_bottom"></div>';
			s += '</div>';
			blockno++;
			i=i-1; // rearrange current mesage
			startposition += compwidth;
			blockcntElement = createEl('div', {'class':'block_cnt hh_mm'},
					{'visibility': 'visible','left':startposition +'px'});
			continue;
		}
		
		s += '<div class="funlang" id="p' + id + '" posted="'+ posttime + '" onmouseover="msgmouesover(event,this,0);" onmouseout="return msgmouesout(event,this,0);" style="visibility: visible; left: ' + relativepos + 'px; top:'+top + 'px;">';
		
		if (target.privacy != 0)
		{
			s += '<div class="private"><img width="16" height="16" src="images/mb/private-lock.gif"/></div>';
		}
		var image = getUserProfileImage(target.ownerid);
		if (image == "")
		{
			image = "user/profileimage/po1024768.jpg";
		}
	
		var nickname = getUserNickname(target.ownerid);
		if (nickname == "")
			nickname = target.ownername;
		s += '<table><tr><td class="td_img"><div class="p_img"><img src="http://pinkelai.com/';
		s+= image + '"/></div></td><td><div class="funlang_cnt" id="msg_cnt_'+id+'" onclick="showresponse(event,this,\'' + id + '\');"><table><tr><td class="td_qual"><div><a href="' + target.ownername + '" class="name">' +nickname +'</a><span class="qualifier ';
		var qualifier = target.qualifier;
		var txt = "";
		var classname = "";
		var amount = target.amount;
		var currency = target.currency;
		var content = target.content;
		if (qualifier =="q_says"){txt ='说';classname ="q_says";}
		else if (qualifier == "q_shares"){txt ='分享';classname ="q_shares";}
		else if (qualifier == "q_shares_pic"){txt ='图片';classname ="q_shares_pic";}
		else if (qualifier == "q_shares_url"){txt ='网址';classname ="q_shares_url";}
		else if (qualifier == "q_shares_video"){txt ='视频';classname ="q_shares_video";}
		else if (qualifier == "q_hates"){txt ='讨厌';classname ="q_hates";}
		else if (qualifier == "q_wishes"){txt ='希望';classname ="q_wishes";}
		else if (qualifier == "q_needs"){txt ='需要';classname ="q_needs";}
		else if (qualifier == "q_asks"){txt ='问';classname ="q_asks";}
		else if (qualifier == "q_feels"){txt ='觉得';classname ="q_feels";}
		else if (qualifier == "q_pinche"){txt ='拼车';classname ="q_pinche";}
		else if (qualifier == "q_pinfang"){txt ='拼房';classname ="q_pinfang";}
		else if (qualifier == "q_pingou"){txt ='拼购';classname ="q_pingou";}
		else if (qualifier == "q_pinrandom"){txt ='任意拼';classname ="q_pinrandom";}
		else if (qualifier == "q_record")
		{
			if (amount > 0)
			{
				txt= "收入";
				classname = "q_income";
			}
			else
			{
				txt= "支出";
				classname = "q_record";
			}
			content = formatCurrency(Math.abs(amount),currency) + " " + content;
			
		}
		else if (qualifier == "q_read")
		{
			txt ='读';classname ="q_read";
		}
		else if (qualifier == "q_sell")
		{
			txt ='晒货';classname ="q_sell";
		}
		else
		{
			txt ='说';classname ="q_says";
		}
		
		
		var contenhasimage = content.indexOf("<img mode='1'");
		if (content.length > 13)
	 {
			if (contenhasimage != -1)
				s+= classname + '">' + txt + '</span></div></td><td class="td_cnt"><div class="text_holder truncated_media_height">';
			else
				s+= classname + '">' + txt + '</span></div></td><td class="td_cnt"><div class="text_holder truncated">';
	 }
		else
			s+= classname + '">' + txt + '</span></div></td><td class="td_cnt"><div class="text_holder">';
		
		//content = contenttransfer(content);
		s += content + '</div>';
					
		s += '</td></tr></table></div></td><td class="td_response_count"><span class="response_count">';
		if (target.reponsese_count > 0)
		s += target.reponsese_count;
		s += '</span></td></tr></table></div></div>';
	}
	blockcntElement.innerHTML = s;
	timecntholder.appendChild(blockcntElement);
	
	
	var timebgholder = $id("timeline_bg");
	var bgElement;
	startposition = leftoffset;
 for (i =0; i <blockno;i++)
	{
		if (level == 0)
		{
			bgElement = createEl('div', {'class':'block_bg hh_mm small_hh'},
    {'visibility': 'visible','left':startposition +'px'});
		}
		else
		{
			bgElement =createEl('div', {'class':'block_bg hh_mm'},
    {'visibility': 'visible','left':startposition +'px'});
		}
		s = "";
		s += '<div class="div_one_line"></div>';
		s += '<div>';
		s += '<div class="div_inner"></div>';
		s += '<div class="div_bottom">';
		var stmtext = starttime.getHours();
		var sl = "am";
		if (stmtext > 12){
		 stmtext = (stmtext - 12);
			sl = "pm";
		}
		var etmtext = endtime.getHours();
		var el = "am";
		if (etmtext > 12){
		 etmtext= (etmtext - 12);
			el = "pm";
	}

	if (level == 0)
	{
			stmtext = stmtext  + sl;		
			etmtext = etmtext + el;
	}
	else
	{
		stmtext = stmtext  + ':' + starttime.getMinutes() + sl;		
		etmtext = etmtext + ':' + endtime.getMinutes() + el;
	}
	
	if (i == blockno -1)
	{
		s += '<span class="bottom_end">' + stmtext + '</span>';
	}
	if (i == 0 && etmtext != pretimelabeltxt)
	{
		s += '<span class="bottom_start">' + etmtext + '</span>';
	}
	if (i == blockno -1)
		pretimelabeltxt = stmtext;
	
	s += '</div>';
	s += '</div>';
	bgElement.innerHTML = s;
	timebgholder.appendChild(bgElement);
	startposition += compwidth;
	}
	leftoffset += blockno*compwidth;
	
	$(".funlang_cnt a").click(function (event) { 
		if (typeof(event.stopPropagation) == "undefined")
			event.cancelBubble = true;
		else
			event.stopPropagation();
	});
	
	$(".block_bg").css("z-index",100);
}

function caltopposition(xpos)
{
	if (xpos > level1coverrange)
		return 1;
	else if (xpos > level2coverrange)
		return 2;
	else if (xpos > level3coverrange)
		return 3;
	else if (xpos > level4coverrange)
		return 4;
	else
		return 5;
}

function msgmouesover(event,target)
{	
	var b= isMouseLeaveOrEnter(event,target);
	if (b == false)
		return;
	
	if (shiftMessageTimer != null)
	{
			clearInterval(shiftMessageTimer);
			shiftMessageTimer = null;
	}
	
	target.className = "funlang display link_extend";
	
	var messageid = target.id;
	messageid = messageid.slice(1);
	var targettime = null;
	for (var i = 0; i < messageinfo.length;i++)
	{
		var item = messageinfo[i];
		if (item.messageid == messageid)
			targettime = item.posted;
	}
	if (targettime)
	{
		var hour = targettime.getHours();
		if (hour > 18)
			$id("time_show").className = "night";
		else
			$id("time_show").className = "morning";
			
		var l = "am";
		if (hour > 12){
				hour= (hour - 12);
				l = "pm";
		}
		
		$id("time_show").innerHTML = "<span>" + hour  + ":" + targettime.getMinutes() + l + "</span>";
		
		var pos = findPos(target);
		$id("time_show").style.left = pos[0] + "px";
		$id("time_show").style.display = "";
	}
	
}

function msgmouesout(event,target,edit)
{
	var b= isMouseLeaveOrEnter(event,target);
	if (b == false)
		return;
	
	if (shiftMessageTimer == null)
	{
		var responseshow = $('#response_holder').css('display');
		if ( responseshow == "none")
			shiftMessageTimer = setInterval("shiftMessage()", 3000);
	}
	
	var actresmsgid = $id("responsemessageid").value;
	if (target.id != "p" + actresmsgid)
	{
		if (edit == 1)
		{
			var editpanel = getElementsByClass("manager",target,"div");
			editpanel[0].style.display = "none";
		}
		target.className = "funlang";
	}
	
	$id("time_show").style.display = "none";
}

function getUserProfileImage(uid)
{
		var udata;
		if (typeof(userinfo[uid]) == "undefined")
		{
					return "";
		}			
		else
			udata = userinfo[uid];
		
		var pimage = udata.profileimage;
		return pimage;
}

function getUserNickname(uid)
{
		var udata;
		if (typeof(userinfo[uid]) == "undefined")
		{
			return "";
		}
		
		udata = userinfo[uid];
		var nickname = udata.nick_name;
		return nickname;
}

function showresponse(event,target,messageid)
{
	if(shiftMessageTimer != null)
	{
		clearInterval(shiftMessageTimer);
		shiftMessageTimer  = null;
	}
	
	$.ajax({
							url:"gmb/getresponse.jsp",
							data:{"messageid":messageid},
							error:function(){},
							success:getresponseFeedBack
								});
	
		if (typeof(event.stopPropagation) == "undefined")
			event.cancelBubble = true;
		else
		{
			event.stopPropagation();
		}

}

function getresponseFeedBack(result)
{
	try
	{
		eval(result);
		if (result.res == 0)
		{
			 var messageid = result.messageid;
				$id("p" + messageid).className = "funlang display function_box";
				if ($id("responsemessageid"))
				{
					$id("responsemessageid").value = messageid;
					$id("pageurl").href = "p/" + messageid;
				}
				if($id('input_small'))
				{
					$id('input_small').value = "";
				}
				
				var alignobj = $id("msg_cnt_" + messageid);
				var pos = findPos(alignobj);
				
				var height = getElementHeight("msg_cnt_" + messageid);
				var width = getElementWidth("msg_cnt_" + messageid);
				var yfinal = pos[1] + height;
				$id('response_holder').style.top = yfinal + 'px';
				$id('response_holder').style.width =  width  + 'px';
					
				
				var respanelrange = pos[0] + width;
				var limit = getElementWidth("timeline_holder");
				var diff = limit - respanelrange;
				if (diff < 0)
				{
					var offset = Math.abs(diff) + 30;
					shiftcomp(offset);
					$id('response_holder').style.left = (pos[0] - offset) + 'px';
				}
				else
					$id('response_holder').style.left = pos[0] + 'px';
				
				$id('response_holder').style.display = 'block';
				
				
				
				if (result.data.length == 0)
				{
					$id('responsemain').innerHTML = '<div class="empty">没有回复</div>';
				}
				else
				{
				var s = "";
				for (i = 0; i < result.data.length; i++)
				{
					var item = result.data[i];
					var poster = item.poster;
				//	var content = contenttransfer(item.content);
					var content = item.content;
				 s += '<div class="funlang highlight_owner" id="ma"><table><tr><td><div class="funlang_cnt" id="funlang_cnt_">';
					s += '<table><tr><td class="td_qual"><div><a href="'+ poster+'" class="name">'+ poster+'</a><span class="qualifier q_says">說</span></div></td><td class="td_cnt"><div class="text_holder">' + content+'</div>';
					s+='</td></tr></table></div></td></tr></table></div>';
				}
					$id('responsemain').innerHTML = s;
				}
				
		}
	}
	catch (e)
	{
		alert(e.message);
	}
}

function enterresponse(evt)
{
	var content = $id('input_small').value;
	var len = content.length;
	$id("input_small_cu").innerHTML = "还可以编辑 " + (140 - len) + " 个字符. <span style=\"color: rgb(85, 85, 85);\">按回车键添加</span>";
	
	 var keyevent = evt || window.event;    
  var currentKey = keyevent.charCode||keyevent.keyCode;   
		if (currentKey == 13)
		{
			if (len == 0 || len > 140)
				return false;
			var messageid = $id("responsemessageid").value ;
			var param= "posterid=" + SETTINGS["user_id"] + "&postername=" + SETTINGS["user_name"] + "&messageid=" + messageid +"&content=" + content + "&qualifier=0";
		
			bb.net.asyncPost("gmb/sendresponse.jsp",param,sendresponseFeedBack);
			return false;
		}
}

function sendresponseFeedBack(result)
{
	try
	{
		eval(result);
		if (result.res > 0)
		{
			$id('input_small').value = "";
			var poster = result.poster;
			var content = result.content;
			var Element = createEl('div', a = {'class':'funlang highlight_owner'});
			
 		var s = '<table><tr><td><div class="funlang_cnt" id="funlang_cnt_">';
			s += '<table><tr><td class="td_qual"><span><a href="'+ poster+'" class="name">'+ poster+'</a><span> </span></span></td><td class="td_cnt"><div class="text_holder">' + content+'</div></td></tr></table></div></td></tr></table></div>';

				var holder = $id("responsemain");
				holder.appendChild(Element);
				Element.innerHTML = s;
		}
	}
	catch (e)
	{
		alert(e.message);
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function removemessage(evt,messageid)
{	
	var cf = confirm("确定要删除此信息?");
	if (cf)
	{
		var param = "messageid=" + messageid;
		bb.net.asyncPost("gmb/remove.jsp",param,removeFeedBack);
	}
	
	if (typeof(evt.stopPropagation) == "undefined")
		evt.cancelBubble = true;
	else
	{
		evt.stopPropagation();
	}
		
		return false;
}

function removeFeedBack(result)
{
	try
	{
		eval(result);
		if (res == 0)
		{
			var target = $id("p" + messageid);
			var holder = target.parentNode;
			holder.removeChild(target);
		}
	}
	catch (e)
	{
	}
}

function isMouseLeaveOrEnter(e, handler) 
{   
   if (e.type != 'mouseout' && e.type != 'mouseover') return false;   
   var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement;   
   while (reltg && reltg != handler)   
      reltg = reltg.parentNode;   
  return (reltg != handler);   
}  

function contenttransfer(str)
{
	var temparray = new Array(10);
	var str1 = str.toLowerCase();
	var i = 0;var j = 0;var k=0;var l=0;var m = 0;
	var index = 0;
	i = str1.indexOf("http",i);
	var breaklexicon = [' ',')','\n','[',']','{','}','\t'];
	while (i != -1)
	{
		var min = 1024;		
		for (n = 0; n < breaklexicon.length; n++)
		{
			m = str.indexOf(breaklexicon[n],i);
			if (m != -1 && m < min)
			{
				min = m;
			}
		}
		
		if (min != 1024)
		 j = min;
		else
		  j = -1;
			
		if (j != -1)
		{
			temparray[index] = str.substring(i,j);
			index++;	
		}
		else
		{
			temparray[index] = str.substring(i,str.length);
			index++;
			break;
		}
		
		i = str1.indexOf("http",j);
	}
	
	var replace = "";
	var imageReplace = "";
	var len = 0;
	var newstr = "";
	for(i =0 ;i < index; i++)
	{
		len = temparray[i].length;
		
		var lowercaseStr = temparray[i].toLowerCase();
		var acceptPos = len - 4;
		var acceptPos1 = len - 5;
		if (lowercaseStr.lastIndexOf(".jpg") == acceptPos || lowercaseStr.lastIndexOf(".gif")== acceptPos || lowercaseStr.lastIndexOf(".png")== acceptPos )
		{
			imageReplace = "<a href=\""+ temparray[i] + "\" target=\"_blank\" ><img style=\"max-height: 40px; max-width: 48px;\" src=\"" + temparray[i] + "\" /></a>";
			str = str.replace(temparray[i],imageReplace);
			continue;
		}
		else if (lowercaseStr.lastIndexOf(".jepg") == acceptPos1)
		{
			imageReplace ="<a href=\""+ temparray[i] + "\" target=\"_blank\" ><img style=\"max-height: 40px; max-width: 48px;\" src=\"" + temparray[i] + "\" /></a>";
			str = str.replace(temparray[i],imageReplace);
			continue;	
		}
		
		
		replace = "<a href=\""+ temparray[i] + "\" target=\"_blank\">" + temparray[i] + "</a>";
		if (len <= 40)
		{
			replace = "<a href=\""+ temparray[i] + "\" target=\"_blank\">" + temparray[i] + "</a>";		
		}
		else
		{
			replace = "<a href=\""+ temparray[i] + "\" target=\"_blank\">" + temparray[i].substr(0,40) + "...</a>";
		}
		str = str.replace(temparray[i],replace);	
	}	
	
	str = str.replace("[s:1]","<img class=\"emoticon\" src=\"images/mb/emotion/a1.gif\" />");
	str = str.replace("[s:2]","<img class=\"emoticon\" src=\"images/mb/emotion/a2.gif\" />");
	str = str.replace("[s:3]","<img class=\"emoticon\" src=\"images/mb/emotion/a3.gif\" />");
	str = str.replace("[s:4]","<img class=\"emoticon\" src=\"images/mb/emotion/a4.gif\" />");
	str = str.replace("[s:5]","<img class=\"emoticon\" src=\"images/mb/emotion/a5.gif\" />");
	str = str.replace("[s:6]","<img class=\"emoticon\" src=\"images/mb/emotion/a6.gif\" />");
	str = str.replace("[s:7]","<img class=\"emoticon\" src=\"images/mb/emotion/a7.gif\" />");
	str = str.replace("[s:8]","<img class=\"emoticon\" src=\"images/mb/emotion/a8.gif\" />");
	str = str.replace("[s:9]","<img class=\"emoticon\" src=\"images/mb/emotion/a9.gif\" />");
	str = str.replace("[s:10]","<img class=\"emoticon\" src=\"images/mb/emotion/a10.gif\" />");
	str = str.replace("[s:11]","<img class=\"emoticon\"  src=\"images/mb/emotion/a11.gif\" />");
	str = str.replace("[s:12]","<img class=\"emoticon\" src=\"images/mb/emotion/a12.gif\" />");
	str = str.replace("[s:13]","<img class=\"emoticon\" src=\"images/mb/emotion/a13.gif\" />");
	str = str.replace("[s:14]","<img class=\"emoticon\" src=\"images/mb/emotion/a14.gif\" />");
	str = str.replace("[s:15]","<img class=\"emoticon\" src=\"images/mb/emotion/a15.gif\" />");
	str = str.replace("[s:16]","<img class=\"emoticon\" src=\"images/mb/emotion/a16.gif\" />");
	str = str.replace("[s:17]","<img class=\"emoticon\" src=\"images/mb/emotion/a17.gif\" />");
	str = str.replace("[s:18]","<img class=\"emoticon\" src=\"images/mb/emotion/a18.gif\" />");
	str = str.replace("[s:19]","<img class=\"emoticon\" src=\"images/mb/emotion/a19.gif\" />");
	str = str.replace("[s:20]","<img class=\"emoticon\" src=\"images/mb/emotion/a20.gif\" />");
	str = str.replace("[s:21]","<img class=\"emoticon\" src=\"images/mb/emotion/a21.gif\" />");
	str = str.replace("[s:22]","<img class=\"emoticon\" src=\"images/mb/emotion/a22.gif\" />");
	str = str.replace("[s:23]","<img class=\"emoticon\" src=\"images/mb/emotion/a23.gif\" />");
	str = str.replace("[s:24]","<img class=\"emoticon\" src=\"images/mb/emotion/a24.gif\" />");
	str = str.replace("[s:25]","<img class=\"emoticon\" src=\"images/mb/emotion/a25.gif\" />");
	str = str.replace("[s:26]","<img class=\"emoticon\" src=\"images/mb/emotion/a26.gif\" />");
	str = str.replace("[s:27]","<img class=\"emoticon\" src=\"images/mb/emotion/a27.gif\" />");
	str = str.replace("[s:28]","<img class=\"emoticon\" src=\"images/mb/emotion/a28.gif\" />");
	str = str.replace("[s:29]","<img class=\"emoticon\" src=\"images/mb/emotion/a29.gif\" />");
	str = str.replace("[s:30]","<img class=\"emoticon\" src=\"images/mb/emotion/a30.gif\" />");
	str = str.replace("[s:31]","<img class=\"emoticon\" src=\"images/mb/emotion/a31.gif\" />");
	str = str.replace("[s:32]","<img class=\"emoticon\" src=\"images/mb/emotion/a32.gif\" />");
	str = str.replace("[s:33]","<img class=\"emoticon\" src=\"images/mb/emotion/a33.gif\" />");
	str = str.replace("[s:34]","<img class=\"emoticon\" src=\"images/mb/emotion/a34.gif\" />");
	str = str.replace("[s:35]","<img class=\"emoticon\" src=\"images/mb/emotion/a35.gif\" />");
	str = str.replace("[s:36]","<img class=\"emoticon\" src=\"images/mb/emotion/a36.gif\" />");
	str = str.replace("[s:37]","<img class=\"emoticon\" src=\"images/mb/emotion/a37.gif\" />");
	str = str.replace("[s:38]","<img class=\"emoticon\" src=\"images/mb/emotion/a38.gif\" />");

	return str;
}

function showallmessage()
{
	var tabel = $id("filter_tab");
	var els = tabel.getElementsByTagName("li");
	for (var i=0; i < els.length;i++)
	{
		var litag = els[i];
		var atag = litag.getElementsByTagName('a')[0];
		atag.className = "off_tab";
	}
	
	var actli=els[0];
	var acta = actli.getElementsByTagName('a')[0];
	acta.className = "filter_selected bottom_line_bg";
	
	var timelinecnt = $id("timeline_cnt");
	timelinecnt.innerHTML = "";
	var timelinebg = $id("timeline_bg");
	timelinebg.innerHTML = "";
	
	leftoffset = 50;
	level1coverrange = 0;
	level2coverrange = 0;
	level3coverrange = 0;
	level4coverrange = 0;
	checkIndex = 0;

	var userid = SETTINGS["user_id"];
	getFullyMessage(userid);
	return false;
	
}
function showmymessage()
{
	var tabel = $id("filter_tab");
	var els = tabel.getElementsByTagName("li");
	for (var i=0; i < els.length;i++)
	{
		var litag = els[i];
		var atag = litag.getElementsByTagName('a')[0];
		atag.className = "off_tab";
	}
	
	var actli=els[1];
	var acta = actli.getElementsByTagName('a')[0];
	acta.className = "filter_selected bottom_line_bg";
	
	var timelinecnt = $id("timeline_cnt");
	timelinecnt.innerHTML = "";
	var timelinebg = $id("timeline_bg");
	timelinebg.innerHTML = "";
	
	leftoffset = 50;
	level1coverrange = 0;
	level2coverrange = 0;
	level3coverrange = 0;
	level4coverrange = 0;
	checkIndex = 0;

	var userid = SETTINGS["user_id"];
	getOwnerData(userid);
	return false;
}

function eventInitialize()
{
	var tmholder = $id("timeline_holder");
	tmholder.onclick = clicktimelineholder;
	
	if (window.addEventListener)/** DOMMouseScroll is for mozilla. */
 	tmholder.addEventListener('DOMMouseScroll', wheel, true);
		/** IE/Opera. */
		tmholder.onmousewheel = wheel;
		$("#timeline_holder").mousedown(tmholderMouseDown);
		$("#timeline_holder").mouseup(tmholderMouseUp);
		$("#timeline_holder").mousemove(tmholderMouseMove);
		
		//$id("input_big").onkeypress = countmessage;
		 var inputcomp = $id("input_big")
			if (inputcomp != null)
			{
			inputcomp.onkeydown=inputtextkeydown;
			inputcomp.onkeyup=countmessage;
			}
		
}

function clicktimelineholder(event)
{
	var responsepanel = $id("response_holder");
	if (responsepanel)
	{
		responsepanel.style.display = "none";
		$id("responsemessageid").value = "";
	}
	
	var emsel = $id("emoticon_selecter");
	if (emsel)
		emsel.style.display = "none";
	var notifypanel = $id("notifypanel");
	if (notifypanel)
		notifypanel.style.display = "none";
}

function wheel(event){
	var delta = 0;
	if (!event) /* For IE. */
		event = window.event;
	if (event.wheelDelta) { /* IE/Opera. */
			delta = event.wheelDelta/120;
	if (window.opera)
			delta = -delta;
	} else if (event.detail) { /** Mozilla case. */
			delta = -event.detail/3;
	}


	if (delta)
	{
		if (delta > 0)
			shiftcomp(-50);
		else
			shiftcomp(+50);
	}

	if (event.preventDefault)
		event.preventDefault();
	event.returnValue = false;
}


function CheckBrowser(){ 
    var cb = "Unknown"; 
    if(window.ActiveXObject){ 
        cb = "IE"; 
    }else if(navigator.userAgent.toLowerCase().indexOf("firefox") != -1){ 
        cb = "Firefox"; 
    }else if((typeof document.implementation != "undefined") && (typeof document.implementation.createDocument != "undefined") && (typeof HTMLDocument != "undefined")){ 
        cb = "Mozilla"; 
    }else if(navigator.userAgent.toLowerCase().indexOf("opera") != -1){ 
        cb = "Opera"; 
    } 
    return cb; 
}

document.onkeydown = KeyDownHandler;
function KeyDownHandler(e)
{
	var cb = CheckBrowser();
	var keycode;
	if (cb == 'IE')
	{
		keycode = window.event.keyCode;
	}
	else if (cb='Firefox')
	{
		keycode = e.keyCode;
	}
	
	if (keycode && keycode == 39)
	{
		shiftcomp(50);
	}
	else if(keycode && keycode == 37)
	{
		shiftcomp(-50);
	}
}

document.getElementsByClassName = function(className, parentElement) { 
  if (typeof parentElement == 'string'){ 
    parentElement = document.getElementById(parentElement); 
  } else if (typeof parentElement != 'object' || 
             typeof parentElement.tagName != 'string'){ 
    parentElement = document.body; 
  } 
  var children = parentElement.getElementsByTagName('*'); 
  var re = new RegExp('\\b' + className + '\\b'); 
  var el, elements = []; 
  var i = 0; 
  while ( (el = children[i++]) ){ 
    if ( el.className && re.test(el.className)){ 
      elements.push(el); 
    } 
  } 
  return elements; 

} 

function shiftcomp(offset)
{
	if (gInfo.startprocess == true)
		return;
		
	var elements = document.getElementsByClassName('block_cnt');
	if (elements.length == 0)
		return;
		
	var elFirst = elements[0];
	var elfleft = parseInt(elFirst.style.left);
	if (offset < 0 && elfleft >= 50)
		return;
			
	for (i = 0; i < elements.length; i ++)
	{
		var el = elements[i];
		
		var left = parseInt(el.style.left);
		left = left - offset;
		el.style.left = left + 'px';
	}
	
	var elements = document.getElementsByClassName('block_bg');
	for (i = 0; i < elements.length; i ++)
	{
		var el = elements[i];
		
		var left = parseInt(el.style.left);
		left = left - offset;
		el.style.left = left + 'px';
	}
	
	leftoffset-=offset;
	level1coverrange-=offset;
	level2coverrange-=offset;
	level3coverrange-=offset;
	level4coverrange-=offset;
		
	var responsefm = $id("response_holder");
	responsefm.style.display="none";
	
	var lastel = elements[elements.length - 1];
	var lastelpos = parseInt(lastel.style.left);

	var windowwidth = document.body.clientWidth;
	
	if (lastelpos < windowwidth)
	{
			gInfo.startprocess = true;
			getNextData();
	}
}

function showtudouvideo(evt,target,iid)
{
	if (typeof(evt.stopPropagation) == "undefined")
		evt.cancelBubble = true;
	else
	{
		evt.stopPropagation();
	}
	
	var s='<object width="420" height="363"><param name="movie" value="http://www.tudou.com/player/skin/plu.swf?iid=' +iid + '">';
	s+='</param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>';
	s+='<param name="wmode" value="opaque"></param><embed src="http://www.tudou.com/player/skin/plu.swf?iid='+iid+'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363" autostart="true"></embed></object>';
	$id("object_holder").innerHTML = s;
		
	s='直接链接:<a target="_blank" href="http://www.tudou.com/programs/view/'+target +'">http://www.tudou.com/programs/view/'+target+'</a>';

	$id("videodirectlink").innerHTML = s;
	$id("videocontainer").style.display = "";
	return false;
}

function closevideocontainer()
{
	$id("object_holder").innerHTML = "";
	$id("videocontainer").style.display = "none";
}

var tmMouseflag = 0;
var clickXPos = 0;
function tmholderMouseDown(event)
{
	clickXPos= event.pageX;
	tmMouseflag = 1;
		if (typeof(event.stopPropagation) == "undefined")
			event.cancelBubble = true;
		else
			event.stopPropagation();
		if (event.preventDefault)
			event.preventDefault();
		event.returnValue = false;
	return false;
}
function tmholderMouseUp()
{
	tmMouseflag= 0;
		if (typeof(event.stopPropagation) == "undefined")
			event.cancelBubble = true;
		else
			event.stopPropagation();
		if (event.preventDefault)
			event.preventDefault();
		event.returnValue = false;
}
function tmholderMouseMove(event)
{
	var tmholder = $id("timeline_holder");
	tmholder.onmousemove = null;		
	setTimeout("$('#timeline_holder').mousemove(tmholderMouseMove);",200);
	
	var mXpos = event.pageX;
	var offset = clickXPos -mXpos;
	if (tmMouseflag == 1)
	{
			shiftcomp(offset);
			clickXPos = mXpos;
	}
	if (typeof(event.stopPropagation) == "undefined")
		event.cancelBubble = true;
	else
		event.stopPropagation();
	if (event.preventDefault)
		event.preventDefault();
	event.returnValue = false;
}
function formatCurrency(num,currency) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
var moneySymbol = "¥";
if (currency == 1)
	 moneySymbol = "NT$";
else if (currency == 2)
	moneySymbol = "US$";

return (((sign)?'':'-') + moneySymbol + num + '.' + cents);
}
