window.myTunnelURI = "/widget-explorer/tunnel.html";

/** These are the IFrame atrributes that are added to the iframe added for the widget. 
 Update these attributes if there are any chages required to match the UI of the site these widgets will be integrated to. */
window.iframeAttributes = {
	style : {
		border :"0px none",
		background :"none"
	},
	allowTransparency :"true",
	allowtransparency :"true",
	scrolling :"no",
	width :"100%",
	height :"100%",
	frameborder :"0",
	frameBorder :"0"
};


/*
 * dosorioa@studiocom.com
 *
 * Depends:
 *	jquery.js
 */
 
/* Leaders Board */
(function($) {
$.fn.leadersboard = function(settings) {
	settings = $.extend({}, $.fn.leadersboard.defaults, settings);
	
	oLeaderBoard = this;
	
	oXMLData = null;
	
	createLeadersTable = function(xml,board,id){
		var oTable = $(board+" table",oLeaderBoard);
		$("datum[id="+id+"] value",$(xml)).each(function(ndx){
			var sClass = (ndx % 2)?" class='even'":"";
			var sRow = "<tr"+sClass+">";
			sRow += "<td class='rank'>"+(ndx+1)+"</td>";
			sRow += "<td>"+$("screenName",this).text()+"</td>";
			sRow += "<td>"+$("balance",this).text()+"</td>";
			sRow += "</tr>";
			$(oTable).append(sRow);
		});
	};
	
	oXMLData_callback = function(xml){
		oXMLData = xml;
		$(oLeaderBoard).load(settings.widgetUrl+settings.templatePath, function() {
			$(".last_datestamp",$(this)).html($("datum[id=last-update-dates]",$(oXMLData)).text());
			$("#leadersboard-total .datestamp",$(this)).html($("datum[id=total-top-dates]",$(oXMLData)).text());
			$("#leadersboard-weekly .datestamp",$(this)).html($("datum[id=weekly-top-dates]",$(oXMLData)).text());
			createLeadersTable(oXMLData,"#leadersboard-total","total-top");
			createLeadersTable(oXMLData,"#leadersboard-weekly","weekly-top");
			
			//$("table",this);
			//oXMLData
		});
		//alert($("datum",$(oXMLData)).length);
	};
	$.ajax({
		url: settings.widgetUrl+settings.servicePath,
		dataType:'xml',
		success: oXMLData_callback,
		error: function(ev) { if(typeof window.console.error !== 'undefined') window.console.error("error: "+ev.message); }
	});

	
	var rf = function() { return false; };
	this.each(
		function()
		{
			
		}
	);
	return this;
};

$.fn.leadersboard.defaults = {
	widgetUrl : '/',
	servicePath : 'leadersBoard.do',
	templatePath : 'en_US/Widgets/leadersBoard/template_en_US.html'
};

})(jQuery);


/* Weekly Points Tracker */
(function($) {
$.fn.weeklytracker = function(settings) {
	settings = $.extend({}, $.fn.weeklytracker.defaults, settings);
	oWeeklyTracker = this;
	
	getPointsLabel = function(value){
		if(Math.abs(value) == 1) return value+" point";
		else return value+" points";
	}
	
	oXMLData_update = function(){
		var nLimit = 0;
		var nCurrent = 0;
		switch(settings.dataType)
		{
			case 'json':
			case 'jsonp':
				nLimit = parseInt(oWeeklyTracker.oXMLData.datum.pointsWeeklyLimit);
				nCurrent = parseInt(oWeeklyTracker.oXMLData.datum.weeklyConsumptionAmount);
				break;
			default:
				nLimit = parseInt($("datum[id=pointsWeeklyLimit] value",$(oWeeklyTracker.oXMLData)).text());
				nCurrent = parseInt($("datum[id=weeklyConsumptionAmount] value",$(oWeeklyTracker.oXMLData)).text());
				break;
		}
		var nAvailable = nLimit - nCurrent;
		$("#earned",oWeeklyPoints).html(getPointsLabel(nCurrent));
		$("#available",oWeeklyPoints).html(getPointsLabel(nAvailable));
		$("#limit",oWeeklyPoints).html(nLimit);
	}
	oXMLData_callback = function(xml){
		oWeeklyTracker.oXMLData = xml;
		if($(oWeeklyPoints).children().length > 0)
		{
			oXMLData_update();
		}
		else
		{
			$(oWeeklyPoints).load(settings.templatePath, function() {
				oXMLData_update();
			});
		}
	};
	
	this.update = function(){
		if(oWeeklyTracker.oXMLData == null)
		{	
			$.ajax({
				url: settings.servicePath,
				dataType:settings.dataType,
				success: oXMLData_callback,
				error: function(ev) { if(typeof window.console.error !== 'undefined') window.console.error("error: "+ev.message); }
			});
		}
		else
		{
			oXMLData_update();
		}
	}
	this.clearTimer = function(){
		$(oWeeklyTracker).removeClass("leaving");
		$('body').unbind("click");
		if(typeof oWeeklyTracker.nTimer != 'undefined' && oWeeklyTracker.nTimer != null)
		{
			clearTimeout(oWeeklyTracker.nTimer);
			oWeeklyTracker.nTimer = null;
		}
	}
	this.close = function(){
		oWeeklyTracker.clearTimer();
		$(oWeeklyTracker).removeClass("open");
		$(oWeeklyPoints).hide();
		return true;
	}
	
	$(this).show();
	if($(".hit", this).length <= 0)
	{
		$(this).append("<div class='hit'><div class='area'>&nbsp;</div></div>");
		$(this).append("<div class='container'></div>");
		oWeeklyPoints = $(".container",this);
		$(".hit",this).click(function(){
			if($(this).parent().hasClass("open"))
			{
				//close
				oWeeklyTracker.close();
			}
			else
			{
				$(this).parent().addClass("open");
				$(oWeeklyPoints).show();
/*				if(typeof oWeeklyTracker.oXMLData === 'undefined' || oWeeklyTracker.oXMLData == null)
				{*/
					oWeeklyTracker.update();
/*				}
				else
				{
					oXMLData_callback(oWeeklyTracker.oXMLData);
				}*/
				$(oWeeklyTracker).mouseleave(function(){
					if($(oWeeklyTracker).hasClass("open") && !$(oWeeklyTracker).hasClass("leaving"))
					{
						$(oWeeklyTracker).mouseenter(function(){
							if($(oWeeklyTracker).hasClass("open"))
							{
								oWeeklyTracker.clearTimer()
							}
						});
						$(oWeeklyTracker).addClass("leaving");
						$('body').bind("click",oWeeklyTracker.close);
						oWeeklyTracker.nTimer = setTimeout("oWeeklyTracker.close()",settings.timer);
					}
				});
			}
		})
	}
	else
	{
		oWeeklyPoints = $(".container",this);
		oWeeklyTracker.oXMLData = null;
		oWeeklyTracker.update();
	}

//	oXMLData = null;
	return this;
};


$.fn.weeklytracker.getServicePath = function()
{
	if(typeof homeBase === 'undefined' || homeBase.indexOf("nos.studiocom.com") >= 0)
		return '/en_US/Widgets/weeklyTracker/getPointsPerPeriod_en_US.xml';
	else
		return ((typeof homeSSL === 'undefined')?'/':homeSSL)+'getPointsPerPeriod.do?format=json';
}
$.fn.weeklytracker.getDataType = function()
{
	if(typeof homeBase === 'undefined' || homeBase.indexOf("nos.studiocom.com") >= 0)
		return 'xml';
	else
		return 'jsonp';
}
$.fn.weeklytracker.defaults = {
	widgetUrl : (typeof homeBase === 'undefined')?'/':homeBase,
	servicePath : $.fn.weeklytracker.getServicePath(),
	templatePath : '/en_US/Widgets/weeklyTracker/template_en_US.html',
	timer:3000,
	dataType:$.fn.weeklytracker.getDataType()
};

})(jQuery);
