var SERVER_URL = "http://gt.doflirt.com/ImageMagick/";
var IMG_URL = SERVER_URL+"images/";
var TEXTURE_URL = SERVER_URL+"textures/";
var Request = new Object();
var user;
var userId = null, userName, userThumbnail, userProfile;
var ownerName, ownerId;
var allContent;
var container;
var allFriends = [];
var selectedTab = "";
var text = "Your own Name";
var borderColor = "#FFFFFF";
var borderWidth = "0";
var fontName = "AARDC___";
var fontSize = "96";
var textureName = "heart.gif";
var images = ["28DaysLater", "20thfaux", "BTTF", "batmfa__", "BLADRMF_", "X_BAMBI", "ARGOS", "AARDC___", "abaddon", "AC______", "Arggotsc", "Ayuma2yk", "Bastarda-K", "Cardinal-Alternate", "chp-fire", "CuxhavenTimes", "SEAWFA__", "BlackCastleMF", "Bosox", "CAPTH___", "athena_u"];
var textures = ["DCaqua.gif", "DCcaramel.gif", "DCdeepvio2.gif", "DCember.gif", "DCglit13.gif", "DCglit167.gif", "DCglit32.gif", "DCglit42.gif", "DCglit44.gif", "DCglit64.gif", "gold.gif", "green.gif", "orange.gif", "blue.gif", "red.gif", "sev.gif", "heart.gif", "FS01.gif", "FS16.gif", "FS18.gif", "FS19.gif", "MerryHollyBerry2.gif", "FG15.gif", "FG03.gif", "FB02.gif",
								"1.gif", 
								"2.gif",
								"3.gif",
								"4.gif",
								"5.gif",
								"6.gif",
								"7.gif",
								"8.gif",
								"9.gif",
								"10.gif",
								"11.gif",
								"12.gif",
								"13.gif",
								"14.gif",
								"15.gif",
								"16.gif",
								"17.gif",
								"18.gif",
								"19.gif",
								"20.gif",
								"21.gif",
								"22.gif",
								"23.gif",
								"24.gif",
								"25.gif",
								"26.gif",
								"27.gif",
								"28.gif",
								"29.gif",
								"30.gif",
								"31.gif",
								"32.gif",
								"33.gif",
								"34.gif",
								"35.gif",
								"36.gif",
								"37.gif",
								"38.gif",
								"39.gif",
								"40.gif",
								"41.gif",
								"42.gif",
								"43.gif",
								"44.gif",
								"45.gif",
								"46.gif",
								"47.gif",
								"48.gif",
								"49.gif",
								"50.gif"
						];
var canvas_url = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=119168";

var hearts_canvas_url = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=121192";
var tease_canvas_url = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=123842";
var super_app_url = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=124658";

var APP_URL = "";
var savedImgUrl = "";

function getUser() {
	osContainer = opensocial.Container.get();
    var req = opensocial.newDataRequest();
    var paramViewer = {};
    paramViewer[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] =
    [MyOpenSpace.Person.Field.COUNTRY,
     MyOpenSpace.Person.Field.CITY,
     MyOpenSpace.Person.Field.POSTALCODE,
     MyOpenSpace.Person.Field.REGION, 
     MyOpenSpace.Person.Field.THUMBNAIL_URL, 
     MyOpenSpace.Person.Field.NAME, 
     MyOpenSpace.Person.Field.AGE,
     MyOpenSpace.Person.Field.GENDER,
     MyOpenSpace.Person.Field.PROFILE_URL];
     
     var paramOwner = {};
     paramOwner[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] =
    [MyOpenSpace.Person.Field.NAME];
     
    req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER, paramViewer), "viewer");
    req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER, paramOwner), "owner");
    req.send(resp_getUser);
}

function resp_getUser(data) {
    var msg = null;
    try{
        user = data.get("viewer").getData();
        userId = user.getId();
        userCountry = user.getField(MyOpenSpace.Person.Field.COUNTRY);
        userCity = user.getField(MyOpenSpace.Person.Field.CITY);
        userPostalCode = user.getField(MyOpenSpace.Person.Field.POSTALCODE);
        userRegion = user.getField(MyOpenSpace.Person.Field.REGION);
        userThumbnail = user.getField(opensocial.Person.Field.THUMBNAIL_URL);
        userName 	= user.getField(opensocial.Person.Field.NAME);
        userProfile = user.getField(opensocial.Person.Field.PROFILE_URL);
        userAge = user.getField(opensocial.Person.Field.AGE);
        userGender = user.getField(MyOpenSpace.Person.Field.GENDER);
        
        var owner = data.get("owner").getData(); 
		ownerId = owner.getId();
		ownerName = owner.getField(opensocial.Person.Field.NAME);

    }catch(ex){
         msg = "Install the amazing Glitter app. Click on the link above !!!";
    }
    if (userId == null){
    	if (msg == null){
			msg = "User authorization failed. Check if you are logged in and refresh the page.";
		}
    }else{
    	fill();
    }
}

Request.sendPOST = function(url, data, responseHandler) {
	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);
}

Request.sendGET = function(url, responseHandler) {
	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);
}

var _$ = function(id){
	return document.getElementById(id);
}

var openFonts = function(obj) {
	var div = _$("openedFonts");
	var display = div.style.display;
	if(display == "none") {
		var top = findPosY(obj);
		var left = findPosX(obj);
	   	div.style.top = top + 35 + "px";
	   	div.style.left = left + "px";
	   	div.style.display = "";
	} else {
		div.style.display = "none";
	}
	
}

var openSizes = function(obj) {
	var div = _$("openedSizes");
	var display = div.style.display;
	if(display == "none") {
		var top = findPosY(obj);
		var left = findPosX(obj);
	   	div.style.top = top + 30 + "px";
	   	div.style.left = left + "px";
	   	div.style.display = "";
	} else {
		div.style.display = "none";
	}
	
}

var selectButtonColor = function(id) {
	$('#'+id).farbtastic('#color', selectButtonColorCallback);
	_$(id).style.display = "";
}

var selectButtonColorCallback = function() {
	borderColor = _$("color").value;
	_$('colorpicker').style.display = "none";
	req_generateImage();
}

var openWidthes = function(obj) {
	var div = _$("openedWidthes");
	var display = div.style.display;
	if(display == "none") {
		var top = findPosY(obj);
		var left = findPosX(obj);
	   	div.style.top = top + 30 + "px";
	   	div.style.left = left + "px";
	   	div.style.display = "";
	} else {
		div.style.display = "none";
	}
	
}

var selectFont = function(obj, font_name) {
	fontName = font_name;
	_$("tr_0").innerHTML = obj.innerHTML;
	_$("openedFonts").style.display = "none";
	req_generateImage();
}

var selectSize = function(obj, size) {
	fontSize = size;
	_$("td_0").innerHTML = obj.innerHTML;
	_$("openedSizes").style.display = "none";
	req_generateImage();
}

var selectWidth = function(obj, width) {
	borderWidth = width;
	_$("w_0").innerHTML = obj.innerHTML;
	_$("openedWidthes").style.display = "none";
}

var selectTexture = function(id, tName) {
	var textures = document.getElementsByClassName('t');
	for(var i=0; i< textures.length; i++) {
		textures[i].style.border = "0px";
	}
	textureName = tName;
	var id = "img_"+id;
	_$(id).style.border = "1px solid #680B6B";
	req_generateImage();
}

var req_generateImage = function() {
	_$("genGlitter").innerHTML = '<img src="'+IMG_URL+'loading.gif" />';
	_$("error").innerHTML = "";
	text = _$("text").value;
	borderColor = _$("color").value;
	if(text == "") {
		errorDiv.innerHTML = "<b style='color: red'> Text can not be empty ! </b>";
	} else {
		var data = "fontName=" + fontName + "&fontSize=" + fontSize + "&textureName=" + textureName + 
					"&text=" + text + "&userId=" + userId + "&borderColor=" + borderColor + 
					"&borderWidth=" + borderWidth;
		Request.sendPOST(SERVER_URL+"index.php", data, resp_generateImage);
	}
}

var resp_generateImage = function(response) {
	var img_url = response.text.substring(1, response.text.length-1);
	savedImgUrl = img_url;
	var t = new Date();
	t = t.getTime();
	var str = '<table cellpadding="0" cellspacing="0" align="center">'+
					'<tr>'+
						'<td colspan="2" style="color:#530971; font-size:18px; font-family:serif;"><i>Take Your generated <b>Glitter Image !</b></i></td>'+
					'</tr>'+
					'<tr>'+
						'<td colspan="2" style="padding: 10px" align="center"><img style="max-width: 800px" src="'+SERVER_URL+savedImgUrl+'?t='+t+'"></td>'+
					'</tr>'+
					'<tr>'+
						'<td colspan="2" style="padding: 15px; cursor: pointer;" align="center"><img src="'+IMG_URL+'sendFriends.png" onclick="copyGlitterForSending()" /><a href="'+SERVER_URL+savedImgUrl+'?t='+t+'" target="_blank"><img border="0" src="'+IMG_URL+'save.png" /></a></td>'+
					'</tr>'+
				'</table>';
	_$("genGlitter").innerHTML = str;
	//setTimeout("gadgets.window.adjustHeight()", 4000);	
}

var putOnProfile = function() {
	selectTab("invite");
	var link = '<a href=\''+canvas_url+'\' target=\'_blank\' title=\'Glitter Text\'><img src=\''+SERVER_URL+savedImgUrl+'\' border=\'0\' /></a>';
	var html = '<table cellpadding="0" cellspacing="0">'+
			'<tr>'+
						'<td colspan="2" style="color:#530971; font-size:18px; font-family:serif;">How to put Generated Image on your Profile ?</td>'+
					'</tr>'+
					'<tr>'+
						'<td colspan="2" style="color:#333; font-size:13px; font-family:serif; padding: 10px; padding-top:5px;">'+
							'<b>Step 1.</b> Copy the \'Profile Code\' using Ctrl-C or Right-click+Copy . <br />'+
							'<b>Step 2.</b> On your MySpace home, click on \'Edit Profile\' .<br />'+
							'<b>Step 3.</b> Paste the code into one of the text boxes (About Me, Music, Books, Movies etc.) using Ctrl-V or Right-click+Paste .<br />'+
							'<b>Step 4.</b> Click on \'Save All Changes\'. Your profile page should now display your <b>Glitter Text!</b>'+
						'</td>'+
					'</tr>'+
					'<tr>'+
						'<td colspan="2" style="color:#530971; font-size:13px; font-family:serif;"><b> Profile Code: </b><td>'+
					'</tr>'+
					'<tr>'+
						'<td colspan="2">'+
							'<input type=text class="glitterCode" onfocus="this.select()" readonly="readonly"  value="'+link+'" />'+
						'<td>'+
					'</tr>'+
		'</table>';
	_$("glitterDiv").style.display = "none";
	container.innerHTML = html;

}

var replaceAll = function (OldString, FindString, ReplaceString) {
  	var SearchIndex = 0;
  	var NewString = ""; 
  	while (OldString.indexOf(FindString,SearchIndex) != -1)    {
    	NewString += OldString.substring(SearchIndex,OldString.indexOf(FindString,SearchIndex));
    	NewString += ReplaceString;
    	SearchIndex = (OldString.indexOf(FindString,SearchIndex) + FindString.length);
 	}
  	NewString += OldString.substring(SearchIndex,OldString.length);
  	return NewString;
}

var showInvite = function(){
	var str ="<div>"+
				"<h1 style='color:#530971; font-size:18px; font-family:serif;'><b><i>Send Your Generated Glitter Gift to your friends !!! </i></b><span style='font-size:16px;padding-left: 300px; color: #530971;position:relative; float: left; padding-right: 10px;'><b> Send As: </b></span><div id='targets'></div></h1>"+//
				"<div id=friend>Loading...</div>"+
			"</div>";
	_$("friendsDiv").innerHTML = str;
	loadSupportedTargets();
	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);
		//gadgets.window.adjustHeight();
	},

	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);
		//gadgets.window.adjustHeight();
	},

	req_getFriends: function(page){
		var req = opensocial.newDataRequest();
		MyOpenSpace.DefaultPageSize = cellCount*4;
		var params = {};
		params[opensocial.DataRequest.PeopleRequestFields.FIRST] = (page-1)*MyOpenSpace.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].getField(opensocial.Person.Field.NAME);
				var thumbnail = friends[i].getField(opensocial.Person.Field.THUMBNAIL_URL);
				var profile = friends[i].getField(opensocial.Person.Field.PROFILE_URL);
				str += "<td name=userCell width="+(100/cellCount)+"% >"+
						"<table valign=top width=100%>"+
							"<tr>"+
								"<td class=smallFont_ title='"+name+"'>"+name.substring(0,20)+"</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>"+
						"</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;
		
		cont.innerHTML = "<div id="+containerId+"_1></div>";
		cont.setAttribute("curPage", 1);
		
		Invite.req_getFriends(curPage);
	}
};
}();

function inviteFriend(id, callback){
    var target_is_supported = false;
    var target = _$("target").value;
    var subject = "Super Glitters !!!";
    var content = 	"<a href='"+canvas_url+"'><img src='"+IMG_URL+"/g-16.gif' /></a><br />"+ 	
					"<img style='padding-left: 10px;' src='"+SERVER_URL+savedImgUrl+"' /><br />"+
					"<span style='color: #3B5998; font-size: 13px;'><br />Generate Your Super Glitter for Your Friends, Send them and give back !!! Using <a href='"+canvas_url+"'> Super Glitters</a> !</span><br />";
   
    // make sure that the selected target is enabled
    for (var i = 0; i < supported.length; i++) {
          if (supported[ i ] == target) {
                target_is_supported = true;
                break;
          }
    }

    if (target_is_supported) {
    	postTo_(subject, content, getFriendById(id), target, callback);
    }
}


var postTo_ = function(subject, content, receiver, postWhere, ptCallback){
	var postType = MyOpenSpace.PostTo.Targets[postWhere];
	var os_token = MyOpenSpace.MySpaceContainer.OSToken;
	var message = opensocial.newMessage(content);
	message.setField(opensocial.Message.Field.TITLE, subject);
	message.setField(opensocial.Message.Field.TYPE, postType);
	osContainer.postTo(os_token, message, receiver, ptCallback);
}

var getFriendById = function(id){
	for (var i=0;i<allFriends.length;i++){
		if (allFriends[i].getId() == id) return allFriends[i];
	}
}

var postInvite = function(){
	var t = new Date();
	t = t.getTime();
	var gameTitle = "Supeeeeer Glitters !!!!";
	var content =	"<img style='padding-left: 10px; border: 0px;' src='"+SERVER_URL+savedImgUrl+"' /><br />"+
					"<span style='color: #3B5998; font-size: 13px;'> Heeey see how fancy is this !!!<br /> Use <a href='"+canvas_url+"'> GlitterText </a> to generate your own and put it on your profile! It's so fun, everyone must try that . </span><br />"+
					"<a href='"+canvas_url+"'><img src='"+IMG_URL+"/g_16.gif' /></a>"+
					"<a target='_blank' href='"+canvas_url+"'><img style='padding-left: 10px;' src='"+IMG_URL+"/generate-trans.png' /></a>";

	postTo_(gameTitle, content, user, "BULLETINS", null);
}

function loadSupportedTargets() {
	supported = osContainer.getMySpaceEnvironment().getSupportedPostToTargets();
    var temp = "<select id=\"target\">";
    for (var i = 0; i < supported.length; i++){
          temp += "<option value=\"" + supported[ i ] + "\">" + supported[ i ] + "</option>";
    }
    temp += "</select>";
    document.getElementById("targets").innerHTML = temp;
}

document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};

var findPosX = function(obj) {
	var curleft = 0;
	try{
		if (obj.offsetParent) {
			while (obj.offsetParent) {
				curleft += obj.offsetLeft;
				obj = obj.offsetParent;
			}
		} else if (obj.x) curleft += obj.x;
	}catch(ex){}
	return curleft;
}

var findPosY = function(obj) {
	var curtop = 0;
	try {
		if (obj.offsetParent) {
			while (obj.offsetParent) {
				curtop += obj.offsetTop;
				obj = obj.offsetParent;
			}
		} else
		 if (obj.y) curtop += obj.y;
	}catch(ex){}
	return curtop;
}

var selectTab = function(tabName){
	var tabDivs = _$("tabContainer").getElementsByTagName("td");	
	for (var i=0;i<tabDivs.length;i++){
		if (tabDivs[i].getAttribute("name") == tabName){
			tabDivs[i].className = "selected";
		}else{
			tabDivs[i].className = "";
		}
	}
	selectedTab = tabName;
}



////////////////////////  start promotion
$(document).ready(function(){
		// determine if app is installed
		var global_viewerId = 'non';
		if(opensocial.hasPermission(opensocial.Permission.VIEWER)) {
			global_viewerId = gadgets.views.getParams().viewerId;
		}
 

		 var actionRedirect = gadgets.views.getParams()["goto"];
		 var destination = gadgets.views.getParams()["appname"];
		 var landingPage = gadgets.views.getParams()["landpage"];
		 
		 if(actionRedirect != null && actionRedirect .length > 0) {
				var url = "http://adturns.com/channelStatistics.php?act_own=32&socialType=myspace&appId=super_gliter_maker&userId="+global_viewerId+"&channel=goto_"+destination;
				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, dummyResponseHandler, os_params);
			  
				if(typeof landingPage == 'undefined' || landingPage==null){
					window.location = 'http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId='+actionRedirect;
				} else {
					window.location = 'http://www.myspace.com/'+actionRedirect;
				}
		 }
	});

function dummyResponseHandler(response){
	//nothing here
}
////////////////////////  end promotion