//A JavaScript function similar to the PHP include to include other JS file in the current JS file
function js_include(jsFile)
{
  var url = 'http://www.smallestgames.com';
  document.write('<script type="text/javascript" src="' + url + jsFile + '"></scr' + 'ipt>'); 
}

js_include('/JavaScript/Functions.js');

js_include('/JavaScript/jQuery/SuperFishMenu/superfish.js');
js_include('/JavaScript/jQuery/tools.tooltip-1.1.0.js');
js_include('/Scripts/flashobject.js');
js_include('/JavaScript/jQuery/jquery.scrollTo-1.4.0-min.js');


//An array containing all the functions to be executed by __init__ function
var f =
[
 SuperFishMenu, // the language selector dd menu
 AddFlagsToMenu, // add the language flags to the language selector dd menu
 ChangeCategPic, // change the category pic on the left menu on hover
 StyleOptions, // add icons to the optional links (download, share etc)
 CountDownTimer, // execute the preGame loading bar
 Fav, //  the add to favorites function
 StyleList, // style with JS the 'Top 10 games' list on the front page
 ToolTip, // add the thumbnail tooltip on hover on the 'Top 10 games' list on the front page
 ShowRandomExtra, // load the extra games beneeth the game on the game page
 GetRecommended // display the latest games from an RSS XML feed
 ];

//Execute this function on document.ready: includes all functions
function __init__(options)
{
	try
	{
		$('#SG-S-Menu').addBranding(); // add the small logo to all elements
		start(f,options); // iterate through the available function list and try to execute each function in the 'f' var
	}catch(err){};
}

//Start the functions
function start(f /*the function list*/, options /*the options object*/)
{
	for(i in f)
	{
		var fn = f[i]; // get the function name
		try{fn(options);}catch(err){}; // try to execute the function
	}
}

// jQuery function to add the branding to all elements
jQuery.fn.addBranding = function() 
{
	try
	{
	  var width = $(this).css('width'); // get the width of the current element
	  var opts = {'width':width}; // set the object 'opts' with the atribute 'width' and the value set above in the 'width' var
	  
	  $('.sg-branding').css(opts); // add the branding
	  
	  //go through each element and add the branding element
	  return this.each(function(){
			$(this).after('<span class="sg-branding"></span>');
	  });
	}
	
	catch(err){};
}

// The thumbnail tooltip function with the game picture
function ToolTip(options)
{
	try
	{
		var opts = { position: 'top center' };
		$(".sg-top").tooltip(opts);
	}
	
	catch(err){}
}

function StyleOptions(options)
{
	try
	{
		$('.sg-l-options').each(function(i)
		{
			var action = $(this).attr('id');
			var opts = {'background-image':'url(/Images/'+action+'.png)'};
			$(this).css(opts);
		});	
	}catch(err){};
}

function StyleList(options)
{
	try
	{
		var id = 0;
		var r; // row
		var c; // class
		
		$('.sg-top').each(function(i)
		{
			var x = $(this); // the relative link
			r = id++ % 2; // returns 0 or 1
			c = (r == 0) ? 'top-w' : 'top-r'; // choose what class (0 = 'top-w' and 1 = 'top-r'
			x.addClass(c); // adds a new class (var c) to each top link
		});
	}
	catch(err){};
}

function SuperFishMenu(options)
{
	try
	{
		var menuOptions =
		{
		  delay:       300,                  // one second delay on mouseout 
		  speed:       'fast',               // faster animation speed 
		  autoArrows:  false                 // disable generation of arrow mark-up 
		};
		
		$("ul.sf-menu").superfish(menuOptions);
		
	}catch(err){};
}

function AddFlagsToMenu(options)
{
	try
	{
		$('ul.sf-menu li  ul li a').each(function(i)
		{
			var lang = $(this).attr('id');
			var opts = {'background-image':'url(/Images/flags/'+lang+'.gif)'};
			
			$(this).css(opts);
		});
		
	}catch(err){};
}

function ChangeCategPic(options)
{
	try
	{
		var opts = {'background-image':'url(/Images/sg-categ-all-1.jpg)'};
		$('#SG-Categ').css(opts);
		
		$('.sg-cat').hover(
			function(){
				var id = $(this).attr('id');
				var opts = {'background-image':'url(/Images/'+id+'.jpg)'};
				$('#SG-Categ').css(opts);
			},
			
			function(){
				var opts = {'background-image':'url(/Images/sg-categ-all-1.jpg)'};
				$('#SG-Categ').css(opts);
			}
		);
	}catch(err){};
}
	
	
function ToolTip(options)
{
	try
	{
		var opts = 
		{
				position: "top center"
		};
		
		$(".sg-top, .sg-l-feat-text").tooltip(opts);
	}catch(err){};
}


function FillGame(options)
{
	if(!options.swf)
		return false;
	
	var swf = options.swf;
	var height = options.height;
	var width = options.width;
	var container = options.container;
	var x = options.x;
	
	var base = 'http://www.smallestgames.com';
	
	var fo = new FlashObject(swf, "FlashObject", width, height, "6", "");
	fo.addParam("allowScriptAccess", "sameDomain");
	fo.addParam("quality", "best");
	fo.addParam("loop", "true");
	fo.addParam("allowFullScreen", "true");
	fo.addParam("wmode", "opaque");

	if(!x)
		fo.addParam('allowNetworking', 'internal');

	fo.write(container);
	
	return false;
}

function AddPreloader(options)
{
	var containterOptions = 'width: 710px; height: 532px; margin: 2px auto 0; padding: 3px; background: #FFF;';
	$('#GameContainer').before('<div id="GamePreloader" style="'+containterOptions+'"></div>');
}

var t = '';

function AddPreloaderCountDown(options)
{
	var ownGame = options.own;
	var stop = options.stop;
		
	
	var preloaderOptions = 
	{
		swf: '/Flash/branding-preloader.swf',
		width: 710,
		height: 532,
		container: 'GamePreloader',
		x: true
	};
	
	var extraOptions = 
	{
		container: '#SD-RightGames',
		loading: '#LoadingExtraGames2',
		getParam: 'rightGames',
		no: 8
	};
		  
	
	function callBack_function()
	{
		//$('#GamePreloader').hide().empty().remove();
		$('#SG-GameContainer').show();
		FillGame(options);
		//ShowRandomExtra(options, extraOptions);
		//UpdateViews(options);
		//clearTimeout(t);
	}
	
	try{callBack_function();}catch(err){};		
	
/*	if(!ownGame)
	{
	  try{				
		  AddPreloader(options);
		  FillGame(preloaderOptions);
		  t = setTimeout(callBack_function, 6250);
	  }catch(err){};
	}else{
		callBack_function();
	}
*/}

function AddPlayBtn(options)
{
	var stop = options.stop;
	var lang = options.lang;
	
	if(lang == 'pt')
		lang == 'br';
		
	if(lang == '' || lang == 'undefined')
		lang = 'en';
					
	//lang = '*';
	
	var langVer = new Array();
		
	langVer['en'] = 'Start the game';
	langVer['de'] = 'Starten Sie das Spiel';
	langVer['tr'] = 'Start oyun';
	langVer['es'] = 'Comienza el juego';
	langVer['br'] = 'Comecar a jogar';
	langVer['pt'] = 'Comecar a jogar';
	langVer['fr'] = 'Demarrez le jeu';
	langVer['it'] = 'Avviare il gioco';
	langVer['ro'] = 'Incepe jocul';
	langVer['pl'] = 'Rozpocznij gre';
	langVer['ar'] = 'بدء لعبة';
	langVer['zh'] = '开始游戏';
	langVer['hi'] = 'खेल शुरू';
	langVer['ru'] = 'Начало игры';
	langVer['el'] = 'Ξεκινήστε το παιχνίδι';
	langVer['th'] = 'เริ่ม เกมส์';
	langVer['ja'] = 'スタートゲーム';
	langVer['ko'] = '게임을 시작합니다';
	
	if(lang == '*')
		langVer[lang] = 'Start';

	var style = 'display: none;';
	var startBtnName = 'PlayTheGame';
	//var startBtnName = 'PlayTheGame2';
	var startBtn = '<a id="'+startBtnName+'" style="'+style+'" href="#">'+langVer[lang]+'</a>';
	
	$('.sg-ad-336').before(startBtn);
	//$('#SG-Progress').before(startBtn);
	
	$('#'+startBtnName).fadeIn('slow');
	
	function fadeOut(a)
	{
		a.empty().remove();	
		//Share(options);		
		$('.sg-ad-336').hide();
		AddPreloaderCountDown(options);
		return false;
	}
	
	function onClick()
	{
		var a = $(this);
		$(this).fadeOut('slow', fadeOut(a));
		return false;
	}
	
	try
	{
		$('#'+startBtnName).click(onClick);
	}catch(err){};
}


function CountDownTimer(options)
{
	var stop = options.stop;
	
	//$('.sd-728').remove();
	
	function callBack_function()
	{
		$('#SG-Progress').hide();
		Share(options);
		AddPlayBtn(options);
	};
	
	var countDownOpts =  { callBack: callBack_function };
	
	try
	{
		if(!stop)
			$('#SG-CountDown').countDown(countDownOpts);
		else
			callBack_function();
	}catch(err){};
}


function bookmarksite(title,url)
{
	try
	{
		if (window.sidebar) // firefox
			window.sidebar.addPanel(title, url, "");
		else if(window.opera && window.print)
		{ // opera
			var elem = document.createElement('a');
			elem.setAttribute('href',url);
			elem.setAttribute('title',title);
			elem.setAttribute('rel','sidebar');
			elem.click();
		} 
		if(document.all)// ie
			window.external.AddFavorite(url, title);
	}
	
	catch(err){};
}

function Fav(options)
{
	function onClik()
	{
		bookmarksite(document.title, document.URL); 
		return false;
	}
	
	try
	{
		$('#fav').click(onClik);
	}catch(err){};
}

function Share(options)
{
	try
	{
		$('#SG-Sharing').fadeIn('slow');		
		$('.sd_link_share').fadeTo('fast', .5);
		$('.sd_link_share').hover(
		function(){$(this).fadeTo('fast', 1);},
		function(){$(this).fadeTo('fast', .5);}
		);
		
	}catch(err){};
}

function GetRecommended(options)
{
	try
	{
		var url = 'http://www.smalldressup.com/rss_mine.xml';
		//var url = 'http://www.smalldressup.com/rss.xml';
		var container = '#RECOMM';
		var loading = '#LoadingRecommendedGames';
		var home = options.home;
		
		if(!home)
			return false;
		
		function successFunction(html)
		{
		  $(container).html(html);
		  $(loading).hide();
		}
		
		var opts =
		{
			type:'GET',
			url:'/Modules/Games/Games.class.php',
			data: 'rec=true&url='+url,
			dataType: 'html',
			success: successFunction
		}
		
		function fetchGames(o) { $.ajax(o); }
		
		fetchGames(opts);
	}
	
	catch(err){};
}


function ShowRandomExtra(options, extraOptions)
{		
	var lang = options.lang;
	var db = options.db;
	var swf = options.swf;
	
	if(!swf)
		return false;
	
	if(!extraOptions)
	{
		var container = '#RandomGames';
		var loading = '#LoadingExtraGames';
		var getParam = 'extra';
		var no = 7;
	}else{
		var container = extraOptions.container;
		var loading = extraOptions.loading;
		var getParam = extraOptions.getParam;
		var no = extraOptions.no;
	}
	
	if(!db)
		return false;
	
	//$('#LoadingExtraGames').hide();
	function successFunction(html)
	{
	  $(container).html(html);
	  $(loading).hide();
	}
	
	var ajaxOptions = 
	{
		type:'GET',
		url:'/Modules/Games/Games.class.php',
		data: getParam+'=true&lang='+lang+'&no='+no,
		dataType: 'html',
		success: successFunction
	}
	
	function getTheGames(opts){ $.ajax(opts); }
	
	getTheGames(ajaxOptions);
}

function UpdateViews(options)
{
	var db = options.db;
	var id = options.id;
	
	if(!db || !id)
		return false;
	
	var ajaxOptions =
	{
		type:'GET',
		url:'/index2.php',
		data: "p=inGame&db="+db+"&id="+id
	}

	$.ajax(ajaxOptions);
}
