var osObject;
var debugObject;

function initColorcubeFlashOS()
{
	osObject = initColorcubeOS();
}

function initFlashOpensocial(containerId, id, movie, w, h, lang, version)
{
	var url = gadgets.io.getProxyUrl(movie);
	//gadgets.flash.embedCachedFlash(url, containerId, 9, {width:w, height:h, id:id, allowScriptAccess:"always", allowNetworking:"all", flashvars:"flashId="+ id +"&locale=" + lang +"&version="+ version});
	gadgets.flash.embedFlash(movie, containerId, 9, {width:w, height:h, id:id, allowScriptAccess:"always", allowNetworking:"all", flashvars:"flashId="+ id +"&locale="+ lang +"&version="+ version});
}

function initFlash(containerId, id, movie, w, h, lang, version)
{
	var code = '<object id="'+ id +'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" data="'+ movie +'" width="'+ w +'" height="'+ h +'">';
	code += '<param name="movie" value="'+ movie +'" />';
	code += '<param name="allowScriptAccess" value="always" />';
	code += '<param name="allowNetworking" value="all" />';
	code += '<param name="flashvars" value="flashId='+ id +'&locale='+ lang +'&version='+ version +'" />';
	code += '<embed name="'+ id +'" src="'+ movie +'" width="'+ w +'" height="'+ h +'" flashvars="flashId='+ id +'&locale='+ lang +'&version='+ version +'" ';
	code += 'type="application/x-shockwave-flash" allowScriptAccess="always" allowNetworking="all"/>';
	code += '</object>';
	var container = document.getElementById(containerId);
	container.innerHTML = code;
}

function flashCallback(flashId, callback, result, args)
{
	debug(flashId +"\n"+ callback +"\n"+ result +"\n"+ args);
	if (document[flashId] && callback)
		window.setTimeout(function(){eval("document[flashId]." + callback + "(result, args)")}, 100);
}

function getViewerHasApp(flashId, callback, args) {
	osObject.getViewerHasApp(loadComplete);
	function loadComplete(result) {
		flashCallback(flashId, callback, result, args);
	}
}

function getViewerOwnerRelation(flashId, callback, args) {
	osObject.getViewerOwnerRelation(loadComplete);
	function loadComplete(relation) {
		flashCallback(flashId, callback, relation, args);
	}
}

function getOwnerFriends(flashId, callback, args) {
	osObject.getOwnerFriends(loadComplete);
	function loadComplete(object) {
		flashCallback(flashId, callback, object, args);
	}
}

function getOwnerFriendsWithoutApp(flashId, callback, args) {
	osObject.getOwnerFriendsWithoutApp(loadComplete);
	function loadComplete(object) {
		flashCallback(flashId, callback, object, args);
	}
}

function getOwnerData(flashId, callback, args) {
	osObject.getOwnerData(loadComplete);
	function loadComplete(object) {
		flashCallback(flashId, callback, object, args);
	}
}

function createActivity(flashId, title, content, icon, callback, args) {
	osObject.createActivity(title, content, icon, loadComplete);
	function loadComplete(result) {
		flashCallback(flashId, callback, result, args);
	}
}

function createTemplateActivity(flashId, id, variables, media, callback, args) {
	//debug(flashId +"\n"+ id +"\n"+ variables +"\n"+ media +"\n"+ callback +"\n");
	osObject.createTemplateActivity(id, variables, media, loadComplete);
	function loadComplete(result) {
		flashCallback(flashId, callback, result, args);
	}
}

function createNotification(flashId, friends, message, callback, args) {
	//debug(flashId +"\n"+ friends +"\n"+ message +"\n"+ callback +"\n");
	osObject.createNotification(friends, message, loadComplete);
	function loadComplete(result) {
		flashCallback(flashId, callback, result, args);
	}
}

function createRandomNotification(flashId, message, callback, args) {
	//debug(flashId +"\n"+ message +"\n"+ callback +"\n");
	osObject.createRandomNotification(message, loadComplete);
	function loadComplete(result) {
		flashCallback(flashId, callback, result, args);
	}
}

function requestServer(flashId, url, callback, args, postdata) {
	debug(flashId +"\n"+ url +"\n"+ callback +"\n"+ args +"\n"+ postdata);
	osObject.requestServer(url, loadComplete, postdata);
	function loadComplete(response) {
		debug(response.data +"\n"+ response.errors +"\n"+ response.text);
		flashCallback(flashId, callback, response.text, args);
	}
}

function initDebug(id) {
	debugObject = document.getElementById(id);
}

function debug(text) {
	if (debugObject) debugObject.innerHTML += "<p>" + text + "</p>";
}