﻿/*---------------------------------------------------------------------------*\
|  NameSpace:  Csdn.Forum.UserOnline
|  Author:     yizhu
|  Version:    2007-11-13
\*---------------------------------------------------------------------------*/
  
showUserCard.database = {}; //global userinfo database
    
resourcePath="/u/ui/scripts/System/_resource";
  
window._stopMouseOver=function(e){(window.event||e).cancelBubble=true;}
function UserCardCallback(json)
{	
    if(typeof(json)=="undefined" || !json.username) return;
    showUserCard.database[json.username] = json;
    bindData(json.username);
}

function showUserCard(e, user, mediaurl)
{
    e = (window.event||e); e.cancelBubble=true;
    var img = e.srcElement || e.target; 
    if(!user) return;
    var layer=document.getElementById("UserCard_layer");
    if(!layer)
    return; 
    layer.style.display="";
    var xy;
    if(navigator.userAgent.toLowerCase().indexOf("opera")<0)
    { xy=realOffset(img); layer.style.left = (xy.x+img.offsetWidth-2) +"px";}
    else//is opera
    { xy=getEventXY(e); layer.style.left = xy.x +"px";}
    layer.style.top  = (xy.y) +"px";
    var right = "<span>\u5e10\u53f7\uff1a</span><a target='_blank' href='http://hi.csdn.net/{0}/'><var>{0}</var></a><br/>"+  //username
        "<img src='http://counter.csdn.net/pv.aspx?id=241' border='0' style='display:none'/>"+ //counter
        "<span>\u6635\u79f0\uff1a</span><a target='_blank' href='http://hi.csdn.net/{0}/'><var id='UserCard_nickname'></var></a><br/>"+ //nickname
        "<span>\u6700\u65b0\u5e16\u5b50\uff1a</span><br/><span id='UserCard_topiclist'></span>"+ //last topic
        "<span style='margin-left:10px'><a href='http://forum.csdn.net/PointForum/Forum/UserTopicList.aspx?type=TopicUserRewarded&user={0}'>\u66f4\u591a\u5e16\u5b50...</a></span>"
    document.getElementById("UserCard_right").innerHTML = "<object data='"+mediaurl+"'"+ 
	"type=application/x-shockwave-flash  width=310 height=240 align='middle'>"+ 
                 " <param name='movie' value='"+mediaurl+"'/>"+ 
             " </object>"+
			" <div ><MARQUEE onmouseover=this.stop() onmouseout=this.start() scrollAmount=2 scrollDelay=1 width=310>滚动广告测试"+
	        " </MARQUEE></div>"+
			"<div style='width:310px;'><span style='float:left;'><a href='#' onclick='hideVideo();return false;'>关闭</a></span><span style='float:right'>"+user+"</span></div>";
    if(typeof(showUserCard.database[user])=="undefined")
    {
        SendRequest(document.getElementById("hf_cardUrl").value + user);
    }
    else bindData(user);
}

function hideVideo(){
   document.getElementById("UserCard_layer").style.display="none"
   document.getElementById("UserCard_right").innerHTML="";
}
function bindData(username)
{
    var json = showUserCard.database[username];
    $("UserCard_nickname").innerHTML = json.nickname;
    for(var s="", i=0; i<json.topicList.length; i++)
    {
        s += "<li><a href='{0}' title='{2}' target='_blank'>{1}</a></li>".format(json.topicList[i].url, json.topicList[i].text.subByte(20), json.topicList[i].text.replace(/</g, "&lt;").replace(/\'/, "&#39;"));
    }
    if(s!="") $("UserCard_topiclist").innerHTML = "<ol>"+s+"</ol>";
}
//document.attachEvent("onmouseover", function(){try{document.getElementById("UserCard_layer").style.display="none";}catch(ex){}});

function SendRequest(url){	
	if(this.element){this.element.parentNode.removeChild(this.element)};
	this.element=document.createElement("SCRIPT");	 
	this.element.type="text/javascript";
	this.element.id = "MzJsonElement";
	this.element.src=url;
	document.getElementsByTagName("HEAD")[0].appendChild(this.element);
}

 if(!window.attachEvent && window.addEventListener)
{
  window.attachEvent = HTMLElement.prototype.attachEvent=
  document.attachEvent = function(en, func, cancelBubble)
  {
    var cb = cancelBubble ? true : false;
    this.addEventListener(en.toLowerCase().substr(2), func, cb);
  };
  window.detachEvent = HTMLElement.prototype.detachEvent=
  document.detachEvent = function(en, func, cancelBubble)
  {
    var cb = cancelBubble ? true : false;
    this.removeEventListener(en.toLowerCase().substr(2), func, cb);
  };
}

function GetScrollXY(){
    var x=0,y=0
    if(document.documentElement.scrollTop){
        x=document.documentElement.scrollLeft;
        y=document.documentElement.scrollTop;
    }
    else{
        x=document.body.scrollLeft;
        y=document.body.scrollTop;
    }
    return {x:x,y:y}
}

function getEventXY(e){
    var posx=0,posy=0;
    if(e==null) e=window.event;
    if(e.pageX || e.pageY)
    {
        posx=e.pageX; posy=e.pageY;
    }
    else if(e.clientX || e.clientY)
    {
       posx=e.clientX+GetScrollXY().x;
       posy=e.clientY+GetScrollXY().y;
    }
    return {"x":posx, "y":posy};
}

function realOffset(o)
{
  if(!o) return null; var e=o, x=y=l=t=0;
  do{l+=e.offsetLeft||0; t+=e.offsetTop||0; e=e.offsetParent;}while(e);
  do{x+=o.scrollLeft||0; y+=o.scrollTop||0; o=o.parentNode;}while(o);
  var xy=GetScrollXY();
  return {"x":l-x+xy.x, "y":t-y+xy.y};
};



