
jQuery.fn.aAlert = function(msj, titulo, opc){
	
	opc.target = this;
	opc.tipo = 'alert';

	$(this).click(function(event){
		event.preventDefault();
		aModal.alert(msj, titulo, opc);
	})
}

jQuery.fn.aConfirm = function(msj, titulo, callBack, opc){
	
	opc.target = this;
	opc.tipo = 'confirm';
	
	$(this).click(function(event){
		event.preventDefault();
		aModal.confirm(msj, titulo, callBack, opc);
	})
}

jQuery.fn.aModal = function(msj, titulo, opc){
	
	if(!opc){ opc = {}; };
	
	opc.target = this;
	opc.tipo = 'dialog';
	
	$(this).click(function(event){
		event.preventDefault();
		opc.rutaModal = this.href;
		aModal.dialog(msj, titulo, opc);
	})
}


aModal = {
	
	mInstancias: [],
	
	varsDefault: function(opc){
		
		// aca proceso y valido las variables que voy a necesitar para los dialogos

		opc.nroInstancia = aModal.mInstancias.length;
		
		if(!opc.vars)		{	opc.vars			= {};		};
		if(!opc.width)		{	opc.width		= 960;	};
		
		if(!opc.overIn)	{	opc.overIn		= 500;	};
		if(!opc.overOut)	{	opc.overOut		= 500;	};
		
		if(!opc.dialogIn)	{	opc.dialogIn	= 250;	};
		if(!opc.dialogOut){	opc.dialogOut	= 250;	};
		
		if(!opc.overAlpha){	opc.overAlpha	= 0.6;	};
		
		if(!opc.vars){ opc.vars = {}; };
		
		if(opc.titulo) {
		
			opc.vars.titulo = opc.titulo;
		}
		if(opc.msj){
			opc.vars.msj = opc.msj;
		}
		
		// otras funciones que voy a manjera:
		//onIniOverlay()
		//onShowDialog)
		//onCloseDialog
		//onEndOverlay()
		
		// seleciono los destinos
		if(!opc.rutaAlert)	{	opc.rutaAlert = 'ajax/alert.php'; };
		if(!opc.rutaConfirm)	{	opc.rutaConfirm = 'ajax/confirm.php'; };
		
		if(opc.tipo == 'alert'){			
			opc.maquetaLoad = opc.rutaAlert;
		}
		if(opc.tipo == 'dialog'){			
			opc.maquetaLoad = opc.rutaModal;
		}
		if(opc.tipo == 'confirm'){			
			opc.maquetaLoad = opc.rutaConfirm;
		}
		
		//creo las maquetas que voy a neesitar
		$('body').append('<div class="arixOverlay" id="overlay'+opc.nroInstancia+'"></div>');
		opc.overlay = $('#overlay'+opc.nroInstancia);
		
		if(opc.bgColor){	opc.overlay.css({backgroundColor:opc.bgColor});	}
		
		
		$('body').append('<div class="arixDialog" id="dialog'+opc.nroInstancia+'"></div>');
		opc.dialog = $('#dialog'+opc.nroInstancia);
		
		// guado todos los datos del la instancia en un array
		aModal.mInstancias.push(opc);
		
		return opc;

	},
	
	iniOverlay : function(opc){

		if(opc.onIniOverlay) { opc.onIniOverlay(); };

		// asigno eventos
		aModal.alinearOverlay(opc);
		
		$(window).resize(function(){
			aModal.alinearOverlay(opc);
		})
		
		opc.overlay.css({opacity:opc.overAlpha})
		
		// muestro el overlay
		opc.overlay.hide();
		opc.overlay.fadeIn(opc.overIn);
	},
	alinearOverlay:function(opc){
		
		if($.browser.msie && parseInt($.browser.version) <= 6){
		
			opc.overlay.css({
				position:'absolute',
				height: 	$(document).height()
			})
			
		}else{
		
			opc.overlay.css({
				height: 	$(window).height()
			})
		}
		
	},
	endOverlay:function(opc){
		
		opc.overlay.fadeOut(opc.overOut,function(){
			
			if(opc.onEndOverlay) { opc.onEndOverlay(); };
			
			opc.overlay.remove();
		});
	},
	

	iniDialog:function(opc){

		$.get(opc.maquetaLoad,opc.vars,function(data){
			
			opc.dialog.html(data)
			opc.dialog.css({width: opc.width })
			
			
			aModal.alinearDialog(opc);
			$(window).resize(function(){
				aModal.alinearDialog(opc);
			})
			
			// re ajusto el overlay
			aModal.alinearOverlay(opc)
			
			//oculto el dialogo
			opc.dialog.hide();
			
			opc.dialog.fadeIn(opc.dialogIn, function(){
				if(opc.onShowDialog) { opc.onShowDialog(); };
			});
			
			// asigno eventos
			opc.dialog.find('.btnClose').click(function(event){
			
				event.preventDefault();
				aModal.endOverlay(opc)
				aModal.endDialog(opc);
			})
			
			opc.dialog.find('.btnAceptar').click(function(event){
				
				event.preventDefault();
				opc.callBack(true);
				aModal.endOverlay(opc)
				aModal.endDialog(opc);
			})
			
			opc.dialog.find('.btnCancelar').click(function(event){
				
				event.preventDefault();
				opc.callBack(false);
				aModal.endOverlay(opc)
				aModal.endDialog(opc);
			})
			
		})
		
	},
	alinearDialog:function(opc){
		
		supe =( ( $(window).height() - opc.dialog.height()	) / 2 ) - parseInt(opc.dialog.css("border-top-width"));
		izq = ( ( $(window).width() - opc.dialog.width()	) / 2 ) - parseInt(opc.dialog.css("border-left-width"));
		
		if(supe < 0 ){
			supe = 0;
		}
		if(izq < 0 ){
			izq = 0;
		}
		
		if($.browser.msie && parseInt($.browser.version) <= 6){
			
			supe+= $(window).scrollTop();
			opc.dialog.css({position:'absolute'});
		}
		
		opc.dialog.css({
			left:	izq,
			top:	supe
		})
	},
	endDialog:function(opc){
		
		if(opc.onCloseDialog){	opc.onCloseDialog()	};
		
		opc.dialog.fadeOut(opc.dialogOut,function(){
			opc.dialog.remove();
		});
	},
	
	cerrarTodos: function(permitirEventos,opc){
		
		if(!opc){ opc = {};	};
		
		for (i in aModal.mInstancias){
		
			if(!permitirEventos){
			
				delete aModal.mInstancias[i].onIniOverlay;
				delete aModal.mInstancias[i].onShowDialog;
				delete aModal.mInstancias[i].onCloseDialog;
				delete aModal.mInstancias[i].onEndOverlay;
			}

			if(parseInt(i) +1 == aModal.mInstancias.length){
			
				// esta es la ultima vuelta
				if(opc.onCloseDialog) { aModal.mInstancias[i].onCloseDialog = opc.onCloseDialog; }
				if(opc.onEndOverlay) { aModal.mInstancias[i].onEndOverlay = opc.onEndOverlay; }
			}
		
			aModal.endOverlay(aModal.mInstancias[i])
			aModal.endDialog(aModal.mInstancias[i]);
		}
		
	},
	
	alert: function(msj,titulo,opc){
		
		if(!opc){ opc = {}; };
		
		opc.tipo = 'alert';
		
		if(msj)	 { opc.msj = msj;			};
		if(titulo){ opc.titulo = titulo;	};
		
		opc = aModal.varsDefault(opc);
		
		// inicio el overlay
		aModal.iniOverlay(opc);
		aModal.iniDialog(opc);
	},
	confirm: function(msj,titulo,callBack,opc){
		
		if(!opc){		opc = {};						};
		
		opc.tipo = 'confirm';
		
		if(msj)	 	{ opc.msj = msj;				};
		if(titulo)	{ opc.titulo = titulo;		};
		if(callBack){ opc.callBack = callBack;	};
		
		opc = aModal.varsDefault(opc);
		
		// inicio el overlay
		aModal.iniOverlay(opc);
		aModal.iniDialog(opc);
	},
	dialog: function(msj,titulo,opc){
		
		if(!opc){ opc = {}; };
		
		opc.tipo = 'dialog';
		
		if(msj)	 { opc.msj = msj;			};
		if(titulo){ opc.titulo = titulo;	};
		
		opc = aModal.varsDefault(opc);
		
		// inicio el overlay
		aModal.iniOverlay(opc);
		aModal.iniDialog(opc);
	}
	

	
}// END AJAX DIALOG
