//
//    mondofragilis Javascript Framework
//    Copyright (C) 2009 Romain Petit
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
/*
Js dev notes :

HTMLElement.class -> error on safari
for(i=0... -> error on IE if i not declared
uncknow browser method -> bug on IE if not in brackets : ( if() {do;} else {dontdo();} -> OK,  if() do; else dontdo(); -> NOT OK )
*/
var mf = {};
mf.version = "0.7.2";
mf.IE = document.all?true:false;
mf.init = function()
{
	mf.Infos.BrowserDetect.init();
	mf.Infos.PluginDetectInit();
};

// MISC
elements = function(id)
{
	return document.getElementById(id);
};
fill = function(id, content)
{
	elements(id).innerHTML = content;
};
trim = function(someString)
{
	return someString.replace(/^\s+/g,'').replace(/\s+$/g,'')
};
getMovie = function(movieName) 
{
	//if(mf.IE)
	if( navigator.appName.indexOf ("Microsoft") !=-1 )
	{return window[movieName];}
	else{return document[movieName];}
};
exists = function( maVar )
{
	return ( ( typeof maVar != "undefined" ) && ( maVar != null ) ) ? true:false;
};
in_array = function( str, stack )
{
	for(var k = 0; k < stack.length; k++)
	{
		if( stack[k] == str )
		{
			return true;
		}
	}
	return false;
};
function print_r(arr,level)
{
	if(!level) level = 0;

	var cr = "<br/>";
	var pad = "<span>      </span>";
	var dumped_text = "";
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += pad;
	
	if( typeof(arr) == 'object' )
	{
		//Array/Hashes/Objects
		for(var item in arr)
		{
			var value = arr[item];
			if(typeof(value) == 'object')
			{
				//If it is an array,
				dumped_text += level_padding + "'" + item + "' ..." + cr;
				dumped_text += print_r(value,level+1);
			}
			else
			{
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"" + cr;
			}
		}
	}
	else
	{
		//Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
};
// /MISC

////////////               OBJECT               ///////////
mf.Object = {};
mf.Object.createElement = function(tagName, Attributs)
{
	var TempElement = document.createElement(tagName);
	if( exists(Attributs) )
	{
		for( name in Attributs )
		{
			TempElement.setAttribute(name,Attributs[name]);
		}
	}
	return TempElement;
}
mf.Object.recursiveBlock = function(o)
{
	o.style.display = "block";
	if( o.hasChildNodes() )
	{
		var ChildNodes = o.childNodes;
		for(var c=0;c<ChildNodes.length;c++)
		{
			if( ChildNodes.item(c).nodeType == 1 )
			{
				mf.Object.recursiveBlock(ChildNodes.item(c));
			}
		}
	}
};
mf.Object.recursiveKillLinks = function(o)
{
	if( o.href != '' )
		o.onclick = "return false;";

	// mf.Event.addEvent( o, "click", function(){"return false;"}, false);
	if( o.hasChildNodes() )
	{
		var ChildNodes = o.childNodes;
		for(var c=0;c<ChildNodes.length;c++)
		{
			if( ChildNodes.item(c).nodeType == 1 )
			{
				mf.Object.recursiveKillLinks(ChildNodes.item(c));
			}
		}
	}
};
mf.Object.setFloat = function(o,float)
{
	if(mf.IE){o.style.styleFloat = float;}
	else{o.style.cssFloat = float;}
};
mf.Object.getFloat = function(o, rec)
{
	if( mf.IE ){return o.style.styleFloat;}
	else{return o.style.cssFloat;}
};
mf.Object.setClass = function(o,newClass)
{
	o.className = newClass;
};
mf.Object.getTop = function(o)
{
	if (exists(o.offsetParent)){return (o.offsetTop + mf.Object.getTop(o.offsetParent) );}
	else{return (o.offsetTop);}
};
mf.Object.getLeft = function(o)
{
	var Offset = 0;
	var Float = mf.Object.getFloat(o);
	if( Float )
	{
		var Offset = 0;
		var Node = o;
		while ( Node.previousSibling )
	    {
	    	if( Node.previousSibling.rel != 'hidden' )
	    	{
	    		var TempWidth = mf.Object.getWidth( Node.previousSibling );
	    		if( exists( TempWidth ) ){Offset += TempWidth}
	    	}
	    	Node = Node.previousSibling;
	    }
		if (o.offsetParent){return (Offset + o.offsetLeft + mf.Object.getLeft(o.offsetParent) );}
		else{return (Offset + o.offsetLeft);}
	}
	else
	{
		if (o.offsetParent){return (o.offsetLeft + mf.Object.getLeft(o.offsetParent) );}
		else{return (o.offsetLeft);}
	}
};
mf.Object.setPos = function(o, x, y)
{

};
mf.Object.getHTML = function(o)
{
	if( !o.innerHTML || o.innerHTML == "" )
		return '<img name="'+ o.name +'" src="' + o.src + '"/>';
	else
		return o.innerHTML;
};
mf.Object.setSize = function(o, width, height, recursive, tagname)
{
	if( o.tagName == tagname || !tagname)
	{
		o.width = width;
		o.height = height;

		o.style.width = width + "px";
		o.style.height = height + "px";
	}

	if( recursive && o.hasChildNodes() )
	{
		var ChildNodes = o.childNodes;
		for(var c=0;c<ChildNodes.length;c++)
		{
			if( ChildNodes.item(c).nodeType == 1 )
			{
				mf.Object.setSize( ChildNodes.item(c), width, height, true, tagname);
			}
		}
	}
};
mf.Object.getWidth = function(o)
{
	//return o.style.width ? o.style.width : o.offsetWidth;
	return o.offsetWidth ? o.offsetWidth : o.clientWidth;
	
	//offsetWidth: offsetWidth property of getElementById method gets the width of the div element that is specified in the CSS class style.
	//clientWidth: clientWidth property of the getElementById method gets the inner absolute width of the specified div element.

};
mf.Object.getHeight = function(o)
{
	//return o.style.height ? o.style.height : o.offsetHeight;
	return o.offsetHeight ? o.offsetHeight : o.clientHeight;
};
mf.Object.getDynObject = function(o)
{
	if( o.is_dyn == true )
	{
		return o;
	}
	else
	{
		return mf.Object.getDynObject(o.parentNode);
	}
};
mf.Object.getVar = function(o, v)
{
	if( exists( o.v ) == true )
	{
		return o.v;
	}
	else
	{
		return mf.Object.getVar(o.parentNode, v);
	}
};
mf.Object.allowMoving = function(o)
{
	var Top = mf.Object.getTop(o);
	var Left = mf.Object.getLeft(o);
	o.style.position = "absolute";
	o.style.left = Left + "px";
	o.style.top = Top + "px";
};
mf.Object.Overwrite = function(newNode, oldNode)
{
	if( exists(oldNode.parentNode) )
	{
		var Parent = oldNode.parentNode;
		Parent.insertBefore(newNode,oldNode);
		var OldNode = Parent.removeChild(oldNode);
		return OldNode;
	}
	return false;
};
mf.Object.insertAfter = function(newNode, oldNode)
{
	if( exists(oldNode.parentNode) )
	{
		var Parent = oldNode.parentNode;
		Parent.insertBefore(newNode,oldNode);
		var OldNode = Parent.removeChild(oldNode);
		Parent.insertBefore(oldNode,newNode);
		return true;
	}
	return false;
};
/* TRANSPARENCY */
mf.Object.allowTransparencyByID = function(id)
{
	//if(mf.DEBUG){alert(id);}
	mf.Object.allowTransparency(elements(id));
};
mf.Object.allowTransparency = function(o, width)
{
	if(!exists(o.transparancy) )
	{
		o.transparancy = true;
		//o.style.position = "relative";	
		o.style.width = width?width:o.offsetWidth;
		//o.style.height = o.offsetHeight;
		//o.style.backgroundColor = "#fff";
	}
};
mf.Object.setAlphaByID = function(id, alpha )
{
	mf.Object.setAlpha(elements(id), alpha);
};
mf.Object.setAlpha = function( o, alpha )
{
	var opacity = alpha * 100;
	o.alpha = alpha;

	if( mf.IE )
	{
		//o.style.filter = "alpha(opacity="+opacity+", finishopacity="+opacity+", style=2)";
		o.style.MozOpacity = alpha;
		o.style.KhtmlOpacity = alpha;
	}
	o.style.filter = "alpha(opacity="+opacity+")";
	o.style.opacity = alpha;
};
mf.Object.meltEraseCallBack = function(){};
mf.Object.meltShowCallBack = function(){};
mf.Object.meltAlphaStep = 0.1;
mf.Object.meltInterval = 30; // ms
mf.Object.meltErase = function( o )
{
	mf.Object.allowTransparency(o);
	if( !exists(o.alpha) )
		o.alpha = 1;

	window.clearInterval( o.meltIdInterval );
	o.meltIdInterval = setInterval('mf.Object.animateMeltErase( "'+o.id+'")', mf.Object.meltInterval);
};
mf.Object.animateMeltErase = function( ido )
{
	o = elements( ido );
	mf.Object.setAlpha(o, o.alpha - mf.Object.meltAlphaStep);
	if( o.alpha <= 0 )
	{
		mf.Object.setAlpha(o, 0);
		window.clearInterval( o.meltIdInterval );
		mf.Object.meltEraseCallBack();
	}
};
mf.Object.meltShow = function( o )
{
	mf.Object.allowTransparency(o);
	if( !exists(o.alpha) )
		o.alpha = 0;

	window.clearInterval( o.meltIdInterval );
	o.meltIdInterval = setInterval('mf.Object.animateMeltShow( "'+o.id+'")', mf.Object.meltInterval);
};
mf.Object.animateMeltShow = function( ido )
{
	o = elements( ido );
	mf.Object.setAlpha(o, o.alpha + mf.Object.meltAlphaStep );
	if( o.alpha >= 1 )
	{
		mf.Object.setAlpha(o, 1);
		window.clearInterval( o.meltIdInterval );
		mf.Object.meltShowCallBack();
	}
};
/* TRANSPARENCY */
////////////               OBJECT               ///////////

////////////               SCREEN               ///////////
mf.Screen = {};
mf.Screen.ieNOTopera = document.all && navigator.userAgent.indexOf("Opera")==-1;
mf.Screen.ieHoffset_extra = document.all ? 15 : 0;
mf.Screen.IEcompattest = function()
{
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
};
mf.Screen.getLeft0 = function()
{
	var dsocleft = document.all? mf.Screen.IEcompattest().scrollLeft : pageXOffset;
	var dsoctop = document.all? mf.Screen.IEcompattest().scrollTop : pageYOffset;
	var window_width = mf.Screen.ieNOTopera? mf.Screen.IEcompattest().clientWidth + mf.Screen.ieHoffset_extra : window.innerWidth + mf.Screen.ieHoffset_extra;
	var window_height = mf.Screen.ieNOTopera? mf.Screen.IEcompattest().clientHeight : window.innerHeight;

	if(document.all || elements)
	{
		return( parseInt(dsocleft) );
	}
	else if(document.layers)
	{
		return ( dsocleft);
	}
};
mf.Screen.getTop0 = function()
{
	var dsocleft=document.all? mf.Screen.IEcompattest().scrollLeft : pageXOffset;
	var dsoctop=document.all? mf.Screen.IEcompattest().scrollTop : pageYOffset;
	var window_width=mf.Screen.ieNOTopera? mf.Screen.IEcompattest().clientWidth + mf.Screen.ieHoffset_extra : window.innerWidth + mf.Screen.ieHoffset_extra;
	var window_height=mf.Screen.ieNOTopera? mf.Screen.IEcompattest().clientHeight : window.innerHeight;
	
	if (document.all||elements)
	{
		return ( parseInt(dsoctop) );
	}
	else if (document.layers)
	{
		return ( dsoctop );
	}
};
mf.Screen.getPageW = function()
{
	if (document.body)
	{
		return (document.body.clientWidth);
	}
	else
	{
		return (window.innerWidth);
	}
};
mf.Screen.getPageH = function()
{
	if (document.body)
	{
		return (document.body.clientHeight);
	}
	else
	{
		return (window.innerHeight);
	}
};
mf.Screen.getVisibleW = function()
{
	return document.documentElement.clientWidth;
};
mf.Screen.getVisibleH = function()
{
	return document.documentElement.clientHeight;
};
////////////               SCREEN               ///////////


////////////               UTILS               /////////////
mf.Utils = {};
mf.Utils.getMouseXY = function(e) 
{
	var tempX = 0;
	var tempY = 0;
	if (mf.IE) 
	{ // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.body.scrollLeft;
		tempY = event.clientY + document.body.scrollTop;
	}
	else 
	{  // grab the x-y pos.s if browser is NS
		tempX = e.pageX;
		tempY = e.pageY;
	}  
	// catch possible negative values in NS4
	if (tempX < 0){tempX = 0;}
	if (tempY < 0){tempY = 0;}  
	
	return Array(tempX, tempY);
};
mf.Utils.getCursorSelection = function()
{
	if ( document.selection )
	{
		return ( document.selection.createRange().text );
	}
	else if ( document.getSelection )
	{
		return ( document.getSelection() );
	}
	return false;
};
mf.Utils.is_set = function( $entry )
{
	if( typeof($entry) != "undefined" && $entry != null )
	{
		return true;	
	}
	return false;
};
mf.Utils.AutoFillInput = {};
mf.Utils.AutoFillInput.Id = false;
mf.Utils.onMouseUpAutofill = function( evt )
{
	var CurrentSelection = mf.Utils.getCursorSelection();
	if(trim(CurrentSelection) != '')
		elements(mf.Utils.AutoFillInput.Id).value = mf.Utils.getCursorSelection();
};
mf.Utils.setAutoFillInput = function( idinput )
{
	mf.Utils.AutoFillInput.Id = idinput;
	mf.Event.addEvent( document, "mouseup", mf.Utils.onMouseUpAutofill, false);
};
mf.Utils.changeInnerHTMLIdInterval = 0;
mf.Utils.changeInnerHtmlSwitchCond = function( bool, id, content1, content2 )
{
	var oldObject = elements( id );
	var parentObject = oldObject.parentNode;

	var newObject = document.createElement('div');

	if( bool ){newObject.innerHTML = content1;}
	else{newObject.innerHTML = content2;}

	try
	{
		parentObject.appendChild( newObject );
		oldObject.style.display = "none";
		return true;
	}
	catch(err)
	{
	}
};
/*
mf.Utils.changeInnerHtmlSwitchCond = function( bool, id, content1, content2 )
{
	var parentObject = elements( id ).offsetParent;
	var newObject = document.createElement('div');
	try
	{
		if( bool )
		{
			dynObject.innerHTML = content1;
		}
		else
		{
			dynObject.innerHTML = content2;
		}
		parentObject.appendChild( dynObject );
	}
	catch( err )
	{
		alert( err );
	}
}
*/

////////////               / UTILS               ///////////


////////////                EVENT                ///////////
mf.Event = {};
mf.Event.addEvent = function( obj, type, callback, prop)
{
	if( mf.IE )
		obj.attachEvent("on" + type, callback );
	else
		obj.addEventListener(type, callback, prop);
};
mf.Event.removeEvent = function( obj, type, callback, prop)
{
	if( mf.IE )
		obj.detachEvent("on" + type, callback );
	else
		obj.removeEventListener(type, callback, prop);
};
mf.Event.getEventElement = function(evt)
{
	return evt.target || evt.srcElement;
};
mf.Event.addLoadEvent = function(func)
{
   var oldonload = window.onload;
   if(typeof window.onload != 'function')
   {
      window.onload = func;
   }
   else
   {
      window.onload = function()
      {
         oldonload();
         func();
      };
   }
};
mf.Event.killEvent = function( evt )
{
	if (evt.stopPropagation) 
		evt.stopPropagation();
	else
		evt.cancelBubble = true;
	
	if (evt.preventDefault) 
		  evt.preventDefault();
	else
		evt.returnValue = false;
};
mf.Event.TabEvaluables = new Array();
mf.Event.TabEvaluateSuccess = new Array();
mf.Event.IdIntervalInsert = 0;
mf.Event.setAfterLoad = function( evaluable )
{
	mf.Event.TabEvaluables.push(evaluable);
	mf.Event.TabEvaluateSuccess.push( false );
};
mf.Event.insertAfterLoad = function()
{
	mf.Event.IdIntervalInsert = window.setInterval( "mf.Event.processInsert()", 100 );
};
mf.Event.processInsert = function()
{
	var Errors = false;
	for( var i = 0; i < mf.Event.TabEvaluables.length; i++ )
	{
		if(mf.Event.TabEvaluateSuccess[i] == false)
		try
		{
			eval( mf.Event.TabEvaluables[i] );
			mf.Event.TabEvaluateSuccess[i] = true;
		}
		catch( err )
		{
			alert( err );
			Errors = true;
		}
	}
	
	if( Errors == true )
	{
		window.clearInterval( mf.Event.IdIntervalInsert );
	}
};
////////////               / EVENT               ///////////

////////////               TEXT               ///////////
mf.Text = {};
mf.Text.removePx = function( input )
{
	if( typeof( input ) == 'number' )
	{
		return input;
	}
	else
	{
		if( input.substr( input.length - 2 ) == 'px' )
		{
			input = parseInt( input.substr( 0, input.length - 2 ) );
			return input;
		}
		else
		{
			return input;
		}
	}
};
mf.Text.makeFlashDiv = function( url, width, height, id, quality, autoplay, loop, transparent, flashvars )
{
	var FlashDivContent = '<div class="view-embed">'+mf.Text.makeFlashObject( url, width, height, id, quality, autoplay, loop, transparent, flashvars )+'<div class="content-media-flash"></object></div></div>';
	return FlashDivContent;
};
mf.Text.makeSimpleFlashDiv = function( url, width, height, id, quality, autoplay, loop, transparent, flashvars )
{
	var FlashDivContent = '<div class="content-media-flash">'+mf.Text.makeFlashObject( url, width, height, id, quality, autoplay, loop, transparent, flashvars )+'</div>';
	return FlashDivContent;
};
mf.Text.makeFlashObject = function( url, width, height, id, quality, autoplay, loop, transparent, flashvars )
{
	var fWidth = (width && width != '0') ? width:'100%';
	var fHeight = (height && height != '0') ? height:'100%';
	var fQuality = quality ? quality:'best';
	var fAutoplay = autoplay ? autoplay:'true';
	var fLoop = loop ? loop:'true';
	var fWmode = transparent ? 'transparent':'';
	
	var FlashDivContent = ''
	+'<object id="'+id+'" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0"'
	+' width="'+fWidth+'" height="'+fHeight+'">'
	+'<param name="movie" value="'+url+'" />'
	+'<param name="quality" value="'+fQuality+'" />'
	+'<param name="play" value="' +fAutoplay+ '" />'
	+'<param name="loop" value="' +fLoop+ '" />'
	+'<param name="wmode" value="'+fWmode+'" />'
	+'<embed src="'+url+'" type="application/x-shockwave-flash" pluginspage=""'
	+' quality="'+fQuality+'"'
	+' width="'+fWidth+'" height="'+fHeight+'"'
	+' wmode="transparent"'
	+' play="'+fAutoplay+'"'
	+' loop="'+fLoop+'" name="'+id+'"';

	if( flashvars && flashvars.length && typeof(flashvars.length) == 'number' )
	{
		FlashDivContent += ' flashvars="';
		for( var fv = 0; fv < flashvars.length; fv++)
		{
			FlashDivContent += '&'+ flashvars[fv][0] + '=' + flashvars[fv][1];
		}
		FlashDivContent += '"';
	}
	FlashDivContent += '></embed></object>';
	return FlashDivContent;
};
mf.Text.makeFlashObject = function( url, width, height, id, quality, autoplay, loop, transparent, flashvars )
{	
	var fWidth = (width && width != '0') ? width:'100%';
	var fHeight = (height && height != '0') ? height:'100%';
	var fQuality = quality ? quality:'best';
	var fAutoplay = autoplay ? autoplay:'true';
	var fLoop = loop ? loop:'true';
	var fWmode = transparent ? 'transparent':'';

	var FlashObject = mf.Object.createElement('object', {'id':id,'codebase':'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0','width':fWidth,'height':fHeight});
	FlashObject.appendChild( mf.Object.createElement('param', {'name':'movie','value':url}) );
	FlashObject.appendChild( mf.Object.createElement('param', {'name':'quality','value':fQuality}) );
	FlashObject.appendChild( mf.Object.createElement('param', {'name':'play','value':fAutoplay}) );
	FlashObject.appendChild( mf.Object.createElement('param', {'name':'loop','value':fLoop}) );
	FlashObject.appendChild( mf.Object.createElement('param', {'name':'wmode','value':fWmode}) );
	FlashObject.appendChild( mf.Object.createElement('param', {'name':'allowScriptAccess','value':'always'}) );

	var FlashVars = '';
	if( flashvars && flashvars.length && typeof(flashvars.length) == 'number' )
	{
		FlashVars = '';
		for( var fv = 0; fv < flashvars.length; fv++)
		{FlashVars += '&'+ flashvars[fv][0] + '=' + flashvars[fv][1];}
		FlashObject.appendChild( mf.Object.createElement('param', {'name':'wmode','value':fWmode}) );
	}

	var EmbedObject = mf.Object.createElement('embed', {'src':url,
														'type':"application/x-shockwave-flash",
														'pluginspage':'',
														'quality':fQuality,
														'width':fWidth,
														'height':fHeight,
														'wmode':fWmode,
														'play':fAutoplay,
														'loop':fLoop,
														'name':id,
														'flashvars':FlashVars,
														'id':'embed_'+id,
														'allowScriptAccess':'always'
														});
	FlashObject.appendChild( EmbedObject );
	return FlashObject;
};
mf.Text.makeQTObject = function( url, width, height, id, has_controller, autoplay, loop, pluginspage )
{
	var fWidth = (width && width != '0') ? width:'100%';
	var fHeight = (height && height != '0') ? height:'100%';
	var fHasController = has_controller ? has_controller:'true';
	var fIsAutoplay = autoplay ? autoplay:'true';
	var fIsLoop = loop ? loop:'true';

	var QTObject = mf.Object.createElement('object', {	'width':fWidth,
										   				'height':fHeight,
										   				'codebase':"http://www.apple.com/qtactivex/qtplugin.cab"});
	QTObject.appendChild( mf.Object.createElement('param', {'name':'movie','value':url}) );
	QTObject.appendChild( mf.Object.createElement('param', {'name':'controller','value':fHasController}) );
	QTObject.appendChild( mf.Object.createElement('param', {'name':'autoplay','value':fIsAutoplay}) );
	QTObject.appendChild( mf.Object.createElement('param', {'name':'loop','value':fIsLoop}) );
	QTObject.appendChild( mf.Object.createElement('embed', {'src':url,
												  			'type':"video/quicktime",
												  			'pluginspage':pluginspage,
												  			'width':fWidth,
												  			'height':fHeight,
												  			'play':fIsAutoplay,
												  			'loop':fIsLoop,
												  			'controller':fHasController
															}) );
	return QTObject;
};
mf.Text.makeRMDiv = function( url, width, height, controls, is_autoplay )
{
	var fWidth = (width && width != '0') ? width:'100%';
	var fHeight = (height && height != '0') ? height:'100%';
	var fControlls = controls ? controls:'true';
	var fIsAutoplay = is_autoplay ? is_autoplay:'true';

	var RMObject = mf.Object.createElement('object', {	'classid':"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA",
										   				'width':fWidth,
										   				'height':fHeight});
	RMObject.appendChild( mf.Object.createElement('param', {'name':'src','value':url}) );
	RMObject.appendChild( mf.Object.createElement('param', {'name':'controls','value':fControlls}) );
	RMObject.appendChild( mf.Object.createElement('param', {'name':'autostart','value':fIsAutoplay}) );
	RMObject.appendChild( mf.Object.createElement('embed', {'src':url,
												  			'pluginspage':"http://real.com",
												  			'type':"audio/x-pn-realaudio-plugin",
												  			'width':fWidth,
												  			'height':fHeight,
												  			'autostart':fIsAutoplay,
												  			'controls':fControlls}) );
	return RMDivContent;
};
mf.Text.makeWMDiv = function( url, width, height, has_controller, is_autoplay, pluginspage )
{
	var fWidth = (width && width != '0') ? width:'100%';
	var fHeight = (height && height != '0') ? height:'100%';
	var fHasController = has_controller ? has_controller:'true';
	var fIsAutoplay = is_autoplay ? is_autoplay:'true';
	var fPluginSpace = pluginspage ? pluginspage:'';

	var WMObject = mf.Object.createElement('object', {	'ID':"MediaPlayer",
										   				'CLASSID':"CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95",
										   				'STANDBY':"Loading Windows Media Player components...",
										   				'type':"application/x-oleobject",
										   				'width':fWidth,
										   				'height':fHeight});
	WMObject.appendChild( mf.Object.createElement('param', {'name':'filename','value':url}) );
	WMObject.appendChild( mf.Object.createElement('param', {'name':'autostart','value':fIsAutoplay}) );
	WMObject.appendChild( mf.Object.createElement('param', {'name':'showcontrols','value':fHasController}) );
	WMObject.appendChild( mf.Object.createElement('embed', {'src':url,
												  			'type':"application/x-mplayer2",
												  			'pluginspage':fPluginSpace,
												  			'width':fWidth,
												  			'height':fHeight,
												  			'autostart':"true",
												  			'showcontrols':fHasController}) );

	return WMObject;
};
////////////               TEXT               ///////////



////////////                INFOS                ///////////
mf.Infos = {};
mf.Infos.BrowserDetect = {
	init: function () 
	{
		this.language = "fr";
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
		this.isOld = (this.version < this.dataCurrVersion[this.browser]) ? true:false;
		this.browserDL = this.urlDownloads[this.browser][this.OS][this.language];
	},
	showBrowserInfos : function( divid, lang )
	{
		var aboutBrowserHtml = '';
		aboutBrowserHtml += mf.Infos.BrowserDetect.browser + ' ' +  mf.Infos.BrowserDetect.version + ' / ' + mf.Infos.BrowserDetect.OS + '<br/>';
		if( mf.Infos.BrowserDetect.isOld )
		{
			aboutBrowserHtml += this.makeDlSentence(lang);
		}
		else
		{
			aboutBrowserHtml += this.makeOKSentence(lang);
		}
		elements(divid).innerHTML = aboutBrowserHtml;
	},
	makeDlSentence : function( lang )
	{
		switch (lang)
		{
			case "fr":
				return 'T&eacute;l&eacute;chargez la derni&egrave;re version : <a target="_blank" href="' + mf.Infos.BrowserDetect.browserDL + '">sur le site officiel de ' + BrowserDetect.browser + '</a>';
			break;
			default:
				return 'Download last version : <a target="_blank" href="' + mf.Infos.BrowserDetect.browserDL + '">On the official ' + mf.Infos.BrowserDetect.browser + ' website</a>';
			break;
		}
	},
	makeOKSentence : function( lang )
	{
		switch (lang)
		{
			case "fr":
				return 'Vous avez la derni&egrave;re version de ' + mf.Infos.BrowserDetect.browser;
			break;
			default:
				return 'You have the last version of ' + mf.Infos.BrowserDetect.browser;
			break;
		}
	},
	searchString: function (data) 
	{
		for (var i=0;i<data.length;i++)	
		{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) 
			{
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) 
	{
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{string: navigator.userAgent, subString: "Chrome", identity: "Chrome"},
		{string: navigator.userAgent, subString: "OmniWeb", versionSearch: "OmniWeb/", identity: "OmniWeb"},
		{string: navigator.vendor,	  subString: "Apple",	identity: "Safari"},
		{prop: window.opera, identity: "Opera" },
		{string: navigator.vendor, subString: "iCab", identity: "iCab"},
		{string: navigator.vendor, subString: "KDE", identity: "Konqueror"},
		/* FIREFOX BASED BROWSERS, BEFORE FIREFOX */
		{string: navigator.vendor, subString: "Camino", identity: "Camino"},
		// for newer Netscapes (6+)
		{string: navigator.userAgent, subString: "Netscape", identity: "Netscape"},
		{string: navigator.userAgent, subString: "Flock", identity: "Flock"},
		{string: navigator.userAgent, subString: "Navigator", identity: "Netscape", versionSearch: "Navigator"
		},
		/* NOW FIREFOX */
		{string: navigator.userAgent, subString: "Firefox", identity: "Firefox"},
		{string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE"},
		{string: navigator.userAgent, subString: "Gecko", identity: "Mozilla", versionSearch: "rv"},
		// for older Netscapes (4-)
		{string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla"}
	],
	dataOS : [
		{string: navigator.platform, subString: "Win", identity: "Windows"},
		{string: navigator.platform, subString: "Mac", identity: "Mac"},
		{string: navigator.platform, subString: "Linux", identity: "Linux"}
	],
	dataCurrVersion : {
		Chrome : 0.2,
		OmniWeb : 5,
		Konqueror: 3,
		Firefox: 3,
		Camino : 1,
		Netscape: 9,
		Explorer: 7,
		Flock: 1.2
	},
	urlDownloads : {
		Chrome :{ Windows:  { en : "http://www.google.com/chrome/index.html?hl=en&brand=CHMB&utm_campaign=fr&utm_source=fr-ha-emea-fr-sk&utm_medium=ha&utm_term=chrome",
							  fr : "http://www.google.com/chrome/index.html?hl=en&brand=CHMB&utm_campaign=fr&utm_source=fr-ha-emea-fr-sk&utm_medium=ha&utm_term=chrome"}
				},
		OmniWeb : { Mac: 	{ en : "http://www.omnigroup.com/applications/omniweb/download/",
							  fr : "http://www.omnigroup.com/applications/omniweb/download/"}
				},
		Konqueror: { Linux: { en : "http://www.kde.org/download/",
							  fr : "http://www.kde.org/download/"}
				},
		Firefox: { Windows: { en : "http://www.mozilla-europe.org/en/firefox/",
							  fr : "http://www.mozilla-europe.org/fr/firefox/"},
					Mac: 	{ en : "http://www.mozilla-europe.org/en/firefox/",
							  fr : "http://www.mozilla-europe.org/fr/firefox/"}
				},
		Camino : { Mac: 	{ en : "http://caminobrowser.org/",
							  fr : "http://caminobrowser.org/"}
				},
		Netscape: { Windows:  { en : "http://isp.netscape.com/software/download2.jsp",
							    fr : "http://isp.netscape.com/software/download2.jsp"}
				},
		Explorer: { Windows:  { en : "http://www.microsoft.com/france/windows/downloads/ie/getitnow.Mspx",
							    fr : "http://www.microsoft.com/france/windows/downloads/ie/getitnow.Mspx"}
					},
		Flock: { Windows:  {  en : "http://flock.com",
							  fr : "http://flock.com"}
			}
	}
};
mf.Infos.PluginList = false;
mf.Infos.PluginDetectInit = function()
{
	var agt=navigator.userAgent.toLowerCase();
	var ie  = (agt.indexOf("msie") != -1);
	var ns  = (navigator.appName.indexOf("Netscape") != -1);
	var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1));
	var mac = (agt.indexOf("mac")!=-1);
	if (ie && win) 
		pluginlist = detectIE("Adobe.SVGCtl","SVG Viewer") + detectIE("SWCtl.SWCtl.1","Shockwave Director") + detectIE("ShockwaveFlash.ShockwaveFlash.1","Shockwave Flash") + detectIE("rmocx.RealPlayer G2 Control.1","RealPlayer") + detectIE("QuickTimeCheckObject.QuickTimeCheck.1","QuickTime") + detectIE("MediaPlayer.MediaPlayer.1","Windows Media Player") + detectIE("PDF.PdfCtrl.5","Acrobat Reader"); 

	if(ns || !win)
	{
		nse = ""; for (var i=0;i<navigator.mimeTypes.length;i++) nse += navigator.mimeTypes[i].type.toLowerCase();
		pluginlist = detectNS("image/svg-xml","SVG Viewer") + detectNS("application/x-director","Shockwave Director") + detectNS("application/x-shockwave-flash","Shockwave Flash") + detectNS("audio/x-pn-realaudio-plugin","RealPlayer") + detectNS("video/quicktime","QuickTime") + detectNS("application/x-mplayer2","Windows Media Player") + detectNS("application/pdf","Acrobat Reader");
	}

	function detectIE(ClassID,name) { result = false; document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("' + ClassID + '"))</SCRIPT>\n'); if (result) return name+','; else return ''; };
	function detectNS(ClassID,name) { n = ""; if (nse.indexOf(ClassID) != -1) if (navigator.mimeTypes[ClassID].enabledPlugin != null) n = name+","; return n; };
	pluginlist += navigator.javaEnabled() ? "Java," : "";
	if (pluginlist.length > 0) pluginlist = pluginlist.substring(0,pluginlist.length-1);
	mf.Infos.PluginList = pluginlist;
};
////////////               / INFOS               ///////////



////////////               DYN               ///////////
mf.Dyn = {};
mf.Dyn.dragDropHandler = function()
{
	this.currentID = 0;
	this.tabDragObjects = new Array();
	this.tabMovingObjects = new Array();
	this.getFirstNamedTag = function( name )
	{
		var elements = document.getElementsByName(name);
		return elements[0];
	};
	this.makeDraggableByDivClass = function(divClassName, btnTagName, btnClassName, dragcallback )
	{
		var Divs = document.getElementsByTagName('div');
		var BtnTags = false;
		var DynObjectsArray = new Array();
		for( var d =0; d < Divs.length; d++)
		{
			if( Divs[d].className == divClassName)
			{
				if(exists(btnTagName))
				{
					BtnTags = Divs[d].getElementsByTagName(btnTagName);
					for( var t =0; t < BtnTags.length; t++)
					{
						if( BtnTags[t].className == btnClassName )
						{
							var ObjTemp = this.makeDraggable( Divs[d], BtnTags[t].id, dragcallback );
							ObjTemp.futureclass = Divs[d].className;
							DynObjectsArray.push(ObjTemp);
							break;
						}
					}				
				}
				else
				{
					var ObjTemp = this.makeDraggable( Divs[d], false, dragcallback );
					ObjTemp.futureclass = Divs[d].className;
					DynObjectsArray.push(ObjTemp);
				}
			}
		}

		// Set class after, to avoid infinite recursion with getElementsByTagName ( DYNAMIC )
		for( var t =0; t < DynObjectsArray.length; t++)
		{
			//alert( DynObjectsArray[t].dynCanvasId );
			//DynObjectsArray[t].className = DynObjectsArray[t].class;
			elements(DynObjectsArray[t].dynCanvasId).className = DynObjectsArray[t].futureclass;
		}
		return DynObjectsArray;
	};
	this.makeDraggable = function( staticObject, dragBtnID, dragcallback, setclass )
	{
		Top = mf.Object.getTop(staticObject);
		Left = mf.Object.getLeft(staticObject);
		Width = mf.Object.getWidth(staticObject);
		Height = mf.Object.getHeight(staticObject);
		
		var DynObjectName = 'mondo_dyn_object_' + this.currentID;
		var DynCanvasID = 'mondo_dyn_canvas_' + this.currentID;
		var StaticCanvasID = 'mondo_static_canvas_' + this.currentID;//staticObject.id;
		staticObject.id = StaticCanvasID;
		staticObject.rel = 'hidden';

		this.tabDragObjects.push(DynObjectName);
		this.tabMovingObjects[DynObjectName] = false;

		var dynObject = document.createElement('div');
		var dynObjectCanvas = document.createElement('div');
		
		///
		if( setclass )
		{
		// TEST
			if( staticObject.className )
			{
				//dynObject.className = staticObject.className;
				dynObject.className = staticObject.className;
				//staticObject.className = '';
			}
		}
		dynObjectCanvas.id = DynCanvasID;
		dynObject.dynCanvasId = DynCanvasID;
		dynObject.staticCanvasId = StaticCanvasID;
		
		dynObject.name = DynObjectName;
		dynObject.id = DynObjectName;
		
		dynObject.left = Left;
		dynObject.top = Top;
		dynObject.width = Width;
		dynObject.height = Height;

		dynObject.style.width = Width + "px";
		dynObject.style.height = Height + "px";
		//dynObject.style.position = "absolute";
		dynObject.style.left = Left + "px";
		dynObject.style.top = Top + "px";

		dynObject.baseLeft = Left;
		dynObject.baseTop = Top;
		dynObject.innerHTML = mf.Object.getHTML(staticObject);
		dynObject.is_dyn = true;
		dynObject.attached = true;
		dynObject.style.zIndex = mf.Dyn.dragDropHandler.BASE_DEPTH + this.currentID;

		if( exists(dragcallback))
		{
			mf.Object.setDragCallBack(dynObject, dragcallback);
		}

		// Clear static object as a canvas
		staticObject.style.width = Width + "px";
		staticObject.style.height = Height + "px";
		staticObject.innerHTML = '';
		this.currentID++;

		//staticObject.offsetParent.appendChild( dynObject );
		elements(dynObject.staticCanvasId).appendChild( dynObject );
		document.body.appendChild( dynObjectCanvas );

		// 
		if( exists(dragBtnID) && dragBtnID )
		{
			var Btn = elements( dragBtnID );
			mf.Event.addEvent( Btn, "mousedown", mf.Dyn.dragDropHandler.draggableObjectMouseDown, false);
		}
		else
		{
			mf.Event.addEvent( dynObject, "mousedown", mf.Dyn.dragDropHandler.draggableObjectMouseDown, false);
		}

		return dynObject;
	};
};
/////////////////////////// STATIC ////////////////////////////////
mf.Dyn.dragDropHandler.SELECTED_OBJECT_DEPTH = 1000;
mf.Dyn.dragDropHandler.SELECTED_OBJECT_ALPHA = 0.8;
mf.Dyn.dragDropHandler.BASE_DEPTH = 500;
mf.Dyn.dragDropHandler.CURRENT_DRAG_OBJECT = false;
mf.Dyn.dragDropHandler.INTERVAL = 40;
mf.Dyn.dragDropHandler.EASE = 0.6;
mf.Dyn.dragDropHandler.DROP_ACTION_SWITCH = 0;
mf.Dyn.dragDropHandler.DROP_ACTION_REPLACE = 1;
mf.Dyn.dragDropHandler.DROP_ACTION_OVERLAY = 2;
mf.Dyn.dragDropHandler.DROP_ACTION_PUSH_HOR = 3;
mf.Dyn.dragDropHandler.DROP_ACTION_PUSH_VER = 4;
mf.Dyn.dragDropHandler.moveHome = function( objID )
{
	var obj = elements( objID );
	var ease =mf.Dyn.dragDropHandler.EASE;
	obj.left = obj.baseLeft + (Math.round(ease*(obj.left - obj.baseLeft) ));
	obj.top = obj.baseTop + (Math.round(ease*(obj.top - obj.baseTop) ));
	obj.style.left = obj.left + "px";
	obj.style.top = obj.top + "px";
	if( Math.abs( obj.left - obj.baseLeft ) <= (1/ease) && Math.abs(obj.top - obj.baseTop) <= Math.ceil( 1/ease ))
	{
		obj.left = obj.baseLeft;
		obj.top = obj.baseTop;
		obj.style.left = obj.left + "px";
		obj.style.top = obj.top + "px";
		obj.moving = false;

		mf.Dyn.dragDropHandler.attachStatic(obj);		

		window.clearInterval( obj.IdInterval );
	}
};
mf.Dyn.dragDropHandler.attachStatic = function(o)
{
	if(o.attached)
		return;

	o.attached = true;
	o.style.position = "";
	elements(o.staticCanvasId).appendChild( elements(o.dynCanvasId).removeChild(o) );
}
mf.Dyn.dragDropHandler.attachDynamic = function(o)
{
	if( !o.attached )
		return;

	o.style.position = "absolute";
	o.attached = false;

	elements(o.dynCanvasId).appendChild( elements(o.staticCanvasId).removeChild(o) );
};
mf.Dyn.dragDropHandler.switchStaticCanvas = function(o,p)
{
	var TempStaticCanvasId = o.staticCanvasId;
	o.staticCanvasId = p.staticCanvasId;
	p.staticCanvasId = TempStaticCanvasId;
};
mf.Dyn.dragDropHandler.draggableObjectMouseDown = function( Event )
{
	if( mf.Dyn.dragDropHandler.CURRENT_DRAG_OBJECT )
		mf.Dyn.dragDropHandler.CURRENT_DRAG_OBJECT.style.zIndex = mf.Dyn.dragDropHandler.CURRENT_DRAG_OBJECT.style.zIndex - 1;

	var target = Event.target || Event.srcElement;
	var obj = mf.Object.getDynObject(target);
	
	// Object is going iself to its place ?
	if( obj.moving == true )
	{
		// Can Re-Drag
		mf.Event.removeEvent( document, "mousemove", mf.Dyn.dragDropHandler.draggableObjectMouseMove, false);
		mf.Event.removeEvent( document, "mouseup", mf.Dyn.dragDropHandler.draggableObjectMouseUp, false);		
		window.clearInterval( obj.IdInterval );

		// OR Can not redrag
		//mf.Event.killEvent(Event);
		//return false;
	}
	else
	{
		mf.Dyn.dragDropHandler.attachDynamic(obj);

		obj.style.top = obj.top + "px";
		obj.style.left = obj.left + "px";
		obj.style.width = obj.width + "px";
		obj.style.height = obj.height + "px";
	}

	obj.style.zIndex = mf.Dyn.dragDropHandler.SELECTED_OBJECT_DEPTH;
	mf.Object.setAlpha(  obj, mf.Dyn.dragDropHandler.SELECTED_OBJECT_ALPHA );

	var MousePosition = mf.Utils.getMouseXY(Event);
	var MouseLeft = parseInt(MousePosition[0]);
	var MousetTop = parseInt(MousePosition[1]);

	//elements('debugman').innerHTML = 'top : ' + obj.top + 'left : ' + obj.left + 'width : ' + obj.width + 'height : ' + obj.height;

	obj.dragX = MouseLeft - obj.left;
	obj.dragY = MousetTop - obj.top;

	mf.Dyn.dragDropHandler.CURRENT_DRAG_OBJECT = obj;

	mf.Event.addEvent( document, "mousemove", mf.Dyn.dragDropHandler.draggableObjectMouseMove, false);
	mf.Event.addEvent( document, "mouseup", mf.Dyn.dragDropHandler.draggableObjectMouseUp, false);	

	if( obj.dragCallBack && typeof(obj.dragCallBack) == "function" )
		obj.dragCallBack();

	mf.Event.killEvent(Event);
	
	return false;
};
mf.Dyn.dragDropHandler.draggableObjectMouseMove = function( Event )
{
	var MousePosition = mf.Utils.getMouseXY(Event);
	var obj = mf.Dyn.dragDropHandler.CURRENT_DRAG_OBJECT;

	obj.left = MousePosition[0] - obj.dragX;
	obj.top = MousePosition[1] - obj.dragY;
	
	obj.style.left =  obj.left + "px";
	obj.style.top = obj.top + "px";
	
	mf.Event.killEvent(Event);
	
	if( !exists(obj.dropTargetIDs) )
	{
		return false;
	}
	var Hit = false;
	var HitObjectID = '';
	for( var d = 0; d < obj.dropTargetIDs.length; d++ )
	{
		var dobj = elements( obj.dropTargetIDs[d] );
		if( mf.Object.hitTestObject(obj, dobj) && Hit == false )
		{
			Hit = true;
			HitObjectID = dobj.id;
			mf.Object.setAlpha( dobj, 0.5 );
		}
		else
		{
			mf.Object.setAlpha( dobj, 1 );
		}
	}
	mf.Object.setAlpha(obj, Hit ? 0.9 : 1 );
	obj.HitObject = Hit ? HitObjectID : false;
};
mf.Dyn.dragDropHandler.draggableObjectMouseUp = function( Event )
{
	var obj = mf.Dyn.dragDropHandler.CURRENT_DRAG_OBJECT;
	mf.Object.setAlpha( obj, 1 );
	if( obj.HitObject )
	{
		switch( obj.dropTargetActions[obj.HitObject])
		{
			case mf.Dyn.dragDropHandler.DROP_ACTION_SWITCH:
			
				var HitObject = elements( obj.HitObject );

				// TEST
				mf.Dyn.dragDropHandler.attachDynamic(HitObject);
				mf.Dyn.dragDropHandler.switchStaticCanvas(HitObject,obj);

				var CurrentObjectHome = mf.Object.getHome(obj);
				
				mf.Object.setHomeByObject( obj, HitObject );
				mf.Object.setHome( HitObject, CurrentObjectHome );


				mf.Object.setAlpha( HitObject, 1 );
				mf.Object.goHome(HitObject);
				
			break;
			
			case mf.Dyn.dragDropHandler.DROP_ACTION_REPLACE:
				var HitObject = elements( obj.HitObject );
				mf.Object.setAlpha( HitObject, 0 );
				mf.Object.setHomeByObjectID( obj, obj.HitObject );
			break;
			
			case mf.Dyn.dragDropHandler.DROP_ACTION_OVERLAY:
				mf.Object.setHomeByObjectID( obj, obj.HitObject );
			break;
			
			case mf.Dyn.dragDropHandler.DROP_ACTION_PUSH_HOR:
				var HitObject = elements( obj.HitObject );
				var HitObjectHome = mf.Object.getHome(HitObject);			
				HitObjectHome[0] += HitObject.offsetWidth;
				mf.Object.setHomeByObject( obj, HitObject );
				mf.Object.setHome( HitObject, HitObjectHome );
				mf.Object.setAlpha( HitObject, 1 );
				mf.Object.goHome(HitObject);
			break;
			
			case mf.Dyn.dragDropHandler.DROP_ACTION_PUSH_VER:
				var HitObject = elements( obj.HitObject );
				var HitObjectHome =mf.Object.getHome(HitObject);
				HitObjectHome[1] += HitObject.offsetHeight;
				mf.Object.setHomeByObject( obj, HitObject );
				mf.Object.setHome( HitObject, HitObjectHome );
				mf.Object.setAlpha( HitObject, 1 );
				mf.Object.goHome( HitObject );
			break;
		}
		if( typeof(obj.dropCallBacks[obj.HitObject]) == "function" )
		{
			obj.dropCallBacks[obj.HitObject]();
		}
	}
	mf.Object.goHome(obj);
	mf.Event.removeEvent( document, "mousemove", mf.Dyn.dragDropHandler.draggableObjectMouseMove, false);
	mf.Event.removeEvent( document, "mouseup", mf.Dyn.dragDropHandler.draggableObjectMouseUp, false);
	mf.Event.killEvent(Event);
};
/////////////////////////// /STATIC ///////////////////////////////////////
/* DRAG N DROP */
mf.Object.setHomeByObjectID = function( o, objID )
{
	var obj = elements( objID );
	mf.Object.setHomeByObject( o, obj );
};
mf.Object.setHomeByObject = function( o, obj )
{
	o.baseLeft = mf.Object.getLeft(obj);
	o.baseTop = mf.Object.getTop(obj);
};
mf.Object.getHome = function( o )
{
	return new Array( o.baseLeft, o.baseTop );
};
mf.Object.setHome = function( o, newhome )
{
	o.baseLeft = newhome[0];
	o.baseTop = newhome[1];
};
mf.Object.goHome = function( o )
{
	o.moving = true;
	o.IdInterval = window.setInterval( "mf.Dyn.dragDropHandler.moveHome('"+o.id+"')", mf.Dyn.dragDropHandler.INTERVAL );
};
mf.Object.addDropTarget = function( source, target, action, callback )
{
	if( target.id == source.id )
		return false;
	if( !source.dropTargetIDs )
		source.dropTargetIDs = new Array();
	source.dropTargetIDs.push(target.id);
	mf.Object.setDropAction( source, target, action);
	mf.Object.setDropCallBack(source, target, callback);
};
mf.Object.setDragCallBack = function(o, func)
{
	if( typeof(func) == "function" )
		o.dragCallBack = func;
};
mf.Object.setDropCallBack = function(source, target, func)
{
	if( !source.dropCallBacks )
		source.dropCallBacks = new Array();
	if( typeof(func) == "function" )
		source.dropCallBacks[target.id] = func;
};
mf.Object.setDropAction = function( source, target, action)
{
	if( !source.dropTargetActions )
		source.dropTargetActions = new Array();
	if( !action )
	{
		source.dropTargetActions[target.id] = mf.Dyn.dragDropHandler.DROP_ACTION_SWITCH;
		/*
		mf.Dyn.dragDropHandler.DROP_ACTION_SWITCH = 0;
		mf.Dyn.dragDropHandler.DROP_ACTION_REPLACE = 1;
		mf.Dyn.dragDropHandler.DROP_ACTION_OVERLAY = 2;
		mf.Dyn.dragDropHandler.DROP_ACTION_PUSH_HOR = 3;
		mf.Dyn.dragDropHandler.DROP_ACTION_PUSH_VER = 4;
		*/
	}
	else
	{
		source.dropTargetActions[target.id] = action;
	}
};
mf.Object.hitTestObject = function( ob, obj )
{
	function getOffset(o)
	{
		for(var r = {l: o.offsetLeft, t: o.offsetTop, r: o.offsetWidth, b: o.offsetHeight};
		o = o.offsetParent; r.l += o.offsetLeft, r.t += o.offsetTop);
		return r.r += r.l, r.b += r.t, r;
	};
	for(var b, s, r = [], a = getOffset(ob), j = isNaN(obj.length), i = (j ? obj = [obj] : obj).length; i;
	b = getOffset(obj[--i]), (a.l == b.l || (a.l > b.l ? a.l <= b.r : b.l <= a.r)) && (a.t == b.t || (a.t > b.t ? a.t <= b.b : b.t <= a.b)) && (r[r.length] = obj[i]));
	return j ? !!r.length : r;
};
mf.Object.hitTestObjectByID = function( o,  objID )
{
	return mf.Object.hitTestObject(o, elements(objID));
};
/* /DRAG N DROP */

/* MOVETO/SIZETO */
mf.Dyn.moveCurrentID = 0;
mf.Dyn.EASE = 0.4;
mf.Dyn.IT = 40;
mf.Dyn.moveTo = function(dynamicObject, x, y, callback)
{
	dynamicObject.baseLeft = x;
	dynamicObject.baseTop = y;
	mf.Dyn.dragDropHandler.attachDynamic(dynamicObject);
	//dynamicObject.moveInterval = window.setInterval( "mf.Dyn.animateMoveto('"+dynamicObject.id+"')", mf.Dyn.IT );
	dynamicObject.moveInterval = window.setInterval( "mf.Dyn.animateMoveto('"+dynamicObject.dynCanvasId+"')", mf.Dyn.IT );
};
mf.Dyn.animateMoveto = function( objID )
{
	var obj = elements( objID );
	var ease = mf.Dyn.EASE;
	obj.left = obj.baseLeft + (Math.round(ease*(obj.left - obj.baseLeft) ));
	obj.top = obj.baseTop + (Math.round(ease*(obj.top - obj.baseTop) ));
	obj.style.left = obj.left + "px";
	obj.style.top = obj.top + "px";
	if( Math.abs( obj.left - obj.baseLeft ) <= (1/ease) && Math.abs(obj.top - obj.baseTop) <= Math.ceil( 1/ease ))
	{
		obj.left = obj.baseLeft;
		obj.top = obj.baseTop;
		obj.style.left = obj.left + "px";
		obj.style.top = obj.top + "px";
		obj.moving = false;	

		window.clearInterval( obj.moveInterval );
	}
};
mf.Dyn.sizeTo = function(o, w, h, callback, callbackparam)
{
	o.resizeCallback = callback;
	o.currwidth = mf.Object.getWidth(o);
	o.currheight = mf.Object.getHeight(o);
	o.basewidth = w;
	o.baseheight = h;
	o.callbackparam = callbackparam;
	//o.sizeInterval = window.setInterval( "mf.Dyn.animateSizeto('"+o.id+"', '"+o.callbackparam+"')", mf.Dyn.IT);
	o.sizeInterval = window.setInterval( "mf.Dyn.animateSizeto('"+o.dynCanvasId+"', '"+o.callbackparam+"')", mf.Dyn.IT);
};
mf.Dyn.animateSizeto = function( objID )
{
	var obj = elements( objID );
	var ease = mf.Dyn.EASE;
	
	obj.currwidth = obj.basewidth + (Math.round(ease*(obj.currwidth - obj.basewidth) ));
	obj.currheight = obj.baseheight + (Math.round(ease*(obj.currheight - obj.baseheight) ));
	
	obj.style.width = obj.currwidth + "px";
	obj.style.height = obj.currheight + "px";
	obj.width = obj.currwidth + "px";
	obj.height = obj.currheight + "px";
	
	if( Math.abs( obj.currwidth - obj.basewidth ) <= (1/ease) && Math.abs(obj.currheight - obj.baseheight) <= Math.ceil( 1/ease ))
	{
		obj.width = obj.basewidth + "px";
		obj.height = obj.baseheight + "px";
		obj.style.width = obj.basewidth + "px";
		obj.style.height = obj.baseheight + "px";
		obj.moving = false;
		window.clearInterval( obj.sizeInterval );

		if( typeof(obj.resizeCallback) == "function" )
		{
			obj.resizeCallback(obj.callbackparam);
		}
	}
};
function simulateClick( obj ) 
{
	var evt = document.createEvent("MouseEvent"); // créer un évennement souris
	evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); // intiailser l'évennement déja crée par un click
	//var cb = document.getElementById("checkbox"); // pointer sur l'élement qui a l'id "checkbox"
	obj.dispatchEvent(evt); // envoyer l'évennement vers l'élement
	alert( 'ok' );	
};
// A INTEGRER DANS DRAGNDROP !!!!!
mf.Dyn.makeDynamicObject = function(staticObject, origWidth, origHeight)
{
	Top = mf.Object.getTop(staticObject);
	Left = mf.Object.getLeft(staticObject);
	Width = mf.Object.getWidth(staticObject);
	Height = mf.Object.getHeight(staticObject);

	var DynObjectName = 'mondo_dyn_object_' + mf.Dyn.moveCurrentID;
	var DynCanvasID = 'mondo_dyn_canvas_' + mf.Dyn.moveCurrentID;
	var StaticCanvasID = 'mondo_static_canvas_' + mf.Dyn.moveCurrentID;//staticObject.id;
	staticObject.id = StaticCanvasID;
	staticObject.rel = 'hidden';

	var dynObject = document.createElement('div');
	var dynObjectCanvas = document.createElement('div');

	dynObjectCanvas.id = DynCanvasID;
	dynObject.dynCanvasId = DynCanvasID;
	dynObject.staticCanvasId = StaticCanvasID;

	dynObject.name = DynObjectName;
	dynObject.id = DynObjectName;
		
	dynObject.left = Left;
	dynObject.top = Top;
	dynObject.width = Width;
	dynObject.height = Height;

	// Store original data
	dynObject.originalWidth = exists(origWidth) ? origWidth:Width;
	dynObject.originalHeight = exists(origHeight) ? origHeight:Height;
	dynObject.originalLeft = Left;
	dynObject.originalTop = Top;

	dynObject.style.width = Width + "px";
	dynObject.style.height = Height + "px";
	dynObject.style.position = "absolute";
	dynObject.style.left = Left + "px";
	dynObject.style.top = Top + "px";

	dynObject.baseLeft = Left;
	dynObject.baseTop = Top;

	dynObject.innerHTML = staticObject.innerHTML;
	
	dynObject.is_dyn = true;
	dynObject.attached = true;

	// Clear static object as a canvas
	staticObject.style.width = Width + "px";
	staticObject.style.height = Height + "px";
	staticObject.innerHTML = '';
	mf.Dyn.moveCurrentID++;

	//staticObject.offsetParent.appendChild( dynObject );
	elements(dynObject.staticCanvasId).appendChild( dynObject );
	//dynObjectCanvas.appendChild( dynObject );
	document.body.appendChild( dynObjectCanvas );
	
	return dynObject;
};

mf.Player = {};
mf.Player.TabPlayers = new Array();
mf.Player.CurrentPlayerID = 0;
mf.Player.SuperPlayer = function(swiff, flv, width, height)
{
	this.Swiff = swiff;
	this.Flv = flv;
	this.AnimWidth = width;
	this.AnimHeight = height;
	
	var DynVideo = false; this.DynVideo = DynVideo;
	var VideoShown = false; this.VideoShown = VideoShown;
	
	var ControllerHeight = 25; this.ControllerHeight = ControllerHeight;
	
	var OuterDivID = 'portfolio_item_video_outer'; this.OuterDivID = OuterDivID;
	var ObjectID = 'portfolio_item_video_object'; this.ObjectID = ObjectID;
	var VideoDivID = 'portfolio_item_video_div'; this.VideoDivID = VideoDivID;
	
	var Created = false; this.Created = Created;
	var CanvasClassName = 'mondovideo-content'; this.CanvasClassName = CanvasClassName;
	var DynVideo = false; this.DynVideo = DynVideo;
	var ID = false; this.ID = ID;
	var displayCallBack = false; this.displayCallBack = displayCallBack;
	var hideCallBack = false; this.hideCallBack = hideCallBack;
	var IdIntervalPreload; this.IdIntervalPreload = IdIntervalPreload;
	var Waiting = false; this.Waiting = Waiting;

	function showVideo(CallBack)
	{
		if( exists(CallBack) )
		{
			this.displayCallBack = CallBack;
		}

		if( !this.Created )
		{
			elements(this.OuterDivID).style.display = "block";
			var FlObj = mf.Text.makeFlashObject( this.Swiff, "100%", "100%", this.ObjectID);
			elements(this.VideoDivID).appendChild(FlObj);
			this.DynVideo = mf.Dyn.makeDynamicObject(elements(this.OuterDivID), 0, 0);
			elements(this.DynVideo.staticCanvasId).style.display = "none";
			this.ID = mf.Player.CurrentPlayerID;
			mf.Player.CurrentPlayerID++;
			mf.Player.TabPlayers[this.ID] = this;
			this.Created = true;
		}

		if( !this.VideoShown )
		{
			this.DynVideo.style.display = "block";

			DynCanvas = elements(this.DynVideo.dynCanvasId);
			DynCanvas.className = this.CanvasClassName;
	
			var ScreenWidth = mf.Screen.getVisibleW();
			var ScreenHeight = mf.Screen.getVisibleH();
			
			var CibleWidth = this.AnimWidth;
			var CibleHeight = this.AnimHeight + this.ControllerHeight;
			
			var xCible = ( ScreenWidth - CibleWidth ) / 2;
			var yCible = mf.Screen.getTop0() + ( ScreenHeight - CibleHeight ) / 2;
	
			this.DynVideo.left = ScreenWidth/2;
			this.DynVideo.top = mf.Screen.getTop0() + ScreenHeight/2;
			this.DynVideo.style.left = this.DynVideo.left + "px";
			this.DynVideo.style.top = this.DynVideo.top + "px";
			
			mf.Dyn.moveTo(this.DynVideo, xCible, yCible, false );
			mf.Dyn.sizeTo(this.DynVideo, CibleWidth, CibleHeight, mf.Player.SuperPlayer.onAppear, this.ID );

			this.VideoShown = true;
		}
		else
		{
			this.hideCallBack = CallBack;

			getMovie(this.ObjectID).callStopMovie();
			mf.Dyn.sizeTo(this.DynVideo, this.DynVideo.originalWidth, this.DynVideo.originalHeight, mf.Player.SuperPlayer.onDisAppear, this.ID);
			
			var ScreenWidth = mf.Screen.getVisibleW();
			var ScreenHeight = mf.Screen.getVisibleH();
			
			var xCible = ScreenWidth / 2;
			var yCible = mf.Screen.getTop0() + ScreenHeight / 2;

			
			mf.Dyn.moveTo(this.DynVideo, xCible, yCible, false );
			//mf.Dyn.moveTo(this.DynVideo, this.DynVideo.originalLeft, this.DynVideo.originalTop, false );
			this.VideoShown = false;
		}
	};
	this.showVideo = showVideo;
};
mf.Player.SuperPlayer.onAppear = function(playerID)
{
	var objectid = mf.Player.TabPlayers[playerID].ObjectID;
	var flv = mf.Player.TabPlayers[playerID].Flv;
	getMovie(objectid).callPlayMovie(flv);
	if( typeof(mf.Player.TabPlayers[playerID].displayCallBack) == "function" )
	{
		mf.Player.TabPlayers[playerID].displayCallBack();
	}
};
mf.Player.SuperPlayer.onDisAppear = function(playerID)
{
	var DynVideo = mf.Player.TabPlayers[playerID].DynVideo;
	
	DynVideo.style.left = DynVideo.originalLeft + "px";
	DynVideo.style.top = DynVideo.originalTop + "px";
	DynVideo.style.display = "none";
	
	DynCanvas = elements(DynVideo.dynCanvasId);
	DynCanvas.className = '';
	if( typeof(mf.Player.TabPlayers[playerID].hideCallBack) == "function" )
	{
		mf.Player.TabPlayers[playerID].hideCallBack();
	}
};


/* /MOVETO/SIZETO */

// SCROLL DIV
mf.Dyn.scrollHandler = {};
mf.Dyn.scrollHandler.IdInterval = new Array();
mf.Dyn.scrollHandler.scrollStep = 5;
mf.Dyn.scrollHandler.scrollIt = 30;
mf.Dyn.makeScrollDiv = function( SupportDivId, ContentDivId, BtnUpId, BtnDoId, height, selectedItemId, centerSelected )
{
	height = (height == null)? 200:height;

	var Support = elements(SupportDivId);
	var Content = elements(ContentDivId);
	var BtnUp = elements(BtnUpId);
	var BtnDo = elements(BtnDoId);

	var BaseTop = 0;
	if(selectedItemId != null)
	{
		var SelectedObject = elements( selectedItemId );
		BaseTop = -SelectedObject.offsetTop;
		
		if( centerSelected )
		{
			var Marge = Math.round((height - SelectedObject.offsetHeight) / 2);
			BaseTop += Marge;
		}
	}

	Support.style.position = "relative";
	Support.style.overflow = "hidden";
	Support.style.height = height + "px";
	
	Content.style.position = "absolute";
	Content.style.left = "0px";
	Content.style.top = BaseTop + "px";

	Content.topMax = 0;
	Content.topMin = Support.offsetHeight - Content.offsetHeight;

	BtnUp.scrollDivId = ContentDivId;
	mf.Event.addEvent( BtnUp, "mouseover", mf.Dyn.scrollHandler.scrollDo );
	mf.Event.addEvent( BtnUp, "mouseout", mf.Dyn.scrollHandler.stopScroll );

	BtnDo.scrollDivId = ContentDivId;		
	mf.Event.addEvent( BtnDo, "mouseover", mf.Dyn.scrollHandler.scrollUp );
	mf.Event.addEvent( BtnDo, "mouseout", mf.Dyn.scrollHandler.stopScroll );
};
mf.Dyn.scrollHandler.scrollUp = function(evt)
{
	var target = evt.target || evt.srcElement;
	//var ScrollContent = mf.Object.getVar(target, 'scrollDivId' );
	var ScrollContent = target.scrollDivId;
	var Step = - mf.Dyn.scrollHandler.scrollStep;
	mf.Dyn.scrollHandler.IdInterval[ScrollContent] = setInterval( 'mf.Dyn.scrollHandler.animateScrollUp( "'+ScrollContent+ '", "'+Step+'" )', mf.Dyn.scrollHandler.scrollIt);
	mf.Event.killEvent(evt);
};
mf.Dyn.scrollHandler.scrollDo = function(evt)
{
	var target = evt.target || evt.srcElement;
	var ScrollContent = target.scrollDivId;
	var Step = mf.Dyn.scrollHandler.scrollStep;
	mf.Dyn.scrollHandler.IdInterval[ScrollContent] = setInterval( 'mf.Dyn.scrollHandler.animateScrollDo( "'+ScrollContent+ '", "'+Step+'" )', mf.Dyn.scrollHandler.scrollIt);
	mf.Event.killEvent(evt);
};
mf.Dyn.scrollHandler.stopScroll = function(evt)
{
	var target = evt.target || evt.srcElement;
	var ScrollContent = target.scrollDivId;
	window.clearInterval( mf.Dyn.scrollHandler.IdInterval[ScrollContent] );
};
mf.Dyn.scrollHandler.animateScrollUp = function( id, step )
{
	var target = elements(id);
	step = parseInt( step );
	var TargetTop = parseInt(mf.Text.removePx(target.style.top));
	if( TargetTop > target.topMin)
		target.style.top = ( TargetTop + step ) + "px";
	else
		target.style.top = target.topMin + "px";
};
mf.Dyn.scrollHandler.animateScrollDo = function( id, step )
{
	var target = elements(id);
	step = parseInt( step );
	var TargetTop = parseInt(mf.Text.removePx(target.style.top));
	if( TargetTop < target.topMax)
		target.style.top = ( TargetTop + step ) + "px";
	else
		target.style.top = target.topMax + "px";
};
// /SCROLL DIV
////////////             /  DYN               ///////////




////////////               EASE              ///////////
mf.Ease = {};
mf.Ease.easeAnimateId = 0;
mf.EaseIt = 30;
mf.Ease.TranslateStep = 40;
mf.Ease.MinStep = 10;
mf.Ease.easing = false;
mf.Ease.mondoEaseManagerClass = function()
{
	var TabDesiredWidth = new Array();
	this.TabDesiredWidth = TabDesiredWidth;

	var TabCurrentWidth = new Array();
	this.TabCurrentWidth = TabCurrentWidth;

	var TabDesiredHeight = new Array();
	this.TabDesiredHeight = TabDesiredHeight;

	var TabCurrentHeight = new Array();
	this.TabCurrentHeight = TabCurrentHeight;


	var TabEtats = new Array();
	this.TabEtats = TabEtats;
	
	var TabWidths = new Array();
	this.TabWidths = TabWidths;
	
	var TabHeights = new Array();
	this.TabHeights = TabHeights;
	
	var TabDivIDs = new Array();
	this.TabDivIDs = TabDivIDs;

	var Processing = false;
	this.Processing = Processing;
	
	var OutFunction;
	this.OutFunction = OutFunction;
	
	var Mode = 'ease';
	this.Mode = Mode;

	function setEase( newease )
	{
		mf.Ease.mondoEaseManagerClass.coeffease = newease;
	};
	this.setEase = setEase;

	function Register( iditem, opened, move, offset, clearHeight )
	{
		if( !exists( iditem ) ){return false;}
		if( exists( opened ) )
		{
			this.TabEtats[iditem] = opened;
		}
		else
		{
			this.TabEtats[iditem] = true;
		}

		elements( iditem ).style.display = "block";
		elements( iditem ).style.overflow = "hidden";

		if( clearHeight ) elements( iditem ).style.height = '';

		this.TabHeights[iditem] = elements( iditem ).offsetHeight;
		this.TabWidths[iditem] = elements( iditem ).offsetWidth;

		if( ( exists( move ) && move == true) )
		{
			if( this.TabEtats[iditem] == false )
			{
				elements( iditem ).style.height = this.TabHeights[iditem] + 'px';
				this.TabEtats[iditem] = false;
			}
			else
			{
				elements( iditem ).style.height = '0px';
				this.TabEtats[iditem] = false;
			}
		}
		if( clearHeight && ( (opened && move) || (!opened && !move) ) )
		{
			elements( iditem ).style.height = '0px';
		}
	};
	this.Register = Register;

	function manageEase( divId, TabBtns, TabEtat )
	{
		for( var i = 0; i < TabEtat.length; i++ )
		{
			switch (TabBtns[i])
			{
				case divId:
					if( TabEtat[i] == false )
					{
						TabEtat[i] = !TabEtat[i];
						mondoEaseManager.EaseOpenClose( divId, false );
					}
				break;

				default:
					if( TabEtat[i] == true )
					{
						TabEtat[i] = !TabEtat[i];
						mondoEaseManager.EaseOpenClose( TabBtns[i], false );
					}
				break;
			}
		}
	};
	this.manageEase = manageEase;
	function EaseOpenClose( iditem, Sens, closeOffset, outFunction )
	{
		var minValue = 0;
		if( exists( closeOffset ) )
		{
			minValue = parseInt(closeOffset);
		}
		if( !exists(iditem) )
		{
			return false;
		}
		if(! exists( this.TabEtats[iditem] ) )
		{
			this.Register( iditem, true, true );
		}
		if( exists( outFunction ) )
		{
			this.OutFunction = outFunction;
		}
		if( Sens )
		{
			if( this.TabEtats[iditem] == false)
			{
				this.launchEase( iditem , minValue, this.TabWidths[iditem], null, null );
				TabEtats[iditem] = true;
			}
			else
			{
				this.launchEase( iditem , this.TabWidths[iditem], minValue, null, null );
				this.TabEtats[iditem] = false;	
			}
		}
		else
		{
			if( this.TabEtats[iditem] == false)
			{
				this.launchEase( iditem , null, null, minValue, this.TabHeights[iditem] );
				TabEtats[iditem] = true;
			}
			else
			{
				this.launchEase( iditem , null, null, this.TabHeights[iditem], minValue );
				this.TabEtats[iditem] = false;	
			}
		}
	};
	this.EaseOpenClose = EaseOpenClose;
	function launchEase( divid, widthBase, widthCible, heightBase, heightCible, outFunction )
	{
		if( divid == null )
		{return;}
		if( exists( outFunction ) )
		{
			this.OutFunction = outFunction;
		}
		if( exists( widthCible ) )
		{			
			widthCible = mf.Text.removePx( widthCible );
			this.TabDesiredWidth[divid] = parseInt(widthCible);
			if( !exists( this.TabCurrentWidth[divid] ) )
			{
				if( exists( widthBase ) )
				{
					widthBase = mf.Text.removePx( widthBase );
				}
				else
				{
					widthBase = elements( divid ).offsetWidth;
				}
				this.TabCurrentWidth[divid] = parseInt(widthBase);
			}
		}
		if( exists( heightCible ) )
		{
			var TheHeightCible = mf.Text.removePx( heightCible );
			this.TabDesiredHeight[divid] = parseInt(TheHeightCible);
			if( !exists( this.TabCurrentHeight[divid] ) )
			{
				var TheHeightBase = elements( divid ).offsetHeight;
				if( exists( heightBase ) )
				{
					TheHeightBase = mf.Text.removePx( heightBase );
				}
				TheHeightBase = mf.Text.removePx( TheHeightBase );
				this.TabCurrentHeight[divid] = mf.Text.removePx( TheHeightBase );
			}
		}
		if( this.TabDivIDs.length < 1 || (!in_array( divid, this.TabDivIDs )) )
		{
			this.TabDivIDs.push( divid );
		}
		if( mf.Ease.easing == false )
		{
			mf.Ease.easing = true;
			
			if(this.Mode == 'ease')
			{
				mf.Ease.easeAnimateId = setInterval(this.animateEase, mf.EaseIt);
			}
			else
			{
				mf.Ease.easeAnimateId = setInterval(this.animateTranslate, mf.EaseIt);
			}
		}
	};
	this.launchEase = launchEase;
	function animateEase()
	{
		var ie = '';
		var nb = 0;
		for( var iid = 0; iid < TabDivIDs.length; iid++ )
		{
			ie = TabDivIDs[iid];
			if( exists( TabCurrentWidth[ie] ) )
			{	
				nb++;
				var arrived = false;
				var step = Math.round(  mf.Ease.mondoEaseManagerClass.coeffease * ( TabDesiredWidth[ie] - TabCurrentWidth[ie] ) );
				if(step > 0 )
				{
					if( step < mf.Ease.MinStep ) step = mf.Ease.MinStep;
					var newWidth = TabCurrentWidth[ie] + step;
					elements(ie).style.width = newWidth + "px";
					TabCurrentWidth[ie] = newWidth;
					arrived = ( TabDesiredWidth[ie] - TabCurrentWidth[ie] < 0  );
				}
				else
				{
					if( step > -mf.Ease.MinStep ) step = -mf.Ease.MinStep;
					var newWidth = TabCurrentWidth[ie] + step;
					elements(ie).style.width = newWidth + "px";
					TabCurrentWidth[ie] = newWidth;
					arrived = ( TabDesiredWidth[ie] - TabCurrentWidth[ie] > 0  );
				}
				if( arrived  )
				{
					elements(ie).style.width = TabDesiredWidth[ie] + "px";
					TabCurrentWidth[ie] = TabDesiredWidth[ie];
					deleteEaseParams( iid, true );
				}
			}
			if( exists( TabCurrentHeight[ie] ) )
			{
				nb++;
				var arrived = false;
				var step = Math.round(  mf.Ease.mondoEaseManagerClass.coeffease * ( TabDesiredHeight[ie] - TabCurrentHeight[ie] ) );
				if(step > 0 )
				{
					if( step < mf.Ease.MinStep ) step = mf.Ease.MinStep;
					var newHeight = TabCurrentHeight[ie] + step;
					elements(ie).style.height = newHeight + "px";
					TabCurrentHeight[ie] = newHeight;
					arrived = ( TabDesiredHeight[ie] - TabCurrentHeight[ie] < 0  );
				}
				else
				{
					if( step > -mf.Ease.MinStep ) step = -mf.Ease.MinStep;
					var newHeight = TabCurrentHeight[ie] + step;
					elements(ie).style.height = newHeight + "px";
					TabCurrentHeight[ie] = newHeight;
					arrived = ( TabDesiredHeight[ie] - TabCurrentHeight[ie] > 0  );
				}
				if( arrived  )
				{
					elements(ie).style.height = TabDesiredHeight[ie] + "px";
					TabCurrentHeight[ie] = TabDesiredHeight[ie];
					deleteEaseParams( iid, true );
				}
			}
		}
		if(	nb < 1 )
		{
			if( exists( mondoEaseManager.OutFunction ) )
			{
				mondoEaseManager.OutFunction();
				mondoEaseManager.OutFunction = null;
			}
			clearInterval( mf.Ease.easeAnimateId );
			mf.Ease.easing = false;
		}
	};
	this.animateEase = animateEase;
	function animateTranslate()
	{
		var ie = '';
		var nb = 0;
		for( var iid = 0; iid < TabDivIDs.length; iid++ )
		{
			ie = TabDivIDs[iid];
			if( exists( TabCurrentWidth[ie] ) )
			{	
				nb++;
				if( TabDesiredWidth[ie] > TabCurrentWidth[ie] )
				{
					var newWidth = TabCurrentWidth[ie] + mf.Ease.TranslateStep;
					elements(ie).style.width = newWidth + "px";
					TabCurrentWidth[ie] = newWidth;

					if(newWidth >= TabDesiredWidth[ie])
					{
						elements(ie).style.width = TabDesiredWidth[ie] + "px";
						TabCurrentWidth[ie] = TabDesiredWidth[ie];
						deleteEaseParams( iid, true );
					}
				}
				else
				{
					var newWidth = TabCurrentWidth[ie] - mf.Ease.TranslateStep;
					elements(ie).style.width = newWidth + "px";
					TabCurrentWidth[ie] = newWidth;

					if(newWidth <= TabDesiredWidth[ie])
					{
						elements(ie).style.width = TabDesiredWidth[ie] + "px";
						TabCurrentWidth[ie] = TabDesiredWidth[ie];
						deleteEaseParams( iid, true );
					}
				}
			}
			if( exists( TabCurrentHeight[ie] ) )
			{
				nb++;
				if( TabDesiredHeight[ie] > TabCurrentHeight[ie] )
				{
					var newHeight = TabCurrentHeight[ie] + mf.Ease.TranslateStep;
					elements(ie).style.height = newHeight + "px";
					TabCurrentHeight[ie] = newHeight;

					if(newHeight >= TabDesiredHeight[ie])
					{
						elements(ie).style.height = TabDesiredHeight[ie] + "px";
						TabCurrentHeight[ie] = TabDesiredHeight[ie];
						deleteEaseParams( iid, true );
					}
				}
				else
				{
					var newHeight = TabCurrentHeight[ie] - mf.Ease.TranslateStep;
					elements(ie).style.height = newHeight + "px";
					TabCurrentHeight[ie] = newHeight;

					if(newHeight <= TabDesiredHeight[ie])
					{
						elements(ie).style.height = TabDesiredHeight[ie] + "px";
						TabCurrentHeight[ie] = TabDesiredHeight[ie];
						deleteEaseParams( iid, true );
					}
				}
			}
		}
		if(	nb < 1 )
		{
			if( exists( mondoEaseManager.OutFunction ) )
			{
				mondoEaseManager.OutFunction();
				mondoEaseManager.OutFunction = null;
			}
			clearInterval( mf.Ease.easeAnimateId );
			mf.Ease.easing = false;
		}
	};
	this.animateTranslate = animateTranslate;

	function deleteEaseParams( id, hor )
	{
		var idtext = TabDivIDs[id];
		TabDivIDs[id] = null;
		if( hor == true )
		{
			TabCurrentWidth[idtext] = null;
			TabDesiredWidth[idtext] = null;
		}
		else
		{
			TabCurrentHeight[idtext] = null;
			TabDesiredHeight[idtext] = null;
		}
	};
	this.deleteEaseParams = deleteEaseParams;
};
mf.Ease.mondoEaseManagerClass.coeffease = 0.2;
mf.Ease.mondoEaseManagerClass.ArrivedNegligence = Math.floor( 1 / 0.2 );

mf.Ease.AutoOpenCloseMenuInstances = [];
mf.Ease.AutoOpenCloseMenuClass = function()
{
	this.index = mf.Ease.AutoOpenCloseMenuInstances.length;
	mf.Ease.AutoOpenCloseMenuInstances[this.index] = this;

	var EventType = 'mouseover';
	this.EventType = EventType;

	var EaseManager = new mf.Ease.mondoEaseManagerClass();
	this.EaseManager = EaseManager;

	var TabBtns = new Array();
	this.TabBtns = TabBtns;

	var TabEtat = new Array();
	this.TabEtat = TabEtat;

	var CurrentDiv = '';
	this.CurrentDiv = CurrentDiv;

	var Sens = false;
	this.Sens = Sens;

	function addDiv( divId, btnId, closeIt, opened )
	{
		this.EaseManager.Register( divId, opened, closeIt );
		this.TabBtns.push(divId);

		var State = closeIt ? false:true;
		this.TabEtat.push(State);

		if(!closeIt) this.CurrentDiv = divId;

		var DivElement = elements(divId);
		DivElement.style.overflow = 'hidden';
		DivElement.EaseClassIndex = this.index;

		if( this.EventType != 'none' )
		{
			var BtnElement = elements(btnId);
			DivElement.style.cursor = 'pointer';
			BtnElement.divId = divId;
		
			//var CallBack = function() this.manageEase;
			BtnElement.EaseClassIndex = this.index;
			mf.Event.addEvent( BtnElement, this.EventType, mf.Ease.AutoOpenCloseMenuInstances[this.index].manageEase, true );
		}
	};
	this.addDiv = addDiv;

	function manageEase( evt )
	{
		var divId;
		var EventElement = false;

		if(typeof(evt) == "string")
		{
			divId = evt;
			EventElement = elements(evt);
			this.EaseManager.Register( EventElement.divId, false, false, false, true );
		}
		else
		{
			EventElement = mf.Event.getEventElement(evt);
		}

		var EaseClassIndex = EventElement.EaseClassIndex;
		var AutoOpenCloseMenuInstance = mf.Ease.AutoOpenCloseMenuInstances[EaseClassIndex];
		
		if(EventElement.divId) divId = EventElement.divId;

		for( var i = 0; i < AutoOpenCloseMenuInstance.TabEtat.length; i++ )
		{
			if( AutoOpenCloseMenuInstance.TabBtns[i] == divId )
			{
				//if( AutoOpenCloseMenuInstance.TabEtat[i] == false )
				//{
					AutoOpenCloseMenuInstance.TabEtat[i] = AutoOpenCloseMenuInstance.TabEtat[i] ? false:true;
					AutoOpenCloseMenuInstance.EaseManager.EaseOpenClose( divId, mf.Ease.AutoOpenCloseMenuInstances.Sens );
				//}
			}
			else if( AutoOpenCloseMenuInstance.TabEtat[i] == true )
			{
				AutoOpenCloseMenuInstance.TabEtat[i] = AutoOpenCloseMenuInstance.TabEtat[i] ? false:true;
				AutoOpenCloseMenuInstance.EaseManager.EaseOpenClose( AutoOpenCloseMenuInstance.TabBtns[i], mf.Ease.AutoOpenCloseMenuInstances.Sens );
			}
		}
		AutoOpenCloseMenuInstance.CurrentDiv = divId;
	};
	this.manageEase = manageEase;
};
////////////               EASE              ///////////

///
/// JAMAIS UTILISER L'OPERATEUR ATTRIBUTE_TEXT_BRUT SUR UNE SELECTION !!!!!!!!!!!!!!!!!!!!!!!!
///
////////////               XML              ///////////
mf.mondoXmlClientClass = function()
{
	var Kommunikator;
	this.Kommunikator = Kommunikator;
	var OutFunction;
	this.OutFunction = OutFunction;
	var AttributeArray;
	this.AttributeArray = AttributeArray;
	var xmlType = 'ezobject';
	this.xmlType = xmlType;
	var ImageAliases = new Array('original');
	this.ImageAliases = ImageAliases;
	var NoCache = true;
	this.NoCache = NoCache;

	function LoadResult( req, nextfunc, attributeArray, xmlType, body )
	{
		this.Kommunikator = null;
		this.Kommunikator = mf.mondoXmlClientClass.getXMLHTTP();

		if( typeof(nextfunc) == "function" ){ this.OutFunction = nextfunc };
		if(exists(xmlType) ){this.xmlType = xmlType;}
		
		if(exists(attributeArray) && attributeArray){this.AttributeArray	= attributeArray;}
		else{this.AttributeArray = new Array();}

		// Ref to this, the anonymous "onreadystatechange" will have access to the good scope.
		var _this = this;
		this.Kommunikator.onreadystatechange = function(){_this.onkreadystatechange()};

		if( this.NoCache == true )
		{
			var uniqString = Math.random();
			if(req.lastIndexOf('?') == -1 ){req += "?";}
			req += "&nocache=" + uniqString.toString();
		}

		this.Kommunikator.open("POST", req , true);
		this.Kommunikator.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		this.Kommunikator.send(body);
	};
	this.LoadResult = LoadResult;
	
	function onkreadystatechange() // evt ?
	{
		if( this.Kommunikator.readyState == 4 )
		{
			if( this.Kommunikator.status == 200 )
			{
				this.processResponse();
			}
		} 
	};
	this.onkreadystatechange = onkreadystatechange;

	function processResponse()
	{
		var Result = false;
		if( this.xmlType == 'ezobject' )
		{
			Result = mf.mondoXmlClientClass.processXmlResponse( this.Kommunikator.responseText, this.ImageAliases );
		}
		else if( this.xmlType == 'ezkeyword' )
		{						
			Result = mf.mondoXmlClientClass.processXmlKeyword( this.Kommunikator.responseText );
		}
		else
		{
			Result = this.Kommunikator.responseText;	
		}
		if( typeof(this.OutFunction) == "function" )
		{
			this.OutFunction(Result);
		}
	};
	this.processResponse = processResponse;

	function dispose()
	{
		this.Kommunikator = null;
		this.Kommunikator = mf.mondoXmlClientClass.getXMLHTTP();
	};
	this.dispose = dispose;
};

// STATIC
mf.mondoXmlClientClass.getXMLHTTP = function()
{
	var xhr=null;
	if(window.XMLHttpRequest)
	{
		xhr = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		try
		{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e1)
			{
				xhr = null; 
				alert('Error creating xmlhttp');
			}
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	}
	return xhr;
};
mf.mondoXmlClientClass.processXmlResponse = function(xml, ImageAliases)
{
	var doc;
	if (window.ActiveXObject)
	{
		doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async = 'false';
		doc.loadXML(xml);
	}
	else
	{
		var parser=new DOMParser();
		doc = parser.parseFromString(xml,"text/xml");
	}

	var tabResult = Array();
	if( doc.hasChildNodes() )
	{
		var allobjects = doc.getElementsByTagName('object');
		for(var o = 0; o < allobjects.length; o++)
		{
			tabResult[o] = Array();
			
			var title = allobjects[o].getElementsByTagName('title');
			tabResult[o]['title'] = title[0].firstChild.nodeValue;
			
			var parent = allobjects[o].getElementsByTagName('parent');
			if( exists( parent[0] ) )
				tabResult[o]['parent'] = parent[0].firstChild.nodeValue;
			else
				tabResult[o]['parent'] = '';

			var url = allobjects[o].getElementsByTagName('url');
			tabResult[o]['url'] = url[0].firstChild.nodeValue;
			
			var section_id = allobjects[o].getElementsByTagName('section_id');
			tabResult[o]['section_id'] = section_id[0].firstChild.nodeValue;

			var node_id = allobjects[o].getElementsByTagName('node_id');
			tabResult[o]['node_id'] = node_id[0].firstChild.nodeValue;

			var parent_node_id = allobjects[o].getElementsByTagName('parent_node_id');
			tabResult[o]['parent_node_id'] = parent_node_id[0].firstChild.nodeValue;

			var class_identifier = allobjects[o].getElementsByTagName('class_identifier');
			tabResult[o]['class_identifier'] = class_identifier[0].firstChild.nodeValue;

			var short_date = allobjects[o].getElementsByTagName('shortdate');
			tabResult[o]['shortdate'] = short_date[0].firstChild.nodeValue;

			var year = allobjects[o].getElementsByTagName('year');
			tabResult[o]['year'] = year[0].firstChild.nodeValue;

			var attributes = allobjects[o].getElementsByTagName('attribute');
			tabResult[o]['attributes'] = Array();

			for(var at=0; at < attributes.length; at++)
			{
				//if( exists( attributes[at].getElementsByTagName('value')[0] ) )
				//{
					var key_temp = attributes[at].getElementsByTagName('name')[0].firstChild.nodeValue;
					var valuetemp = attributes[at].getElementsByTagName('value')[0].firstChild;

					tabResult[o]['attributes'][key_temp] = Array();
					tabResult[o]['attributes'][key_temp]['type'] = attributes[at].getElementsByTagName('type')[0].firstChild.nodeValue;
					tabResult[o]['attributes'][key_temp]['has_content'] = attributes[at].getElementsByTagName('has_content')[0].firstChild.nodeValue;

					if(valuetemp)
					{
						if( ImageAliases.length > 0 && tabResult[o]['attributes'][key_temp]['type'] == 'ezimage' )
						{
							var Alias = '';
							var nodetemp = attributes[at].getElementsByTagName('value');
							tabResult[o]['attributes'][key_temp]['value'] = new Array();
							
							for( var ia = 0; ia < ImageAliases.length; ia++ )
							{
								Alias = nodetemp[0].getElementsByTagName( ImageAliases[ia] );
								var width = Alias[0].getElementsByTagName('width')[0].firstChild;
								if( width != null )
								{
									width = width.nodeValue;
								}
								else
								{
									tabResult[o]['attributes'][key_temp]['value'] = new Array();
									continue;
								}
								var height = Alias[0].getElementsByTagName('height')[0].firstChild;
								if( height != null )
								{
									height = height.nodeValue;
								}
								var url = Alias[0].getElementsByTagName('url')[0].firstChild;
								if( url != null )
								{
									url = url.nodeValue;
								}
								tabResult[o]['attributes'][key_temp]['value'][ImageAliases[ia]] = new Array(width, height, url);
							}
						}
						else if( tabResult[o]['attributes'][key_temp]['type'] == 'ezselection' )
						{
							tabResult[o]['attributes'][key_temp]['value'] = valuetemp.nodeValue;
							if( exists(attributes[at].getElementsByTagName('index')[0]) )
							{
								var indextemp = attributes[at].getElementsByTagName('index');
								if(exists(indextemp[0])  && exists(indextemp[0].firstChild))
								{
									indextemp = indextemp[0].firstChild;
									tabResult[o]['attributes'][key_temp]['index'] = indextemp.nodeValue;
								}
							}
						}
						else if( tabResult[o]['attributes'][key_temp]['type'] == 'ezvideoflv' )
						{
							tabResult[o]['attributes'][key_temp]['value'] = new Array();
							
							var nodetemp = attributes[at].getElementsByTagName('value');
							tabResult[o]['attributes'][key_temp]['value']['flv'] = nodetemp[0].getElementsByTagName( 'flv' )[0].firstChild.nodeValue;
							tabResult[o]['attributes'][key_temp]['value']['width'] = nodetemp[0].getElementsByTagName( 'width' )[0].firstChild.nodeValue;
							tabResult[o]['attributes'][key_temp]['value']['height'] = nodetemp[0].getElementsByTagName( 'height' )[0].firstChild.nodeValue;
							tabResult[o]['attributes'][key_temp]['value']['preview'] = nodetemp[0].getElementsByTagName( 'preview' )[0].firstChild.nodeValue;
						}
						else
						{
							tabResult[o]['attributes'][key_temp]['value'] = valuetemp.nodeValue;
						}
					}
				//}
			}
		} // END FOR
	}
	return tabResult;
};
mf.mondoXmlClientClass.processXmlKeyword = function(xml)
{
	var doc;
	if (window.ActiveXObject)
	{
		doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async = 'false';
		doc.loadXML(xml);
	}
	else
	{
		var parser=new DOMParser();
		doc = parser.parseFromString(xml,"text/xml");
	}
	var tabResult = Array();
	if( doc.hasChildNodes() )
	{
		var allobjects = doc.getElementsByTagName('object');
		for(var o = 0; o < allobjects.length; o++)
		{
			tabResult[o] = Array();
			
			var objtitle = allobjects[o].getElementsByTagName('name');
			tabResult[o]['name'] = objtitle[0].firstChild.nodeValue;
			
			var objclass = allobjects[o].getElementsByTagName('class');
			tabResult[o]['class'] = objclass[0].firstChild.nodeValue;
			
			var objurl = allobjects[o].getElementsByTagName('url');
			tabResult[o]['url'] = objurl[0].firstChild.nodeValue;
			
			var objsection_name = allobjects[o].getElementsByTagName('section_name');
			tabResult[o]['section_name'] = objsection_name[0].firstChild.nodeValue;
		}
	}
	return tabResult;
};
////////////               /XML              //////////

// INPUT CUSTOMIZER
mf.Customizer = function()
{
	var spanClassName = 'custom';
	this.spanClassName = spanClassName;
	
	var divClassName = 'custom';
	this.divClassName = divClassName;

	var inputClassName = 'custom';
	this.inputClassName = inputClassName;

	function customizeElements()
	{
		var TagName = this.tagName?this.tagName:'select';
		var SpanClass = this.spanClassName?this.spanClassName:'custom';
		var inputs = document.getElementsByTagName(TagName);
		var option;
		var active;

		for (var i=0;i<inputs.length;i++) 
		{
			var InputParent = inputs[i].parentNode;
			var Div = document.createElement('div');
			mf.Object.setClass(Div,this.divClassName);

			var Input = mf.Object.Overwrite(Div,inputs[i]);
			var InputID = Input.id;
			if( !InputID )
			{
				Input.id = 'input_' + mf.Customizer.GlobalCusomInputIDs;
				mf.Customizer.GlobalCusomInputIDs++;
			}

			option = Input.getElementsByTagName('option');
			active = " "; // blanc insécable.
			
			// Find active option.
			if( exists(option[0]) && exists(option[0].childNodes[0]))
			{
				active = option[0].childNodes[0].nodeValue;
			}
			for(var j=0;j<option.length;j++)
			{
				if( option[j].selected )
				{
					if( exists(option[0].childNodes[0]))
					{
						active = option[j].childNodes[0].nodeValue;
					}
				}
				//
				//alert(option[j].selected);
			}

			spantext = document.createTextNode(active);
			for(b = 0; b < option.length; b++) 
			{
				if(option[b].selected == true) 
				{
					if( exists(option[b].childNodes[0]) )
					{
						spantext = document.createTextNode(option[b].childNodes[0].nodeValue);
					}
					else
					{
						spantext = document.createTextNode(" ");
					}
				}
			}

			var Span = document.createElement('span');
			Span.id = "select" + Input.id;
			mf.Object.setClass(Span,SpanClass);
			mf.Object.setClass(Input,this.inputClassName);

			Span.appendChild(spantext);
			Div.appendChild(Input);
			Div.appendChild(Span);

			mf.Event.addEvent( Input, 'change', mf.Customizer.onSelectChange, true);
		}
	};
	this.customizeElements = customizeElements;
};
mf.Customizer.GlobalCusomInputIDs = 0;
mf.Customizer.onSelectChange = function(evt)
{
	var Select = mf.Event.getEventElement(evt);
	option = Select.getElementsByTagName("option");
	for(d = 0; d < option.length; d++) 
	{
		if(option[d].selected == true)
		{
			if( exists(option[d].childNodes[0]) )
				elements("select" + Select.id).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
			else
				elements("select" + Select.id).childNodes[0].nodeValue = " ";
		}
	}
	mf.Event.killEvent( evt );
};
// /INPUT CUSTOMIZER

// INPUT DEFAULT VALUES ( AUTO ERASE )
mf.Inputs = {};
mf.Inputs.InputClick = false;
mf.Inputs.InputID = '';
mf.Inputs.beforColor = '#AAA';
mf.Inputs.afterColor = '#000';
mf.Inputs.setDefaultInputValue = function( inpuID, defaultText)
{
	mf.Inputs.InputID = inpuID;
	elements(inpuID).value = defaultText;
	elements(inpuID).style.color = mf.Inputs.beforColor;
	mf.Event.addEvent( elements(inpuID), "click", mf.Inputs.onInputClick, false);
};
mf.Inputs.onInputClick = function()
{
	if( !mf.Inputs.InputClick)
	{
		elements(mf.Inputs.InputID).value = '';
		elements(mf.Inputs.InputID).style.color = mf.Inputs.afterColor;
		mf.Inputs.InputClick = true;
	}
};
// /INPUT DEFAULT VALUES ( AUTO ERASE )



////
//// UNDER CONSTRUCT 
////

mf.Window = {};
mf.Window.setScroll = function(x,y)
{
	window.scrollTo(x,y);
};
mf.Window.saveScroll = function()
{
	window.scrollTo(x,y);
};

mf.Cookie = {};
mf.Cookie.setCookie = function(name, val)
{
	var argv=EcrireCookie.arguments;
	var argc=EcrireCookie.arguments.length;
	
	var expires=(argc > 2) ? argv[2] : null;
	var path=(argc > 3) ? argv[3] : null;
	var domain=(argc > 4) ? argv[4] : null;
	var secure=(argc > 5) ? argv[5] : false;
	document.cookie=name+"="+escape(val)+((expires==null) ? "" : ("; expires="+expires.toGMTString()))+((path==null) ? "" : ("; path="+path))+((domain==null) ? "" : ("; domain="+domain))+((secure==true) ? "; secure" : "");
};

// TEST KEYBOARD
var DECIMAL_SHIFT = 16;
var DECIMAL_CTRL = 17;
var DECIMAL_ALT = 18;
var DECIMAL_ENTER = 13;
var DECIMAL_SUPPR = 46;
var DECIMAL_DEL = 8;

var DOWN_SHIFT = false;
var DOWN_CTRL = false;
var DOWN_ALT = false;
var DOWN_SUPPR = false;
var DOWN_DEL = false;

var LAST_CARACTER = '';
var LAST_KEY = 0;

// DONT MODIFY HERE
mf.DEBUG = false;
mf.DEBUG_KEY = DECIMAL_SHIFT;
mf.DEBUG_KEY_COUNT = 0;

function onStageKeyDown( e )
{
    var pressedKey;
    if (document.all)
		e = window.event;

    if (document.all)    
		pressedKey = e.keyCode;
	else
		pressedKey = e.which;
		
	// DEBUG
	if( pressedKey == mf.DEBUG_KEY )
	{
		mf.DEBUG_KEY_COUNT++;
		if(mf.DEBUG_KEY_COUNT > 10)
		{
			if( !mf.DEBUG )
			{
				mf.DEBUG = true;
				alert( 'JS DEBUG ENABLED' );
				mf.DEBUG_KEY_COUNT = 0;
			}
			else
			{
				mf.DEBUG = false;
				alert( 'JS DEBUG DISABLED' );
				mf.DEBUG_KEY_COUNT = 0;
			}
		}
		return;
	}

    pressedCharacter = String.fromCharCode(pressedKey);	
	
	LAST_CARACTER = pressedCharacter;
	LAST_KEY = pressedKey;
};
function onStageKeyUp( e )
{
    var pressedKey;
    if (document.all){e = window.event;}

    if (document.all){pressedKey = e.keyCode;}
	else{pressedKey = e.which;}
};
mf.Event.addEvent( document, "keydown", onStageKeyDown, false);
mf.Event.addEvent( document, "keyup", onStageKeyUp, false);





////////////               FLASH VERSION              //////////
function mondoFlashHandlerClass()
{
	var TabFlashDivs = new Array();
	this.TabFlashDivs = TabFlashDivs;

	function register( flashdiv, altdiv, version )
	{
		this.TabFlashDivs.push(new Array( flashdiv, altdiv, version ));
	};
	this.register = register;

	function insert()
	{
		var FlashPlayerVersionObject = 10; //deconcept.SWFObjectUtil.getPlayerVersion();
		var flashdiv;
		var altdiv;
		var version;
		for( var f=0; f < TabFlashDivs.length; f++ )
		{
			version = TabFlashDivs[f][2];
			if( FlashPlayerVersionObject.major < parseInt(version) )
			{
				flashdiv = TabFlashDivs[f][0];
				altdiv = TabFlashDivs[f][1];
				elements(flashdiv).innerHTML = elements(altdiv).innerHTML;
			}
		}
	};
	this.insert = insert;
};
////////////             /  FLASH VERSION              //////////


var CloseThis = false;
var IdOpened = true;
var TabMenuBtns = new Array();
var TabMenuEtat = new Array();
var mondoEaseManager = new mf.Ease.mondoEaseManagerClass();
var mondoXmlClient = new mf.mondoXmlClientClass();
var mondoFlashHandler = new mondoFlashHandlerClass();

mf.Event.addLoadEvent(mf.Event.insertAfterLoad);
//mf.Event.addLoadEvent( function () { new Lightbox(); } );


// entry point
mf.init();
//

//Sitemap

function showSitemap()
{
	if(exists(elements("mondoheadercontent")))
	{
		elements("mondoheadercontent").style.display = "none";
	}
	elements("sitemap").style.display = "block";
}

function hideSitemap()
{
	elements("sitemap").style.display = "none";
	if(exists(elements("mondoheadercontent")))
	{
		elements("mondoheadercontent").style.display = "block";
	}
}

//Tagcloud
function showTagcloud()
{
	if(exists(elements("mondoheadercontent")))
	{
		elements("mondoheadercontent").style.display = "none";
	}
	elements("tagcloud").style.display = "block";
}
function hideTagcloud()
{
	elements("tagcloud").style.display = "none";
	if(exists(elements("mondoheadercontent")))
	{
		elements("mondoheadercontent").style.display = "block";
	}
}

//Login

function showLogin()
{
	elements("fast-login").style.display = "block";
}

function hideLogin()
{
	elements("fast-login").style.display = "none";
}

//Mondochallenge
function showMondochallenge()
{
	if(exists(elements("mondoheadercontent")))
	{
		elements("mondoheadercontent").style.display = "none";
	}
	elements("mondochallenge").style.display = "block";
}
function hideMondochallenge()
{
	elements("mondochallenge").style.display = "none";
	if(exists(elements("mondoheadercontent")))
	{
		elements("mondoheadercontent").style.display = "block";
	}
}