// JavaScript Document
function init_hugme(){
	if(param_installState==0)
		showPreInstall();
	else
		getId_hugme();
}

function getId_hugme(){
	var request = opensocial.newDataRequest();
	request.add(request.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER),"owner");
  	request.add(request.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER),"viewer"); 
	request.send(handleGetId_hugme);
}


function handleGetId_hugme(data) {
  //check the owner data
  if((data.get('owner')==null)||(data.get('owner').hadError())) {
		getId_hugme();
  	}      
  //check the viewer data
  if((data.get('viewer')==null)||(data.get('viewer').hadError())) {
  		getId_hugme();
  	}

  ownerData = data.get("owner").getData();  
  viewerData = data.get('viewer').getData();
  //show the canvas  
  displayApp_hugme();  
}

//************************************************************************************************************************************************
function getQueryString(data) {
    var output = [];
    for (var name in data) if (data.hasOwnProperty(name)) {
      output.push([name, data[name]].join("="));
    }
    return encodeURI(output.join("&"));
  }

function makeCachedRequest(url, callback, params, refreshInterval) {
    var ts = new Date().getTime();
    var sep = "?";

    if (refreshInterval && refreshInterval > 0) {
      ts = Math.floor(ts / (refreshInterval * 1000));
    }
    if (url.indexOf("?") > -1) {
      sep = "&";
    }
    url = [ url, sep, "nocache=", ts ].join("");
    gadgets.io.makeRequest(url, callback, params);
  }
  
//************************************************************************************************************************************************
function displayApp_hugme(){
	linktops="<div id='debug' style=' height:50px;display:none'></div><input type='hidden' name='action_src' id='action_src' value='http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif'/><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\"  id=\"menuBackto\"/>";		
	linktops+="<a href=\"javascript:saveHit(1);showApp_hugme(1);\" id=\"menuHugs\" title =\"Hugs Friends\"><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\" alt =\"Hugs Friends\"/></a>";		
	linktops+="<a href=\"javascript:saveHit(11);showApp_hugme(2);\" id=\"menuSent\" title =\"Hugs Sent\"><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\" alt =\"Hugs Sent\"/></a>";
	linktops+="<a href=\"javascript:saveHit(12);showApp_hugme(3);\" id=\"menuMyReceiveds\" title =\"Hugs Received\"><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\" alt =\"Hugs Receiveds\"/></a>";
	if(isPostToTargetLive()){
		linktops+="<a href=\"javascript:saveHit(2);invite_hugme();\" id=\"menuInvite\" title =\"Invite\"><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\"/></a>";
	}
	linktops+="<a href=\"javascript:saveHit(3);setBulletin();\" id=\"menuBulletin\" title=\"Send Buletin\"><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\"/></a>";		
	//linktops+="<a href=\"javascript:saveHit(4);showMoreApps();\" id=\"menuMoreApps\" title=\"More Apps\"><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\"/></a>";
	$('linksTopDiv').innerHTML = linktops;		
	showContent();	
}

var HOST="http://www.flashlayouts.myprofilepimp.com/hugme/myspace/";
var urlDest= Array("index.php","hugs.php","sent.php","received.php");
var menuSel= Array(1,1,2,3);
var selected_sent = [];
var types_sent = [];
var selected_rec = [];

function showApp_hugme(option){
	if(menuOpcSel!=""){
		$(menuOpcSel).removeClassName("menuSel");		
	}	
	menuOpcSel="";
	//$("separaTopDiv").removeClassName("separaTop2");
	//$("menuBackto").hide();
	$("linksBottomDiv").hide();
	$("contentDiv").style.height=appContentHeight+"px";
	$("linksBottomDiv").show();
	$("wrapperDv").style.height=(appContentHeight+180)+"px";
	switch(option){
		case 0:
			loadIndex(menuSel[option],urlDest[option]);
			break;
		case 1:
			loadHugs(menuSel[option],urlDest[option]);
			break;
		default:
			loadContent(menuSel[option],urlDest[option]);
	}	
}

function invite_hugme(){	
	var browser = navigator.appName;
	if(browser == 'Microsoft Internet Explorer')
		inviteFriendsIe(1);
	else
		inviteFriends(1);	
}


//**************************CONTENT
function onLoadHugs(dataResponse) {
	//$("separaTopDiv").removeClassName("separaTop2");
	$("contentDiv").update(dataResponse.text);
	$("loadingDv").hide();
	$("contentDiv").show();
		
	html='<div style="padding:5px 0; background:#CCF4FF;"><a href=\"javascript:sendShareIt();\" id=\"btnSendShareIt\" title=\"Hug This\"><img src=\"http://www.flashlayouts.myprofilepimp.com/hugme/images/spacer.gif\"/></a></div>';
	html+='<div class="hm_friends_box"><div class="hm_friends_inner_box">';
	html+='<div class="hm_friends_header">Choose a friend and send a HUG <span class="hm_friends_description">You can select your friends and hug them!</span></div>';
	html+='<div class="hm_friends_list"><form id="formFriends" style="width:890px;"><div id="friendSelDv" style="margin:0; height:200px;"></div></form></div>';	
	html+='<div class="hm_friends_header">The hugMe will be send to the users. who don\'t have the installed application a comment will be sent.<span class="hm_friends_description">You can select your friends and hug them!</span></div>';
	html+='<div id=\"wrapperFriend\" style="margin:0;width:910px; border:1px solid #C1C1C1;" ><div id="friendsDv"><br /><br /><img src="http://www.flashlayouts.myprofilepimp.com/hugme/images/ajax-loader.gif" /></div>';
	html+='<div class="clear"></div><div id="friendsNavDv"></div></div></div></div>';
	$("linksBottomDiv").hide();
	selTab(1)
	$("separaTopDiv").addClassName("separaTop2");
	$("wrapperDv").style.height="1700px";
	$("contentDiv").style.height=appContentHeight+"px";
	$('friends_view').innerHTML = html;
	
	loadFriends_App(1);
}

function loadFriends_App(pag){
	page=pag;
			
   var param = {};
   //param[opensocial.DataRequest.PeopleRequestFields.FILTER ] = opensocial.DataRequest.FilterType.HAS_APP;
   param[opensocial.DataRequest.PeopleRequestFields.FIRST] = (32*(page-1));
   param[opensocial.DataRequest.PeopleRequestFields.MAX] = 32;
	
   var req = opensocial.newDataRequest();
   req.add(req.newFetchPeopleRequest("VIEWER_FRIENDS", param), 'ownerFriends');
   req.send(onloadFriends);
   
}

function loadIndex(opc,urlDest) {	
	selTab(opc);
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'profile' : prof_id,'platform' : '1','prof_name' : prof_name,'prof_url' : prof_url, 'prof_pic' : prof_pic};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + urlDest;
    makeCachedRequest(url, onLoadHugs, params, 3600);
	$("contentDiv").hide();
	$("loadingDv").show();

}

function loadHugs(opc,urlDest) {	
	selTab(opc);
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'profile' : prof_id,'platform' : '1'};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + urlDest;
    makeCachedRequest(url, onLoadHugs, params, 3600);
	$("contentDiv").hide();
	$("loadingDv").show();
}

function onLoadContent(dataResponse) {
	selected_sent = [];
	types_sent = [];
	selected_rec=[];
	$("contentDiv").update(dataResponse.text);
	$("loadingDv").hide();
	$("contentDiv").show();
}

function loadContent(opc,urlDest) {	
	selTab(opc);
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
	var postData = ""
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
	if(urlDest.indexOf("?")==-1)
		urlDest += "?platform=1&profile=" + prof_id;
    var url = HOST + urlDest;
    makeCachedRequest(url, onLoadContent, params, 3600);
	$("contentDiv").hide();
	$("loadingDv").show();

}

function selTab(opc){
	tabNames= new Array("","menuHugs","menuSent","menuMyReceiveds");
	if(menuOpcSel!=""){
		$(menuOpcSel).removeClassName("menuSel");		
	}	
	$(tabNames[opc]).addClassName("menuSel");
	menuOpcSel=$(tabNames[opc]);
}

function loadMyPictures(){
	loadContent(2,"mypictures_thumb.php");
	}
	
//**************************Functions
function deleteReceived(sharedId,platform,profile){
	if(confirm("Delete this image?")){
		var params = {};
		params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
		params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
		var postData = {'sharedId' : sharedId,'platform' : '1','profile' : profile,'page' : page};
		params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
		var url = HOST + "delete_received.php";
		makeCachedRequest(url, onLoadContent, params, 3600);
		$("contentDiv").hide();
		$("loadingDv").show();
	}
}

//*********************************************************************************
//SHARE
var selected = [];
var shit = 1;
function clk_hug(obj, id){
	var len = selected.length;
	var elselected =  $("hm_friends_list").getElementsBySelector(".hm_friend_selected");
	
	if(obj==elselected[0]){
		obj.removeClassName('hm_friend_selected');
		$("action_id").value=-1;
	 }
	else {
		var classElements = [];
		var els = $("hm_friends_list").getElementsBySelector(".hm_friend");
		var elsLen = els.length;
		for (i = 0, j = 0; i < elsLen; i++) {
			if ( els[i]==elselected[0] ) {
				classElements[j] = els[i];
				els[i].removeClassName('hm_friend_selected');
				j++;
			}
		}
		obj.addClassName('hm_friend_selected');
		$("action_id").value=id;
		img= obj.getElementsBySelector("img")[0];
		$("action_src").value=img.src;
	  	$("msg_formerror").hide();
	  }
	 return false;
}

function sendShareIt(id,pathThumb){
	checkFriendSel(selectedFriends);
	if($("action_id").value==-1){
		//$("msg_formerror").update("Debe seleccionar un hug");
		return;
	}
    if(selectedFriends == undefined || selectedFriends == null || selectedFriends.length == 0){		
		//$("msg_formerror").update("Debe seleccionar un amigo");
		return;
	}
	data=($("formFriends").serialize());
	target_ids="";
	for(i=0,sep="";i<selectedFriends.length;i++){
		target_ids+=sep+selectedFriends[i];
		sep=",";		
	}
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'target_ids' : target_ids,'action_id' : $("action_id").value,'platform' : '1','profile' : prof_id};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + "hug_request.php?"+data;
    makeCachedRequest(url, sendComment_hug, params, 3600);
	$("contentDiv").hide();
	$("loadingDv").show();
}

/**************************************************************************/
//sent 
function clk_sent(obj, id, type){
	var len = selected_sent.length;
    var elselected = $("sent_view").getElementsBySelector(".hm_friend_selected");
	var len_sel= elselected.length;
	var found=false;
	
	for(var j=0;j< len_sel; j++){
		if(obj==elselected[j]){
			//obj.removeClassName('hm_friend_selected');
			obj.className ='hm_friend';
			found=true;
			break;
		}
	}		
		
	if(found){		
        for(var i = 0; i < len; i++){
            if(selected_sent[i] == id){
                selected_sent.splice(i, 1);
				types_sent.splice(i, 1);
                break;
            }
        }
        len--;
    }
    else{
        //obj.addClassName('hm_friend_selected');
		obj.className ='hm_friend_selected';
        selected_sent.push(id);
		types_sent.push(type);
        len++;
    }
    $("remove_btn").value="Remove Hugs ("+len+")";
    $("again_btn").value="Hug Them Again ("+len+")";
    return false;
}

function removeHugs(){
    if(!selected_sent.length)
        return;
    var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'types' : types_sent.toString(), 'hm_ids' : selected_sent.toString() , 'platform' : '1','profile' : prof_id};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + "hugs_remove.php";
    makeCachedRequest(url, onLoad_sents, params, 3600);
	$("sent_view").hide();
	$("loadingSents").show();
}

function hugAgain(){
    if(!selected_sent.length)
        return;
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'types' : types_sent.toString(), 'hm_ids' : selected_sent.toString() , 'platform' : '1','profile' : prof_id};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + "hugs_again.php";
    makeCachedRequest(url, onLoad_sents, params, 3600);
	$("sent_view").hide();
	$("loadingSents").show();
}

function onLoad_sents(dataResponse) {
	selected_sent=[];
	types_sent = [];
	$('sent_view').update(dataResponse.text);
	$("loadingSents").hide();
	$("sent_view").show();
}

function load_sents(page){
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'page' : page, 'platform' : '1','profile' : prof_id};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + "request_sent.php";
    makeCachedRequest(url, onLoad_sents, params, 3600);
	$("sent_view").hide();
	$("loadingSents").show();
}

/**************************************************************************/
//received 
function clk_received(obj, id, type){
	var len = selected_rec.length;
    var elselected = $("received_view").getElementsBySelector(".hm_friend_selected");
	var len_sel= elselected.length;
	var found=false;
	
	for(var j=0;j< len_sel; j++){
		if(obj==elselected[j]){
			//obj.removeClassName('hm_friend_selected');
			obj.className ='hm_friend';
			found=true;
			break;
		}
	}		
		
	if(found){		
        for(var i = 0; i < len; i++){
            if(selected_rec[i] == id){
                selected_rec.splice(i, 1);
                break;
            }
        }
        len--;
    }
    else{
        //obj.addClassName('hm_friend_selected');
		obj.className ='hm_friend_selected';
        selected_rec.push(id);
        len++;
    }
    $("yes_btn").value="Hug Them Back ("+len+")";
    return false;
}

function onLoad_receiveds(dataResponse) {
	selected_rec=[];
	$('received_view').update(dataResponse.text);
	$("loadingRecs").hide();
	$("received_view").show();
}

function load_receiveds(page){
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'page' : page, 'platform' : '1','profile' : prof_id};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + "request_received.php";
    makeCachedRequest(url, onLoad_receiveds, params, 3600);
	$("received_view").hide();
	$("loadingRecs").show();
}

function onHugThemBack(dataResponse){
	showApp_hugme(2);
	}

function hugThemBack(){
	selected_rec.length
    if(!selected_rec.length)
        return;
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	
	var postData = {'hm_ids' : selected_rec.toString() , 'platform' : '1','profile' : prof_id};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + "hug_them_back.php";
    makeCachedRequest(url, onHugThemBack, params, 3600);
	$("contentDiv").hide();
	$("loadingDv").show();
}

/**************************************************************************/
//Other
function onLoad_others(dataResponse) {	
	$('otherHugs').update(dataResponse.text);
	$("loadingOthers").hide();
	$("otherHugs").show();
}

function load_others(page){
	var params = {};
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.HTML;
	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	var postData = {'myothersactions' : page, 'platform' : '1','profile' : prof_id};
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postData);
    var url = HOST + "request_others.php";
    makeCachedRequest(url, onLoad_others, params, 3600);
	$("otherHugs").hide();
	$("loadingOthers").show();
}

//************************************************************************************************************************************************
//COMMENTS
function onSendingComment_hug(someVal){	  
	indexFriends++;
	if(indexFriends<selectedFriends.length){		
		doSendComment_hug();
	}
}

function sendingComment_hug(recipients){
	var target;
	target = MyOpenSpace.PostTo.Targets.COMMENTS;	
	content = "<center>Hey "+ recipientName +". I sent a HugME. <br>Click and pick Up to see it <br><br><a href=\"http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=125779\"><img src=\"" + $("action_src").value + "\"></a><br><br><a href=\"http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=125779\">See your Hugs</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=125779\">Share this HugME</a><br><br></center>";
	var message = opensocial.newMessage(content);
	message.setField(opensocial.Message.Field.TYPE, target);
	// show post to
	os.postTo(os_token, message, recipients, onSendingComment_hug);		
}

function dataLoadComment_hug(dataResponse) {
  if (dataResponse.hadError()) {
	var data = dataResponse.get("friendReq");
	alert(data.getErrorCode() + '\n' + data.getErrorMessage());
  } else {
	var friendsData = dataResponse.get("friendReq").getData();
	friendsData.each(
	 function(friendData) {
	   if(friendData.getField(opensocial.Person.Field.ID)==recipientUserId){
			recipientName=friendData.getDisplayName();
			sendingComment_hug(friendData); 
	   }
	 }
	);
  }
}

function doSendComment_hug(){
  recipientUserId=selectedFriends[indexFriends];
  recipientName="";
  var dataReqObj = os.newDataRequest();
  var viewerFriendsReq = os.newFetchPeopleRequest(recipientUserId);  	
  dataReqObj.add(viewerFriendsReq,"friendReq");  
  dataReqObj.send(dataLoadComment_hug);
}

function sendComment_hug(dataResponse){
	onLoadHugs(dataResponse);
	//checkFriendSel(selectedFriends);
    if(selectedFriends == undefined || selectedFriends == null || selectedFriends.length == 0){
		alert("Please select at least one friend");
		return;
	}
	indexFriends = 0;
	doSendComment_hug();
}

function getOnlyId(str_id){
	if(str_id.indexOf(":")==-1)
		return(str_id)
	arr_id=str_id.split(":");
	return(arr_id[1]);
}