var errorDiv;
var container;
var allContent;
var tabContainer;
var contentWithoutTabs;
var serverURL = "http://mp.playgamesite.com/fs_fungames/";
//var serverURL = "http://localhost:8081/fs_fungames_2/";
var IMG_URL = serverURL+"img/";
var GAME_URL = "http://widgets.friendster.com/"; 
var GAME_IMG_URL="http://www.playgamesite.com/arcade/img/";
var FS_IMG_URL = serverURL+"mp_img/";
var serviceURL =serverURL+"GameService";
var Request = new Object();
var APP_COUNT = 16;
var COMMENT_COUNT = 5;
var RECOMMENDED_COUNT = 12;
var PLAYERS_COUNT= 20;
var SUPER_URL = "http://widgets.friendster.com/111super";
var monthname=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var categoryArray = new Array("All","Action","Arcade","Casino","Dress-up","Driving","Puzzle","Sports","Other");
var GALLERY_APP_COUNT = 35;
var RANDOM_GAME_COUNT = 7;
var userThumbnail, userName, userProfile, userCountry, userCity,
	userRegion, userPostalCode, userAge, userGender,userKey;

var styleJson = {bgColor:"",titleColor:"",titleBackground:"",tabTextColor:"",textColor:"#000000",classV:""};
var TAB_CONFIG;
var IS_LIVE = true;
var access_to_play = false;

var _$ = function(id){
	return document.getElementById(id);
}

var embedGoogleAnalitics = function(){
	 try{
	  var head = document.getElementsByTagName("head");
	  var script = document.createElement("script");
	  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
	  script.setAttribute('src', gaJsHost+'google-analytics.com/ga.js');
	  script.setAttribute('type', 'text/javascript');
	  head[0].appendChild(script);
	  
	  var script = document.createElement("script");
	  script.setAttribute('type', 'text/javascript');
	  script.text = ' var pageTracker = _gat._getTracker("UA-241707-13"); pageTracker._trackPageview();';
	  head[0].appendChild(script);
	 }catch(ex){}
}

var getCurrentTime = function(){
    var timeNow = new Date();
    var hours   = timeNow.getHours();
    var minutes = timeNow.getMinutes();
    var seconds = timeNow.getSeconds();
    var timeString = "" + ((hours > 12) ? hours - 12 : hours);
    timeString  += ((minutes < 10) ? ":0" : ":") + minutes;
    timeString  += ((seconds < 10) ? ":0" : ":") + seconds;
    
   return timeString;
 }

function storeDuration(){

	if (userKey == null || userKey == "null") return;
	var duration=Math.ceil(((new Date()).getTime()- window.startTime.getTime())/1000);
	var data="query=durationUpdate&userKey="+userKey+"&appId="+gameId+"&duration="+duration;
	Request.sendPOST(serviceURL, data, resp_duration);
}

var resp_duration=function(response){}




var fillBody = function(){
   if (typeof gadgets == "undefined"){
      IS_LIVE = false;
     }
    Request.sendGET(serviceURL+"/version?appId="+gameId+"&time="+getCurrentTime(),response_getAppVersion);
}


var fillBodyStart = function(){
    window.startTime = new Date();
	window.onbeforeunload=storeDuration;
      if (typeof TAB_CONFIG == "undefined"){
		if (window.opener){
			TAB_CONFIG = window.opener.TAB_CONFIG;
		
			
		 }else{
			
			
			TAB_CONFIG = {
				items: [
						{name: "play", link: "play", displayName:  "Play", show: true},
						{name: "share", link: "showInvite", displayName:  "Share", show: true},
						{name: "favorites", link: "showUserFavorites", displayName:  "My Favorites", show: true},
						{name: "players", link: "showPlayers", displayName:  "Players", show: true},
						{name: "other", link: "showAllGames", displayName:  "Other Games", show: true}
					 ],
				bgColor: "#F1F1F1",
				borderColor: "#898989",
				color: "#333333",
				selectedBgColor: "#6D84B4",
				selectedColor: "white"
			};
			
			
		 }
	}
	
	
  allContent = _$("allContent");
  	
  var tabs = getJQueryTabs();
      
      var topBanner = 
		'<div align=center style="font-size:15px;font-weight:bold;" >'+
		 	'<div style="margin:7px 0px;" class=menu id=menuTop>'+getMenu()+'</div>'+
            '<div id=topAd></div>'+
         '</div>';
  	var cont =
  		'<div id=error style="display: none"></div>'+
		'<div id=container><div class=loading>Loading...</div></div>';
	
	var bottomAd = '<div align=center id=bottomAd></div>';
	
	var bottomBanner =
		'<div align=center style="font-size:15px;font-weight:bold;">'+
             '<div id=rundomGames></div>'+
             '<div id=recommendation></div>'+
	        '<div style="margin:7px 0px" id=menuBottom>'+getMenu()+'</div>'+
         '</div><br><br><br>';
   
      
         
	var style = "";
	
	allContent.style.background=styleJson.bgColor;
	allContent.innerHTML = tabs+"<div style='"+style+"' id='contentWithoutTabs'>"+topBanner+cont+bottomAd+bottomBanner+"<div style='height:50px'>&nbsp;</div></div>";
	setTimeout("refreshAd()",800);
	container = _$("container");
	errorDiv = _$("error");
	tabContainer = _$("tabContainer");
	contentWithoutTabs = _$("contentWithoutTabs");
	initializeJQeryTabs();
	getRandomGames(resp_getRandomGames);
	Request.sendGET(serviceURL+"/getRecommendedGames/"+RECOMMENDED_COUNT+"/"+getCurrentTime(),resp_getRecommended);
    getUser(resp_getUser);  
	embedGoogleAnalitics();
	
}



var getJQueryTabs = function(){
	var tabs =	'<div id="tabContainer"><ul class="ui-tabs-nav'+styleJson.classV+'" style="background:#FFFFFF" class="'+styleJson.classV+'">' ;
	var items = TAB_CONFIG.items;
	for (var i=0;i<items.length;i++){
	    	if (!items[i].show) continue;
	    	tabs += '<li><a style="color:'+styleJson.tabTextColor+'" href="#cont'+(i+1)+'"><span>'+items[i].displayName+'</span></a></li>';
	}	
	tabs +=	'</ul>';
	for (var i=0;i<items.length;i++){
	    	if (!items[i].show) continue;
	    	tabs += '<div style="background:'+styleJson.bgColor+'" id="cont'+(i+1)+'"></div>';
	}	
	tabs +='</div>';
	return tabs;
	
}
var initializeJQeryTabs = function(){
	$('#tabContainer > ul').tabs({ fxSlide: true, fxFade: true, fxSpeed: 'fast'});

	$tabs=$("#tabContainer > ul").tabs({
        event: 'click',
	    select: function(e, ui) {
	         var items = TAB_CONFIG.items;
	         var itemIndex = parseInt(ui.panel.id.substring(4));
	         _$(ui.panel.id).appendChild(contentWithoutTabs);
	      
	         var functionRef = eval(items[itemIndex - 1].link);
			 functionRef();
	         return true;
	      }
	  });
}
  
var response_getAppVersion = function(response){
   styleJson = eval("("+response.data.json+")");
   if(styleJson == undefined || styleJson == "undefined" ){
       styleJson = {bgColor:"",titleColor:"",titleBackground:"",tabTextColor:"",textColor:"#000000",classV:""};
   }
   fillBodyStart();
}    


var getUserPostData = function(){
	var str = "userName="+encodeURIComponent(userName)+
			  "&thumbnail="+userThumbnail+
			  "&country="+encodeURIComponent(userCountry)+
			  "&city="+encodeURIComponent(userCity)+
			  "&region="+encodeURIComponent(userRegion)+
	    	  "&postalCode="+encodeURIComponent(userPostalCode)+
    		  "&profile="+userProfile+
    		  "&gender="+userGender+
    		  "&age="+userAge+
	    	  "&userKey="+userKey;
	
	  return str;
	
}

function getUser(callback) {
  if (!IS_LIVE){
	    user = {};
		userKey = "04627876712353616756";
		userAge = 2;
	    userGender = 1;
		userThumbnail = "http://c1.ac-images.myspacecdn.com/images02/18/s_d3c05914e1664ea4b08def3a557efb20.jpg";
	    //userThumbnail = "aaa.jpg";
		userName = "Lusine";
		userProfile = "http://profile.com";
	    userCountry = "am";
	    userCity = "yerevan";
	    userRegion = "yerevan";
	    userPostalCode = "374";
		var data="query=adduser&"+getUserPostData()+"&appId="+gameId;
 		Request.sendPOST(serviceURL,data, callback);
 	   
		play();
		
	}else{

        application_id = gadgets.util.getUrlParameters()["gadgetId"];
        osContainer = opensocial.Container.get();
	    var req = opensocial.newDataRequest();
	   // req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER), "owner");
	    var paramViewer = {};
	    paramViewer[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] =
	    [opensocial.Person.Field.ADDRESSES,
	     opensocial.Person.Field.CURRENT_LOCATION,
	     
	     opensocial.Person.Field.THUMBNAIL_URL, 
	     opensocial.Person.Field.NAME, 
	     opensocial.Person.Field.AGE,
	     opensocial.Person.Field.GENDER,
	     opensocial.Person.Field.PROFILE_URL];
	   
	     req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER, paramViewer), "owner");
	     req.send(callback);
	    } 
};





function resp_getUser(data) {
	var user = data.get('owner').getData();
	    userKey = user.getId();
	    
	    userThumbnail = user.getField(opensocial.Person.Field.THUMBNAIL_URL);
	    userName = user.getDisplayName();
	    userProfile = user.getField(opensocial.Person.Field.PROFILE_URL);
	    userGender = user.getField(opensocial.Person.Field.GENDER).getKey(); 
	    
	    var address = user.getField(opensocial.Person.Field.CURRENT_LOCATION);
	        userCity = address.getField(opensocial.Address.Field.LOCALITY);
	        userCountry = address.getField(opensocial.Address.Field.COUNTRY);
	        userRegion = address.getField(opensocial.Address.Field.REGION);
	        userPostalCode = address.getField(opensocial.Address.Field.POSTAL_CODE);
	        userAge = user.getField(opensocial.Person.Field.AGE);
	  
	       if (typeof userAge == "undefined" || userAge == null){
		         userAge = 0;
	            }
	      if (typeof userPostalCode == "undefined" || userPostalCode == null){
		          userPostalCode = "";
	        }
	    
     
	 
	    var data="query=adduser&"+getUserPostData()+"&appId="+gameId;
 		Request.sendPOST(serviceURL,data, resp_addUser);
       play();
		
}


function resp_profile_getUser(data) {
	var user = data.get('owner').getData();
	    userKey = user.getId();
	    
	    userThumbnail = user.getField(opensocial.Person.Field.THUMBNAIL_URL);
	    userName = user.getDisplayName();
	    userProfile = user.getField(opensocial.Person.Field.PROFILE_URL);
	    userGender = user.getField(opensocial.Person.Field.GENDER).getKey(); 
	    
	    var address = user.getField(opensocial.Person.Field.CURRENT_LOCATION);
	        userCity = address.getField(opensocial.Address.Field.LOCALITY);
	        userCountry = address.getField(opensocial.Address.Field.COUNTRY);
	        userRegion = address.getField(opensocial.Address.Field.REGION);
	        userPostalCode = address.getField(opensocial.Address.Field.POSTAL_CODE);
	        userAge = user.getField(opensocial.Person.Field.AGE);
	  
	       if (typeof userAge == "undefined" || userAge == null){
		         userAge = 0;
	            }
	      if (typeof userPostalCode == "undefined" || userPostalCode == null){
		          userPostalCode = "";
	        }
	    
   getProfile();
		
}





var resp_addUser=function(response){ 	
}

var resp_getRecommended = function(response){
                        
   var recommend =  _$("recommendation");
  
   var json = response.data;
   var dataList = json.data;
    
    var str ="<div class='recTitleDiv recTitle"+styleJson.classV+"' align=left>Recommendations</div>";  
     str += "<table width=100% margin-top:5px;'><tr>";
  

	 for (var i=0;i<dataList.length;i++){
  		var data = dataList[i];
		if(i==dataList.length/2){
		   str += "<tr>";
		}
		str +=    "<td class=recBox width=12%>"+
		                "<div style='color:#8C8C8C;overflow:hidden;'><a target=_blank href='"+data.userProfile+"'>"+data.name.substring(0,10)+"...</b></a></div>"+
		              "<table>"+
		                 "<tr>"+
		                     "</td>"+
		                       
		                         "<div><a target=_blank href='"+data.userProfile+"'><img  style='width:35px;height:35px;' src='"+data.thumbnail+"' /></a></div>"+
		                  "</td>"+
		                  "<td>"+
		                     "<div style='color:#999999'>recommended:</div>"+
		                     "<div style='height:30px;width:80px;overflow:hidden;'><a target=_blank href='"+GAME_URL+data.id+"' style='color:#5CC46B;font-weight:bold;'>"+data.gamename+"</a></div>"+
		                     
		                  "</td>"+
		               "</tr>"+
		             "</table>"+
		           "</td>";
		}
		
  str += "</tr></table>";
  
  recommend.innerHTML = str;
 }

////////// Random///////////////////////////////////////

var getProfile = function(){
      getRandomGames(resp_getProfile);
    //  getUserGameData();
  }

var resp_getProfile = function(response){
  
    var json=response.data;
    var apps = json.apps;
    var str="";
     str +='<table align="center" style="border:1px solid #CBCCDA"><tr>';
     
     for (var i=0;i<apps.length;i++){
        var app = apps[i];
	    var appUrl =  SUPER_URL+"&appParams=%7B%22gameId%22%3A"+app.gameId+"%7D";
        str += '<td><a target=_blank href="'+appUrl+'"><img border="none"  style="margin-right:5px;width:50px;height:30px;" src="'+app.imgPath + app.gameId+'_75.png"/></a></td>'
     }
     str +='</tr></table>';
       _$("profileRundomGames").innerHTML = str;
     gadgets.window.adjustHeight();   
}


var getRandomGames = function(callBack){
    Request.sendGET(serviceURL+"/getRandomGames/"+RANDOM_GAME_COUNT, callBack);
}

var resp_getRandomGames = function(response){
  
    var json=response.data;
    var apps = json.apps;
    var str="";
     str +='<table style="border:1px solid #999999"><tr>';
     
     for (var i=0;i<apps.length;i++){
        var app = apps[i];
	    var appUrl =  SUPER_URL+"&appParams=%7B%22gameId%22%3A"+app.gameId+"%7D";
        str += '<td><a target=_blank href="'+appUrl+'"><img border="none"  style="margin-right:5px;width:60px;height:60px;" src="'+app.imgPath + app.gameId+'_75.png"/></a></td>'
     }
     str +='</tr></table>';
       _$("rundomGames").innerHTML = str;
    
}

var getUserGameData = function(){
  getUserFavorites(1);
}

var resp_profile_showUserFavorites=function(response)
{
  var json=response.data;
  var userFavorites = json.favorites;
  var currentPage=json.page;
  var str="";
     if(json.totalCount!=0)
     {
      str+="<table>"+
               "<tr>"+
                   "<td>"+
                      "<span><img src="+userThumbnail+" style='height:45px'></span>"+
                      "<span style='margin-left:10px;font-weight:bold;font-size:13px;height:45px;color:#4EC0E1;'>"+userName.substring(0,25)+"\'s favorite games</span>"+
                   "</td>"+  
               "</tr>"+
               "<tr>";
                 for (var i=0;i<userFavorites.length;i++){
                   fav = userFavorites[i];
			       fav.appUrl =  SUPER_URL+"&appParams=%7B%22gameId%22%3A"+fav.gameId+"%7D";
                    str+= '<td><a target=_blank href="'+fav.appUrl+'"><img border="none"  style="margin-right:5px;width:40px;height:40px;" src="'+FS_IMG_URL+ fav.gameId+'_75.png"/></a>'+
                          '<div><a style="color:#999999;font-size:10px;" target=_blank href="'+fav.appUrl+'"><b>'+(fav.gameName).substring(0,8)+'...'+'</b></a></div></td>'; 
                }  
               str+= "</tr>";
		   str += "</table>";
		  _$("userGames").innerHTML=str;
       } else {
           getRandomGames(resp_getProfile);
          }
    gadgets.window.adjustHeight();
}





/////////////////////////////////////////////////////////////////


var getMenu = function(){
  var menuStr = 
    '<span>[ <a target="_blank" href="http://www.playgamesite.com" style="color:#8C184E;">PlayGameSite</a> ]</span>'+
    '<span>[<a target="_blank" href="'+getFullScreenURL()+'" ><img alt="Fullscreen" src="'+IMG_URL+'fullScreen.png" /> FullScreen </a>]</span>'+
    '<span id=favorite></span>'+
    '<span id=recommend></span>';
  return menuStr;
 } 


function getFullScreenURL() {
	var myWidth = 0, myHeight = 0;
    if (window.screen){
    	myWidth = window.screen.width;
    	myHeight = window.screen.height;
    }else if( typeof( window.innerWidth ) == 'number' ) {
          myWidth = window.innerWidth;
          myHeight = window.innerHeight;
    }else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
          myWidth = document.documentElement.clientWidth;
          myHeight = document.documentElement.clientHeight;
    }else if(document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
         myWidth = document.body.clientWidth;
         myHeight = document.body.clientHeight;
   	}
   	var url=swf.url;
	if(gameId){
   		url = "http://www.playgamesite.com/playgame1.php?getgame="+gameId+"&width=" + myWidth + "&height=" + myHeight;	 
	}	
   	return url;
}

//////////// ADS

function applyAds(adDiv, adHolderDiv){
	try{
    var adTop = document.getElementById(adDiv);
        adTop.parentNode.removeChild(adTop);
    var adHolder = document.getElementById(adHolderDiv);
        adHolder.appendChild(adTop);
        adTop.style.display='block';
	}catch(ex){
		  _$("topAd").innerHTML = '<iframe frameborder="0" src = "http://adturns.com/ad.php?c=79" width = "728" height = "90" border="0" style = "border: none; overflow: hidden" frameborder="0"  scrolling="no" />';
		  _$("bottomAd").innerHTML = '<iframe frameborder="0" src = "http://adturns.com/ad.php?c=80" width = "728" height = "90" border="0" style = "border: none; overflow: hidden" frameborder="0"  scrolling="no" />';	
	}
}

var refreshAd = function(){
	 applyAds('adDivTop', 'topAd');
	 applyAds('adDivBottom', 'bottomAd');
}
/*
var refreshAd = function(){
    // _$("bottomAd").innerHTML = '<iframe src="'+serverURL+'google_bottom_ad.html" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" align="center" width="468" height="60" style="margin-bottom:2px;"></iframe>';
	//_$("bottomAd").innerHTML = '<iframe src="http://ads.socialmedia.com/facebook/monetize.php?pop=1&width=645&height=60&pubid=f8d7fbc4e3d9b95e1daa87a92a8b8826&bgcolor=FFFFFF&&bordercolor=36=FFFFFF" border="0" width="645" height="60" resizable="true" name="socialmedia_ad" scrolling="no" frameborder="0"></iframe>';
	//_$("topAd").innerHTML = '<iframe src="'+serverURL+'google_top_ad.html" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" align="center" width="728" height="90" style="margin-bottom:2px;"></iframe>';
     _$("topAd").innerHTML = '<iframe frameborder="0" src = "http://adturns.com/ad.php?c=79" width = "728" height = "90" border="0" style = "border: none; overflow: hidden" frameborder="0"  scrolling="no" />';
     _$("bottomAd").innerHTML = '<iframe frameborder="0" src = "http://adturns.com/ad.php?c=80" width = "728" height = "90" border="0" style = "border: none; overflow: hidden" frameborder="0"  scrolling="no" />';	
}
*/


var refreshMenu = function(){
  _$("commentContainer").innerHTML="";
}


var play = function(){
	getFlash();
	if(!access_to_play)  showGameMask();//getRandomGames(resp_maskRandomGames);
	setTimeout("req_checkFavorite()",500);
	setTimeout("req_checkRecommand()",500);
	showComments();
}

function showGameMask(games_str){
/*	 
	 var mask_google_ad = '<iframe src="'+serverURL+'preloading_ad.html" scrolling="no" frameborder="0"  width="336" height="280" ></iframe><br/>'+
	                      '<p style="font-size:12px;font-weight:bold;">Please wait...<img style="border:none;" src="'+serverURL+'img/loading.png"/></p><br/>';
	   
	
	 var mask_opensotial_ad = '<iframe width="300" height="250" frameborder="0"  scrolling="no"  border="0" src="http://www01.socialmedia.com/friendster/monetize.php?pubid=71d708c4030143f82b26383618baec3e&v=2.0&width=300&height=250&pop=1" id="ad1"></iframe>';
	
	 var mask_ad_array = new Array(mask_google_ad,mask_opensotial_ad);
	 var random = Math.round(Math.random()); 
*/
	access_to_play = true;                    
	var bodyMask = document.createElement("div");
	bodyMask.className = "game-mask";
	bodyMask.id = "game-mask";
	bodyMask.onclick = function(ev){
		if (window.event) ev = window.event;
		ev.cancelBubble = true;
		return false;
	}
	_$("game_container").appendChild(bodyMask);
	var preloadingBox  = document.createElement("div");
	preloadingBox.className = "preloading-dlg";
	preloadingBox.id = "preloading-dlg";
	//preloadingBox.innerHTML =mask_ad_array[random];
	_$("game_container").appendChild(preloadingBox);
	 applyAds('adDivSquare', 'preloading-dlg');
	 setTimeout("removeGameMask()",20000);
	
}
var removeGameMask = function(){
   _$("game-mask").parentNode.removeChild(_$("game-mask"));
   _$("preloading-dlg").parentNode.removeChild(_$("preloading-dlg"));
    var content="<a href='"+GAME_URL+gameOrkutAppId+"'><img style='cursor:pointer;width:80px;height:80px;' src='"+gameImgUrl+"'></a>";
    createActivity("played&nbsp;"+gameTitle +"&nbsp;game",content);
}


var getFlash = function(){
 var gameStr = 
	'<center><div id="game_container">'+
	  	//'<iframe   id=gameframe src="'+swf.url+'"width="'+swf.width+'" height="'+swf.height+'" name="game" scrolling="no" frameborder="0">'+
	  	'<embed  wmode="transparent" id=gameframe src="'+swf.url+'"width="'+swf.width+'" height="'+swf.height+'" name="game" scrolling="no" frameborder="0" >'+
	  	'</embed>'+
	'</div></center>';
	container.innerHTML = gameStr;
}

//////////////////////////////////// Other Games/////////////////////
//////////////////////////////////////////////////////////////////////
var showAllGames = function(){
    
    container.innerHTML = 
			   "<div class='titleGeneral title"+styleJson.classV+"'>Top Games</div>"+
			   "<div class=content"+styleJson.classV+" id=topApps style='padding-bottom:0px;'><div class=loading>Loading...</div></div>"+
			  
			   "<div class='titleGeneral title"+styleJson.classV+"'>New Games</div>"+
			   "<div class=content"+styleJson.classV+" id='newApps' style='padding-bottom:0px;'><div class=loading>Loading...</div></div>"+
			   
			   "<div class='titleGeneral title"+styleJson.classV+"' id='otherAppMenu'></div>"+
			   "<div class=content"+styleJson.classV+" id='other'>"+
			        "<div id='searchDiv'></div>"+
			        "<div id='otherApps' class=loading>Loading...</div>"+
			   "</div>";	
			   
			 
	var categoryMenu="";
	
	for(var i=0;i<categoryArray.length;i++){
        categoryMenu +="<span class='categoryMenuItem' onclick='javascript:selectCategory(\""+categoryArray[i]+"\","+i+")' ><a id='categoryMenuItem"+i+"' class='categoryItem"+styleJson.classV+"'>"+categoryArray[i]+"</a></span>";
      } 
      
	_$("otherAppMenu").innerHTML=categoryMenu;
	_$("categoryMenuItem0").className = "categoryItemSelected"+styleJson.classV; 
	
	
	req_getApps(1,"all");		
	Request.sendGET(serverURL+"topApps.jsp?type=new", resp_showNewGames);
	//Request.sendGET(serverURL+"publicApps.jsp", resp_showAllGames);
  	Request.sendGET(serverURL+"topApps.jsp?type=top", resp_showTopGames);
  	showSearch();
}

var showSearch = function(){
	  
	   var searchDiv = _$("searchDiv");
	   var str="<table style='margin-top:10px;margin-bottom:10px;margin-left:500px;'><tr>"+
		                 "<td><input type='text' onKeyPress='checkEnter(event)' name='gameName' id='gameName'/></td>"+
		                 "<td><img onclick='getSearchGames(1)'  style='cursor:pointer;' src='"+IMG_URL+"search.png'/></td>"+
	            "</tr></table>";

          
      searchDiv.innerHTML=str;
}



 var checkEnter = function(e){
  var characterCode = e.which;
  if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
      getSearchGames(1);
    }
 }

 
var getSearchGames = function(page){
 
  var gameName = _$("gameName").value;
  var result=_$("otherApps");
  
    result.innerHTML = "<div  id=catGames></div>";
    request_URL = serviceURL+"/getSearchGames/"+gameName+"/"+GALLERY_APP_COUNT+"/";
    Request.sendGET(request_URL+page, resp_getApps);
   
    
  }



var global_request = function(page){
    Request.sendGET(request_URL+page,resp_getApps);
 }


var req_getApps = function(page,categoryName){
    _$("otherApps").innerHTML = "<center><img src='"+IMG_URL+"loading"+styleJson.classV+".gif' ></center>";
    request_URL = serviceURL+"/publicgame/"+GALLERY_APP_COUNT+"/"+categoryName+"/";
	Request.sendGET(request_URL+page, resp_getApps);
}

var resp_getApps = function(response){
		PUBLIC_APPS = response.data;
		var str = getAppsHTML(PUBLIC_APPS);
		_$("otherApps").innerHTML = str; 
		gadgets.window.adjustHeight();
}

var selectCategory = function(selectedCategory,i){
 
      _$("categoryMenuItem"+i).className = "categoryItemSelected"+styleJson.classV;
      for(var j=0;j<categoryArray.length;j++){
        if(i!=j){
           _$("categoryMenuItem"+j).className = "categoryItem"+styleJson.classV;
        }
      }
      
     if(selectedCategory == "All Games"){
        selectedCategory="all";
      }
      req_getApps(1,selectedCategory);	  
      
}

var showRate = function(rate,h){
    var str="";
    str ="<div style='width:90px'>";
    for(var j=0;j<5;j++){
			          if(j<rate)
			             str += '<span><img src="'+IMG_URL+'star.png" style="height:'+h+'px"></span>';
			          else  
			            str += '<span><img src="'+IMG_URL+'blankstar.png" style="height:'+h+'px"></span>';
			       }
	 str += "</div>"; 
   return str;
}


var getAppsHTML = function(data){
	var colCount = 7;
	var currentPage = data.page;
	var arguments="";
	
	var str = "<table width='100%'>";
	for(var i = 0;i<data.app.length;i++){
		if(i%colCount==0){
			str+="<tr>";
		}
		var appUrl =  SUPER_URL+"&appParams=%7B%22gameId%22%3A"+data.app[i].id+"%7D";
		str+="<td valign=top style='width:100px;'>"+
				"<a style='color: #3B5998; font-size:10px;' href='"+appUrl+"' target='_blank'>"+
				"<img class='gameSmallImg' id='"+data.app[i].id+"' index='"+i+"' border='none' style='margin-right:8px' src='"+FS_IMG_URL+ data.app[i].id+"_75.png'></img>";
			
		str+=showRate(data.app[i].rate,10);
		str+=		
				"<div style='width:80px; overflow:hidden'>"+data.app[i].gamename+"</div></a>"+
			 "</td>";
		if(i%colCount == colCount-1){
			str+="</tr>";
		}
	}
	
	var pageCount = Math.ceil(data.totalCount / GALLERY_APP_COUNT);
	if (pageCount>1){
		str += "<tr><td colspan="+colCount+" align=right style='padding-right:20px'>";
		for (var p = currentPage-2; p<currentPage+2;p++){
			if (p > 0 && p <= pageCount){
			
				var color = p == currentPage ? "color: black" : "";
				
				str += "<a style='margin: 0px 7px;"+color+"' href=javascript:global_request("+p+"); >"+p+"</a>";
				
				
			}
		}
		if (currentPage < pageCount){
				str += "<a style='margin: 0px 7px;"+color+"' href=javascript:global_request("+(currentPage+1)+"); >Next</a>";
				
		}
		str += "</td><tr>";
	}
	str+="</table>";
	return str;
}

var req_getApps = function(page,categoryName){
    _$("otherApps").innerHTML = "<center><img src='"+IMG_URL+"loading"+styleJson.classV+".gif' ></center>";
    request_URL = serviceURL+"/publicgame/"+GALLERY_APP_COUNT+"/"+categoryName+"/";
	Request.sendGET(request_URL+page, resp_getApps);
}

var resp_getApps = function(response){
		PUBLIC_APPS = response.data;
		var str = getAppsHTML(PUBLIC_APPS);
		_$("otherApps").innerHTML = str; 
		gadgets.window.adjustHeight();
}

function resp_showAllGames(response){
    var html = response.text;
    document.getElementById('otherApps').innerHTML = html;
	gadgets.window.adjustHeight();
}

function resp_showTopGames(response){
    var html = response.text;
    document.getElementById('topApps').innerHTML = html;
	gadgets.window.adjustHeight();
}
function resp_showNewGames(response){
    var html = response.text;
    document.getElementById('newApps').innerHTML = html;
	gadgets.window.adjustHeight();
}


var req_getNewApps = function(page){
	Request.sendGET(serverURL+"publicApps.jsp?page="+page, resp_showAllGames);
}
/////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////

var showComments = function(){
	container.innerHTML += "<div id='commentContainer'></div>";
	request_getComments(1);
}

function resp_addComment(response){
	if (response.text == "ok"){
		  request_getComments(1);
	}
}

function request_getComments(page){
	_$("commentContainer").innerHTML = "Loading...";
	Request.sendGET(serviceURL+"/getcomment/"+gameId+"/"+page+"/"+COMMENT_COUNT+"/"+getCurrentTime(),response_getComments);
}

function addComment(){

	if (userKey == null || userKey=="null") return;
	var rate=5;
	var form = document.commentAndRate["rate"];
	
    for (i=0; i < form.length; i++ ){
   	     if ( form[i].checked) 
   	        rate = form[i].value;
       }

	var tObj = document.getElementById("textArea");
	var textValue = tObj.value;	
	data = "comment="+encodeURIComponent(textValue)+"&appId="+gameId+"&query=addcomment&userKey="+userKey+"&rate="+rate;
	Request.sendPOST(serviceURL, data, resp_addComment);
}

var replaceAll = function(oldStr,findStr,repStr) {
	var srchNdx = 0;
 	var newStr = "";
 	while (oldStr.indexOf(findStr,srchNdx) != -1) {
  		newStr += oldStr.substring(srchNdx,oldStr.indexOf(findStr,srchNdx));
		newStr += repStr;
		srchNdx = (oldStr.indexOf(findStr,srchNdx) + findStr.length);
 	}
	newStr += oldStr.substring(srchNdx,oldStr.length);
	return newStr;
}



function response_getComments(response){
	var json = response.data;
	var jsonArray = json.comments;
	var str="";
/*	
	if(jsonArray.length!=0){
	       str += "<div class=title>Comments</div>"+
	              "<div class=content id=topApps style='padding-bottom:0px;'>"; 
	   }
	*/   
	str +=
	 '<form name="commentAndRate">'+
	 '<div class="commentGeneral commentDiv'+styleJson.classV+'">'+
	    '<table>'+
	         '<tr><td style="color:#02679C"><b>Add Comment and Rate this game:</b></td></tr>'+    
	         '<tr><td>'+
	             '<table>'+
	                '<tr>'+
	                   '<td style="color:'+styleJson.textColor+'">Rate: </td>'+
	                   '<td style="color:'+styleJson.textColor+'"><input type="radio" name="rate" value="1">1</td>'+
	                   '<td style="color:'+styleJson.textColor+'"><input type="radio" name="rate" value="2">2</td>'+
	                   '<td style="color:'+styleJson.textColor+'"><input type="radio" name="rate" value="3">3</td>'+
	                   '<td style="color:'+styleJson.textColor+'"><input type="radio" name="rate" value="4">4</td>'+
	                   '<td style="color:'+styleJson.textColor+'"><input type="radio" name="rate" value="5" checked>5</td>'+
	                 '</tr>'+
	             '</table>'+   
	         '</td></tr>'+
	         '<tr><td><textarea id="textArea" style="font-size: 15px;width: 600px; height: 70px; border: 1px solid #02679C;"></textarea></td></tr>'+
	         '<tr><td style="float:right;cursor:pointer;"><img src="'+IMG_URL+'add.png" onclick="javascript:addComment()"/></td></tr>'+
	      '</table>'+
	 '</div>';
	'</form>';
	  str += "<table width=100%>";	
	var jsonObj = null;
	var currentPage = json.page;
	for(var i = 0; i < jsonArray.length ; i++){
		jsonObj = jsonArray[i];
		var date = new Date(jsonObj.date);
		
		var hours = date.getHours();
		var minutes=date.getMinutes();
		minutes=((minutes < 10) ? "0" : "") + minutes;
		var dateStr = monthname[date.getMonth()] + " " + date.getDate() + " , " +
					  date.getFullYear() + " " + hours + ":" + minutes;
					
		str += 
		"<tr style='1px solid black'>"+
			
			"<td valign=top width=120px align=center>"+
			    '<div style="margin-bottom:5px;">';
			      str += showRate(jsonObj.rate,13);
	     str += '</div>'+
				'<a href="'+jsonObj.profileUrl+'"><img  style="width:35px;height:35px;" src="'+jsonObj.thumbnailUrl+'"/></a>'+
		    "</td>"+
		    
		    
		    "<td valign=top class=curlycontainer>"+
		        '<span style="overflow: hidden; margin-bottom: 5px; height: 15px;width:100px;"><a style="color:#6696C6;font-size: 13px" href="'+jsonObj.profileUrl+'">'+jsonObj.name+':&nbsp&nbsp</a></span>'+
				replaceAll(jsonObj.comment, "\n", "<br/>")+
				'<div class="date">'+dateStr+'</div>'+
			"</td>"+
		"</tr>"+
		"<tr><td colspan=2><hr style='border:0; background:#EEEEEE; margin-left:20px;margin-right:50px;margin-top:0px;height:1px;' /></td></tr>";
	}
	var pageCount = Math.ceil(json.total / COMMENT_COUNT);
		if (pageCount>1){
			str += "<tr><td colspan=2 align=right style='padding-right: 50px;'>";
			for (var p = currentPage-2; p<currentPage+2;p++){
				if (p > 0 && p <= pageCount){
					var color = p == currentPage ? "color: black" : "";
					str += "<a class='paging' style='"+color+"' href='javascript:request_getComments("+p+")'>"+p+"</a>";
				}
			}
			if (currentPage < pageCount){
				str += '<a class="paging" href="javascript:request_getComments('+(currentPage+1)+')">Next</a>';
			}
			str += "</td><tr>";
		}		
	str += "</table>";
	str +="</div></div>";
	
	_$("commentContainer").innerHTML = str;
    gadgets.window.adjustHeight();
}

var req_checkFavorite = function(){
  Request.sendGET(serviceURL+"/checkForFavorite/"+userKey+"/"+gameId, resp_checkForFavorite);
}

var resp_checkForFavorite=function(response){
	var json=response.data;

	if(json.totalCount==0){
  		_$("favorite").innerHTML = '[ <a style="color:#BA6E29;" href="javascript:req_addToFavorites()" /><img class=menuIcon alt="Favorite" src="'+IMG_URL+'favorite.png" />Add to Favorites</a> ]';
	}

  	gadgets.window.adjustHeight();
}




var req_checkRecommand = function(){
  Request.sendGET(serviceURL+"/checkForRecommend/"+userKey+"/"+gameId, resp_checkForRecommand);
}

var resp_checkForRecommand=function(response){
	var json=response.data;

	if(json.totalCount==0){
  		_$("recommend").innerHTML = '[<a style="color:#0282E7;" href="javascript:req_addToRecommend()"><img class=menuIcon alt="Recommend" src="'+IMG_URL+'recommend1.png" />Recommend this game</a>]';
	}
	
  	gadgets.window.adjustHeight();
}

var req_addToFavorites=function(){
	var data="query=addFavorite&userKey="+userKey+"&appId="+gameId;
    Request.sendPOST(serviceURL,data, resp_addToFavorites);
}

var resp_addToFavorites=function(response){
    var favDiv=_$("favorite"); 
   	if (response.text == "ok"){
	   favDiv.innerHTML="";
	}
}



var req_addToRecommend=function(){
	var data="query=addRecommend&userKey="+userKey+"&appId="+gameId;
    Request.sendPOST(serviceURL,data, resp_addToRecommend);
}


var resp_addToRecommend=function(response){
    var favDiv=_$("recommend"); 
   	if (response.text == "ok"){
	   favDiv.innerHTML="";
	}
}



////////Invite///////////////////////

var showInvite = function(){
  	var str =
    "<div id='note' align='center' style='margin-top:10px;color:#02679C;'></div>"+
  	"<div style='margin: 30px 0px;'>"+
  	    "<div class='titleGeneral title"+styleJson.classV+"'>Invite Friends</div>"+
	    "<div id=friend class='content"+styleJson.classV+"' style='padding-bottom:0px;'><div class=loading>Loading...</div></div>";
	  //  "<div id=inviteAllFriend style='margin-left:300px'><img class='sendButtonInvite' src='"+IMG_URL+"sendfriends.png' onclick='inviteFriend()' ></div>"+
	"</div>";
    _$("container").innerHTML = str;
     Invite.show();
}


var Invite = function(){
	var curPage = 1;
	var containerId = "friend";
	var receivedFriendsCount = 0;
	var friendsTotalCount = 0;
	var cellCount=8;
	
	return {
		prev: function(){
			_$(containerId+"_"+curPage).style.display = "none";
			_$(containerId+"_"+(curPage-1)).style.display = "";
			curPage--;
			_$(containerId).setAttribute("curPage", curPage);
		},
			
		next: function(){
			var nextPage = curPage + 1;
			if (_$(containerId+"_"+nextPage)){
				_$(containerId+"_"+nextPage).style.display = "";
				_$(containerId+"_"+(nextPage-1)).style.display = "none";
			}else{
				var height = _$(containerId+"_"+curPage).offsetHeight;
				_$(containerId+"_"+curPage).style.display = "none";
				_$(containerId).innerHTML += "<div id="+containerId+"_"+nextPage+"><div class=loading style='height:"+height+"px;'>Loading...</div></div>";
				Invite.req_getFriends(nextPage);
			}
			curPage++;
			_$(containerId).setAttribute("curPage", curPage);
		},
		
		req_getFriends: function(page){
			var req = opensocial.newDataRequest();
			opensocial.DefaultPageSize = cellCount*4;
			var params = {}; 
	   		params[opensocial.DataRequest.PeopleRequestFields.FIRST] = (page-1)*opensocial.DefaultPageSize;
			req.add(req.newFetchPeopleRequest("VIEWER_FRIENDS", params), "friends");
			req.send(Invite.resp_getFriends);
		},
		
		resp_getFriends: function(response){
			var friends = response.get("friends").getData().asArray();
			allFriends = allFriends.concat(friends);
			receivedFriendsCount += friends.length;
			friendsTotalCount = response.get('friends').getData().getTotalSize();
			var str = "<table width=100%>";
			for(var i=0; i<friends.length;i++) {
				if (i % cellCount == 0) str+= "<tr>";
				var friendId = friends[i].getField(opensocial.Person.Field.ID);
		        var name = friends[i].getDisplayName();
			    if(name.length>15){
	        	    name = name.substring(0,15)+"\n"+name.substring(15);
	              }
			  
			    var thumbnail = friends[i].getField(opensocial.Person.Field.THUMBNAIL_URL);
			    var profile = friends[i].getField(opensocial.Person.Field.PROFILE_URL);
			    str += "<td name=userCell class=friendBox width="+(100/cellCount)+"% >"+
							"<table valign=top width=100%>"+
								"<tr>"+
		        					"<td style='font-size:10px;color:#333333' title='"+name+"'>"+name+"</td>"+
			        				"<td style='display:none' align=right><input checked type=checkbox name='checkBox' id='"+friendId+"' /></td>"+
	           					"</tr>"+
	           					"<tr>"+    
									"<td><img style='cursor:pointer' onclick='inviteFriend(\""+friendId+"\")' class=smallImg src='"+thumbnail+"' /></td>"+
								"</tr>"+
								"<tr>"+    
									"<td><a  onclick='inviteFriend(\""+friendId+"\")' style='text-decoration:underline;font-size:10px; cursor:pointer;'>Invite Friend</a></td>"+
								"</tr>"+
							"</table>"+
						"</td>";
				if (i % cellCount == cellCount-1) str += "</tr>";
			}
			var available = receivedFriendsCount < friendsTotalCount;
			if (available || curPage>1){
				str += "<tr><td colspan="+cellCount+" align=right>";
							if (curPage>1)
							str+=
							"<a href='javascript:Invite.prev()' style='margin-right:10px;font-size:16px;font-weight:bold;'>Previous</a>";
							if (available)
							str+=
							"<a href='javascript:Invite.next()' style='margin-right:10px;font-size:16px;font-weight:bold;'>Next</a>"+
						"</td></tr>";
			}
			str += "</table>";
			_$(containerId+"_"+curPage).innerHTML = str;
			gadgets.window.adjustHeight();
		},
		
		getSelectedFriends:  function(){
			var friends = [];
			var pg = _$("friend").getAttribute("curPage");
			var inputs = _$("friend_"+pg).getElementsByTagName("input");
			for (var i=0;i<inputs.length;i++){
				if (inputs[i].checked && inputs[i].getAttribute("hasTaken")!="true"){
					var id = inputs[i].id;
					if (id != 6221){
						friends[friends.length] = id;
					}
				}
			}
			return friends;
		},
		
		show: function(id, title, img){
			var cont = _$(containerId);
			allFriends = [];
			curPage = 1;
			receivedFriendsCount = 0;
			friendsTotalCount = 0;
			var table = document.createElement("table");
			table.width="100%";
			var sendCont = document.createElement("tbody");
			var row2 = document.createElement("tr");
			sendCont.appendChild(row2);
			var cell2 = document.createElement("td");
			cell2.align = "center";
			row2.appendChild(cell2);
				
			/*var imgInvite = document.createElement("img");
			imgInvite.className = "sendButtonInvite";
			imgInvite.src = IMG_URL+"sendfriends.png";
			imgInvite.onclick = function(){
				inviteAll(id, title, img);
			};
			
			cell2.appendChild(imgInvite);*/
			table.appendChild(sendCont);
			cont.parentNode.appendChild(table);
			
			cont.innerHTML = "<div id="+containerId+"_1></div>";
			cont.setAttribute("curPage", 1);
			
			Invite.req_getFriends(curPage);
		}
	};
}();



////////////////////////
function sendNotification(subject, content, receiver) {
  var params = {};
  params[opensocial.Message.Field.TITLE] = subject;
  params[opensocial.Message.Field.TYPE] = opensocial.Message.Type.PRIVATE_MESSAGE;
  var message = opensocial.newMessage(content, params);
  
 if(receiver!=null){
     opensocial.requestSendMessage("VIEWER_FRIENDS", message,onSendNotification);
  }else{
    opensocial.requestSendMessage(receiver, message,onSendNotification);
  }
};


function onSendNotification(resp) {
  if (!resp.hadError() && resp.getData().status == "sent") {
       document.getElementById("note").innerHTML = "<b>The message was sent to the OWNER</b>";
  } else {
        document.getElementById("note").innerHTML = "<b>There was a problem: " + resp.getErrorMessage()+"</b>";
  }
};



var inviteFriend = function(friendId){
      var content = "I've found this cool game. ADIIIIIICTIVE! <br><br>"+
	    "<p>Play now!</p>" + GAME_URL + gameId;
          sendNotification("OMG! Check this out!", content, friendId, "SEND_MESSAGE");
}



/////////////////////////////////
var showUserFavorites=function(page){  
    Request.sendGET(serviceURL+"/getFavorites/"+userKey+"/"+APP_COUNT+"/"+1+"/"+getCurrentTime(), resp_showUserFavorites);
  }


var resp_showUserFavorites=function(response)
{
  var json=response.data;
  var userFavorites = json.favorites;
  var currentPage=json.page;
  var str="";
     if(json.totalCount!=0)
     {
       str+="<div align='center' style='margin-top:20px' id='removeConfirm'></div>";
       str+="<table cellspacing=12>";
       for (var i=0;i<userFavorites.length;i++){
			fav = userFavorites[i];
			fav.appUrl = GAME_URL + fav.gameId;
			if ( i % 4 == 0) str += "<tr>";
			str += "<td><table><tr>"+
					"<td><img src='"+IMG_URL+"remove.png' style='cursor:pointer;' onclick='javascript:showDeleteFavorite("+fav.gameId+")'><div><a target=_blank href='"+fav.appUrl+"'><img width=80px height=80px src='"+GAME_IMG_URL+fav.imageUrl+"' /></a></div></td>"+	
					"<td valign='top' style='padding-top:10px;'><div style='width:60px;'>"+
						"<a target=_blank href='"+fav.appUrl+"'><b>"+fav.gameName+"</b></a>"+
						"<div style='margin:3px 0px;'>"+fav.gameCat+"</div>"+
					"</div></td>"+
				  "</tr></table></td>";
		  	if ( i % 4 == 3) str += "</tr>";
		}
      
       var pageCount = Math.ceil(json.totalCount / APP_COUNT);
       if (pageCount>1){
			str += "<tr><td colspan=4 align=right>";
			for (var p = currentPage-2; p<currentPage+2;p++){
				if (p > 0 && p <= pageCount){
					var color = p == currentPage ? "color: black" : "";
					str += "<a style='margin: 0px 7px;"+color+"' href='javascript:showUserFavorites("+p+")' >"+p+"</a>";
				}
			}
			if (currentPage < pageCount){
				str += "<a style='margin: 0px 7px;' href='javascript:showUserFavorites("+(currentPage+1)+")'>Next</a>";
			}
			str += "</td><tr>";
		}
		str += "</table>";
     }
     else 
     {
     str+="<center><div style='height:50px; padding-top:25px; font-size:15px;font-weight:bold;'>You have no favorite game.</center>";
     }
      container.innerHTML=str;
}
/////// profile_favorites////////////////////////////////////

var getUserFavorites=function(page){  
    Request.sendGET(serviceURL+"/getFavorites/"+userKey+"/"+APP_COUNT+"/"+1+"/"+getCurrentTime(), resp_profile_showUserFavorites);
  }





//////////////////////////////////////////////////////////////
var showDeleteFavorite = function(gameId){
   var confirmBox = document.getElementById('removeConfirm');
   var content="";
       content += "<div align='center' class='confirmBox"+styleJson.classV+"'>"+
                       "Are you sure you want to remove from favorites?"+
                       "<div class='buttonlist' style='margin-top:10px;color:"+styleJson.titleColor+"'><a href='javascript:deleteFavorite("+gameId+")'>Yes</a><a href='javascript:showUserFavorites(1)'>No</a></div>"
                 "</div>"; 
    confirmBox.innerHTML=content;
  
}

var deleteFavorite = function(gameId){
     var confirmBox = document.getElementById('removeConfirm');
     confirmBox.innerHTML = "<img src='"+IMG_URL+"loading"+styleJson.classV+".gif' >";
     Request.sendGET(serviceURL+"/removeFavorite/"+userKey+"/"+gameId, resp_deleteFavorite);
}

var resp_deleteFavorite = function(response){
   showUserFavorites(1);
}
///////////////////////


var showPlayers=function(){
	container.innerHTML = 
	 "<div class='titleGeneral title"+styleJson.classV+"'>Recent Players</div>"+
	 "<div class=content"+styleJson.classV+" id=recentUsers><div class=loading>Loading...</div></div>"+
	 "<div class='titleGeneral title"+styleJson.classV+"'>Active Players</div>"+
	 "<div class=content"+styleJson.classV+" id='activeUsers'></div>";
	req_getRecentUsers();
	req_getActiveUsers(1);
}


var req_getActiveUsers=function(page){
	_$("activeUsers").innerHTML = "<div class=loading>Loading...</div>";
	Request.sendGET(serviceURL+"/getMostPlayed/"+PLAYERS_COUNT+"/"+page, resp_getActiveUsers);
}

var resp_getActiveUsers=function(response){
	var hours,minutes,seconds,remainder; 
  	var json=response.data;
 	var userList = json.users;
  	var currentPage=json.page;
  	var str="<table width=100%>";
	var colCount = 4;
  	for (var i=0;i<userList.length;i++){
		var user = userList[i];
		if ( i % colCount == 0) str += "<tr>";
		 hours=(user.duration-user.duration%3600)/3600;
     	 remainder=user.duration%3600;
      	 minutes=(remainder-((remainder)%60))/60;
		str += "<td><table><tr>"+
			"<td><a target=_blank href='"+user.profileUrl+"'><img style='height:60px;' src='"+user.thumbnailUrl+"' /></a></td>"+	
			"<td valign='top'>"+
				"<div class=fixedText style='height:70px;width:100px;overflow:hidden;'>"+
				      "<div style='margin-bottom:5px;color:#8C8C8C;height:15px;overflow:hidden;'><a style='color:#02679C;' target=_blank href='"+user.profileUrl+"'>"+user.userName.substring(0,10)+"...</b></a></div>"+
				      "<span style='color:#999999'>played:</span>"+
				      "played <b style='color:#5CC46B;'>"+hours+"h "+minutes+"min</b></div>"+
			    "</div>"+
			"</td>"+
		  "</tr></table></td>";
	  	if ( i % colCount == (colCount - 1) ) str += "</tr>";
	} 
    var pageCount = Math.ceil(json.totalCount / PLAYERS_COUNT);
    if (pageCount>1){
		str += "<tr><td colspan="+colCount+" align=right>";
		for (var p = currentPage-2; p<currentPage+2;p++){
			if (p > 0 && p <= pageCount){
				var color = p == currentPage ? "color: black" : "";
				str += "<a style='margin: 0px 7px;"+color+"' href='javascript:req_getActiveUsers("+p+")' >"+p+"</a>";
			}
		}
		if (currentPage < pageCount){
			str += "<a style='margin: 0px 7px;' href='javascript:req_getActiveUsers("+(currentPage+1)+")'>Next</a>";
		}
		str += "</td><tr>";
	}
	str += "</table>";
   	_$("activeUsers").innerHTML=str;
   	gadgets.window.adjustHeight();
}



var req_getRecentUsers=function(){
	Request.sendGET(serviceURL+"/recentusers/"+getCurrentTime(), resp_getRecentUsers);
}


var resp_getRecentUsers=function(response){
	var userList = response.data;
	var str = "<table width=100%>";
	var colCount = 4;
	for (var i=0;i<userList.length && i<colCount*7;i++){
  		var user = userList[i].user;
		var app = userList[i].app;
	
		if ( i % colCount == 0) str += "<tr>";		
		str += "<td><table><tr>"+
			"<td><a target=_blank href='"+user.profile+"'><img style='height:60px;' src='"+user.thumbnail+"' /></a></td>"+	
			"<td valign='top'>"+
				"<div class=fixedText style='height:70px;width:100px;overflow:hidden;'>"+
				      "<div style='margin-bottom:5px;color:#8C8C8C;height:15px;overflow:hidden;'><a style='color:#02679C;' target=_blank href='"+user.profile+"'>"+user.name.substring(0,10)+"...</b></a></div>"+
				      "<span style='color:#999999'>played:</span>"+
				      "<a target=_blank href='"+GAME_URL+app.id+"' style='color:#5CC46B;font-weight:bold;'>"+app.title+"</a>"+
			    "</div>"+
			"</td>"+
		  "</tr></table></td>";
  		if ( i % colCount == (colCount -1) ) str += "</tr>";
	}
    str += "</table>";
    _$("recentUsers").innerHTML=str;
    gadgets.window.adjustHeight();
}

/////////////////////////////////////////////
/////////////////////////////////////////////
var adjustHeight = function(mandatory,addSize){
	if (allContent.offsetHeight > 800 || mandatory){
		resizer.resizePanel(allContent.offsetHeight+addSize);
	}
}


Request.send = function(url, method, responseHandler, data, urlencoded) {

	var req;	
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4) {// only if req shows "loaded"
			if (req.status < 400) {// only if "OK"
				 try{
				 	req.data = eval("("+req.responseText+")"); 
				 }catch(ex){
				 	
				 }
				 req.text = req.responseText;
				 responseHandler(req);
			}
		}
	}
	if (method=="POST") {
		req.open("POST", url, true);
		if (urlencoded) req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send("" + data);
	}else{
		req.open("GET", url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send(null);
	}
	
	return req;
}

Request.sendPOST = function(url, data, responseHandler) {
	if (IS_LIVE){
		var os_params = {};
		os_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
		os_params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
		os_params[gadgets.io.RequestParameters.POST_DATA] = data;
		gadgets.io.makeRequest(url, responseHandler, os_params);
	}else{
		if(undefined == data) data = '';
		Request.send(url, "POST", responseHandler, data, true);
	}
}

Request.sendGET = function(url, responseHandler) {
	if (IS_LIVE){
		var os_params = {};
		os_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
		os_params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
		gadgets.io.makeRequest(url, responseHandler, os_params);
	}else{
		Request.send(url, "GET", responseHandler);
	}
}

