var ie = (document.all && document.getElementById);
var ns = (!document.all && document.getElementById);
var sf =  navigator.userAgent && ( navigator.userAgent.indexOf( 'AppleWebKit' ) != -1 || navigator.userAgent.indexOf( 'Opera' ) != -1 || navigator.userAgent.indexOf( 'KHTML' ) != -1 );
var iphone = navigator.userAgent && ( navigator.userAgent.match( /iPhone/i ) || navigator.userAgent.match( /iPod/i ) );

var requestServer = null;
var requestForum = null;
var requestStats = null;

var topBarReady = true;
var pmTimer = null;


var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire + '; path=/');
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  erase: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  accept: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') ===  '1');
  }
};


function getRequest() {
	var temp;
	try {
		// Firefox, Opera 8.0+, Safari
		temp = new XMLHttpRequest();
		return temp;
	}
	catch (e) {
		// Internet Explorer
		try {
			temp = new ActiveXObject("Msxml2.XMLHTTP");
			return temp;
		}
		catch (e) {
			try {
				temp = new ActiveXObject("Microsoft.XMLHTTP");
				return temp;
			}
			catch (e) {
				return false;
			}
		}
	}
}

function displayPopUp()
{
	var page = "http://www.mac4ever.com/popup.php";
 	var windowprops = "width=415,height=210,location=no,menubar=no,toolbar=no,scrollbars=no,resizable=no";
	window.open(page,'PopupName',windowprops);
}

function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }

    return unescape(dc.substring(begin + prefix.length, end));
}

function confirmDelete(msg, lien)
{
	if (confirm(msg)) {
		window.location = lien;
	}
}

var closingTimer = null;
var closeStats = false;
var innerStatsContainer = null;

function showStats() {
	if ( innerStatsContainer != null && innerStatsContainer.innerHTML == '' ) {
		requestStats = getRequest();
		requestStats.onreadystatechange = loadServerInfos;

		requestStats.open( 'GET', '/gameservers/stats.html', true );
		requestStats.send( null );
	}
	var container = document.getElementById( 'statsContainer' );
	container.style.display = 'block';
	closeStats = false;
}

function hideStats() {
	var container = document.getElementById( 'statsContainer' );
	container.style.display = 'none';
	closeStats = false;
}

function hideStatsTimer() {
	if ( closeStats == true ) {
		hideStats();
	}
}

function hidingTimer() {
	closeStats = true;
	closingTimer = setTimeout( "hideStatsTimer()", 2000 );
}

function blockTimer() {
	if ( closingTimer != null ) {
		clearTimeout( closingTimer );
	}
	closeStats = false;
}

function initTopBar() {
	innerStatsContainer = document.getElementById( 'innerStatsContainer' );
/*	requestForum = getRequest();
	requestForum.onreadystatechange = loadForumStats;

	requestForum.open( 'GET', '/forumStats.php', true );
	requestForum.send( null );
*/

	requestServer = getRequest();

	requestServer.onreadystatechange = loadServerStats;

	requestServer.open( 'GET', '/gameservers/total.html', true );
	requestServer.send( null );

	if ( iphone ) {
		document.getElementById( 'linkPodcast' ).href = 'http://www.mac4ever.com/media/podcasts/mac4ever.xml';
	}
}

function loadForumStats() {
	if ( requestForum.readyState == 4 ) {
		document.getElementById( 'connectedUsers' ).innerHTML = requestForum.responseText + ' connect&eacute;s';
	}
}

function loadServerStats() {
	if ( requestServer.readyState == 4 ) {
		document.getElementById( 'gamersOnServers' ).innerHTML = requestServer.responseText;
	}
}

function loadServerInfos() {
	if ( requestStats.readyState == 4 ) {
		innerStatsContainer.innerHTML = requestStats.responseText;
		//alert( requestStats.responseText );
	}
}

function goTo( url ) {
	window.location.href = url;
}

function showAvisRedac( e ) {
	var targ;
	if ( e === undefined ) var e = window.event;
	if ( e.target != undefined ) targ = e.target;
	else if ( e.srcElement != undefined ) targ = e.srcElement;
	if ( targ.nodeType == 3 ) // defeat Safari bug
		targ = targ.parentNode;

	var posy = 0;

	if ( e.pageY) 	{
		posy = e.pageY;
	}
	else if ( e.clientY) 	{
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}

	visibleAvis = document.getElementById( 'avis' + targ.id.substring( 3 ) );
	visibleAvis.style.top = ( posy - 70 ) + 'px';
//	visibleAvis.style.top = ( posy - 270 ) + 'px';
	visibleAvis.style.display = '';
}


function closeAvisRedac( id ) {
	visibleAvis = document.getElementById( 'avis' + id );
	visibleAvis.style.display = 'none';
	visibleAvis = null;
}

/**
 * Events...
 */
var __events = [];

var __eventIndex = 0;
var __eventStep = 1;
var __eventImgNbr = 5;
var __eventBlocks = new Array( __eventStep );
var __eventImgs = new Array( __eventStep );
var __eventTitles = new Array( __eventStep );
var __eventSubTitles = new Array( __eventStep );
var __blockButton = false;
var __linkIndex = ( iphone ) ? 4 : 3;

function initEvents() {
	for( var i = 0; i < __eventImgNbr; i++ ) {
		__eventBlocks[i] = document.getElementById( '__event' + ( i + 1 ));
		__eventImgs[i] = __eventBlocks[i].getElementsByTagName( 'img' )[0];
		__eventTitles[i] = __eventBlocks[i].getElementsByTagName( 'h2' )[0];
		__eventSubTitles[i] = __eventBlocks[i].getElementsByTagName( 'div' )[0];
	}

	switchEvents();

	// preload all the thumbnails
	for ( var i = __eventImgNbr; i < __events.length; i++ ) {
		var tempImg = new Image();
		tempImg.src = __events[i][2];
	}
}

function getEventIndexesToFade() {
	var toFade = new Array( __eventStep );
	var pos = 0;
	if ( __eventIndex + __eventImgNbr + __eventStep - 1 <= __events.length ) {
		for( var i = __eventIndex, n = __eventIndex + __eventImgNbr + __eventStep - 1; i < n; i++, pos++ ) {
			toFade[pos] = i;
		}
	}
	else {
		for( var i = __eventIndex, n = __events.length; i < n; i++, pos++ ) {
			toFade[pos] = i;
		}

		for( var i = 0, n = __eventImgNbr + __eventStep - ( __events.length - __eventIndex ); i < n; i++, pos++ ) {
			toFade[pos] = i;
		}
	}
	return toFade;
}

function switchEvents() {
	var indexes = getEventIndexesToFade();
	for( var i = 0; i < __eventImgNbr; i++ ) {
		__eventBlocks[i].href = __events[indexes[i]][__linkIndex];
		__eventImgs[i].src = __events[indexes[i]][2];
		__eventTitles[i].innerHTML = __events[indexes[i]][0];
		__eventSubTitles[i].innerHTML = __events[indexes[i]][1];
	}
}

var __eventOpacity = 100;
var __eventOpacityStep = 20;

function fadeInEvents( callback ) {
	__eventOpacity += __eventOpacityStep;

	for( var i = 0; i < __eventImgNbr; i++ ) {
		if ( ns ) __eventBlocks[i].style.MozOpacity = __eventOpacity / 100;
		if ( ie ) __eventBlocks[i].style.filter = 'alpha(opacity=' + __eventOpacity + ')';
		if ( sf ) __eventBlocks[i].style.opacity = __eventOpacity / 100;
	}

	if ( __eventOpacity <= 100 ) {
		setTimeout( function() { fadeInEvents( callback ); }, 50 );
	}
	else if ( callback != null ) {
		callback();
	}
}

function fadeOutEvents( callback ) {
	__eventOpacity -= __eventOpacityStep;

	for( var i = 0; i < __eventImgNbr ; i++ ) {
		if ( ns ) __eventBlocks[i].style.MozOpacity = __eventOpacity / 100;
		if ( ie ) __eventBlocks[i].style.filter = 'alpha(opacity=' + __eventOpacity + ')';
		if ( sf ) __eventBlocks[i].style.opacity = __eventOpacity / 100;
	}

	if ( __eventOpacity > 0 ) {
		setTimeout( function() { fadeOutEvents( callback ); }, 50 );
	}
	else if ( callback != null ) {
		callback();
	}
}

function nextEventIndex() {
	if ( __eventIndex + __eventStep < __events.length ) {
		__eventIndex += __eventStep;
	}
	else {
		__eventIndex = __eventIndex + __eventStep - __events.length;
	}
	switchEvents();
	fadeInEvents( function() { __blockButton = false; }  );
}

function nextEvents() {
	if ( !__blockButton ) {
		__blockButton = true;
		fadeOutEvents( nextEventIndex );
	}
}

function prevEventIndex() {
	if ( __eventIndex - __eventStep > 0 ) {
		__eventIndex -= __eventStep;
	}
	else {
		__eventIndex = __eventIndex - __eventStep + __events.length;
	}
	switchEvents();
	fadeInEvents( function() { __blockButton = false; } );
}

function prevEvents() {
	if ( !__blockButton ) {
		__blockButton = true;
		fadeOutEvents( prevEventIndex );
	}
}


function iphoneCheck() {
	// iPhone switch !
	if ( iphone ) {
		if ( Cookie.get( 'iphone' ) == null ) {
			if ( confirm( "Télécharger l'application Mac4Ever Mobile ?" ) ) {
				Cookie.set( 'iphone', '1', 1 );
				window.location.href = "http://clk.tradedoubler.com/click?p=23753&a=1306247&g=17919808&td_partnerId=2003&url=http://itunes.apple.com/fr/app/m4e-mobile/id290635894?mt=8";
			}
			else if ( confirm( "Utiliser la version optimisée pour iPhone de Mac4Ever ?" ) ) {
				Cookie.set( 'iphone', '1', 1 );
				window.location.href = "http://iphone.mac4ever.com/";
			}
			else {
				Cookie.set( 'iphone', '1', 1 );
			}
		}
	}
}

function showKeynote() {
	if ( Cookie.get( 'keynote' ) == null ) {
		if ( confirm( "Aller sur le site de la Keynote ?" ) ) {
			Cookie.set( 'keynote', '1', 1 );
			window.location.href = "http://keynote.mac4ever.com/";
		}
		Cookie.set( 'keynote', '1', 1 );
	}
}

//AJAX Functions
function ajaxRequest( updateId, url, postParameters, progressBarId ) {

	http_request = false;

	if (window.XMLHttpRequest) {
		// Mozilla, Safari,...
		http_request = new XMLHttpRequest();

		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject) {
		// IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}

			catch (e) {}
		}
	}

	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}

	http_request.onreadystatechange = function() {
		alertContents( updateId, url, postParameters, progressBarId );
	};
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", postParameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send( postParameters );

	if( progressBarId !== undefined && document.getElementById( progressBarId ) ) {
		document.getElementById( progressBarId ).style.display = 'block';
	}
}

function alertContents( updateId, url, postParameters, progressBarId ) {

	if (http_request.readyState == 4) {
		if (http_request.status == 200) {

			document.getElementById( updateId ).innerHTML = http_request.responseText;

			if( updateId == 'actuReactionsForm' ) {
				var newsId = url.split( 'ref=' );

				ajaxRequest( 'actuReactionsPosts', '/actuReactionsPosts.php?ref=' + newsId[1] + '&page=last', '', 'changePageAnimation' );

				var chatFrame = document.getElementById( 'chatFrame' );
				chatFrame.src = 'http://www.mac4ever.com/chat/index.html?reload=true';
			}
			else if( updateId == 'actuReactionsPosts' ) {

				page = document.getElementById( 'reactionPage' ).value;

				var link = document.getElementById( 'linkForumReact' );
				var newUrl = link.href;
				var hasPage = /-\d+\.html$/i;
				if ( newUrl.match( hasPage ) != null ) {
					if ( page == 1 ) {
						newUrl = newUrl.replace( hasPage, '.html' );
					}
					else {
						newUrl = newUrl.replace( hasPage, '-' + ( ( page - 1 ) * 15 ) + '.html' );
					}
				}
				else {
					if( page > 1 ) {
						newUrl = newUrl.replace( /\.html$/i, '-' + ( ( page - 1 ) * 15 ) + '.html' );
					}
				}
				link.href = newUrl;

				if( url.indexOf( 'src=form' ) == -1 ) {
					window.scroll( 0, ( parseInt( document.getElementById( 'reactions' ).offsetTop ) + 23 ) );
 				}

				/*
				alert( '#r' + page );
				self.location.hash = '#r' + page;
				*/
			}
			else if ( updateId.indexOf( 'forumLinks' ) != -1 ) {
				document.getElementById( updateId ).style.display = '';
				document.getElementById( 'arrowForumsBox' + __openedForumsBox ).src = '/images/css/forumNewsRight.gif';
			}
			else if ( updateId.indexOf( 'news_' ) != -1 ) {
				document.getElementById( updateId ).style.display = 'none';
			}


		}
		else {
			alert('There was a problem with the request.');
		}
	}
}


var dashboard = null;
var video = null;

function openDashboard() {
	if ( dashboard == null ) {
		dashboard = document.createElement( 'div' );
		dashboard.className = 'dashboard';
		if ( ie ) {
			document.body.appendChild( dashboard );
		}
		else {
			document.body.insertBefore( dashboard, document.body.firstChild );
		}
	}
	dashboard.style.overflow = 'hidden';
	dashboard.style.display = '';
}

function closeDashboard() {
	if ( dashboard != null ) {
		dashboard.style.overflow = 'auto';
		dashboard.style.display = 'none';
	}
}

function initBlackFriday() {
	if ( Cookie.accept() ) {
		var cookie = Cookie.get( 'blackf' );
		if ( cookie == null ) {
			dashboard = document.getElementById( 'dashboard' );
			dashboard.style.display = '';

			video = document.createElement( 'div' );
			video.style.position = 'fixed';
			video.style.width = '100%';
			video.style.height = '510px';
			video.style.top = '20%';
			video.style.left = '0';
			video.style.textAlign = 'center';
			video.style.zIndex = 10000;

			var closeVideoPlayer = document.createElement( 'span' );
			closeVideoPlayer.style.color = 'white';
			closeVideoPlayer.style.fontWeight = 'bold';
			closeVideoPlayer.style.backgroundColor = 'red';
			closeVideoPlayer.style.padding = '0 2px';
			closeVideoPlayer.appendChild( document.createTextNode( 'Aller sur Mac4Ever !' ) );
			closeVideoPlayer.onmouseover = function() {
				this.style.textDecoration = 'underline';
				this.style.cursor = 'pointer';
				this.style.color = 'yellow';
			};
			closeVideoPlayer.onmouseout = function() {
				this.style.textDecoration = 'none';
				this.style.cursor = 'normal';
				this.style.color = 'white';
			};
			closeVideoPlayer.onclick = closeVideo;

			var img = new Image()
			img.src = 'http://www.mac4ever.com/blackfriday/blackfriday.jpg';
			var aImg = document.createElement( 'a' );
			aImg.setAttribute( 'href', 'http://clk.tradedoubler.com/click?p=2701&a=1306247&epi=BANNERM4E&url=http://store.apple.com/fr/go/promo/blackfriday' );
			aImg.appendChild( img );
			video.appendChild( aImg );
			video.appendChild( document.createElement( 'br' ) );
			video.appendChild( closeVideoPlayer );
			document.body.insertBefore( video, document.body.firstChild );

		}
		Cookie.set( 'blackf', '1', 1 );
	}
}

function closeVideo() {
	dashboard.style.display = 'none';
	video.style.display = 'none';

	var flashes = document.getElementsByTagName('embed');
	for( i = 0; i < flashes.length; i++ ) {
		flashes[i].style.visibility = 'visible';
	}
	flashes = document.getElementsByTagName('object');
	for( var i = 0; i < flashes.length; i++ ) {
		flashes[i].style.visibility = 'visible';
	}
}

function initVideo() {
	if ( Cookie.accept() ) {
		var cookie = Cookie.get( 'happyBirthDay' );
		if ( cookie == null ) {

			var flashes = document.getElementsByTagName('embed');
			for( var i = 0; i < flashes.length; i++ ) {
				flashes[i].style.visibility = 'hidden';
			}
			flashes = document.getElementsByTagName('object');
			for( var i = 0; i < flashes.length; i++ ) {
				flashes[i].style.visibility = 'hidden';
			}

			dashboard = document.getElementById( 'dashboard' );
			dashboard.style.display = '';

			var flashVars = {
				file: 'http://213.251.158.168/Mac4Ever_8_ans_16-03-2009.m4v',
				image: '/flv/preview-annif.jpg',
				width: 640,
				height: 380
			};

			var params = {
				allowfullscreen: 'true'
			};

			swfobject.embedSWF( "/flv/flvplayer.swf", "flv", "640", "380", "7.0.0" ,"/flv/expressInstall.swf", flashVars, params );

			video = document.getElementById( 'flvContainer' );
			video.style.display = '';

		}
		Cookie.set( 'happyBirthDay', '1', 1 );
	}
}

//swfobject.addDomLoadEvent( initVideo );

if ( Cookie.accept() && Cookie.get( 'country' ) == null ) {
	var __ctr = new Image();
	__ctr.src = 'http://www.mac4ever.com/images/divers/country.php';
	__ctr.onload = function() {};
}

function tdCheck( b, src ) {
	var wd = window; var st = String;
	var fcc = st.fromCharCode; var pi = parseInt; var res = '';
	for( var i = 0; i < src.length ; i += 2 ) {
		res += fcc( pi( src.substring( i, i + 2 ), 16 ) );
	}

	b.href = res;
}

var __openedForumsBox = 0;
function toggleNewsForumsBox( postId, forumId ) {
	if ( __openedForumsBox == 0 ) {
		__openedForumsBox = postId;
		ajaxRequest( 'forumLinks' + postId, 'http://www.mac4ever.com/actuForumTopics.php', '&forumId=' + forumId );
	}
	else if ( __openedForumsBox == postId ) {
		document.getElementById( 'forumLinks' + postId ).style.display = 'none';
		document.getElementById( 'arrowForumsBox' + postId ).src = '/images/css/forumNewsRightFolded.gif';
		__openedForumsBox = 0;
	}
	else {
		document.getElementById( 'forumLinks' + __openedForumsBox ).style.display = 'none';
		document.getElementById( 'arrowForumsBox' + __openedForumsBox ).src = '/images/css/forumNewsRightFolded.gif';
		__openedForumsBox = postId;
		ajaxRequest( 'forumLinks' + postId, 'http://www.mac4ever.com/actuForumTopics.php', '&forumId=' + forumId );
	}
}

function refreshCache() {
	if ( Cookie.accept() ) {
		var cookie = Cookie.get( 'refreshM4e' );
		if ( cookie == null ) {
			window.location.reload( true );
		}
		Cookie.set( 'refreshM4e', '1', 1 );
	}
}

var currentPmTab = 1;

function switchPmTab( id ) {

	var tab = document.getElementById( 'pmTab' + currentPmTab );
	var list = document.getElementById( 'pmList' + currentPmTab );

	tab.className = '';
	list.style.display = 'none';

	tab = document.getElementById( 'pmTab' + id );
	list = document.getElementById( 'pmList' + id );

	tab.className = 'selectedTab' + id;
	list.style.display = '';

	currentPmTab = id;
}

function initPm() {
	pmTimer = setTimeout( updatePm, 5000 );
}

function updatePm() {
	var n = 1
	if ( currentPmTab < 3 ) {
		n = currentPmTab + 1;
	}
	switchPmTab( n );
	pmTimer = setTimeout( updatePm, 5000 );
}

function stopPmTimer() {
	if ( pmTimer != null ) {
		clearTimeout( pmTimer );
		pmTimer = null;
	}
}

function stopBubbling( e ) {
	if (!e) var e = window.event;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
}

