var o=null;
var minutes=15;
var seconds=0;
var timeoutID;
var iq=0;

var shareURL = "http://questionnairesandsurveys.co.uk/opensocial/share_iq/";
var aboutURL = "http://widgets.friendster.com/iqtest";

function createTimeStamp()
{
	var today=new Date();
	return '&ts='+today.getDate()+''+today.getMonth()+''+today.getHours()+''+today.getMinutes()+''+today.getSeconds();
}

//--------canvas modes----------//
var modes = { canvas : 1, profile : 2, home: 3 };

function getMode() 
{
	return modes[gadgets.views.getCurrentView().getName()];
}

//---------redirect to canvas----------//

function gotoCanvas() 
{
	var canvas_view = new gadgets.views.View("canvas");
	gadgets.views.requestNavigateTo(canvas_view);
}

function gotoCanvasPage(page) 
{
	var params={};
	params['cp']=page;
	var canvas_view = new gadgets.views.View("canvas");
	gadgets.views.requestNavigateTo(canvas_view,params);
}

function gotoAppAboutPage()
{
	top.location=aboutURL;
}

function gotoPage(page,user)
{
	var prefs = new gadgets.Prefs();
	var url = shareURL+"canvas.php?p=s&u="+user+"&cp="+page+"&l="+prefs.getLang()+createTimeStamp();
	gadgets.io.makeRequest(url, display);
}

function display(data)
{
	document.getElementById('main').innerHTML = data.text;
	gadgets.window.adjustHeight();
}

function displayTest(data)
{
	document.getElementById('main').innerHTML = data.text;
	countdown();
	gadgets.window.adjustHeight();
}

//-------Display Functions-----------------------//

function gatherIndex()
{
	var req = opensocial.newDataRequest();
	req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), "viewer");
	req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER), "owner");
	req.send(getDisplayUids);
}

function getDisplayUids(usersData)
{
	var viewer = usersData.get("viewer").getData();
	var owner = usersData.get("owner").getData();
	var viewerstr='-1';
	if (viewer != undefined) viewerstr=viewer.getId();
	var ownerstr='-1';
	if (owner != undefined) ownerstr=owner.getId();

	var mode = getMode();
	
	var prefs = new gadgets.Prefs();

	if(mode == modes.canvas)
	{
		if (viewerstr=='-1') gotoAppAboutPage();
		else
		{
			var params = gadgets.views.getParams();
			if ('undefined'===typeof(params) || 'undefined' === typeof(params['cp'])) var page='test';
			else var page = params['cp'];
			var str=shareURL+"canvas.php?p=s&u="+viewerstr+"&cp="+page+"&l="+prefs.getLang()+createTimeStamp();
			gadgets.io.makeRequest(str, display);
		}
	}
	else
	{
		var phpurl = shareURL+"box.php?p=s&v="+viewerstr+"&u="+ownerstr+"&l="+prefs.getLang()+createTimeStamp();
		gadgets.io.makeRequest(phpurl, display);
	}
}

function inviteFriends()
{
	opensocial.requestShareApp(opensocial.DataRequest.Group.VIEWER_FRIENDS, opensocial.newMessage('Take the IQ test now - find out your intelligence and compare your score with friends'));
}

function starttest()
{
	var userid = document.forms["start"].elements["user"].value;
	var prefs = new gadgets.Prefs();
	var url = shareURL+"canvas.php?p=s&cp=taketest&u="+userid+"&l="+prefs.getLang()+createTimeStamp();
	gadgets.io.makeRequest(url, displayTest);
}

function DoTest()
{
	var params = {};
	var postdata = {};

	var answers = "";

	clearTimeout(timeoutID); //stops timer

	getRadios = document.getElementsByTagName("input");

	for (x=0; x < getRadios.length; x++) 
	{
		if (getRadios[x].type == "radio" && getRadios[x].checked) answers = answers + getRadios[x].value;
	}

	postdata["starttime"] = document.forms["testform"].elements["starttime"].value;
	postdata["answers"] = answers;
	postdata["finish"] = 1;
	var owner= document.forms["testform"].elements["user"].value;
	postdata["user"] = owner;

	params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues(postdata);
	var prefs = new gadgets.Prefs();
	var url = shareURL + "canvas.php?p=s&cp=test&u="+owner+"&l="+prefs.getLang()+createTimeStamp();

	gadgets.io.makeRequest(url, display, params);
}

function finishTest()
{
	var comboValue; 
	var selIndex = document.forms["finish"].elements["age"].selectedIndex;
	comboValue = document.forms["finish"].elements["age"].options[selIndex].value;
	var owner = document.forms["finish"].elements["user"].value;
	var email = document.forms["finish"].elements["email_address"].value;
	var prefs = new gadgets.Prefs();

	var url = shareURL + "canvas.php?p=s&retiq=1&cp=test&age="+comboValue+"&email_address="+email+"&u="+owner+"&l="+prefs.getLang()+createTimeStamp();
    gadgets.io.makeRequest(url, endTest);
}

function endTest(data)
{
	var mainSplit = data.text.split(';@_@;', 2);
	document.getElementById('main').innerHTML = mainSplit[0];
	iq =mainSplit[1];

    var req = opensocial.newDataRequest();
    req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), 'viewer');
    req.add(req.newFetchPeopleRequest(opensocial.DataRequest.Group.VIEWER_FRIENDS), 'viewerFriends');
    req.send(notifyFriendsEnd);
}

function notifyFriendsEnd(data)
{
    var viewer = data.get('viewer').getData();
    var name=viewer.getDisplayName()
	var user=viewer.getId();
	
	// news feed at the end
	var activityParams = {};
    activityParams[opensocial.Activity.Field.TITLE] = "IQ Test";
    activityParams[opensocial.Activity.Field.URL] = aboutURL;
    activityParams[opensocial.Activity.Field.BODY] = name + " took the free IQ Test and Scored  " + iq +". Take the test now and see how you compare.";
    opensocial.requestCreateActivity(opensocial.newActivity(activityParams), opensocial.CreateActivityPriority.HIGH);
}    

function friendsList()
{
	var req = opensocial.newDataRequest();
	req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), 'viewer');
	req.add(req.newFetchPeopleRequest(opensocial.DataRequest.Group.VIEWER_FRIENDS), 'viewerFriends');
	req.send(getViewersFriends);
}

var friendsViewerList;

function getViewersFriends(data)
{
	var prefs = new gadgets.Prefs();
	
	var viewer = data.get('viewer').getData();
	var viewerFriends = data.get('viewerFriends').getData();

	if(viewer == undefined)
	{
		document.write(prefs.getMsg("errorrefresh"));
		return;
	}
	
	var retFriends = "";
	viewerFriends.each(function(person)
	{
		if (retFriends!='') retFriends=retFriends+',';
		retFriends = retFriends+person.getId();
	});
	friendsViewerList = viewerFriends;

	var url = shareURL+"friendsiqs.php?p=s&u="+viewer.getId()+"&friends="+retFriends+"&l="+prefs.getLang()+createTimeStamp();
	
	if (retFriends=='') document.getElementById('friendslist').innerHTML = prefs.getMsg("nofriendstaken");
	else gadgets.io.makeRequest(url, getFriendsIqs);
}

function getFriendsIqs(data)
{
	var prefs = new gadgets.Prefs();

	var i=0;
	var mainSplit = data.text.split(';@_@;', 2);
	
	document.getElementById('main').innerHTML = mainSplit[0];

	if(friendsViewerList == undefined)
	{
		document.getElementById('friendslist').innerHTML = prefs.getMsg("errorrefresh");
	}
	else
	{
		if(mainSplit[1].indexOf(',') > -1)
		{
			var peopleSplit = mainSplit[1].split('|');
			friendsViewerList.each(function(person)
			{
				for(i=0; i<peopleSplit.length; i++)
				{
					var peopleValues = peopleSplit[i].split(',');
					if(person.getId() == peopleValues[0])
					{
						document.getElementById('friendslist').innerHTML = document.getElementById('friendslist').innerHTML+' <div width="80%" align="center"><table border="0"><tr><td width="150px"><img src="'+person.getField(opensocial.Person.Field.THUMBNAIL_URL)+ '"></td><td width="150px">' + person.getDisplayName()+'</td><td width="150px">'+prefs.getMsg("score")+'<br/><font size="4"><b>'+peopleValues[1]+'</b></font></td></tr></div>';
					}
				}
			});
			
			document.getElementById('friendslist').innerHTML = document.getElementById('friendslist').innerHTML + "<br/><br/>";
		}
		else
		{
			document.getElementById('friendslist').innerHTML = prefs.getMsg("nofriendstaken");
		}
	}
	gadgets.window.adjustHeight();
}

function countdown()
{
	
	var prefs = new gadgets.Prefs();
	var txt="";
	
	if(document.getElementById('counter1') == undefined)
	{
		minutes=15;
		seconds=0;
		clearTimeout(timeoutID);
		return;
	}

	if (seconds<=0){ 
		minutes-=1;
		seconds=59;
	}
	else
	{
		seconds-=1;
	}

	if (minutes>=0)
	{
		timeoutID = setTimeout(function()
		{
			countdown();
		},1000)
		txt = minutes+" "+prefs.getMsg("mins")+" "+seconds+" "+prefs.getMsg("secs")+" ";
	}
	else
	{
		txt = prefs.getMsg("outoftime");
	}
	for(a = 1; a < 8; a++)
	{
		document.getElementById('counter'+a).innerHTML = txt;
	}
} 