var FIREFOX=navigator.userAgent.indexOf('Firefox')!=-1;
/**
 * Realiza una llamada Ajax.
 * Basado en: http://www.geekdaily.net/2007/08/31/twitter-javascript-api-the-beginning/
 * @param (String)   url 
 * @param (function) onAction - si todo va bien
 * @param (function) onError - si se produce un error
 * @param (Object)   params - parametros adicionales
 *        {method:"get",
 *         async:true,
 *         params:[param1,value1,param2,value2,...]}
 */
if(typeof XMLHttpRequest=="undefined") 
  XMLHttpRequest=function(){
    try{return new ActiveXObject("Msxml2.XMLHTTP.6.0");}catch(e){}
    try{return new ActiveXObject("Msxml2.XMLHTTP.3.0");}catch(e){}
    try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){}
    try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}
    throw new Error( "This browser does not support XMLHttpRequest.")
  };

function ajax(url,onAction,onError,params,caller){
  if(params==null)params={method:"GET",async:true};
  else{
    if(!params.method)params.method="GET";
    if(typeof params.async=="undefined")params.async=true;
  }
  var request=new XMLHttpRequest();
  request.open(params.method,url,params.async);
  request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  request.onreadystatechange=function(){
    if(request.readyState==4){
      if(request.status==200){
        if(request.responseText){
					onAction.call(caller!=null?caller:onAction,request.responseText);
				}
      }else{
        //alert(request.status);
      }
    }
  };
  request.send(null);
}

var Twitter={
  BASE:"",
  PAGE:"twitter.jsp",
  getLinkImage:function(){
    return "<img src='"+Twitter.BASE+"img/right2.gif' border='0' />";
  },
  parseDate:function(dtt){
    dtt=dtt.split(" ");
    dtt[4]="UTC"+dtt[4];
	  return (new Date(dtt.join(" "))).getTime();
  },
  userTimeline:function(div,user,params){
    var div=document.getElementById(div);
    div.innerHTML="loading";
    var url=Twitter.BASE+Twitter.PAGE+"?action="+encodeURIComponent("user_timeline/"+user+".json?count=5");
    //var url="http://twitter.com/statuses/user_timeline/"+user+".json?count=2";
    ajax(url,function(txt){
      var json=eval("("+txt+")");
      var txt="<div class='tw'>";
      if(params&&params.userHeader&&json.length){
        var u=json[0].user;
        txt+="<div class='tw-head'><div style='margin:5px;padding-left:50px;min-height:50px;background:url("+u.profile_image_url+") no-repeat;'>";
        txt+="<b>"+u.name+"</b><br>";
        if(u.description&&u.description.length>0)
          txt+="Descripti&oacute;n: "+u.description+"<br>";
        txt+="Seguidores: "+u.followers_count+"<br></div></div>";
      }
      for(var i=0;i<json.length;i++){
        var m=json[i];
        txt+="<div class='tw-msg'>";
        if(params&&!params.hideUser)
          txt+=Twitter.formatUser(m.user)+" ";
        txt+=Twitter.formatText(m.text)
          +" <span class='tw-dtt'>("+Twitter.formatDate(m.created_at)+")</span>"
          +"</div>";
      }
      txt+="</div>";
      div.innerHTML=txt;
    });
  },
  formatDate:function(dtt){
    dtt=new Date().getTime()-Twitter.parseDate(dtt);
    dtt=Math.round(dtt/1000);
    if(dtt<60)return "hace "+dtt+" sg";
    dtt=Math.round(dtt/60);
    if(dtt<60)return "hace "+dtt+" min";
    dtt=Math.round(dtt/60);
    if(dtt<24)return "hace "+dtt+" horas";
    dtt=Math.round(dtt/24);
    return "hace "+dtt+" d&iacute;as";
  },
  formatUser:function(user){
    return Twitter.formatLink("http://twitter.com/"+user.name,user.name);
  },
  formatLink:function(url,txt){
    return "<a href='"+url+"' target='_blank'>"+txt+"</a>";
  },
  formatText:function(txt){
    var tmp=txt.split(" ");
    for(var i=0;i<tmp.length;i++)
      if(tmp[i].indexOf("http://")==0)
        tmp[i]=Twitter.formatLink(tmp[i],Twitter.getLinkImage());
    return tmp.join(" ");
  }
};
var EUMDisplay={
  timeout:null,
	screen:null,
  display:function(txt,millis){
		if(this.screen==null){
      this.screen=$$("DIV");
      var s=this.screen.style;
      s.top="3px";
      s.left="3px";
      s.position="absolute";
      s.color="white";
      window.document.body.appendChild(this.screen);
		}
    if(this.timeout!=null){
      clearTimeout(this.timeout);
      this.timeout=null;
    }
    this.screen.innerHTML=txt;
    if(millis!=null)
      this.timeout=setTimeout("EUMDisplay.reset();",millis);
  },
	reset:function(){
    this.screen.innerHTML='';
		this.timeout=null;	
	}
}
