function iFrameModal(url){
	$.modal('<iframe src="'+url+'" style="width:100%;height:400px;overflow-y:auto;"></iframe>',{onClose: modalClose});
}

function imModal(url,elementID,className){
	if($('div.izimediaLayer').length==0 && document.getElementById('mainIframe')){
		$('object',document.getElementById('mainIframe').contentDocument).css('visibility','hidden');
	}
	if(typeof className=='undefined') var className='layer';
	iziLayersObj.setCSSClass(className);
	iziLayersObj.setPosition('center');
	iziLayersObj.open(elementID);
	iziLayersObj.getAjaxContent(url);
}
function closeImLayer(misc){
	if(typeof misc==='object')
		iziLayersObj.remove($(misc).parents('div.izimediaLayer').attr('id'));
	else
		iziLayersObj.remove(misc);
	if($('div.izimediaLayer').length==0 && document.getElementById('mainIframe')){
		$('object',document.getElementById('mainIframe').contentDocument).css('visibility','visible');
	}
}

function closeModal(misc){
	if(typeof misc==='object')
		iziLayersObj.remove($(misc).parents('div.izimediaLayer').attr('id'));
	else
		iziLayersObj.remove(misc);

}

function modalOpen(dialog) {
	dialog.overlay.fadeIn('slow', function () {
		dialog.container.fadeIn('slow', function () {
			dialog.data.hide().slideDown('slow');	 
		});
	});
}
function modalClose (dialog) {
	dialog.data.fadeOut('slow', function () {
		dialog.container.hide('slow', function () {
			dialog.overlay.slideUp('slow', function () {
				$.modal.close();
			});
		});
	});
}

// iziLayers Class
var iziLayers=function(){
	this._iziLayersStack=new Array();
	this._iziLayersActiveZindex=550;
	this._iziLayersMaskZindex=150;
	this._iziLayersCSSClass='izimedia_class'; // class css par défaut
	this._iziLayersPosition='0';
}

// Ouverture d'un nouveau layer
iziLayers.prototype.open=function(layerID){
	if(this._iziLayersStack.length===0){
		this._createMask();
		this._iziLayersActiveZindex=550;
	}
	this._layerID=layerID;
	var layerExists=this._layerExists();
	if(layerExists===false)
		this._createLayer();
	
	var layerDiv=false;
	$('div.ressource_layer').each(function(i,v){
		if(v.id==_layerID) layerDiv=$(v);
	});
	if(!layerDiv) layerDiv=$('#'+this._layerID);
	this._layerDiv=layerDiv;
	this._layerDiv.attr('class','izimediaLayer '+this._iziLayersCSSClass);
		
	this._pileUpStack();
}

// Création du nouveau mask
iziLayers.prototype._createMask=function(){
	var mask_layer=$('<div id="mask"></div>');
	mask_layer.css('height',($(window).height()-118)+'px');
	mask_layer.css('width',$(window).width()+'px');
	mask_layer.css('z-index',this._iziLayersMaskZindex);
	$('body').append(mask_layer);
	this._hideElements('select,object');
}

// Suppresion du mask
iziLayers.prototype._removeMask=function(){
	$('#mask').remove();
	this.izi_layer_show_elements('select,object');
}


// Création du nouveau layer
iziLayers.prototype._createLayer=function(){
	var izi_layer=$('<div id="'+this._layerID+'" class="izimediaLayer '+this._iziLayersCSSClass+'" style="position:absolute;display:none"></div>');
	$('body').append(izi_layer);
	this._iziLayersActiveZindex++;
	this._iziLayersStack.push(this._layerID);
}

// Gestion de l'empilement des layers
iziLayers.prototype._pileUpStack=function(pile_up_by_stack){
	if(this._iziLayersStack.length>0){
		for(var x in this._iziLayersStack){
			if(typeof pile_up_by_stack!=='undefined'){
				if(document.getElementById(this._iziLayersStack[x]) && document.getElementById(this._iziLayersStack[x]).style.zIndex>pile_up_by_stack)
					document.getElementById(this._iziLayersStack[x]).style.zIndex--;
			}else{
				if(this._iziLayersStack[x]===this._layerID){
					this._layerDiv.css('z-index',this._iziLayersActiveZindex);
				}
			}
		}
		this._hideElements('select');
		this._hideElements('object');
	}
}

// Gestion d'un contenu obtenu par XMLHTTPREQUEST dans le layer courant
iziLayers.prototype.getAjaxContent=function(url){
	var className=this._iziLayersCSSClass;
	var div=this._layerDiv;
	var divID=this._layerID;
	$.ajax({type: 'GET',url: url,complete:onComplete});
	function onComplete(obj,msg){
		$('#'+divID).html(obj.responseText);
		div.css('display','block');
		if(className==='modal'){
			div.hCenter();
			div.css('top','230px');
		}else{
			div.hCenter();
			div.css('top','125px');

			initLayerHeight();
		}
	}
}

// Suppression d'un layer
iziLayers.prototype.remove=function(layerID){
	var layerDiv=false;
	$('div.ressource_layer').each(function(i,v){
		if(v.id==_layerID) layerDiv=$(v);
	});
	if(!layerDiv) layerDiv=$('#'+layerID);
	var izi_layer=layerDiv;
	var currentZIndex=izi_layer.css('z-index');
	izi_layer.remove();
	for(var x in this._iziLayersStack)
		if(this._iziLayersStack[x]===layerID)
			break;
	this._iziLayersStack.splice(x,1);
	this._pileUpStack(currentZIndex);

	if(this._iziLayersStack.length===0){
		this._removeMask();
	}else{
		this.izi_layer_show_elements('select');
		this.izi_layer_show_elements('object');
	}
}

// Définition de la classe Css à utiliser
iziLayers.prototype.setCSSClass=function(css_class){
	this._iziLayersCSSClass=css_class;
}

// Définition du titre du bouton ferme
iziLayers.prototype.set_izi_layer_close_title=function(close_title){
	this.layer_close_title=close_title;
}

// Définition de la position du layer
iziLayers.prototype.setPosition=function(position){
	this._iziLayersPosition=position;
}

// Est ce que le layer existe ?
iziLayers.prototype._layerExists=function(){
	for(var x in this._iziLayersStack)
		if(this._iziLayersStack[x]===this._layerID)
			return true;
	return false;
}

iziLayers.prototype.izi_layer_show_elements=function(elementType){
	$(elementType).css('visibility','visible');
}
iziLayers.prototype._hideElements=function(elementType){
	$(elementType).css('visibility','hidden');
}

iziLayers.prototype.izi_layer_get_stack=function(){
	return this._iziLayersStack;
}

iziLayers.prototype.izi_layer_get_elementID_by_token=function(token){
	var tmp=iziLayers_Obj.izi_layer_get_stack();
	tmp=tmp.reverse();
	for(var x=0;x<tmp.length;x++){
		if(tmp[x].indexOf(token)!=-1){
			return tmp[x];
		}
	}
}

//--------------------------
// Elements and functions Declarations
//--------------------------

iziLayersObj=new iziLayers();