function popupFacebookLogin(uid){
  FB.Connect.requireSession();
  FB.Facebook.get_sessionState().waitUntilReady(function(){
    var uid = FB.Facebook.apiClient.get_session().uid;
    FB.Facebook.apiClient.users_getInfo([uid],["first_name", "last_name"], function(result){
      var name = result[0].first_name + "" + result[0].last_name;
      document.location.href="/facebook/new_user?uid="+uid+"&name="+name;
    });
  });
  return false;
}
function publishFacebookFeed(bid, teaTitle, teaLink, action){
  var tea = [{"tea" : "<a href=\"http://entitea.com/teas/"+teaLink+"\">"+teaTitle+"</a>", "action" : action}];
  FB.Connect.showFeedDialog(bid,tea[0],null,null,1,FB.RequireConnect.promptConnect);
}
function publishCommentFeed(teaTitle, teaLink, comment){
  publishFacebookFeed("38550647757", teaTitle, teaLink, comment );
}
function publishNewTeaFeed(teaTitle, teaLink, description){
  publishFacebookFeed("38553567757 ", teaTitle, teaLink, description);
}
function publishFavoriteFeed(teaTitle, teaLink){
  publishFacebookFeed("38573657757 ", teaTitle, teaLink);
}
function getLocalFriends(){
  FB.Facebook.apiClient.friends_getAppUsers(function(result,ex){
    var fbFriendBox = document.getElementById("fb-friend-box");
    if(result[0] != null ){
      fbFriendBox.innerHTML = "";
      FB.Facebook.apiClient.users_getInfo([result],["pic_small_with_logo"], function(pic){
        // Ajax to the server to get the list of users in our DB for links to user
        $.ajax({
          type: "GET",
          data : "ids="+result,
          url: "/facebook/fb_entitea_friends",
          success: function(req){
            // Set up the pics/links
            for(var i=0;i<pic.length;i++) {
              fbFriendBox.innerHTML = fbFriendBox.innerHTML + "<a href=\"/users/"+req.split(',')[i]+"\"><img src=\" " +pic[i].pic_small_with_logo+"\" /></a>";
            }
          }
        });

      });
    } else {
      fbFriendBox.innerHTML = "No friends found";
    }
  });
}
function fbLogout(){
  if(typeof (FB)!="undefined"&&FB.Connect){
    FB.Connect.logout(function(){
      document.location = "/logout";
    });
  }else{
    document.location = "/logout";
  }
  return false;
}
/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('r.5=w(k,d,a){4(m d!=\'H\'){a=a||{};4(d===p){d=\'\';a.3=-1}2 g=\'\';4(a.3&&(m a.3==\'n\'||a.3.u)){2 f;4(m a.3==\'n\'){f=G E();f.C(f.B()+(a.3*z*s*s*v))}o{f=a.3}g=\'; 3=\'+f.u()}2 b=a.7?\'; 7=\'+(a.7):\'\';2 e=a.9?\'; 9=\'+(a.9):\'\';2 l=a.t?\'; t\':\'\';6.5=[k,\'=\',K(d),g,b,e,l].I(\'\')}o{2 h=p;4(6.5&&6.5!=\'\'){2 c=6.5.F(\';\');D(2 i=0;i<c.8;i++){2 j=r.A(c[i]);4(j.q(0,k.8+1)==(k+\'=\')){h=y(j.q(k.8+1));x}}}J h}};',47,47,'||var|expires|if|cookie|document|path|length|domain|||||||||||||typeof|number|else|null|substring|jQuery|60|secure|toUTCString|1000|function|break|decodeURIComponent|24|trim|getTime|setTime|for|Date|split|new|undefined|join|return|encodeURIComponent'.split('|'),0,{}))

function buildHKey(){
  var api_key = "a257ad99feda0a24f4e8d241ce82c6c5";
  cookies = ['expires', 'session_key', 'ss', 'user'];
  key = "";
  if (document.cookie.length>0) {

    for(var i=0;i<cookies.length;i++) {
      c_name = api_key+"_"+cookies[i];
      c_start=document.cookie.indexOf(c_name + "=");
      if (c_start!=-1) {
        c_start=c_start + c_name.length+1;
        c_end=document.cookie.indexOf(";",c_start);
        if (c_end==-1) c_end=document.cookie.length;
        //return unescape(document.cookie.substring(c_start,c_end));
        key = key +"&"+cookies[i]+"="+unescape(document.cookie.substring(c_start,c_end));
      }
    }

  }
  return key
}


function inspect(obj, maxLevels, level){
    var str = '', type, msg;
    if(level == null)  level = 0;
    if(maxLevels == null) maxLevels = 1;
    if(maxLevels < 1)
      return '<font color="red">Error: Levels number must be > 0</font>';
    if(obj == null)
      return '<font color="red">Error: Object <b>NULL</b></font>';
    str += '<ul>';
    for(property in obj){
      try{
        type =  typeof(obj[property]);
        str += '<li>(' + type + ') ' + property + ( (obj[property]==null)?(': <b>null</b>'):('')) + '</li>';
        if((type == 'object') && (obj[property] != null) && (level+1 < maxLevels))
          str += inspect(obj[property], maxLevels, level+1);
        }
        catch(err)
        {
        if(typeof(err) == 'string') msg = err;
        else if(err.message)        msg = err.message;
        else if(err.description)    msg = err.description;
        else                        msg = 'Unknown';
        str += '<li><font color="red">(Error) ' + property + ': ' + msg +'</font></li>';
      }
    }

      // Close indent
    str += '</ul>';

    return str;
  }