// JScript File
var viewer = null;
var owner = null;
var viewerID = 0;
var ownerID = 0;
var viewerUrl = "";
var viewerIUrl = "";
var viewerGender = "";
var viewerDisplayName = "";
var viewerFirstName = "";
var viewerLastName = "";
var viewerDOB = 0;

function makeRequest(server_url, fn) {
    var params = {};
    params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
    params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
    params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
    gadgets.io.makeRequest(server_url, fn, params);
}

function makeCachedRequest(url, callback, 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("");
    makeRequest(url, callback);
}

function isSameUser() {
    return owner && viewer && owner.getId() == viewer.getId();
}

function isDefined( data ) {
	if(null === data || "undefined" === typeof(data) || "" === data){ return false; }
	else{ return true; }
}

function stripMySpaceDotCom(id){
    if(0 === id.indexOf("myspace.com:")){ return id.substr("myspace.com:".length); }
    else{ return id; }
}

function getlatestActivity() {
	if (isSameUser()) {
		var url = "http://jr.polldaddy.com/get-activity.php?h=" + host;
		makeCachedRequest(url, getlatestActivity_Callback, 1);
	}
	else{
		location.href = "http://jr.polldaddy.com/intro.php";
        gadgets.window.adjustHeight(580);
	}
}

function getlatestActivity_Callback(data) {
    writeLog('getlatestActivity_Callback');
    var response;
    if (data.text) {
        response = data.text;
    } else if (data.body) {
        response = data.body;
    } else {
        response = data;
    }
    if (response.indexOf) {
		writeLog('activity - ' + response);
		if (response.length > 1 ){ post_activity( response ); }
    }
	
	loadApplication();
	
}

function post_activity( text ) {
    writeLog('post_activity');
    var params = {};
	params[opensocial.Activity.Field.TITLE_ID] = "posted_poll";
	params[opensocial.Activity.Field.TEMPLATE_PARAMS] = {"question":text};

	var mediaItemArray = [];
	params[opensocial.Activity.Field.MEDIA_ITEMS] = mediaItemArray;

	var activity = opensocial.newActivity(params);
	opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, postActivity_callback);
}

function postActivity_callback(data) {
    writeLog('postActivity_callback');
    writeLog(data);
	loadApplication();
}

function writeLog(data) {
    //if(console){console.log(data);}
}

function initCanvas_Callback(data) {
    owner = data.get('owner');
    viewer = data.get('viewer');
    if (owner && owner.getData) {
        owner = owner.getData();
        ownerID = owner.getField(opensocial.Person.Field.ID);
		ownerID = stripMySpaceDotCom( ownerID );
    }
    if (viewer && viewer.getData) {
        viewer = viewer.getData();
        viewerID = viewer.getField(opensocial.Person.Field.ID);
		viewerID = stripMySpaceDotCom( viewerID );
    	getlatestActivity();
	}
}

function loadApplication() {
	viewerUrl = viewer.getField(opensocial.Person.Field.PROFILE_URL);
	if ( !isDefined( viewerUrl ) ){ viewerUrl = ""; }
	viewerIUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
	if ( !isDefined( viewerIUrl ) ){ viewerIUrl = ""; }
	viewerGender = viewer.getField(opensocial.Person.Field.GENDER);
	if ( !isDefined( viewerGender ) ){ viewerGender = "male"; }
	else{ viewerGender = viewerGender.key; }
	viewerDOB = viewer.getField(opensocial.Person.Field.DATE_OF_BIRTH);
	if ( !isDefined( viewerDOB ) ){ viewerDOB = "1979"; }
	viewerDisplayName = viewer.getDisplayName();
	if ( !isDefined( viewerDisplayName ) ){ viewerDisplayName = ""; }
	else { viewerDisplayName = viewerDisplayName.replace(" ", "_"); }
	var nameObj = viewer.getField(opensocial.Person.Field.NAME);
	if ( isDefined( nameObj ) ){
		if (nameObj.fields_) {
		    var name = nameObj.getField(opensocial.Name.Field.UNSTRUCTURED);
		    viewerFirstName = name.substring(0, name.indexOf(" "));
		    viewerLastName = name.substring(name.indexOf(" ") + 1);
		}
	}
	qs = '?opensocial_viewer_id=' + viewerID + '&h=' + host +
	((viewerDisplayName) ? "&pun=" + viewerDisplayName: "") +
	((viewerFirstName) ? "&pufn=" + viewerFirstName: "") +
	((viewerLastName) ? "&puln=" + viewerLastName: "") +
	((viewerIUrl) ? "&puiurl=" + viewerIUrl: "") +
	((viewerUrl) ? "&puwurl=" + viewerUrl: "") +
	((viewerGender) ? "&pug=" + viewerGender: "") +
	((viewerDOB) ? "&pudob=" + viewerDOB: "");
	location.href = "http://jr.polldaddy.com/auth.php" + qs;
	gadgets.window.adjustHeight(470);
}

gadgets.util.registerOnLoadHandler(function() {
    host = 8;
	var req = opensocial.newDataRequest();
	
	if(typeof opensocial.newIdSpec == 'function') {
		var idspec = opensocial.newIdSpec({ "userId" : "OWNER", "groupId" : "SELF" });
		req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), 'owner');
	    req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), 'viewer');
	}
	else{
		req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER), 'owner');
	    req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), 'viewer');
	}
	
    req.send(initCanvas_Callback);
});


