/**
 * @file		main.js
 * @author 		JVST
 * @date		09/13/2011
 * @project		Pokemon Rumble Blast 
 */



/*
 * Pokemon Event Tracker
 */
PET = {
	cat_coins: 'Coins',
	cat_wallpapers: 'Wallpapers',
	cat_screenshots: 'Screenshots',
	cat_videos: 'Videos',
	cat_news: 'News',
	cat_outbound: 'Outbound Links',
	cat_social: 'Social Media',
	cat_misc: 'Misc.',
	act_wonAllCoins: 'Unlocked_All_Coins',
	act_totalCoinsWon: 'Total_Coins_Unlocked',
	act_videoPlay: 'Video_Played',
	act_facebook: 'Facebook',
	act_twitter: 'Twitter',
	act_googleplus: 'Google',
	act_myspace: 'Myspace',
	act_digg: 'Digg',
	act_reddit: 'Reddit',
	act_email: 'Email',
	_gaID: '',
	_o: {enabled:false, gaID:'', debug:false},
	_gaq: null,
	// INIT
	init: function(pOptions){
		PET._options = $.extend({}, PET._o, pOptions);
		if(PET._options.enabled){
			$.trackPage('UA-XXX-XXX');
		    $.fn.track.defaults.debug = o.debug;
		}
	},
	// TRACK
	track: function(o){
		// If track page view
		if(o.type == 'page'){
			$.trackPageview(o.page);
		} else if(o.type == 'event'){
			$.trackEvent(o.category, o.action, o.label);
		}
	}
};



// Main 
Pokemon = {
	fx: {
		opacity: !0,
        anims: !0
	},
	autoMoveTo: null,
	autoMoveFrom: null,
    autoMoveTimes: null,
	init : function(){
		//DB.init({hided:false}); // Debug
		var aMain = $("#container");
		userX.init(); // Init userX
		$(document).keydown(userX.onKeyDown).keyup(userX.onKeyUp); // Keyboards
		$(aMain).bind({ touchmove:userX.onTouchMove, touchstart:userX.onTouchStart, touchend:userX.onTouchEnd, touchcancel:userX.onTouchEnd }); // Finger events
		$(aMain).mousewheel(userX.onMouseWheel); // Mousewheel
		$(window).resize(Pokemon.onResize);	// Resize
		$(window).hashchange(Pokemon.onHashChange); // Hash
		$(window).unload(Pokemon.onUnload); // On leave page
		if ($.browser.name == "msie" && $.browser.version <= 8) Pokemon.fx.opacity = !1;
		MainStage.init(); // Init
	},
	onResize: function(){
		MainStage.onResize();
		MainStage.positionElts();
	},
	onUnload: function(){
		// Track event
		PET.track({type:'event',category:PET.cat_coins, action:PLANG.lang+'|'+PET.act_totalCoinsWon, label:PLANG.lang+'|'+CoinsManager.getTotalCoinsWon()});
	},
	onHashChange: function(){
		var sHash = Hasher.getMainContent();
		var sSubHash = Hasher.getSubContent();
		var b = 0;
		if(sHash.length > 0) {
			for (var c = 0; c < Contents.length; c++){ 
				if (Contents[c].id == sHash) {
					b = c;
					break;
				}
			}
		}
		
		if(MainStage.currScene != b){
			if(Contents[b].id != "home" && Contents[MainStage.currScene].id == "home"){
				if(!BrowserPokemon.isIpad()&&!BrowserPokemon.isIphone()){
					if($("#home_player").length > 0 && $("#home_player")[0] != undefined){
						$("#home_player")[0].stopVideo();
					}
				}
			}
			Pokemon.moveToScene(b);
		} /*else { 
			// Check if need to go to different subscene
			//Contents[MainStage.currScene].onHash(sHash);
		}*/
	},
	moveToScene: function(idx){
		if (userX.enabled != !1) {
            userX.setEnabled(!1);
            Pokemon.autoMoveFrom = [MainStage.stageX, MainStage.stageY];
            Pokemon.autoMoveTo = [Contents[idx].center[0], Contents[idx].center[1]];
            var d = (new Date).getTime();
            Pokemon.autoMoveTimes = [d, d + 1500];
            MainStage.currScene = idx;
            MainStage.createScene(idx);
            MainStage.enableScene(idx);
            
            var _subID = ""; 
            if(Contents[idx].subcontents != undefined && Contents[idx].subcontents.length > 0){
            	_subID = Contents[idx].subcontents[0].id;
            }
            PET.track({type:'page','page':'/'+PLANG.lang+'/'+Contents[idx].id+'/'+_subID});
        }
	},
	moveToSubScene: function(way){
		if(Contents[MainStage.currScene].subcontents != undefined){
			if(Contents[MainStage.currScene].subcontents.length > 1){
				MainStage.moveToSubContent(MainStage.currScene, way);
			}
		}
	},
	loadingCount: 0,
	loading: function(n){
		Pokemon.loadingCount += n;
		//Pokemon.loadingCount <= 0 ? $("#loading").compatFadeOut("fast") : director.loadingCount >= 1 && $("#loading").compatFadeIn("fast").css("margin-bottom", director.loadingCount - 1 + "px")
	},
	moveRelativeScene: function (way) {
        userX.enabled != !1 && (way = way < 0 ? Contents[MainStage.currScene].prevScene(MainStage.currScene) : Contents[MainStage.currScene].nextScene(MainStage.currScene), parseInt(way) >= 0 && Pokemon.moveToScene(way))
    },
	autoMovement: function () {
        if (Pokemon.autoMoveTo == null) return [0, 0];
        if (Math.abs(MainStage.stageX - Pokemon.autoMoveTo[0]) < 4 && Math.abs(MainStage.stageY - Pokemon.autoMoveTo[1]) < 4) return userX.setEnabled(!0), Pokemon.autoMoveTo = null, [0, 0];
        var a = (new Date).getTime() - Pokemon.autoMoveTimes[0],
            b = Pokemon.autoMoveTimes[1] - Pokemon.autoMoveTimes[0],
            a = a > b ? b : a,
            c = Pokemon.autoMoveTo[0] - Pokemon.autoMoveFrom[0],
            d = Pokemon.autoMoveTo[1] - Pokemon.autoMoveFrom[1];
        (a /= b / 2) < 1 ? (b = c / 2 * Math.pow(a, 4) + Pokemon.autoMoveFrom[0], a = d / 2 * Math.pow(a, 4) + Pokemon.autoMoveFrom[1]) : (a -= 2, b = -c / 2 * (Math.pow(a, 4) - 2) + Pokemon.autoMoveFrom[0], a = -d / 2 * (Math.pow(a, 4) - 2) + Pokemon.autoMoveFrom[1]);
        return [MainStage.stageX - b, MainStage.stageY - a];
    },
	sceneHandlers: function (a) {
        $("[placeholder]", a).each(function () {
            var a = $(this);
            if (a.val() == "" || a.val() == a.attr("placeholder")) a.addClass("placeholder"), a.val(a.attr("placeholder"))
        }).focus(function () {
            var a = $(this);
            a.val() == a.attr("placeholder") && (a.val(""), a.removeClass("placeholder"))
        }).blur(function () {
            var a = $(this);
            if (a.val() == "" || a.val() == a.attr("placeholder")) a.addClass("placeholder"), a.val(a.attr("placeholder"))
        }).parents("form").submit(function () {
            $(this).find("[placeholder]").each(function () {
                var a = $(this);
                a.val() == a.attr("placeholder") && a.val("")
            })
        })
    }
}

/*
 * Main
 */
MainStage = {
	currScene: 0,
	currSubScene: 0,
	frameTimer: 0,
	stageOffset: [0,0],
    wishVel: [0,0],
	width: $(window).width(),
    height: $(window).height(),
    stageX: 0,
    stageY: 0,
    contentformat: '',
    RESIZE_BIG: 'RESIZE_BIG',
    RESIZE_SMALL: 'RESIZE_SMALL',
    onFrameCallbacks: [],
    lastFrameTime: 0,
    friction: 45,
    llaxability: 4,
    init: function(){
		var startIdx = 0;
		var sHash = Hasher.getMainContent()||"home";
		// Check if direct access
		for (c in Contents){ 
			Contents[c] = $.extend({}, baseScene, Contents[c]);
			Contents[c].id == sHash && (startIdx = c);
		}
		
		// INIT & TRANSLATE HEADER / FOOTER / HIDDEN ELEMENTS
		PLANG._transHeader();
		PLANG._transFooter();
		PLANG._transHiddenElts();
		PLANG._buildTicker();
		PLANG.buildNews();
		
		startIdx = startIdx || 0;
		
		// GA Track Page
		var _subID = ""; 
        if(Contents[startIdx].subcontents != undefined && Contents[startIdx].subcontents.length > 0){ _subID = Contents[startIdx].subcontents[0].id; }
        PET.track({type:'page',page:'/'+PLANG.lang+'/'+Contents[startIdx].id+'/'+_subID});
        
		// Init Road
		MainRoad.init(sHash,startIdx);
		MainStage.defineContentFormat();
		// Init Scenes
		MainStage.createScene(startIdx);	// Create scene (first or direct access)
		MainStage.stageX = Contents[startIdx].center[0];
        MainStage.stageY = Contents[startIdx].center[1];
        // MainStage.createBg(startIdx);		// Create background
        MainStage.wishVel[1] = -10;
        MainStage.enableScene(startIdx, !0);
		MainStage.positionElts(startIdx);
		MainStage.checkSceneSize(Contents[startIdx]);
		MainStage.resizeStaticElements();
		MainStage.resizeContents();
		MainStage.langWinSize();
		// Timer
        MainStage.frameTimer = setInterval(MainStage.onFrame, 16);
        MainStage.lastFrameTime = (new Date).getTime();
        Contents[startIdx].onHash(Hasher.getSubContent());
        // Coins Manager
        CoinsManager.init();
    },
	onResize: function(){
		MainStage.width = $(window).width();
		MainStage.height = $(window).height();
		MainStage.defineContentFormat();
		MainStage.resizeStaticElements();
		MainStage.checkSceneSize(Contents[MainStage.currScene]);
		MainStage.langWinSize();
    },
    langWinSize: function(){
    	if(!BrowserPokemon.isIpad()&&!BrowserPokemon.isIphone()){
    		$('#popup_leaving').css('left', $(window).width()/2-$('#popup_leaving').outerWidth()/2);
    		$('#popup_leaving').css('top', $(window).height()/2-$('#popup_leaving').outerHeight()/2);
    		$('.mdc').css('left', $(window).width()/2-$('.mdc').outerWidth()/2);
    		$('.mdc').css('top', $(window).height()/2-$('.mdc').outerHeight()/2);
    	}
    },
    defineContentFormat: function(){
    	if(MainStage.height < 800){ MainStage.contentformat = MainStage.RESIZE_SMALL; }
    	else { MainStage.contentformat = MainStage.RESIZE_BIG; }
    },
    resizeStaticElements: function(){
    	var _w = Math.ceil((MainStage.width-960)/2);
    	$(".footer .redsquare").css({"left":"0px", "width":_w+"px"});
    	// Logo
    	if(MainStage.height <= 800 || MainStage.width <= 1030){
    		$('.logo').css('width','132px');
    		$('#main_logo').css('height','80px');
    	} else if(MainStage.height > 700 || MainStage.width > 1030){
    		$('.logo').css('width','230px');
    		$('#main_logo').css('height','139px');
    	}
    	
    	// If height < 847px => apply resize content
    	MainStage.resizeContents();
    },
	resizeContents: function(){
		var _nCurScene = MainStage.currScene;
		var _nCurSubScene = Contents[MainStage.currScene].currentSubScene;
		// if subcontents
		if(Contents[MainStage.currScene].subcontents != undefined){ 
			if(Contents[MainStage.currScene].subcontents[_nCurSubScene].contentformat != MainStage.contentformat){
				Contents[MainStage.currScene].subcontents[_nCurSubScene].changeFormat();
				Contents[MainStage.currScene].subcontents[_nCurSubScene].contentformat = MainStage.contentformat;
			}
		} else { 
			if(Contents[MainStage.currScene].contentformat != MainStage.contentformat){
				Contents[MainStage.currScene].changeFormat();
				Contents[MainStage.currScene].contentformat = MainStage.contentformat;
			}
		}
	},
    onFrame: function () {
        var a = (new Date).getTime(),
            b = (a - MainStage.lastFrameTime) / 1E3;
        MainStage.lastFrameTime = a;
        if (MainStage.currScene != null) {
        	var a = Contents[MainStage.currScene],
                c, d = userX.inputVel();
        	if (d[1] != 0 || d[0] != 0){ 
            	for (c = 0; c <= 1; c++){ 
            		MainStage.wishVel[c] += d[c] * b;
            	}
            }
        	d = 900 * b;
        	for (c = 0; c <= 1; c++){
            	if( MainStage.wishVel[c] >= d ){
            		MainStage.wishVel[c] = d;
            	} else {
            		if(MainStage.wishVel[c] < -d){
            			MainStage.wishVel[c] = -d;
            		}
            	}
            }
            b *= MainStage.friction;
            for (c = 0; c <= 1; c++){
            	if(MainStage.wishVel[c] > b){
            		MainStage.wishVel[c] -= b
            	} else {  
            		if(MainStage.wishVel[c] < -b){ 
            			MainStage.wishVel[c] += b;
            		} else {
            			MainStage.wishVel[c] = 0;
            		}
            	}
            }
            if(MainStage.stageX >= a.center[0]){
            	b = a.nextScene(MainStage.currScene);
            } else {
            	b = a.prevScene(MainStage.currScene);
            }
            //b = MainStage.stageX >= a.center[0] ? a.nextScene(MainStage.currScene) : a.prevScene(MainStage.currScene);
            userX.enabled == !0 && (a = parseInt(b) >= 0 && typeof Contents[b] != "undefined" ? MainStage.centerStage(a.center, Contents[b].center) : a.center[1], MainStage.wishVel[1] -= (MainStage.stageY + MainStage.wishVel[1] - a) / 15);
            MainStage.panStage(MainStage.wishVel[0], MainStage.wishVel[1]);
            for (c = 0; c < MainStage.onFrameCallbacks.length; c++) MainStage.onFrameCallbacks[c].call()
        }
    },
    panStage: function (a, b) {
    	var c = Pokemon.autoMovement();
        a -= c[0];
        b -= c[1];
        a = a.toFixed(1);
        b = b.toFixed(1);
        
        if (!(a == 0 && b == 0)) {
        	var content = Contents[MainStage.currScene];
        	var d;
        	MainStage.stageX = MainStage.stageX + parseFloat(a);
        	MainStage.stageY = MainStage.stageY + parseFloat(b);
        	
        	if(a < 1000 && a > -1000 ){
	        	// Si move positif
	        	if (a > 0) {
	        		// Si position superieure a la scene courante
	        		var e = content.center[0] + content.size[0] / 2;
	        		if((MainStage.stageX + parseFloat(a)) >= e){
		            	d = content.nextScene(MainStage.currScene);
		            }
		        } else {
		        	// Move negatif
		        	if(a < 0){
		        		// Si position 
		        		e = content.center[0] - content.size[0] / 2;
		        		if(MainStage.stageX + parseFloat(a) < e){
		        			d = content.prevScene(MainStage.currScene);
		        		}
		        	}
		        }
	        	
	        	if (typeof d == "undefined" || d < 0){
	        		if(b > 0){
	        			e = content.center[1] + content.size[1] / 2; 
	        			if(MainStage.stageY + b >= e){
	        				d = MainStage.sceneAtPoint([MainStage.stageX + a, MainStage.stageY + b])
	        			}
	        		} else {
	        			if(b < 0){
	        				e = content.center[1] - content.size[1] / 2; 
	        				if(MainStage.stageY + b < e){ d = MainStage.sceneAtPoint([MainStage.stageX + a, MainStage.stageY + b]); }
	        			}
	        		}
	        	}
	        	if(parseInt(d) >= 0){
	        		if(MainStage.currScene != d){
	        			content = Contents[d];
	        			if(content.state < 2){ MainStage.createScene(d); }
	        			MainStage.enableScene(d);
	        		}
	        	}
        	}
        	
        	MainStage.positionElts();
        	MainStage.checkSceneSize(content);
        }
    },
    sceneAtPoint: function (a) {
        for (var b = 0; b < Contents.length; b++) if (a[0] < Contents[b].center[0] + Contents[b].size[0] / 2 && a[0] >= Contents[b].center[0] - Contents[b].size[0] / 2 && a[1] < Contents[b].center[1] + Contents[b].size[1] / 2 && a[1] >= Contents[b].center[1] - Contents[b].size[1] / 2) return b;
        return null;
    },
    checkSceneSize: function(curS) {
    	var sceneToCheck;
        
    	// MANAGE NEXT SCENE
    	sceneToCheck = curS.nextScene(MainStage.currScene);
        if((MainStage.stageX + (MainStage.width/2)) >= (curS.center[0] + (curS.size[0] / 2) - 500)){ 
        	if(parseInt(sceneToCheck) >= 0){ MainStage.createScene(sceneToCheck);
        	} else {
        		if(MainStage.stageX > curS.center[0] + 200) MainStage.wishVel[0] -= 10 * (MainStage.stageX - curS.center[0] * 0.015);
        	}
        } else {
        	if(parseInt(sceneToCheck) >= 0){
    			var _nextScene = Contents[sceneToCheck];
    			if((MainStage.stageX+(MainStage.width)) >= (_nextScene.center[0] - _nextScene.size[0]/2)){
	    			if(Contents[sceneToCheck].state >= 2) MainStage.hideScene(sceneToCheck);
	    		}
    		}
        }
        
        // MANAGE PREVIOUS SCENE
    	sceneToCheck = curS.prevScene(MainStage.currScene);
        if((MainStage.stageX - MainStage.width / 2) <= (500 + curS.center[0] + curS.size[0] / 2)){
        	if(parseInt(sceneToCheck) >= 0){ MainStage.createScene(sceneToCheck);
        	} else {
        		if(MainStage.stageX < curS.center[0] - 200) MainStage.wishVel[0] += 10 * (curS.center[0] - MainStage.stageX * 0.015);
        	}
        } else {
	    	if(parseInt(sceneToCheck) >= 0){
	    		var _prevScene = Contents[sceneToCheck];
	    		if((MainStage.stageX+(MainStage.width/2)) >= (_prevScene.center[0] + _prevScene.size[0])){
	    			if(Contents[sceneToCheck].state >= 2) MainStage.hideScene(sceneToCheck);
	    		}
	    	}
        }
    },
    /**
     * Create background
     * Auto position depending of the drect access
     */
    createBg: function(idx){
    	var elt = Background[0],
    		cont = $("#container"),
    		_bg = $('<img src="' + elt.img + '" />'),
    		_nLeft = 0,
    		_nTop = 0;
    	_bg.bind("load", MainStage.imgLoaded);
    	$(elt).data("c-idx", idx);
        elt.scene = idx;
        elt.DOMElement = _bg;
        $(elt).data("propIndex", [0,0].join(","));
        _bg.css({ visibility:"hidden", position:"absolute", zIndex:Math.floor(elt.zIndex * 10) });
        _bg.depth = 1 + (_bg.depth - 2) * MainStage.llaxability * 0.1;
        _bg.addClass("prop");
        // Position background
        _nLeft = 0-(MainStage.stageX*elt.depth);
        _nTop = MainStage.height - elt.size[1];
        _nLeft = _nLeft+"px";
        _nTop = _nTop+"px";
        $(_bg[0]).css('left',_nLeft);
        $(_bg[0]).css('top',_nTop);
        $(_bg[0]).css('visibility','visible');
        cont.append(_bg);
    },
    /**
     * Position background
     */
    positionBg: function(){
    	if(MainStage.currScene == (Contents.length-2)){
    		Background[0].depth = 1;
    	}
    	// Background
    	var elt = Background[0],
    		_bg = elt.DOMElement[0],
    		_nLeft = 0,
    		_nTop = 0,
    		_dX = MainStage.stageX*elt.depth;
    	if(_dX >= 0) _nLeft = 0-_dX;
    	_nTop = MainStage.height - elt.size[1];
        _nLeft = _nLeft+"px";
        _nTop = _nTop+"px";
    	$(_bg).css('left',_nLeft);
        $(_bg).css('top',_nTop);
    },
    /**
     * Create scene
     */
    createScene: function(idx){
    	if(Contents[idx] == "undefined" || typeof Contents[idx] == "undefined") return !1;
        var scene = Contents[idx];
        if (scene.state >= 1){ 
        	return MainStage.showScene(idx);
        }
        var cont = $("#container");
        scene.state = 2;
        // For every static elements
        for(i in scene.elts){
            var elt = scene.elts[i];
            var finalContent = null;
            var _src = '';
            if(elt.html){
            	// Translate
            	_src = PLANG.transReplaceScene(elt.html,idx);
            	finalContent = $("<div>" + _src + "</div>");
            	if(elt.html.indexOf("<img") >= 0){
            		finalContent.find("img").bind("load", MainStage.imgLoaded);
            	} else {
            		finalContent.css({top: -2E3, left: -2E3});
            		setTimeout(function () {MainStage.imgLoaded.call(finalContent.get(0))}, 800);
            	}
            } else {
            	// Translate
            	_src = PLANG.transReplaceScene(elt.img,idx);
            	finalContent = $('<img src="' + _src + '" />');
            	finalContent.bind("load", MainStage.imgLoaded);
            }	
            if(elt.extraStyle!=undefined) finalContent.css(elt.extraStyle);
            Pokemon.loading(1);
            $(elt).data("c-idx", idx);
            elt.scene = idx;
            elt.DOMElement = finalContent;
            $(elt).data("propIndex", [idx, i].join(","));
            finalContent.css({ 
            	visibility:"hidden", 
            	position:"absolute", 
            	zIndex:Math.floor(elt.zIndex * 10)
            });
            // Size
            if(elt.size != undefined){
            	var _nW = (elt.scale != undefined) ? (elt.size[0]*elt.scale): elt.size[0];
            	var _nH = (elt.scale != undefined) ? (elt.size[1]*elt.scale): elt.size[1];
            	finalContent.css({ width:_nW, height:_nH });
            }
            finalContent.depth = 1 + (finalContent.depth - 2) * MainStage.llaxability * 0.1;
            finalContent.addClass("prop");
            cont.append(finalContent);
        }
        
        /////// CREATE SUB-CONTENTS
        //var bSubContent = false;
        if(scene.subcontents != undefined){
	        if(scene.subcontents.length > 0){
	    //    	bSubContent = true;
	        	MainStage.createSubContent(idx);
	        }
	    } else {
	    	Contents[idx].changeFormat();
	    }
	    
        // Track page
        //if(!bSubContent) PET.track({type:'page','page':'/'+PLANG.lang+'/'+scene.id});
        Pokemon.sceneHandlers(null);
        scene.onCreated();
    },
    /**
     * Create a subcontent
     * 
     * And check direct access to sub content
     */
    createSubContent: function(pIdx){
    	// Get the subcontent hashtag
    	var _sSubHash = Hasher.getSubContent(),
    		idx = 0;
    	
    	if(_sSubHash.length > 0 && Contents[pIdx].id == Hasher.getMainContent()) {
    		for (var c = 0; c < Contents[pIdx].subcontents.length; c++){
				if (Contents[pIdx].subcontents[c].id == _sSubHash) {
					idx = c;
					break;
				}
			}
		}
    	
    	if(Contents[pIdx].subcontents[idx] == "undefined" || typeof Contents[pIdx].subcontents[idx] == "undefined") return !1;
    	var _subcontent = Contents[pIdx].subcontents[idx];
        var cont = $("#container");
        _subcontent.state = 2;
        
        // Save current scene
        Contents[pIdx].currentSubScene = idx;
        // Manage navigation
        MainStage.createSubNav(pIdx);
        
        var i = 0;
    	var _bShown = (i == 0) ? true: false;
    	var elt = _subcontent.elts[i];
    	var _cont = Contents[pIdx].DOMElement,
    		finalContent = elt.html;
    	// Translate subcontent
    	finalContent = PLANG.transReplaceSubcontent(finalContent,pIdx,idx);
    	
    	$('#subcontents'+pIdx).html(finalContent);
    	
    	if(_subcontent.elts[1] != undefined){
    		var _oPokImg = _subcontent.elts[1];
    		if(_oPokImg != undefined){
	    		var _sPokImg = $('<img src="' + _oPokImg.img + '" />');
	    		_sPokImg.css({	left:_oPokImg.pos[0],
	    						top:_oPokImg.pos[1],
	    						position:'absolute'});
	    		$('#pokemon_deco_'+pIdx).css({zIndex:Math.floor(_oPokImg.zIndex * 10)});
	    		if(_oPokImg.size!=undefined) $('#pokemon_deco_'+pIdx).css({width:_oPokImg.size[0], height:_oPokImg.size[1]});
	        	Contents[pIdx].elts[0].depth = _oPokImg.depth;
	        	$('#pokemon_deco_'+pIdx).append(_sPokImg);
	       	}
    	}
    	if(_subcontent.elts[2] != undefined){
    		var _oPokImg = _subcontent.elts[2];
    		if(_oPokImg != undefined){
	    		var _sPokImg = $('<img src="' + _oPokImg.img + '" />');
	    		_sPokImg.css({	left:_oPokImg.pos[0],
	    						top:_oPokImg.pos[1],
	    						position:'absolute'});
	    		$('#pokemon_deco_'+pIdx).css({zIndex:Math.floor(_oPokImg.zIndex * 10)});
	    		if(_oPokImg.size!=undefined) $('#pokemon_deco_'+pIdx).css({width:_oPokImg.size[0], height:_oPokImg.size[1]});
	        	Contents[pIdx].elts[0].depth = _oPokImg.depth;
	        	$('#pokemon_deco_'+pIdx).append(_sPokImg);
	       	}
    	}
    	// Dispatch event onCreated
    	//PET.track({type:'page','page':'/'+PLANG.lang+'/'+Contents[pIdx].id+'/'+_subcontent.id});
    	
    	Contents[pIdx].subcontents[idx].changeFormat();
    	Contents[pIdx].subcontents[idx].contentformat = MainStage.contentformat;
    	
    	_subcontent.onCreated();
    },
    /**
     * Position elements
     */
    positionElts: function (a) {
    	if (typeof a == "undefined") for (a = 0; a < Contents.length; a++) {
            if (!(Contents[a].state < 2)){ 
            	for (var b in Contents[a].elts){
            		MainStage.positionElement.call(Contents[a].elts[b]);
            	}
            	if(Contents[a].subcontents != undefined && Contents[a].subcontents.length > 0){
            		for(var _sc in Contents[a].subcontents){
            			for(var _sc_elt in Contents[a].subcontents[_sc].elts){
            				MainStage.positionElement.call(Contents[a].subcontents[_sc].elts[_sc_elt]);
            			}
            		}
            	}
            }
        } else for (b in Contents[a].elts) MainStage.positionElement.call(Contents[a].elts[b])
    },
    /**
     * Position element
     */
    positionElement: function () {
    	if (this.DOMElement != void 0) {
    		var a = this.DOMElement[0],
                b = this,
                sShown = "";
            
            // Get index of content / subcontent
            var _cIDX = $(b).data('c-idx');
            var _scIDX = $(b).data('sc-idx');
            var _bIsSubContent = (_scIDX != undefined) ? true: false;
            
            if (b.size === void 0) {
            	var d = [parseFloat(a.offsetWidth), parseFloat(a.offsetHeight)];
            	if (d[0] > 0 && d[1] > 0) b.size = d;
                else {
                    setTimeout(function () { MainStage.positionElement.call(b) }, 500);
                    return
                }
            }
            // Get parent
            var _parentElt;
            if( _bIsSubContent ) _parentElt = Contents[_cIDX].subcontents[_scIDX];
            else _parentElt = Contents[_cIDX];
            
            // If subcontent, check if visible or not
            if(_bIsSubContent) sShown = (Contents[_cIDX].currentSubScene == _scIDX) ? sShown = "visible": sShown = "hidden";
            
            //var d = Contents[b.scene];
            
            var e = (MainStage.stageY - (_parentElt.center[1] + b.pos[1])) * b.depth;
            var nLeft = MainStage.width / 2 - b.size[0] / 2 - (MainStage.stageX - (_parentElt.center[0] + b.pos[0])) * b.depth + "px";
            var nTop = "0px";
            if(b.vcenter != undefined && b.vcenter){
            	var nTop = MainStage.height / 2 - b.size[1] / 2 - e + "px";		// CENTER IN THE VERTICAL CENTER
            } else {
            	var nTop = MainStage.height + b.pos[1] + "px"; // CENTER ON THE BOTTOM
            }
            
            $(a).css('left',nLeft);
            $(a).css('top',nTop);
            if (b.loaded != !0){
            	var sVisibility = ( sShown != "" ) ? sShown : "visible"; 
            	$(a).css('visibility', sVisibility);
            	$(a).css('position', "absolute");
            	b.loaded = !0; 
            	MainStage.panStage(0, -5);
            }
            if( sShown != "" ){
            	$(a).css('visibility', sShown);
            }
        }
    },
    /**
     * img loaded
     */
    imgLoaded: function () {
    	var elt = $(this).closest(".prop");
        MainStage.positionProp(elt);
        Pokemon.loading(-1);
    },
    positionProp: function (a) {
        if ((a = a.data("propIndex")) && a.length > 0) a = a.split(","), a = Contents[a[0]].elts[a[1]], typeof a == "object" && MainStage.positionElement.call(a)
    },
    showScene: function (a) {
        if (!(Contents[a].state >= 2)) {
            var b = $("#container"),
                c;
            for (c in Contents[a].elts) b.append(Contents[a].elts[c].DOMElement);
            Contents[a].state = 2;
        }
    },
    hideScene: function (a) {
    	if (typeof Contents[a] == "undefined") return !1;
        if (Contents[a].state < 2) return !1;
        var b = Contents[a].elts,
            c;
        for(c in b){
        	Contents[a].elts[c].DOMElement.detach();
        }
        Contents[a].state = 1;
    },
    enableScene: function (a, b) {
        if (!b) Contents[MainStage.currScene].onDeactivate();
        var c = Contents[a];
        MainStage.currScene = parseInt(a);
        // Get the subcontent hashtag
    	var _sSubHash = Hasher.getSubContent(),
    		idx = 0;
    	if(_sSubHash.length > 0 && Contents[a].id == Hasher.getMainContent()) {
    		for (var sc = 0; sc < Contents[a].subcontents.length; sc++){
				if (Contents[a].subcontents[c].id == _sSubHash) {
					idx = sc;
					break;
				}
			}
		}
        MainStage.currSubScene = idx;
        // Change step
        MainRoad.changeStep(c.id, a);
        if (!b) Hasher.setHash(c.id);
        c.onActivate(b);
        // Change sub-scene
        if(c.subcontents != undefined && c.subcontents.length > 0){
        	c.subcontents[MainStage.currSubScene].onActivate();
        }
        //PET.track({type:'page','page':'/'+PLANG.lang+'/'+c.id+'/'+c.subcontents[MainStage.currSubScene].id});
        userX.setEnabled(1);
    },
    centerStage: function(a, b){
    	return -(b[1] - a[1]) / 2 * (Math.cos(Math.PI * ((MainStage.stageX - a[0]) / (b[0] - a[0]))) - 1) + a[1]
    },
    
    
    /**
     * SUB NAVIGATION MANAGER
     */
    createSubNav: function(contentIdx){
    	var _curIdx = contentIdx;
    	if(Contents[_curIdx].subcontents != undefined){
	    	if(Contents[_curIdx].subcontents.length > 1){
	    		if(Contents[_curIdx].currentSubScene == 0){ $('#subnav_'+_curIdx+' .down').removeClass('down-click').addClass('down-disabled'); }
	    		else{ $('#subnav_'+_curIdx+' .down').removeClass('down-disabled'); }
			
	        	if(Contents[_curIdx].currentSubScene == (Contents[_curIdx].subcontents.length-1)){ $('#subnav_'+_curIdx+' .up').removeClass('up-click').addClass('up-disabled'); }
	        	else{ $('#subnav_'+_curIdx+' .up').removeClass('up-disabled'); }
	        	
	    		$('#subnav_'+_curIdx+' .up').live(userX.clickEvt,function(){
	    			$(this).removeClass('up-click');
	    			MainStage.moveToSubContent(_curIdx, 1);
	    		});
	    		$('#subnav_'+_curIdx+' .down').live(userX.clickEvt,function(){
	    			$(this).removeClass('up-click');
	    			MainStage.moveToSubContent(_curIdx, -1);
	    		});
	    		
	    		$('#subnav_'+_curIdx+' .up').live(userX.rolloverEvt,function(){ if($(this).hasClass('up-disabled') != true){ $(this).addClass('up-click'); } });
	    		$('#subnav_'+_curIdx+' .down').live(userX.rolloverEvt,function(){ if($(this).hasClass('down-disabled') == false){ $(this).addClass('down-click'); } });
	    		$('#subnav_'+_curIdx+' .up').live(userX.rolloutEvt,function(){ if($(this).hasClass('up-disabled') != true){ $(this).removeClass('up-click'); } });
	    		$('#subnav_'+_curIdx+' .down').live(userX.rolloutEvt,function(){ if($(this).hasClass('down-disabled') == false){ $(this).removeClass('down-click'); } });
	    	}
    	}
    },
    manageSubNav: function(contentIdx){
    	var _curIdx = contentIdx;
    	if(Contents[_curIdx].currentSubScene == 0){ $('#subnav_'+_curIdx+' .down').removeClass('down-click').addClass('down-disabled'); }
    	else{ $('#subnav_'+_curIdx+' .down').removeClass('down-disabled'); }
	
    	if(Contents[_curIdx].currentSubScene == (Contents[_curIdx].subcontents.length-1)) $('#subnav_'+_curIdx+' .up').removeClass('up-click').addClass('up-disabled');
    	else $('#subnav_'+_curIdx+' .up').removeClass('up-disabled');
    },
    // Change the sub-content
    moveToSubContent: function(cIdx, w){
    	// If navigation disabled
    	if(!userX.enabled){
    		return false;
    	}
    	// If current subscene is the first one, can't go higher
    	if((Contents[cIdx].currentSubScene == 0 && w == -1) || (Contents[cIdx].currentSubScene == (Contents[cIdx].subcontents.length-1) && w == 1)){ return false; }
    	userX.setEnabled(0);	// Disable userX
    	var _nMaxElts = Contents[cIdx].subcontents[Contents[cIdx].currentSubScene].elts.length - 1;
    	
    	// If go deeper ( make explosion )
    	if(w == 1){
    		// Children of the element
    		var	_children = $('#subcontents'+cIdx).children();
    		// Power Atom
    		$('#power_atom_' + cIdx).show( "scale", {percent:170, easing:'easeOutBack'}, 400 );
    		
    		// Animate each children
    		for(var d=0;d<_children.length;d++){
    			// Animate element
    			var _animType = ExplosionTypesFadeOut[d];
    			if(d < (_children.length-1)){
    				_children.eq(d).animate(_animType,ExplosionTimer[0],function(){
    					$(this).remove();
    				});
	    		} else if(d == (_children.length-1)){
	    			_children.eq(d).animate(_animType,ExplosionTimer[0],function(){
	    				$(this).remove();
	    				Contents[cIdx].subcontents[Contents[cIdx].currentSubScene].onDeactivate();
	    				Contents[cIdx].currentSubScene += 1;
		    			MainStage.manageSubNav(cIdx);
		    	    	MainStage.showSubContent(cIdx);
		    	    	$('#power_atom_' + cIdx).hide();
		    	    });
	    		}
    		}
    	}
    	// Go higher ( no explosion, just fade in )
    	else {
    		// Children of the element
    		var	_children = $('#subcontents'+cIdx).children();
    		for(var d=0;d<_children.length;d++){
    			var _animType = NoExplosionTypesFadeOut[d];
    			if(d < (_children.length-1)){
	    			_children.eq(d).animate(_animType,ExplosionTimer[0]);
	    		} else if(d == (_children.length-1)){
	    			_children.eq(d).animate(_animType,ExplosionTimer[0],function(){
	    				Contents[cIdx].subcontents[Contents[cIdx].currentSubScene].onDeactivate();
	    				Contents[cIdx].currentSubScene -= 1;
		    			MainStage.manageSubNav(cIdx);
		    	    	MainStage.showSubContent(cIdx);
		    	    });
	    		}
    		}
    	}
    	
    	// Animate background elements
    	MainStage.scaleBgElements(cIdx,w);
    	
    	// Extra content ( Pokemon character )
    	$('#pokemon_deco_'+cIdx).animate({'opacity':'0'},200);
    },
    /**
     * Scale background elements
     */
    scaleBgElements: function(cIdx,way){
    	var _nSc = 0.02;
    	for(var e=0;e<Contents[cIdx].elts.length;e++){
    		if(Contents[cIdx].elts[e].scale != undefined){
    			if(Contents[cIdx].elts[e].scale){
    				var elt = Contents[cIdx].elts[e].DOMElement;
    				var eltAlign = Contents[cIdx].elts[e].scaleAlign;
    				var deltaTop = Contents[cIdx].elts[e].deltaTop || 0;
    				var deltaLeft = Contents[cIdx].elts[e].deltaLeft || 0;
    				// Get new width / height
    				var _originW = Contents[cIdx].elts[e].size[0],
    					_originH = Contents[cIdx].elts[e].size[1],
    					_prevW = $(elt).width(),
    					_prevH = $(elt).height(),
    					_prevL = $(elt).css('margin-left'),
    					_prevT = $(elt).css('margin-top'),
    					_dW = Math.round(_originW*_nSc),
    					_dH = Math.round(_originH*_nSc),
    					_newW,
    					_newH,
    					_newL,
    					_newT;
    				_newW = (way == 1) ? (_prevW+_dW) : (_prevW-_dW);
    				_newH = (way == 1) ? (_prevH+_dH) : (_prevH-_dH);
    				_newL = (way == 1) ? (Number(_prevL.replace("px", "")) - _dW - deltaLeft)/2 : (Number(_prevL.replace("px", "")) + _dW + deltaLeft)/2;
    				_newT = (way == 1) ? (Number(_prevT.replace("px", "")) - deltaTop) : (Number(_prevT.replace("px", "")) + deltaTop);
    				
    				$(elt).css({'width':_newW+'px', 'height':_newH+'px', 'margin-left':_newL+'px', 'margin-top':_newT+'px'});
    			}
    		}
    		if(Contents[cIdx].elts[e].repos != undefined){
    			var elt = Contents[cIdx].elts[e].DOMElement,
    				_delta = (way == 1) ? 20 : -20,
    				_prevL,
    				_newL;
    			_prevL = $(elt).css('margin-left');
    			if(Contents[cIdx].elts[e].reposAlign == 'left'){
    				_newL = (Number(_prevL.replace("px", ""))) - _delta;
    			} else if(Contents[cIdx].elts[e].reposAlign == 'right'){
    				_newL = (Number(_prevL.replace("px", ""))) + _delta;
    			}
    			$(elt).css('margin-left',_newL+'px');
    		}
    	}
    },
    /**
     * show sub content
     */
    showSubContent: function(cIdx){
    	var _curSC = Contents[cIdx].currentSubScene,
    		_oPokImg = null,
    		_oPokImg2 = null;
    	if(Contents[cIdx].subcontents[_curSC].elts[1] != undefined){
    		_oPokImg = Contents[cIdx].subcontents[_curSC].elts[1];
    	}
    	if(Contents[cIdx].subcontents[_curSC].elts[2] != undefined){
    		_oPokImg2 = Contents[cIdx].subcontents[_curSC].elts[2];
    	}
    	
    	// Translate subcontent
    	var _src = PLANG.transReplaceSubcontent(Contents[cIdx].subcontents[_curSC].elts[0].html, cIdx, _curSC);
    	// Sub-content
        $('#subcontents'+cIdx).css('opacity','0');
		$('#subcontents'+cIdx).html(_src);
		if(_oPokImg != null){
			$('#pokemon_deco_'+cIdx).html('');
			$('#pokemon_deco_'+cIdx).css('opacity','0');
			var _sPokImg = $('<img src="' + _oPokImg.img + '" />');
			_sPokImg.css({	left:_oPokImg.pos[0],
							top:_oPokImg.pos[1],
							position:'absolute'});
			_sPokImg.bind('load',MainStage.imgLoaded);
			$('#pokemon_deco_'+cIdx).css({zIndex:Math.floor(_oPokImg.zIndex * 10)});
			if(_oPokImg.size != undefined){ $('#pokemon_deco_'+cIdx).css({width:_oPokImg.size[0], height:_oPokImg.size[1]}); }
			Contents[cIdx].elts[0].depth = _oPokImg.depth;
			$('#pokemon_deco_'+cIdx).append(_sPokImg);
		}
		if(_oPokImg2 != null){
			var _sPokImg = $('<img src="' + _oPokImg2.img + '" />');
			_sPokImg.css({	left:_oPokImg2.pos[0],
							top:_oPokImg2.pos[1],
							position:'absolute'});
			_sPokImg.bind('load',MainStage.imgLoaded);
			$('#pokemon_deco_'+cIdx).css({zIndex:Math.floor(_oPokImg2.zIndex * 10)});
			if(_oPokImg2.size != undefined){ $('#pokemon_deco_'+cIdx).css({width:_oPokImg2.size[0], height:_oPokImg2.size[1]}); }
			Contents[cIdx].elts[0].depth = _oPokImg2.depth;
			$('#pokemon_deco_'+cIdx).append(_sPokImg);
		}
		$('#pokemon_deco_'+cIdx).animate({'opacity':'1'},ExplosionTimer[1]);
		$('#subcontents'+cIdx).animate({'opacity':'1'},ExplosionTimer[1],function(){ 
			userX.setEnabled(1); 
			// Track event
			PET.track({type:'page','page':'/'+PLANG.lang+'/'+Contents[cIdx].id+'/'+Contents[cIdx].subcontents[_curSC].id});
			Contents[cIdx].subcontents[_curSC].onActivate();
			
			Contents[cIdx].subcontents[_curSC].changeFormat();
	    	Contents[cIdx].subcontents[_curSC].contentformat = MainStage.contentformat;
		});
    },
    imgLoaded: function(){
    	
    }
}

$.fn.extend({
    compatFadeIn: function (a, b) {
        if (Pokemon.fx.opacity) return $(this).fadeIn(a, b);
        else {
            var c = $(this).css("display", "block");
            typeof b == "function" && b.call();
            return c
        }
    },
    compatFadeOut: function (a, b) {
        if (Pokemon.fx.opacity) return $(this).fadeOut(a, b);
        else {
            var c = $(this).css("display", "none");
            typeof b == "function" && b.call();
            return c
        }
    },
    compatFaded: function (a) {
        return Pokemon.fx.opacity ? $(this).css("opacity", a ? "0.5" : "1") : $(this).css("display", a ? "none" : "block")
    }
});

// User Experience
userX = {
	KEY_UP_PG_CODE: 33,
	KEY_DOWN_PG_CODE: 34,
    KEY_LEFT_CODE: 37,
    KEY_UP_CODE: 38,
    KEY_RIGHT_CODE: 39,
    KEY_DOWN_CODE: 40,
    active: [],
    enabled: !0,
    deltaSpeed: [0, 0],
    touchCoords: [0, 0],
    touchPos: [],
    keyVel: 100,
    clickEvt: 'click',
    pressEvt: 'mousedown',
    rolloverEvt: 'mouseover',
    rolloutEvt: 'mouseout',
    init: function(){
    	// Click event if tablet bowser
    	if(BrowserPokemon.isIpad() || BrowserPokemon.isIphone()){
    		userX.clickEvt = 'touchstart';
    	}
    },
    inputVel: function () {
        var a = userX.keyVel,
            b = userX.deltaSpeed,
            c;
        for (c in userX.active){ 
        	if(userX.active[c] != !1){
        		switch (parseInt(c)) {
	        		case userX.KEY_LEFT_CODE:
	                    b[0] -= a;
	                    break;
	                case userX.KEY_UP_CODE:
	                    b[1] -= a;
	                    break;
	                case userX.KEY_RIGHT_CODE:
	                    b[0] += a;
	                    break;
	                case userX.KEY_DOWN_CODE:
	                    b[1] += a;
	                    break;
	                case 36:
	                    Pokemon.moveToScene(MainStage.currScene);
        		}
        	}
        }
        userX.deltaSpeed = [0, 0];
        return b;
    },
	onMouseWheel: function(event,delta){
		if(userX.enabled != !1){
			if(delta > 0){ 
				userX.deltaSpeed[0] -= Math.log(delta * 100) * 500;
			} else {
				userX.deltaSpeed[0] += Math.log(-delta * 100) * 500;
			}
		}
	},
	onKeyDown: function(p){
		if (!(p.which < userX.KEY_UP_PG_CODE || p.which > userX.KEY_DOWN_CODE)){ 
			if(p.preventDefault(), userX.enabled != !1){ 
				switch(p.which) {
					case userX.KEY_LEFT_CODE:
						userX.deltaSpeed[0] -= Math.log(2 * 100) * 500;
						//Pokemon.moveRelativeScene(-1);
						break;
			        case userX.KEY_RIGHT_CODE:
			        	userX.deltaSpeed[0] += Math.log(2 * 100) * 500;
			            //Pokemon.moveRelativeScene(1);
			            break;
			        case userX.KEY_UP_CODE:
			            Pokemon.moveToSubScene(1);
			            break;
			        case userX.KEY_DOWN_CODE:
			            Pokemon.moveToSubScene(-1);
			            break;
			        default:
			            userX.active[p.which] = !0;
		        }
			}
		}
	},
	onKeyUp: function(p){
		//DB.t('userX.onKeyDown::which:' + p.which);
	},
	onTouchMove: function(evt){
		if(userX.enabled != !1){
			evt.preventDefault();
			var o = evt.originalEvent.touches[0];
			var dX = userX.touchCoords[0]-o.pageX;
			var coords = [dX, userX.touchCoords[1] - evt.pageY];
			userX.touchCoords = [o.pageX, o.pageY];
			userX.deltaSpeed[0] = (coords[0] * 50);
		}
	},
	onTouchStart: function(evt){
		if(userX.enabled != !1){
			evt.preventDefault();
			var obj = evt.originalEvent.touches[0];
			userX.touchCoords = [obj.pageX, obj.pageY];
		}
	},
	onTouchEnd: function(evt){
		evt.preventDefault();
	    userX.touchCoords = [null, null];
	},
	setEnabled: function (a) {
        userX.enabled = a;
        if (a == !1) userX.active = [];
    },
    clearInputs: function () {
        userX.active = [];
    }
}



/*
 * Main Road
 */
MainRoad = {
	_curStep: "",
	_onClass: "on",
	_onEndClass: "end",
	_onEndClassLastItem: "end_last",
	init: function(s,idx){ MainRoad.changeStep(s,idx); },
	changeStep: function(s,idx){
		if(s != MainRoad._curStep){
			var _num = idx,
				$_aLis = $('.footer .nav').find('li'),
				_currLi = $_aLis[2*idx],
				_currDivider = $_aLis[(2*idx)+1],
				_bLastOne = (idx == (Contents.length-1)) ? true : false;
			$(_currLi).addClass(MainRoad._onClass);	// Turn background to red
			// Turn divider to red
			// If last item selected
			if(_bLastOne){ 
				$(_currDivider).removeClass(MainRoad._onEndClass).addClass(MainRoad._onClass+" "+MainRoad._onEndClassLastItem);
			} else { 
				$('.footer .nav').find('li').last().removeClass(MainRoad._onClass+" "+MainRoad._onEndClassLastItem).addClass(MainRoad._onEndClass);
				$(_currDivider).addClass(MainRoad._onClass+" "+MainRoad._onEndClass);
			}
			$(_currDivider).prevAll().addClass(MainRoad._onClass).removeClass(MainRoad._onEndClass);
			$(_currDivider).nextAll().not(':last').removeClass(MainRoad._onClass+" "+MainRoad._onEndClass);
			
			MainRoad._curStep = s;
		}
	}
}


LangManager = {
	dropCookie: function(lang){
		document.cookie = "lang="+lang;
	}
}


/*
 * Browser
 */
BrowserPokemon = {
	isMozilla: function(){ return $.browser.mozilla; },
	isIE: function(){ return $.browser.msie; },
	isIE7: function() { return ($.browser.msie && parseInt($.browser.version) == 7)},
	isIE8: function() { return ($.browser.msie && parseInt($.browser.version) == 8)},
	isIpad: function(){ return (navigator.userAgent.match(/iPad/i)); },
	isIphone: function(){ return (navigator.userAgent.match(/iPhone/i)); }
}



$(function(){
	$('.addthis_button_facebook').click(function(){
		PET.track({type:'event',category:PET.cat_social, action:PET.act_facebook, label:'/'+PLANG.lang+'/'+Contents[MainStage.currScene].id});
	});
	$('.addthis_button_twitter').click(function(){
		PET.track({type:'event',category:PET.cat_social, action:PET.act_twitter, label:'/'+PLANG.lang+'/'+Contents[MainStage.currScene].id});
	});
	$('.addthis_button_google_plusone').live('click',function(){
		PET.track({type:'event',category:PET.cat_social, action:PET.act_googleplus, label:'/'+PLANG.lang+'/'+Contents[MainStage.currScene].id});
	});
	$('.addthis_button_digg').click(function(){
		PET.track({type:'event',category:PET.cat_social, action:PET.act_digg, label:'/'+PLANG.lang+'/'+Contents[MainStage.currScene].id});
	});
	$('.addthis_button_myspace').click(function(){
		PET.track({type:'event',category:PET.cat_social, action:PET.act_myspace, label:'/'+PLANG.lang+'/'+Contents[MainStage.currScene].id});
	});
	$('.addthis_button_reddit').click(function(){
		PET.track({type:'event',category:PET.cat_social, action:PET.act_reddit, label:'/'+PLANG.lang+'/'+Contents[MainStage.currScene].id});
	});
	$('.addthis_button_email').click(function(){
		PET.track({type:'event',category:PET.cat_social, action:PET.act_email, label:'/'+PLANG.lang+'/'+Contents[MainStage.currScene].id});
	});
	
	$('a.tracklinks').click(function(){
		if( $(this).attr('id') == 'link_esrb10' ){ PET.track({type:'event',category:PET.cat_outbound, action:'ESRB rating', label:$(this).attr('href')}); }
		else if( $(this).attr('id') == 'link_esrbkids' ){ PET.track({type:'event',category:PET.cat_outbound, action:'ESRB privacy certificed', label:$(this).attr('href')}); }
		else if( $(this).attr('id') == 'link_tpc' ){ PET.track({type:'event',category:PET.cat_outbound, action:'TPCi', label:$(this).attr('href')}); }
	});
	
	$('a.external').live(userX.clickEvt, function() {
		// Stop Video if first scene
		if(MainStage.currScene == 0){ 
			if(!BrowserPokemon.isIpad()&&!BrowserPokemon.isIphone()){
				$("#home_player")[0].stopVideo();
			}
		}
		
		if(BrowserPokemon.isIpad()||BrowserPokemon.isIphone()){
			$('#overlay').css('position', 'absolute');
			if(isiPad) $('#overlay').css('height', '2300px');
			if(isiPhone) $('#overlay').css('height', '2650px');
			$('#overlay').css('width', '990px');
			$('#popup_leaving').css('position', 'absolute');
			$('#popup_leaving').css('top', ($(window).scrollTop() + 100) + 'px');
			$('#popup_leaving').css('left', 990/2-$('#popup_leaving').outerWidth()/2);
		}
		$('#overlay').css('opacity', 0).show().animate({'opacity': 0.9}, 'normal');
		$('#popup_leaving').css('opacity', 0).show().animate({'opacity': 1.0}, 'normal',
			function() {
				if ($.browser.msie) {
					$('#popup_leaving').each(function(){this.style.removeAttribute('filter');})
				}
			}
		);
		$('#popup_leaving #continue_leaving').attr('href', $(this).attr('href'));
		
		// Pixel & Pointroll
		if( $(this).attr('id') == 'boxart_link' ){
			// Track event
			PET.track({type:'event',category:PET.cat_outbound, action:'Buy Now', label:$(this).attr('href')});
			
			var params = new Array();
			params[0]='id=8345b4e5-aab0-46c8-aab0-8f5f4a0dde53';
			params[1]='type=Pokemon_Rumble_Buy_Now';
			params[2]='val=0.0';
			params[3]='orderId=';
			params[4]='promoCode=';
			params[5]='valueCurrency=USD';
			k_trackevent(params,'537');
		} 
		else if( $(this).attr('id') == 'link_nintendo' ){ PET.track({type:'event',category:PET.cat_outbound, action:'Nintendo', label:$(this).attr('href')}); }
		else if( $(this).attr('id') == 'link_nintendo3ds' ){ PET.track({type:'event',category:PET.cat_outbound, action:'Nintendo 3DS', label:$(this).attr('href')}); }
		return false;
	});
	// Translations
	$('.country a').click(function() {
		// Stop Video if first scene
		if(MainStage.currScene == 0){ 
			if(!BrowserPokemon.isIpad()&&!BrowserPokemon.isIphone()){ $("#home_player")[0].stopVideo(); } 
		}
		
		if(BrowserPokemon.isIpad()||BrowserPokemon.isIphone()){
			$('#overlay').css('position', 'absolute');
			if(BrowserPokemon.isIpad()) $('#overlay').css('height', '2300px');
			if(BrowserPokemon.isIphone()) $('#overlay').css('height', '2650px');
			$('#overlay').css('width', '990px');
			$('.mdc').css('position', 'absolute');
			$('.mdc').css('top', ($(window).scrollTop() + 100) + 'px');
			$('.mdc').css('left', 990/2-$('.md ').outerWidth()/2);
		}
		$('#overlay').css('opacity', 0).show().animate({'opacity': 0.9}, 'normal');
			$('.mdc').css('opacity', 0).show().animate({'opacity': 1.0}, 'normal',
			function() {
				if ($.browser.msie) {
					$('.mdc').each(function(){this.style.removeAttribute('filter');})
				}
			}
		);
		return false;
	});
	
	$('.mdex_close a, .mdex_buttons .cancel, .mdex_buttons .continue, #popup_leaving #continue_leaving, #popup_leaving #cancel_leaving').click(function() {
		$('#overlay').stop().animate({'opacity': 0}, 'normal', function() {$(this).hide()});
		$('#popup_leaving').stop().animate({'opacity': 0}, 'normal', function() {$(this).hide()});
		$('.mdc').stop().animate({'opacity': 0}, 'normal', function() {$(this).hide()});
		if (!$(this).hasClass('continue')) {		
			return false;
		}else{
			
		}
	});
});
