var MinigameLoader = {   
    wait: 10000,
    wait4ad: {},
    gamesDetails: {},
    attributes: {},
    iCode: '',
	
	/**** Send GameID to minigameAction and update after successfull response divLayer 'GamesMiniLayer' ****/ 
	
	loadGame: function(gameID, iCode){
		var bodyHeight =  document.body.offsetHeight;
		var viewportDim = document.viewport.getDimensions();
	    var getScroll = document.viewport.getScrollOffsets();
		var scrollHeight = parseInt(viewportDim.height) + getScroll.top;
		var scrollWidth = parseInt(viewportDim.width) + getScroll.left;
		
		/**** If Box is already open: overwrite the actual scrollOffsets (height only) with the previous datas ****/
		if($('GamesMini_Box')){
            getScroll.top = parseInt($('GamesMini_Box').style.top) - 130;
		}
		
		//For Tracking Minigames
	    var tmp = document.location.pathname.split("/");
	    var page = false;
	    
	    if(tmp[2] == 'list') page = 'list';
	    else if(tmp[1] && !tmp[2]) page = 'landing';
	    else if(!tmp[1] && !tmp[2]) page = 'home';
		
		new Ajax.Request("index.es", {
		    postBody: "action=minigame&gameID=" + gameID + "&bodyHeight=" + bodyHeight + "&scrollHeight=" + scrollHeight + "&scrollTop=" + getScroll.top + "&scrollLeft=" + getScroll.left + "&scrollWidth=" + scrollWidth + "&iCode=" + iCode + "&ref=" + page,	    
		    onSuccess: function(r) {
		        var html = r.responseText;
		        Index.showPageMilkyShadow();
		        Event.observe(document, "keypress", MinigameLoader.keyPress);
		        $('GamesMiniLayer').removeClassName('hidden');
		        $('GamesMiniLayer').update(html);
		        MinigameLoader.doPositioning();
		    } 
		});
	},
	
	/**** Kill Lightbox by pressing on ESC ****/
	keyPress: function(e) {
    	if(e.keyCode == 27) {
    		MinigameLoader.kill_lightBox();
    	}
	},
	
	kill_lightBox: function() {
	    clearTimeout(this.wait4ad);
	    $('GamesMiniLayer').update('');
		$('GamesMiniLayer').addClassName('hidden');
		Index.hidePageMilkyShadow();
	},
	
	/**** Load Minigame write stuff in globalVars + setTimeout show Ad ****/
	GameMiniLoad: function(gameID, name, url, width, height, partnerID, rewriteURL, iCode) {
	    this.gameDetails = {
	        gameID: gameID,
	        name: name,
			url: url,  
			width: width,
			height: height,
			partnerID: partnerID,
			rewriteURL: rewriteURL,
			iCode: iCode
		};
	    this.wait4ad = setTimeout('MinigameLoader.GameMiniStart()',this.wait);
	},
	
	/**** DO Positioning of various stuff ****/
	doPositioning: function(){
	    
        //set titleBox
        $vDim = $('GamesMiniTitle').getDimensions();
        $('GamesMiniTitle').style.width = $vDim.width + 20 + "px";  
        $('GamesMiniTitleContainer').style.width = $vDim.width + 40 + "px";  
        
        //set gameBox
        $vDim = $('GamesMiniMiddleInsideTop').getDimensions(); 
        $('GamesMiniMiddleContainer').style.width = $vDim.width + 34 + "px";
        
	},
	
	/**** Check Advertising when Lightbox is loaded ****/
	checkAdvertising: function(){
        var adHeight = this.readCookie('mgAd','AdBoxHeight');
        if(adHeight < 10){
            //No Ad Loaded start game directly
            clearTimeout(this.wait4ad); 
            MinigameLoader.GameMiniStart();   
        }
	},
	
	/**** START MINIGAME ****/
	GameMiniStart: function() {
	    clearTimeout(this.wait4ad);
	    $('flashgame').update('');
        //set InlayGameBox to normal size if gameWidth < 340
        if($('flashgame').getHeight() < $('GamesMiniMiddleContainerLeft').getHeight()){
            $('GamesMiniMiddleContainerLeft').style.height = $('flashgame').getHeight() + 'px';
            $('GamesMiniMiddleContainerRight').style.height = $('flashgame').getHeight() + 'px';
        }
        
	    if(this.gameDetails['partnerID'] == 'geewa'){
	        if(this.gameDetails['iCode'] == 'undefined') this.gameDetails['iCode'] = '';
	        supplierUpdate =  "<script type=\"text/javascript\">";
			supplierUpdate += "EmbedGame(\'flashgame\', '"+this.gameDetails['rewriteURL']+"', '"+glob.language+"', '"+glob.portalName+"', '"+glob.portalUserName+"', '"+this.gameDetails['gameID']+"', '"+GlobalFunctions.urlEncode(this.gameDetails['name'])+"', '"+this.gameDetails['iCode']+"');";
			supplierUpdate += "</script>";
			$('flashgame').update(supplierUpdate);
	    }else{
	        this.attributes = {
    			id: "GameMini",  
    			name: "GameMini",
    			style: "float:left; padding: 0; margin: 0"
    		};
    		this.params = {
    			wmode: "opaque"
    		};
    		swfobject.embedSWF(this.gameDetails['url'], "flashgame", this.gameDetails['width'], this.gameDetails['height'], "9.0.0", "expressInstall.swf", "false", "false", this.attributes);
	    }
	},
	
	/**** show gameButtons overlay when mouseover ****/
	showGameOverlay: function (layer) {
	    if ($(layer + '_overlay').hasClassName('hidden')){
    	    var boxPos = $('GamesMini_Box').cumulativeOffset();
            var pos = $(layer).cumulativeOffset();
            //Show gfxOverlay
            $(layer + '_overlay').style.left = pos.left - boxPos.left  + 'px';
            $(layer + '_overlay').style.top = pos.top - boxPos.top + 'px';  
            $(layer + '_overlay').removeClassName('hidden');
            //Show fontOverlay
            $(layer + '_font').style.left = pos.left - boxPos.left  + 'px';
            $(layer + '_font').style.top = pos.top - boxPos.top + 'px';  
            $(layer + '_font').removeClassName('hidden');  
	    }else{
	       //hide overlays
	       $(layer + '_font').addClassName('hidden');
	       $(layer + '_overlay').addClassName('hidden');
	           
	    }
	},
		
	scrollGames: function(mode) {
	   var gameID = 0; 
       if(mode == 'next'){
           gameID = $('nextID').value;
       }else if(mode == 'prev'){
           gameID = $('prevID').value;
       }              
       if(gameID != '') {
       	  $('nextGames').onclick = ' ';
       	  $('prevGames').onclick = ' ';  
		   new Effect.Opacity("fadeGamesBox", {from: 1.0, to: 0.0, duration: 0.5, afterFinish: function(e) {
	             MinigameLoader.setGamesLoader('GamesMiniAjaxLoader');
				 new Ajax.Request("index.es", {
	                postBody: "action=minigame&gameID=" + gameID +  "&behavior=refreshGames&mode=" + mode,	    
	                onSuccess: function(r) {	                	
	                    var html = r.responseText;
	                    $('fadeGamesBox').update(html);
	                    $('GamesMiniAjaxLoader').addClassName('hidden');
	                     new Effect.Opacity("fadeGamesBox", {from: 0.0, to: 1.0, duration: 0.5});  
	                     $('nextGames').onclick = function() {MinigameLoader.scrollGames('next');}; 
       					 $('prevGames').onclick = function() {MinigameLoader.scrollGames('prev');};          					       
	                } 
	            });
			}});
       }
	},
	
	//Send invitation to user
	sendInvitation: function() {
	    if(($('namefieldMiddle').value.length > 0 ) && ($('emailfieldMiddle').value.length > 0 )){
    	    Index.showLoadingLayer('mailContainer');
    		var link =  '/mini-games/' + this.gameDetails.gameID + '/'+GlobalFunctions.urlEncode(this.gameDetails.name) + '/';
    	    new Ajax.Request("/ajax/sendInvitation.php", {
    	    	postBody: "name="+$('namefieldMiddle').value+"&link="+link+"&mail=" + $('emailfieldMiddle').value,
    	    	onSuccess: function(r) {
    	    	    var obj = r.responseText.evalJSON();
    	    	    Index.hide('loadingLayer');
    	    	    $('namefieldMiddle').value= '';
    	    	    $('emailfieldMiddle').value = '';
    	    		if(obj.result == 'OK'){
    	    			$('sendafriend_Info').update('<strong>' + obj.layerText + '</strong>');
    	    		}else{
    	    			$('sendafriend_Info').update(obj.layerText+"<br/>"+GameMailboxTMP);
    	    		}
    	    	}
    	    });
	    }
	},
	
	//Close other Layers
	closeOther: function(exceptLayer) {
        if(!$('tooltip_pass').hasClassName('hidden') && exceptLayer != 'tooltip_pass') $('tooltip_pass').addClassName('hidden');  $('passGame').style.background= "url(/skins/default/global/lightbox/minigame/ml_icon_weitersagen01.png) top left no-repeat"; 
        //if(!$('tooltip_memo').hasClassName('hidden') && exceptLayer != 'tooltip_memo') $('tooltip_memo').addClassName('hidden');
        if(!$('tooltip_comm').hasClassName('hidden') && exceptLayer != 'tooltip_comm') $('tooltip_comm').addClassName('hidden'); $('commentGame').style.background= "url(/skins/default/global/lightbox/minigame/ml_icon_kommentieren01.png) top left no-repeat";
	},
	
	//Set Game to Memo ------>  Bring it back, when Memo is finished in backend! <-----
	/*setGameToMemo: function(id) {
	    this.closeOther('tooltip_memo');
	    //Set tooltip
	    if($('tooltip_memo').hasClassName('hidden')) $('tooltip_memo').removeClassName('hidden');
	    var memoOffset = $('memoGame').cumulativeOffset();
	    $('tooltip_memo').style.top = memoOffset.top - 80 + "px";
	    $('tooltip_memo').style.left = memoOffset.left + 11 + "px";
	    new Ajax.Request("/ajax/memoGameMini.php", {
	    	postBody: "flashGameID="+id,
	    	onSuccess: function(r) {
	    		if(r.responseText==1){
	    		    MinigameLoader.fadeLayerIn('tooltip_memo'); 
	    		    $('memoGame').style.background= "url(/skins/default/global/lightbox/minigame/ml_icon_merken02.png) top left no-repeat";                  
	    		}
	    	}
	    });
	},*/
	
	//Show Pass
	showPass: function() {
	    var bgCheck = $('passGame').style.background;
	    var fadeIn = 1;
	    if (bgCheck){
    	    if(bgCheck.indexOf('02', 0) != -1){
    	        fadeIn = 0;
    	    }
	    }
	    
	    if(fadeIn == 1) this.closeOther('tooltip_pass');
	    
	    if($('tooltip_pass').hasClassName('hidden')) $('tooltip_pass').removeClassName('hidden');
	    if(fadeIn == 1){
            var passOffset =  $('passGame').cumulativeOffset();  
    	    $('tooltip_pass').style.top = passOffset.top -80  + "px";
    	    $('tooltip_pass').style.left = passOffset.left  + 13 +  "px";
    	    MinigameLoader.fadeLayerIn('tooltip_pass'); 
    	    $('passGame').style.background= "url(/skins/default/global/lightbox/minigame/ml_icon_weitersagen02.png) top left no-repeat";  
	    }else{
	        MinigameLoader.fadeLayerOut('tooltip_pass'); 
	        $('passGame').style.background= "url(/skins/default/global/lightbox/minigame/ml_icon_weitersagen01.png) top left no-repeat";
	    }
	},
	
	//Show Comments
	showComments: function(){
        var bgCheck = $('commentGame').style.background;
        var fadeIn = 1;
        if (bgCheck){
            if(bgCheck.indexOf('02', 0) != -1){
                fadeIn = 0;
            }
        } 
        
        if(fadeIn == 1) this.closeOther('tooltip_comm');
        
        if($('tooltip_comm').hasClassName('hidden')) $('tooltip_comm').removeClassName('hidden');
        if(fadeIn == 1){
            var passOffset =  $('commentGame').cumulativeOffset();  
    	    $('tooltip_comm').style.top = passOffset.top -80  + "px";
    	    $('tooltip_comm').style.left = passOffset.left  + 13 +  "px";
    	    MinigameLoader.fadeLayerIn('tooltip_comm'); 
    	    MinigameLoader.showGameComments(1);
    	    $('commentGame').style.background= "url(/skins/default/global/lightbox/minigame/ml_icon_kommentieren02.png) top left no-repeat";  
	    }else{
	        MinigameLoader.fadeLayerOut('tooltip_comm'); 
	        $('commentGame').style.background= "url(/skins/default/global/lightbox/minigame/ml_icon_kommentieren01.png) top left no-repeat";
	    }   
	},
	
	showGameComments: function(page){
    	    //Invisble all commentPages
    	    $$('.commentPage').each(function(n) { if (!$(n).hasClassName('hidden')) $(n).addClassName('hidden'); });
    	    if ( isNaN( parseFloat(page) ) ) {
                page = 1;    
    	    }
    	    if($('commentPage' + page).hasClassName('hidden')){
    	       $('commentPage' + page).removeClassName('hidden');
    	    }
	},
	
	closeGameComments: function(){
	    
    //Check visibleStatus
        if(!$('comment_container').hasClassName('hidden')) $('comment_container').addClassName('hidden');
	    
	//Invisble all commentPages
	    $$('.commentPage').each(function(n) { if (!$(n).hasClassName('hidden')) $(n).addClassName('hidden'); });          
	},
	
	submitCommentWrite: function () {
		var comment = $('commentText').value;
		if(comment.length > 2 && comment.length < 250){
		    $('commentWrite').disabled = true;
		    $commentText = $('commentText').value;
		    $('commentText').value = '';
		    Index.showLoadingLayer('commentWrite');
			new Ajax.Request("/ajax/saveFlashComment.php", {
		    	postBody: "comment=" + $commentText + "&id="+this.gameDetails.gameID,
		    	onSuccess: function(r) {
		    		var success = r.responseText;
		    			$('commentText').update('');
		    			MinigameLoader.reloadComments();
		    	}
		    });	
		}
	},
	
	reloadComments: function() {
	  new Ajax.Request("index.es", {
		    postBody: "action=minigame&gameID=" + this.gameDetails.gameID +  "&behavior=refreshComments",	    
		    onSuccess: function(r) {
		        var html = r.responseText;
		        console.log("test");
		        console.log(html);
		        $('comment_content').update(html);
		        MinigameLoader.showGameComments(1);
		        Index.hide('loadingLayer');
		    } 
		});
	},
	
	//Other Stuff
	disableSpace: function(lock){
	   if (lock == 0) this.spaceLock = false; 
	   else this.spaceLock = true;       
	},
	
	closeAllContent: function(notLayer){
        if(notLayer != 'comments') this.closeGameComments();
	},
	
	setGamesLoader: function(layer){
	    var vPos = $('fadeGamesBoxContainer').cumulativeOffset();
	    var vDim = $('fadeGamesBoxContainer').getDimensions();
        $(layer).style.top = (vPos.top + vDim.height/2) - 7.5 + 'px';
        $(layer).style.left = (vPos.left + vDim.width/2) - 64 + 'px'; 
        $(layer).removeClassName('hidden');       
	},
	
	fadeLayerIn: function (layer){
	   new Effect.Opacity(layer, {from: 0.0, to: 1.0, duration: 0.3});
	   return true; 
	},
	
	fadeLayerOut: function (layer){
	   new Effect.Opacity(layer, {from: 1.0, to: 0.0, duration: 0.3, afterFinish: function(e) {
            if (!$(layer).hasClassName('hidden')) $(layer).addClassName('hidden');
	   }});
	   return true; 
	},
	
	/*moveLayerToBottom: function (layer){
        var viewportDim = document.viewport.getDimensions();
        $(layer).style.top = viewportDim.height + 'px';
	},*/

	
	//**** Cookiesettings ****/
	
	//Set Cookie
    setCookie: function(mode, layer) {
        if(mode == 'mgAd') {
            var vDim = $(layer).getDimensions();
            var endDate = new Date();
            var endTime = endDate.getTime() + (60 * 10000);
            endDate.setTime(endTime);
            document.cookie = "AdBoxHeight=" + vDim.height + "; expires=" + endDate.toGMTString()+ "; path=/";
		}
	},
	
	//Read Cookie
    readCookie: function(mode, layer) {
        //Look for AdvertisementCookie
        if(mode == 'mgAd') {
           var value = this.getCookie(layer);
           return value;
		}
	},
	

	//Global getCookie
	getCookie: function (check_name, path){
    	// first we'll split this cookie up into name/value pairs
    	// note: document.cookie only returns name=value, not the other components
    	var a_all_cookies = document.cookie.split( ';' );
    	var a_temp_cookie = '';
    	var cookie_name = '';
    	var cookie_value = '';
    	var b_cookie_found = false; // set boolean t/f default f
    	
    	for ( i = 0; i < a_all_cookies.length; i++ )
    	{
    		// now we'll split apart each name=value pair
    		a_temp_cookie = a_all_cookies[i].split( '=' );				
    		// and trim left/right whitespace while we're at it
    		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');	
    		// if the extracted name matches passed check_name
    		if ( cookie_name == check_name )
    		{
    			b_cookie_found = true;
    			// we need to handle case where cookie has no value but exists (no = sign, that is):
    			if ( a_temp_cookie.length > 1 )
    			{
    				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
    			}
    			// note that in cases where cookie is initialized but no value, null is returned
    			return cookie_value;
    			break;
    		}
    		a_temp_cookie = null;
    		cookie_name = '';
    	}
    	if ( !b_cookie_found ) 
    	{
    		return null;
    	}
    }
	
	
}