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){ var opc = {}; };
	
	opc.target = this;
	opc.tipo = 'dialog';
	
	$(this).click(function(event){
		event.preventDefault();
		opc.rutaModal = this.href;
		aModal.dialog(msj, titulo, opc);
	})
}


aModal = {
	
	nInstancias: 0,
	
	varsDefault: function(opc){
		
		// aca proceso y valido las variables que voy a necesitar para los dialogos

		opc.nroInstancia = aModal.nInstancias++;
		
		if(!opc.vars)		{	opc.vars		= {};	};
		if(!opc.width)		{	opc.width		= 480;	};
		
		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+'" instancia="' + opc.nroInstancia + '"></div>');
		opc.dialog = $('#dialog'+opc.nroInstancia);
		
		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)
			
			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;
		izq = ( $(window).width() - opc.dialog.width()	) / 2;
		
		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();
		});
	},
	
	closeAll:function(){
		
		$('.arixDialog').each(function(){
		
			opc = {};
		
			opc.nroInstancia = $(this).attr("instancia");
			opc.dialog = $('#dialog'+opc.nroInstancia);
			opc.overlay = $('#overlay'+opc.nroInstancia);
			
			aModal.endOverlay(opc);
			aModal.endDialog(opc);
		})
		
	},
	
	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
