//////////////////////////////////////////////////
//VERIFICA SI EL VALOR ENVIADO ES UN NUMERO
function isNumber(value) {
    return Number(value).toString() != 'NaN';
}

//////////////////////////////////////////////////
//RETRAE ELEMENTOS DE UN FORMULARIO
function toQueryStringForm(id_frm){
	var frm = $(id_frm);
	var queryString = [];
	if ( frm ) {
		var tag = frm.getTag();
		if (tag == "form") {
			frm.getElements('input, select, textarea').each(function(el){
				var name = el.name;
				var value = (el.tagName.toLowerCase() == 'select') ? el.options[el.selectedIndex].value : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
				
				if (value === false || !name) return;
				var qs = function(val){
					queryString.push(name + '=' + encodeURIComponent(val));
				};
				if ($type(value) == 'array') value.each(qs);
				else qs(value);
			});
		}
	}
	return queryString.join('&');
}

//////////////////////////////////////////////////
//LOADING
var hs = {
	options: {
		createFinish: false,
		opacity: true,
		className: 'hs-loading',
		loadingText: 'Cargando...',
		loadingOpacity: 0.7
	},
	show: function(ref) {  
		var ref = $(ref);
		if (!ref) return;
		hs.createElement();
		var pos = ref.getPosition();
		var size = ref.getSize();
		var size_hsl = hs.loading.getSize();
		var xc = (size.x - size_hsl.x) / 2;
		var yc = (size.y - size_hsl.y) / 2;
		hs.loading.setStyles({
			'left': pos.x + xc,
			'top': pos.y + yc
		});
	},
	hide: function (){
		if (hs.options.createFinish)
		hs.loading.setStyle('left', '-9999px');
	},
	createElement: function() {
		if (hs.options.createFinish) return;
		
		hs.loading = new Element('div', {
			'class': hs.options.className,
			'id': hs.options.className,
			'html': hs.options.loadingText,
			'styles': {
				'position': 'absolute',
				'top': '-9999px',
				'opacity': hs.options.loadingOpacity,
				'zIndex': '1'
			}
		}).inject(document.body);
		hs.options.createFinish = true;
	}
};

//////////////////////////////////////////////////
//OBJETOS
Element.implement({
	
	opacity: function(de, a, du, fu) {
		var el = this;
		var st = (typeof(de) != "undefined")?de:0;
		var ed = (typeof(a) != "undefined")?a:1;
		var du = (typeof(du) != "undefined")?du:500;
		if (el) {
			var myFx = new Fx.Style(el, 'opacity', {duration: du});
			myFx.set(st);
			myFx.start(st, ed);
			myFx.addEvent('onComplete', function(){
				var tipo = typeof(fu);
				if ( tipo != "undefined" ) {
					if (tipo == "function") {
						fu();
					} else if (tipo == "string") {
						eval(fu);
					}
				}
			});
		}
	},
	comboAnidado: function (hijo, url, default_selected) {
		var padre = this;
		var hijo = $(hijo);
		
		if (!hijo)
			return false;
		if (typeof(url) != "string")
			return false;
			
		var opt_first = hijo.getFirst();
		var val_first = opt_first.value;
		var txt_first = opt_first.text;
		hijo.empty();
		var id = padre.get('value');
		
		var opt = new Element('option');
		
		if (id > 0 || id.trim() != "") {
			opt.value = '';
			opt.text = 'Cargando...';
			hijo.options.add(opt);
			//url += ( url.contains('?') )?'&id=' + id + '&cache=' + $time():'?id=' + id + '&cache=' + $time();
                        url += '/id,' + id + '/cache,' + $time() + '/';
			var newajax = new Ajax(url,{
				method: 'get',
				onComplete:function(response){
					hijo.empty();
					default_selected = ( typeof(default_selected) != 'undefined' )?default_selected:0;
					var opt_sel_default = 0;
					Json.evaluate(response).each(function(obj, index){
						var opt = new Element('option');
						opt.setProperty("value", obj.value);
				      	opt.setHTML(obj.text); 
				      	hijo.adopt(opt);
				      	if (obj.value == default_selected) {
							opt_sel_default = index;
						}
						
					}.bind(this));
					if (opt_sel_default > 0) {
						hijo.options[opt_sel_default].selected = true;
					}
				},
				onFailure: function(response){
					opt.value = '';
					opt.text = 'Fallo conexion.';
					hijo.options.add(opt);
				}
			}).request();
			
		} else {
			opt.value = val_first;
			opt.text = txt_first;
			hijo.options.add(opt);
		}
	},
	showMSG: function () {
		var el = $(this);
		if (el) {
			if (el.getStyle('display') == "none") {
				el.setStyle('display', 'block');
				el.opacity(0, 1, 500);
			}
		}
	},
	hideMSG: function () {
		var el = $(this);
		if (el) {
			if (el.getStyle('display') == "block") {
				el.opacity(1, 0, 300, function(){ el.setStyle('display', 'none'); });
			}
		}
	},
	sendForm: function (update) {
		//update => (opcional) Es el id del elemento donde se desea cargar la respuesta.
		var el = $(this);
		var tag = el.get('tag');//retrae la etiqueta del elemento recibido (this)
		if (tag == "form") { //verfica si realmente es un formulario
			$(document.body).setStyle('cursor', 'wait');
			if (typeof(update) != 'undefined') {
				//Vaciar el elemento y mostrar el indicador cargando.
				var log = $('log_res').empty().addClass('ajax-loading');
			}
			//Establecer las opciones del formulario de Solicitud
			el.set('send', {
				onComplete: function(response) {
					if (typeof(update) != 'undefined') {
						log.removeClass('ajax-loading');
						log.set('html', response);
					}
					$(document.body).setStyle('cursor', 'default');
				}
			});
			//Enviar el form
			el.send();
		}
	},
	centerElement: function() {
		var el = $(this);
		var w = Window.getSize();
		var e = el.getSize();
		var rx = ( (w.x / 2) - (e.x / 2) ).round(0);
		var ry = ( (w.y / 2) - (e.y / 2) ).round(0);
		rx = (rx > 0)?rx:0;
		ry = (ry > 0)?ry:0;
		el.setStyles({
			'left':rx,
			'top':ry
		});
		
	},
	defaultValueSH: function(value, sh) {
		var el = $(this);
		if ( !el )
			return false;
		if (!sh) {
			el.value = ( el.value == value )?'':el.value;
		} else {
			el.value = ( el.value.trim() == "" )?value:el.value;
		}
	}
	
});

//////////////////////////////////////////////////
//PROPIEDAD DISABLED
Element.Properties.disabled = {
 
    get: function(){
    	return this.disabled;
    },
 
    set: function(value, ar){
        var tag = this.get('tag');
    	var valid = Array('form', 'input', 'textarea', 'select', 'button');
    	var existe = valid.contains(tag);
    	var excluir = (ar instanceof Array)?true:false;
    	if (existe && tag == "form") {
			//es un form
			var elems = this.getFormElements();
			elems.each(function(el) {
				if (excluir) {
					if ( !ar.contains(el.type) ) {
						el.disabled = value;
        				el.setAttribute('disabled', value);
					}
				} else {
					el.disabled = value;
        			el.setAttribute('disabled', value);
				}
			});
			
		} else if (existe) {
			//es otro tipo
			this.disabled = value;
        	this.setAttribute('disabled', value);
		}
    }
    //como usar get
    //$('nombre').get('disabled'); //primero el id del elemento y dentro de get siempre va la propiedad disabled y la funcion retorna true o false si el objeto esta habilitado o deshabilitado.
    //como usar set
    //var ar = ['checkbox', 'submit']; //excluir estos tipos de elementos
	//$('loginForm').set('disabled', false, ar);
	//1er parametro (Obligatorio) -> la propiedadla cual realizara en este caso siempre es disabled.
	//2do parametro (Obligatorio) -> habilitar o deshabilitar los campos (true o false)
	//3er parametro (Opcional) -> //excluir los elementos que no se desean habilitar o deshabilitar
 
};

//////////////////////////////////////////////////
//STRINGS IMPLEMENTS
String.implement({
	isMail: function() {
		var txt = this.trim();
		var regex = "^[\_]*([a-z0-9]+(\.|\_*)?)+@([a-z][a-z0-9\-]+(\.|\-*\.))+\.[a-z]{2,6}$";
		var regexp = new RegExp(regex, 'i');
		return regexp.test(txt);
	},
	
	isDate: function () {
		
		var dateStr = this.trim();
				
		if ( typeof(dateStr) == 'undefined' ) return false;
		
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
		var matchArray = dateStr.match(datePat); // is the format ok?
		
		var und = "undefined";
		
		if ( matchArray == null ) return false;
		
		if ( matchArray.length < 6 ) return false;
			
		var day = parseInt(matchArray[1]);
		var month = parseInt(matchArray[3]);
		var year = parseInt(matchArray[5]);
		
		if ( day < 1 || day > 31 ) {
			//dia inválido
			return false
		}
		
		if ( month < 1 || month > 12 ) { // check month range
			//mes inválido
			return false;
		}
		
		if ( (month==4 || month==6 || month==9 || month==11) && day==31) {
			//el mes no tiene 31 dias
			return false;
		}
		
		if (month == 2) { // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day > 29 || (day==29 && !isleap)) {
				//febrero no tiene n dias
				return false;
			}
		}
		//
		return true;
	},
	strReplace: function(sea, rep){
		var str = this;
		return str.split(sea).join(rep);
	},
	nl2br: function() {
		var str = this;
		return (str).replace(/([^>]?)\n/g, '$1<br />\n');
	}
	
});

//////////////////////////////////////////////////
//ARRAYS IMPLEMENTS
Array.implement({
	max: function() {
		var maximum = 0;
		for (var i = 0, l = this.length; i < l; i++)
			maximum = (maximum < this[i].toFloat())?this[i].toFloat():maximum;
		return maximum;
	},
	eraseIndex: function(index){
		for (var i = 0, l = this.length; i < l; i++) {
			if (i == index)
				this.erase(this[index]);
		}
		return this;
	}
});

//////////////////////////////////////////////////
//EXTENDER NUMBER PARA AGREGAR EL NUMBER FORMAT
Number.extend({
 
	/*
	Property: numberFormat
		Format a number with grouped thousands.

	Arguments:
		decimals, optional - integer, number of decimal percision; default, 2
		dec_point, optional - string, decimal point notation; default, '.'
		thousands_sep, optional - string, grouped thousands notation; default, ','

	Returns:
		a formatted version of number.

	Example:
		(36432.556).numberFormat()  // returns 36,432.56
		(36432.556).numberFormat(2, '.', ',')  // returns 36,432.56
	*/

	numberFormat : function(decimals, dec_point, thousands_sep) {
		decimals = Math.abs(decimals) + 1 ? decimals : 2;
		dec_point = dec_point || '.';
		thousands_sep = thousands_sep || ',';

		var matches = /(-)?(\d+)(\.\d+)?/.exec((isNaN(this) ? 0 : this) + ''); // returns matches[1] as sign, matches[2] as numbers and matches[2] as decimals
		var remainder = matches[2].length > 3 ? matches[2].length % 3 : 0;
		return (matches[1] ? matches[1] : '') + (remainder ? matches[2].substr(0, remainder) + thousands_sep : '') + matches[2].substr(remainder).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep) + 
				(decimals ? dec_point + (+matches[3] || 0).toFixed(decimals).substr(2) : '');
	}

});

//////////////////////////////////////////////////
//FUNCION SOLAMENTE NUMEROS Y PUNTO
function acceptNumPunto(evt){
	/*var nav4 = window.Event ? true : false;
	// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57, 'up' = 38, 'down' = 40, 'left' = 37, 'right' = 39, '.' = 46 
	var key = nav4 ? evt.which : evt.keyCode;*/
	var key = evt.which || evt.keyCode;
	
	return (key <= 13 || (key >= 48 && key <= 57) || key == 46 || key == 37 || key == 39 );
}

//////////////////////////////////////////////////
//FUNCION SOLAMENTE NUMEROS
function acceptNum(evt){
	/*var nav4 = window.Event ? true : false;
	// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57, 'up' = 38, 'down' = 40, 'left' = 37, 'right' = 39 
	var key = nav4 ? evt.which : evt.keyCode;*/
	var key = evt.which || evt.keyCode;
	//alert(code);
	return (key <= 13 || (key >= 48 && key <= 57) || key == 37 || key == 39 );
}

//////////////////////////////////////////////////
//FUNCION RELOAD PAGE
function reloadPage() {
	if ( document ) {
		document.location.reload();
	} else if ( window ) {
		window.location.reload();
	} else {
		history.go(0);
	}
}

//////////////////////////////////////////////////
//ENVIAR AJAX POR GET (default) o POST
function ajax(path, el, fun, methodgp, data_send) {
	
	if (typeof(path) == 'undefined')
		return false;
	
	if ( path.trim() == "" )
		return false;
	
	$(document.body).setStyle('cursor', 'wait');
	
	path += ( path.contains('?') )?'&cache=' + $time():'?cache=' + $time();
	
	var upd = ( typeof(el) != 'undefined')?( $(el) )?$(el):false:false;
	
	var methodgp = ( typeof(methodgp) != 'undefined' )?( methodgp.toLowerCase() == 'post' )?'post':'get':'get';
	
	var data_send = ( typeof(data_send) != 'undefined')?data_send:'';
	
	var newajax = new Ajax(path,{
		method: methodgp,
		data: data_send,
		evalScripts: true,
		update: upd,
		onComplete:function(response){
			var tipo = typeof(fun);
			if ( tipo != "undefined" ) {
				if (tipo == "function") {
					fun(response);
				} else if (tipo == "string" && fun.trim() != "" ) {
					eval(fun);
				}
			}
			$(document.body).setStyle('cursor', 'default');
		},
		onRequest:function(){
			//enviando
		},
		onFailure: function(response){
			alert('Error: '+response.status);
		}
	}).request();
}

//////////////////////////////////////////////////
//OBJETO PARA CREAR TOOLTIPS
var tips = {
	options:{
		atb: 'rel',
		showTime: 400,
		hideTime: 400,
		effects: true,
		offsets: {'x': 20, 'y': 15},
		opacity: 0.9
	},
	initialize: function() {
		this.toolTip = new Element('div', {
			'class': 'tool-tip',
			'id': 'tool-tip',
			'styles': {
				'position': 'absolute',
				'top': '0',
				'left': '0',
				'visibility': 'hidden'
			}
		}).inject(document.body);
		this.toolTip.addEvent('click', function(){tips.hide(); });
	},
	position: function(){
		if (!this.existe)
			return false;
		var pos = $(this.el).getPosition();
		this.toolTip.setStyles({
			'left': pos.x + this.options.offsets.x,
			'top': pos.y + this.options.offsets.y
		});
	},
	createContent: function(txt) {
		if (typeof(txt) != 'undefined') {
			var cont = txt;
		} else {
			
			var cont = this.el.getAttribute(this.options.atb);
			if (cont.trim() == "") {
				this.existe = false;
				return false;
			}
			
		}
		
		var dual = cont.split('::');
			
		if (dual.length > 1){
			this.title = new Element('div', {'class': 'tool-title'}).inject(this.toolTip).setHTML(dual[0].trim());
			this.text = new Element('div', {'class': 'tool-text'}).inject(this.toolTip).setHTML(dual[1].trim());
		} else {
			this.text = new Element('div', {'class': 'tool-text'}).inject(this.toolTip).setHTML(dual[0].trim());
			
		}
		
		this.existe = true;
		
	},
	build: function(txt) {
		if($('tool-tip'))
			$('tool-tip').destroy();
		this.initialize();
		this.createContent(txt);
		this.position();
	},
	show: function(el, txt) {
		this.el = el;
		this.build(txt);
		if ( !this.existe )
			return false;
		
		if (this.options.effects) {
			var size = this.toolTip.getSize();
			this.fxShow = new Fx.Styles(this.toolTip, {duration: this.options.showTime, wait: false});
			this.fxShow.start({
				'width':[0, size.x],
				'height':[0, size.y],
				'opacity':[0, this.options.opacity]
			});
		} else {
			this.toolTip.setStyle('visibility', 'visible');
		}
		
	},
	hide: function(){
		if (this.existe) {
			if (this.fxShow)
				this.fxShow.stop();
				
			this.existe = false;
			
			if (this.options.effects) {
				var size = this.toolTip.getSize();
				var fxHide = new Fx.Styles(this.toolTip, {duration: this.options.hideTime, wait: false});
				fxHide.start({
					'width':[size.x, 0],
					'height':[size.y, 0],
					'opacity':[this.options.opacity, 0]
				});
			} else {
				this.toolTip.setStyle('visibility', 'hidden');
			}
		}
	}
};

//////////////////////////////////////////////////
//OBJETO PARA GALERIA
var gallery = {
	options: {
		nextId: 'next',
		prevId: 'prev',
		nextLinks: 'nextlinks',
		nextDivId: 'nextDiv',
		prevDivId: 'prevDiv',
		className: '.product-photo img',
		current: 0,
		total: 0,
		images: []
	},
	init: function(newOptions) {
		if ( typeof(newOptions) != 'undefined' )
			$extend(gallery.options, newOptions)
		
		var opt = this.options; 
		
		var img = $$(opt.className);
		opt.total = img.length;
		if (opt.total <= 0)
			return false;
		
		img.each(function(item, index){
			opt.images.include(item);
		});
		
		opt.nextLinksObject = $(opt.nextLinks);
		opt.nextObject = $(opt.nextId);
		opt.prevObject = $(opt.prevId);
		opt.nextDiv = $(opt.nextDivId);
		opt.prevDiv = $(opt.prevDivId);
		
		if ( opt.total > 0 ) { //si hay imagenes mostrar 1 por default
			//mostrar la primer imagen
			this.show(0);
		}
		
		if ( opt.nextLinksObject && opt.total < 1  ) {
			
			opt.nextLinksObject.setStyle('display', 'none');
			
		} else if ( opt.nextObject && opt.total > 1 ) { //si hay mas de una imagen se muestran los controles
			
			opt.nextLinksObject.setStyle('visibility', 'visible');
			this.showHideControls();
			if ( opt.nextObject ) {
				opt.nextObject.addEvent('click', function(){
				    gallery.next();
				});
			}
			if ( opt.prevObject ) {
				opt.prevObject.addEvent('click', function(){
				    gallery.prev();
				});
			}
			
		}
		
	},
	show: function(index) {
		//alert('mostrar: '+index);
		var opt = this.options;
		opt.images.each(function(foto, key){
			foto.setStyle('display', ( index == key )?'block':'none');
			foto.opacity(0, 1, 400);
		});
	},
	next: function () {
		var opt = this.options;
		opt.current++;
		this.show(opt.current);
		this.showHideControls();
		
	},
	prev: function() {
		var opt = this.options;
		opt.current--;
		this.show(opt.current);
		this.showHideControls();
	}
	,
	showHideControls: function() {
		var opt = this.options;
		if ( opt.total > 1 ) { //si mas de una imagen se muestran los controles
			
			if ( opt.nextDiv )
				opt.nextDiv.setStyle('visibility', ( opt.total > (opt.current + 1) )?'visible':'hidden'); //si hay mas imagenes mostrar next
			
			if ( opt.prevDiv )
				opt.prevDiv.setStyle('visibility', ( opt.current >= 1 )?'visible':'hidden'); //si hay imagenes atras mostrar prev
			
		}
	}
};

//////////////////////////////////////////////////
//FUNCION VERIFICA EMAIL QUE NO ESTE REGISTRADO
var reg_email = false;
var last_email = "";
function verificaEmail(obj) {
	var em = obj.value.trim();
	
	if (last_email != em && em != "" && em.isMail()) {
		
		last_email = em;
		reg_email = true; //el email siempre existe hasta que termine de cargar el ajax
		
		var load_val = $('verifica_email');
		var obj_id = $('id_user');
		var id_user = (obj_id)?obj_id.value:'';
		
		var newajax = new Ajax('/index.php?act=usuario&sec=ajax_verifica&op=1&email=' + em + '&id_user=' + id_user + '&ajax=1&cache=' + $time(),{
			method: 'get',
			onComplete:function(response){
				if (response == 'ok' || response == 'error') {
					
					load_val.setHTML('<img src="'+templatePath+'images/'+response+'.png" align="absmiddle" />');
					
					if (response == 'error') {
						tips.show(obj, _LANG['_PRV_EXISTE_EMAIL']);
						obj.focus();
					} else {
						reg_email = false;
					}
				} else {
					alert('Error: '+response);
				}
				
			},
			onRequest:function(){
				load_val.setHTML('<img src="'+templatePath+'images/load_valida.gif" align="absmiddle" />');
				load_val.setStyle('visibility', 'visible');
			},
			onFailure: function(response){
				alert('Error: '+response.status);
			}
		}).request();
	}
}

//////////////////////////////////////////////////
//FUNCION VERIFICA USUARIO QUE NO ESTE REGISTRADO
var reg_user = false;
var last_user = "";
function verificaUsuario(obj) {
	var us = obj.value.trim();
	
	if (last_user != us && us != "") {
		
		last_user = us;
		reg_user = true; //el usuario siempre existe hasta que termine de cargar el ajax
		
		var load_val = $('verifica_user');
		
		var obj_id = $('id_user');
		var id_user = (obj_id)?obj_id.value:'';
		
		var newajax = new Ajax('/index.php?act=usuario&sec=ajax_verifica&op=2&user=' + us + '&id_user=' + id_user + '&ajax=1&cache=' + $time(),{
			method: 'get',
			onComplete:function(response){
				if (response == 'ok' || response == 'error') {
					
					load_val.setHTML('<img src="'+templatePath+'images/'+response+'.png" align="absmiddle" />');
					
					if (response == 'error') {
						tips.show(obj, _LANG['_PRV_EXISTE_USER']);
						obj.focus();
					} else {
						reg_user = false;
					}
				} else {
					alert('Error: '+response);
				}
				
			},
			onRequest:function(){
				load_val.setHTML('<img src="'+templatePath+'images/load_valida.gif" align="absmiddle" />');
				load_val.setStyle('visibility', 'visible');
			},
			onFailure: function(response){
				alert('Error: '+response.status);
			}
		}).request();
	}
}

//////////////////////////////////////////////////
//FUNCION VALIDA PROVEEDOR
function validaProveedor(frm) {
	var e = 0; //numero de errores
	
	if (frm.rfc.value.trim() == "") {
		$('erprov_1').showMSG();
		frm.rfc.focus();
		e++;
	}
	
	if (frm.descripcion.value.trim() == "") {
		$('erprov_2').showMSG();
		(e == 0)?frm.descripcion.focus():'';
		e++;
	}
	
	if (frm.direccion.value.trim() == "") {
		$('erprov_3').showMSG();
		(e == 0)?frm.direccion.focus():'';
		e++;
	}
	
	if (frm.telefono.value.trim() == "") {
		$('erprov_4').showMSG();
		(e == 0)?frm.telefono.focus():'';
		e++;
	}
	
	if (!frm.email.value.isMail()){
		//$('verifica_email').empty();
		$('erprov_6').showMSG();
		(e == 0)?frm.email.focus():'';
		e++;
	}
	
	if (frm.user.value.trim() == "") {
		$('verifica_user').empty();
		$('erprov_7').showMSG();
		(e == 0)?frm.user.focus():'';
		e++;
	}
	if (frm.password1.value.trim() == "") {
		$('erprov_8').showMSG();
		(e == 0)?frm.password1.focus():'';
		e++;
	}
	
	if (frm.password1.value.trim() != frm.password2.value.trim()) {
		$('erprov_9').showMSG();
		(e == 0)?frm.password2.focus():'';
		e++;
	}
	
	/*if (reg_email && frm.email.value.trim() != "") {
		tips.show(frm.email, _LANG['_PRV_EXISTE_EMAIL']);
		( e == 0 )?frm.email.focus():'';
		e++;
	}*/
	
	if (reg_user && frm.user.value.trim() != "") {
		tips.show(frm.user, _LANG['_PRV_EXISTE_USER']);
		( e == 0 )?frm.user.focus():'';
	}
	
	if (e == 0) {
		tips.hide();
	
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SAVE']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			//loadg.replaces($('btn'));		
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
	} else {
		return false;
	}
}
//////////////////////////////////////////////////
//FUNCION VALIDA REGISTRO DE CLIENTES
function validaCliente(frm){
	var err=0;
	if(frm.email.value==""){
		//if(frm.email.value.indexOf('@')!==1 && frm.email.value.indexOf('.')!==1)
			$('erprov_1').showMSG();
		//}else{
		//	$('erprov_1_1').showMSG();
		//}
		err++;
		return false;
	}
	if(frm.user.value==""){
		$('erprov_2').showMSG();
		err++;
		return false;
	}
	if(frm.nombre_novio.value==""){
		$('erprov_3').showMSG();
		err++;
		return false;
	}
	if(frm.apellidos_novio.value==""){
		$('erprov_4').showMSG();
		err++;
		return false;
	}
	if(frm.nombre_novia.value==""){
		$('erprov_5').showMSG();
		err++;
		return false;
	}
	if(frm.apellidos_novia.value==""){
		$('erprov_6').showMSG();
		err++;
		return false;
	}
	if(frm.pass!=null && frm.pass.value==''){
		$('errPass').showMSG();
		err++;
		frm.pass.focus();
	}
	if(frm.pass2!=null && (frm.pass.value!=frm.pass2.value)){
		$('errPass2').showMSG();
		err++;
		frm.pass2.focus();
	}
	if(frm.telefono.value==""){
		$('errTel').showMSG();
		err++;
		return false;
	}
	if(frm.direccion.value==""){
		$('errDir').showMSG();
		err++;
		return false;
	}
	if(frm.zip.value==""){
		$('errZip').showMSG();
		err++;
		return false;
	}
	if(frm.colonia.value==""){
		$('errCol').showMSG();
		err++;
		return false;
	}
	if(frm.delegacion.value==""){
		$('errDel').showMSG();
		err++;
		return false;
	}
	if(err==0){
		return true;
	}else{
		return false;
	}
}
//////////////////////////////////////////////////
//FUNCION VALIDA LOGIN
function validaLogin(idfrm) {
	
	var frm = $(idfrm);
	
	$('error_login').empty();
	if (frm.act.value.trim() == "") {
		alert('No hay accion');
		return false;
	}
	
	if (frm.sec.value.trim() == "") {
		alert('No hay seccion');
		return false;
	}
	
	if (frm.usuario.value.trim() == "") {
		tips.show(frm.usuario);
		frm.usuario.focus();
		return false;
	}
	
	if (frm.password.value.trim() == "") {
		tips.show(frm.password);
		frm.password.focus();
		return false;
	}
	tips.hide();
	
	var btn_login = $('div_login_btn').getHTML();
	
	if ($('loading_generic')) {
		$('loading_generic').setHTML(_LANG['_LBL_LOAD_VERIFY']);
		
		var loadg = $('loading_generic').clone();
		loadg.setStyle('display', 'block');
		
		$('div_login_btn').empty();
		loadg.inject($('div_login_btn'));
	}
	
	var newajax = new Ajax('/index.php?act='+frm.act.value.trim()+'&sec='+frm.sec.value.trim()+'&ajax=1&cache=' + $time(),{
		method: 'post',
		data: toQueryStringForm(idfrm),
		onComplete:function(response){
			if (response.indexOf('ok') >-1 ) {
				if (response.indexOf('ok')>0) {
					document.location.href="/index.php?act=proveedor&sec=detail&id="+parseInt(response);
				} else {
					document.location.href="/index.php";
				}
			} else {
				$('div_login_btn').setHTML(btn_login);
				$('error_login').setHTML(response);
				$('error_login').setStyle('display', 'block');
				$('error_login').opacity();
				//frm.usuario.select();
			}
			
		},
		onRequest:function(){
			//
		},
		onFailure: function(response){
			alert('Error: '+response.status);
			reloadPage();
		}
	}).request();
	
	return false;
}

//////////////////////////////////////////////////
//FUNCION VALIDA LOGIN CLIENTE (INVITADOS)
function validaLoginCliente() {
	
	var frm = $('loginFormCliente');
	
	$('error_login_cl').empty();
	if (frm.usuario.value.trim() == "") {
		tips.show(frm.usuario);
		frm.usuario.focus();
		return false;
	}
	
	if (frm.password.value.trim() == "") {
		tips.show(frm.password);
		frm.password.focus();
		return false;
	}
	
	tips.hide();
	
	var btn_login = $('div_login_btn_cl').getHTML();
	
	if ($('loading_generic')) {
		$('loading_generic').setHTML(_LANG['_LBL_LOAD_VERIFY']);
		
		var loadg = $('loading_generic').clone();
		loadg.setStyle('display', 'block');
		
		$('div_login_btn_cl').empty();
		loadg.inject($('div_login_btn_cl'));
	}
	
	var newajax = new Ajax('/index.php?act=login&sec=login&ajax=1&cache=' + $time(),{
		method: 'post',
		data: toQueryStringForm('loginFormCliente'),
		onComplete:function(response){
			if (response == 'ok') {
				reloadPage();
			} else {
				$('div_login_btn_cl').setHTML(btn_login);
				$('error_login_cl').setHTML(response);
				$('error_login_cl').setStyle('display', 'block');
				$('error_login_cl').opacity();
			}
			
		},
		onRequest:function(){
			//
		},
		onFailure: function(response){
			alert('Error: '+response.status);
			reloadPage();
		}
	}).request();
	
	return false;
}

//////////////////////////////////////////////////
//FUNCION VALIDA LOGIN PROVEEDOR
function validaLoginProveedor() {
	var frm = $('loginFormProv');
	
	$('error_login_prov').empty();
	if (frm.usuario.value.trim() == "") {
		tips.show(frm.usuario);
		frm.usuario.focus();
		return false;
	}
	
	if (frm.password.value.trim() == "") {
		tips.show(frm.password);
		frm.password.focus();
		return false;
	}
	
	tips.hide();
	
	var btn_login = $('div_login_btn_prov').getHTML();
	
	if ($('loading_generic')) {
		$('loading_generic').setHTML(_LANG['_LBL_LOAD_VERIFY']);
		
		var loadg = $('loading_generic').clone();
		loadg.setStyle('display', 'block');
		
		$('div_login_btn_prov').empty();
		loadg.inject($('div_login_btn_prov'));
	}
	
	var newajax = new Ajax('/index.php?act=login&sec=login&ajax=1&cache=' + $time(),{
		method: 'post',
		data: toQueryStringForm('loginFormProv'),
		onComplete:function(response){
			if (response == 'ok') {
				reloadPage();
			} else {
				$('div_login_btn_prov').setHTML(btn_login);
				$('error_login_prov').setHTML(response);
				$('error_login_prov').setStyle('display', 'block');
				$('error_login_prov').opacity();
			}
			
		},
		onRequest:function(){
			//
		},
		onFailure: function(response){
			alert('Error: '+response.status);
			reloadPage();
		}
	}).request();
	
	return false;
}

//////////////////////////////////////////////////
//FUNCION BORRAR FOTO DEL PRODUCTO
function borrarFotoProducto(id_foto) {
	
	var borrar = confirm("¿Está seguro que desea borrar esta foto?");
	
	if (typeof(id_foto) != "undefined" && borrar) {
		hs.options.loadingText = "Borrando...";
		hs.show('foto_'+id_foto);
		ajax('/index.php?act=producto&sec=ajax_del_photo&id='+id_foto+'&ajax=1', '', function() {
			hs.hide();
			$('foto_'+id_foto).destroy();
		});
	}
}

/////////////////////////////////////////////////
//FUNCION VALIDA CONTACTO
function validaContacto(frm) {
	var frm = $(frm);
	var errors = "";
	var e = 0;
	if ( frm.nombre_novia.value.trim() == "" ) {
		errors += "\n- Nombre de la Novia es requerido.";
		frm.nombre_novia.focus();
		e++;
	}
	
	if ( frm.ape_pat_novia.value.trim() == "" ) {
		errors += "\n- Apellido paterno de la Novia es requerido.";
		( e == 0 )?frm.ape_pat_novia.focus():'';
		e++;
	}
	
	if ( frm.ape_mat_novia.value.trim() == "" ) {
		errors += "\n- Apellido materno de la Novia es requerido.";
		( e == 0 )?frm.ape_mat_novia.focus():'';
		e++;
	}
	
	if ( frm.nombre_novio.value.trim() == "" ) {
		errors += "\n- Nombre del Novio es requerido.";
		( e == 0 )?frm.nombre_novio.focus():'';
		e++;
	}
	
	if ( frm.ape_pat_novio.value.trim() == "" ) {
		errors += "\n- Apellido paterno del Novio es requerido.";
		( e == 0 )?frm.ape_pat_novio.focus():'';
		e++;
	}
	
	if ( frm.ape_mat_novio.value.trim() == "" ) {
		errors += "\n- Apellido materno del Novio es requerido.";
		( e == 0 )?frm.ape_mat_novio.focus():'';
		e++;
	}
	
	if ( frm.email.value.trim() == "" ) {
		errors += "\n- E-mail de contacto es requerido.";
		( e == 0 )?frm.email.focus():'';
		e++;
	} else if (!frm.email.value.isMail()) {
		errors += "\n- E-mail de contacto es inválido.";
		( e == 0 )?frm.email.focus():'';
		e++;
	}
	
	if ( frm.confirma_email.value.trim() == "" ) {
		errors += "\n- Confirma tu e-mail es requerido.";
		( e == 0 )?frm.confirma_email.focus():'';
		e++;
	} else if ( frm.email.value != frm.confirma_email.value ) {
		errors += "\n- Los e-mail no corresponden.";
		( e == 0 )?frm.confirma_email.focus():'';
		e++;
	}
	var fecha = frm.dia.options[frm.dia.selectedIndex].value + "-" + frm.mes.options[frm.mes.selectedIndex].value + "-" + frm.anio.options[frm.anio.selectedIndex].value;
	
	if ( !fecha.isDate() ) {
		errors += "\n- La Fecha de tu Boda es inválida.";
		( e == 0 )?frm.dia.focus():'';
		e++;
	}
	
	if ( frm.estado.value.trim() == "" ) {
		errors += "\n- Estado es requerido.";
		( e == 0 )?frm.estado.focus():'';
		e++;
	}
	
	if ( frm.cuidad.value.trim() == "" ) {
		errors += "\n- Ciudad es requerido.";
		( e == 0 )?frm.cuidad.focus():'';
		e++;
	}
	
	if ( frm.codigo_postal.value.trim() == "" ) {
		errors += "\n- Código Postal es requerido.";
		( e == 0 )?frm.codigo_postal.focus():'';
		e++;
	}
	
	if ( frm.referencia.value.trim() == "" ) {
		errors += "\n- ¿Cómo te enteraste es requerido.";
		( e == 0 )?frm.referencia.focus():'';
		e++;
	}
	
	if ( errors.trim() != "") {
		alert("Por favor ingrese correctamente los siguientes datos.\n"+errors);
		return false;
	}
	return true;
	
}

//////////////////////////////////////////////////
//FUNCION VALIDA ADMINISTRADOR
function validaAdmin(frm) {
	var e = 0; //numero de errores
	
	if (frm.nombre.value.trim() == "") {
		$('eradm_1').showMSG();
		frm.nombre.focus();
		e++;
	}
	
	if (!frm.email.value.isMail()){
		//$('verifica_email').empty();
		$('eradm_2').showMSG();
		(e == 0)?frm.email.focus():'';
		e++;
	}
	
	if (frm.user.value.trim() == "") {
		$('verifica_user').empty();
		$('eradm_3').showMSG();
		(e == 0)?frm.user.focus():'';
		e++;
	}
	if (frm.password1.value.trim() == "") {
		$('eradm_4').showMSG();
		(e == 0)?frm.password1.focus():'';
		e++;
	}
	
	if (frm.password1.value.trim() != frm.password2.value.trim()) {
		$('eradm_4').showMSG();
		(e == 0)?frm.password2.focus():'';
		e++;
	}
	
	if (reg_email && frm.email.value.trim() != "") {
		tips.show(frm.email, _LANG['_PRV_EXISTE_EMAIL']);
		( e == 0 )?frm.email.focus():'';
		e++;
	}
	
	if (reg_user && frm.user.value.trim() != "") {
		tips.show(frm.user, _LANG['_PRV_EXISTE_USER']);
		( e == 0 )?frm.user.focus():'';
	}
	
	if (e == 0) {
		tips.hide();
	
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SAVE']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			//loadg.replaces($('btn'));		
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
	} else {
		return false;
	}
}

////////////////////////////////////////////////
//FUNCION DEFAULT SELECTED
function defaultSelected(combo, valor_default) {
	if ( combo ) {
		for (i = 0; i < combo.length; i++) {
			if (combo[i].value == valor_default) {
				combo[i].selected = true;
			}
		}
	}
}

//////////////////////////////////////////////////
//FUNCION VALIDA INVITADO
function validaInvitadoCliente(opt, idec) {
	var e = 0; //numero de errores
	
	var frm = $('frm_invitados');
	
	if (frm.nombre.value.trim() == "") {
		$('erinv_1').showMSG();
		frm.nombre.focus();
		e++;
	}
	
	if (frm.apellidos.value.trim() == "") {
		$('erinv_2').showMSG();
		(e==0)?frm.apellidos.focus():'';
		e++;
	}
	
	//si escribio el email valida que este bien
	if (frm.email.value.trim() != "") {
		
		if ( !frm.email.value.isMail() ) {
			$('erinv_3').showMSG();
			(e==0)?frm.email.focus():'';
			e++;
		}
	}
	
	var asistiran = frm.asistiran.options[frm.asistiran.selectedIndex].value;
	var mesa = frm.mesa.options[frm.mesa.selectedIndex].value;
	
	//si ya selecciono el numero de invitados debe de seleccionar la mesa
	if ( asistiran != "" ){
		if ( mesa == "" ) {
			$('erinv_4').showMSG();
			(e==0)?frm.mesa.focus():'';
			e++;
		}
			
	}
	
	//si ya selecciono la mesa debe de seleccionar el numero de invitados
	if ( mesa != "" ) {
		if ( asistiran == "" ){
			$('erinv_5').showMSG();
			(e==0)?frm.asistiran.focus():'';
			e++;
		}
			
	}
	
	//si ya selecciono mesa verifica si hay lugares disponibles
	if ( mesa != "" && e == 0 ) {
		
		var editar = ( opt == 'update' )?true:false;
		var idec = ( typeof(idec) != "undefined" )?idec.toInt():0; //id_evento_cliente
		
		mesa = mesa.toInt();
		asistiran = asistiran.toInt();
		//verificar el numero de invitados para esta mesa
		var maximo_invitados = $('personas_mesa').getText().toInt(); //maximo numero de invitados por mesa
		var total_inv_tbl = 0; //total de invitados en la tabla de esta mesa
		var mesas_tbl = $$('.mesa_tbl');
		var invitados_tbl = $$('.invitado_tbl');
		mesas_tbl.each(function(obj, index) {
			var mesa_tbl = obj.getText().toInt(); //mesa
			var rel_id = obj.getProperty('rel').toInt(); //rel que contiene el id del evento cliente
			if ( mesa_tbl == mesa ) { //si es la misma mesa le agrega la cantidad de invitados
				//si va a editar suma la cantidad de invitados actual
				if ( editar && rel_id == idec ) {
					total_inv_tbl += asistiran;
					asistiran = 0;
				} else {
					total_inv_tbl += invitados_tbl[index].getText().toInt();
				}
			}
		});
		
		//sumar los invitados seleccionados si se va a agregar
		var total_invitados = total_inv_tbl + asistiran;
		
		if ( total_invitados >  maximo_invitados) {
			var sobran = total_invitados - maximo_invitados;
			
			var msg = ( total_inv_tbl == maximo_invitados )?'La mesa: <strong>'+mesa+'</strong> tiene todos los lugares ocupados.':'';
			msg = ( total_inv_tbl < maximo_invitados )?'La mesa: <strong>'+mesa+'</strong> solo tiene <strong>'+(maximo_invitados  - total_inv_tbl)+'</strong> lugares disponibles.':msg;
			msg = ( total_inv_tbl > maximo_invitados )?'La mesa: <strong>'+mesa+'</strong> sobrepasa el limite de invitados (<strong>'+maximo_invitados+'</strong>).':msg;
			
			frm.asistiran.focus();
			tips.show(frm.asistiran, msg);
			e++;
		}
	}
	
	if (e == 0) {
		
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SAVE']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			$('div_loading').empty();
			loadg.inject($('div_loading'));
		} else {
			$('div_loading').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		
		$('div_guardar').setStyle('display', 'none');
		$('div_modificar').setStyle('display', 'none');
		$('div_loading').setStyle('display', 'block');
		
		return true;
	} else {
		return false;
	}
}

/////////////////////////////////////////////////
//FUNCION AGREGAR INVITADO
function agregarInvitado() {
	cancelarInvitado(false);
	var frm = $('frm_invitados');
	frm.nombre.focus();
}

/////////////////////////////////////////////////
//FUNCION CANCELAR INVITADO
function cancelarInvitado(ocultar){
	var oculta = ( typeof(ocultar) != "undefined" && !ocultar )?false:true;
	
	$('frm_inv').setStyle('display', ( oculta )?'none':'block');
	$('div_loading').setStyle('display', 'none');
	$('div_modificar').setStyle('display', 'none');
	$('div_guardar').setStyle('display', 'block');
	//ocultar errores
	for (i=1; i<=5; i++) {
		$('erinv_'+i).hideMSG();
	}
	var frm = $('frm_invitados');
	frm.reset();
	
	if ( oculta )
		var myFx = new Fx.Scroll(window).toElement('tbl_invitados');
}

/////////////////////////////////////////////////
//FUNCION GUARDAR INVITADO
var guardando_invitado = false;
function guardarInvitado(opt) {
	var frm = $('frm_invitados');
	var idec = 0;
	if ( opt == 'update' ) {
		idec = frm.id_evento_invitado.value;
	}
	
	if ( validaInvitadoCliente(opt, idec) ) {
		
		var opt = ( typeof(opt) != 'undefined' )?opt:'add';
		
		guardando_invitado = true;
		/*var dt = toQueryStringForm('frm_invitados'); //$('frm_invitados').toQueryString();
		alert(dt);*/
		ajax('/index.php?act=cliente&sec=ajax_act_invitado&ajax=1&op='+opt, '', function (response) {
			
			var nombre = frm.nombre.value;
			var apellidos = frm.apellidos.value;
			var direccion = frm.direccion.value;
			var telefonos = frm.telefonos.value;
			var email = frm.email.value;
			var mesa = frm.mesa.options[frm.mesa.selectedIndex].value;
			mesa = ( mesa > 0 )?mesa:'0';
			var confirmado = ( frm.confirmado.checked == true )?1:0;
			var confirmado_img = ( frm.confirmado.checked == true )?'si':'no';
			var invitados = frm.asistiran.options[frm.asistiran.selectedIndex].value;
			invitados = ( invitados > 0 )?invitados:'0';
			var asistiran = ( confirmado > 0 )?invitados:'0';
			var mail_env = ( opt == 'add' )?'no':frm.enviado.value;
			var mail_env_val = ( mail_env == 'no' )?'0':'1';
			
			var tbl = '';
			tbl += (opt == 'add')?'<div id="invitado_'+response+'">':'';
			tbl += '<table class="invitados" width="100%"><tr>';
					tbl += '<td width="37%">'+ apellidos + ' ' + nombre +'</td>';
					tbl += '<td width="8%" class="mesa_tbl" rel="'+response+'">'+ mesa +'</td>';
					tbl += '<td width="8%" class="invitado_tbl">'+ invitados +'</td>';
					tbl += '<td width="8%" class="confirmado_tbl" rel="'+confirmado+'"><img src="'+templatePath+'images/'+confirmado_img+'.png" /></td>';
					tbl += '<td width="8%" class="asistiran_tbl">'+ asistiran +'</td>';
					tbl += '<td width="16%" class="enviado_tbl" rel="'+mail_env_val+'"><img src="'+templatePath+'images/'+mail_env+'.png" /></td>';
					tbl += '<td width="15%" class="td_center" id="options_'+response+'">';
						tbl += '<a href="#" onclick="editarInvitado({id:\''+response+'\', nombre:\''+nombre+'\', apellidos:\''+apellidos+'\', direccion:\''+direccion+'\', telefonos:\''+telefonos+'\', email:\''+email+'\', mesa:\''+mesa+'\', confirmado:\''+confirmado+'\', asistiran:\''+invitados+'\', mail_env:\''+mail_env+'\' }); return false;"><img src="'+templatePath+'images/btn_edit.gif" title="Editar Invitado" /></a>&nbsp;&nbsp;';
						tbl += '<a href="#" onclick="borrarInvitado(\''+response+'\'); return false;"><img src="'+templatePath+'images/btn_del.gif" title="Borrar Invitado" /></a>&nbsp;&nbsp;';
						tbl += '<a href="#" onclick="verInvitado(\''+response+'\', \''+apellidos+' '+nombre+'\'); return false;"><img src="'+templatePath+'images/btn_search.png" title="Detalle del Invitado" /></a>';
					tbl += '</td>';
				tbl += '</tr></table>';
			tbl += (opt == 'add')?'</div>':'';
			
			cancelarInvitado(true);
			
			if ( opt == 'add' ) {
				$('lista_invitados').innerHTML += tbl;
			} else {
				$('invitado_'+response).setHTML(tbl);
			}
			
			actualizaTotalesInv();
			
			guardando_invitado = false;
			
			var myFx = new Fx.Scroll(window).toElement('tbl_invitados');
			
		}, 'post', toQueryStringForm('frm_invitados'));
		
	}
	return false;
}
/////////////////////////////////////////////////
//FUNCION ACTUALIZAR TOTALES DE LA LISTA DE INVITADOS
function actualizaTotalesInv() {
	//total de invitados
	var inv_tbl = $$('#lista_invitados .invitado_tbl');
	var total_inv = 0;
	inv_tbl.each(function(obj, index) {
		total_inv += obj.getText().toInt();
	});
	$('total_invitados').setHTML(total_inv);
	
	//total de confirmados
	var conf_tbl = $$('#lista_invitados .confirmado_tbl');
	var total_conf = 0;
	conf_tbl.each(function(obj, index) {
		total_conf += obj.get('rel').toInt();
	});
	$('total_confirmados').setHTML(total_conf);
	
	//total que asistiran
	var asist_tbl = $$('#lista_invitados .asistiran_tbl');
	var total_asist = 0;
	asist_tbl.each(function(obj, index) {
		total_asist += obj.getText().toInt();
	});
	$('total_asistiran').setHTML(total_asist);
	
	//total de enviados
	var env_tbl = $$('#lista_invitados .enviado_tbl');
	var total_env = 0;
	env_tbl.each(function(obj, index) {
		total_env += obj.get('rel').toInt();
	});
	$('total_enviados').setHTML(total_env);
}

/////////////////////////////////////////////////
//FUNCION BORRAR INVITADO
function borrarInvitado(id) {
	
	if (guardando_invitado)
		return false;
	
	var invitado = $('invitado_'+id);
	if ( !invitado ) 
		return false;
	
	//ajax('?act=cliente&sec=ajax_act_invitado&ajax=1&op='+opt, '', function (response) {
	
	var borrar = confirm('¿Esta seguro de borrar este invitado?');
	
	if ( borrar ) {
		//ocultar formulario
		cancelarInvitado(true);
		
		var opt = $('options_'+id);
		opt.setHTML('&nbsp;');
		opt.setStyles({
		    'background-image': 'url('+templatePath+'images/load_valida.gif)',
			'background-repeat': 'no-repeat',
			'background-position': 'center'
		});
		
		ajax('/index.php?act=cliente&sec=ajax_act_invitado&ajax=1&op=delete&id='+id, '', function() {
			invitado.destroy();
			actualizaTotalesInv();
		}, 'get');
				
	}
	
}

/////////////////////////////////////////////////
//FUNCION EDITAR INVITADO
function editarInvitado(opt) {
	var frm = $('frm_invitados');
	
	//limpiar formulario y errores
	cancelarInvitado(false);
	
	//asignar valores a los campos
	frm.id_evento_invitado.value = opt.id;
	frm.enviado.value = opt.mail_env;
	frm.nombre.value = opt.nombre;
	frm.apellidos.value = opt.apellidos;
	frm.direccion.value = opt.direccion;
	frm.telefonos.value = opt.telefonos;
	frm.email.value = opt.email;
	defaultSelected(frm.mesa, opt.mesa);
	frm.confirmado.checked = ( opt.confirmado.toInt() == 1 )?true:false;
	defaultSelected(frm.asistiran, opt.asistiran);
	
	$('div_guardar').setStyle('display', 'none');
	$('div_loading').setStyle('display', 'none');
	$('div_modificar').setStyle('display', 'block');
	
}

/////////////////////////////////////////////////
//FUNCION BUSCAR EMAIL
function buscarEmail(id) {
	//edit.insert();
	var opt = edit.options; //opciones generales
	
	var id_mail = 'input' + opt.separator + 'email' + opt.separator + id; //id del contenedor email
	var email = $(id_mail).value;
	if (email == '') {
		
		var el = $(id_mail);
		el.focus();
		tips.show(id_mail, 'El email es obligatorio.');
		return false;
		
	} else if ( !email.isMail() ) {
		
		var el = $(id_mail);
		el.focus();
		tips.show(id_mail, 'El email es inválido.');
		return false;
		
	}
	//console.log('buscador' + opt.separator + id);
	//buscador
	var buscador = $('buscador' + opt.separator + id);
	var buscando = $('buscando' + opt.separator + id);
	buscador.setStyle('visibility', 'hidden');
	buscando.setStyle('visibility', 'visible');
	
	var path = '/index.php?act=cliente&sec=ajax_get_data&email='+email+'&cache='+$time();
	
	var newajax = new Ajax(path,{
		method: 'get',
		onComplete:function(response){
			var data = JSON.decode(response);
			
			var nombre = 'input' + opt.separator + 'nombre' + opt.separator + id; //id del contenedor nombre
			$(nombre).value = data.nombre;
			
			var apellidos = 'input' + opt.separator + 'apellidos' + opt.separator + id; //id del contenedor nombre
			$(apellidos).value = data.apellidos;
			
			buscando.setStyle('visibility', 'hidden');
			buscador.setStyle('visibility', 'visible');
		},
		onRequest:function(){
			//enviando
		},
		onFailure: function(response){
			alert('Error: '+response.status);
		}
	}).request();
}

/////////////////////////////////////////////////
//FUNCION VALIDA CATEGORIA
function validaCategoria(frm) {
	var e = 0; //numero de errores
	
	if ( typeof(frm.proveedor) != "undefined" ) {
		if ( frm.proveedor.options[frm.proveedor.selectedIndex].value == "" ) {
			$('ercat_2').showMSG();
			(e == 0)?frm.proveedor.focus():'';
			e++;
		}
	}
	
	if (frm.nombre.value.trim() == "") {
		$('ercat_1').showMSG();
		(e == 0)?frm.nombre.focus():'';
		e++;
	}
	
	if (e == 0) {
		
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SAVE']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			//loadg.replaces($('btn'));		
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
	} else {
		return false;
	}
}
/////////////////////////////////////////////////
//FUNCION VALIDA MESA INVITADO
function validaMesaInvitado(frm) {
	var e = 0; //numero de errores
	
	var mesas = frm.mesas.value.trim().toInt();
	var personas = frm.personas.value.trim().toInt();
	
	if ( isNaN(mesas) ||  mesas < 1 ) {
		$('ermi_1').showMSG();
		(e == 0)?frm.mesas.focus():'';
		e++;
	}
	
	if ( isNaN(personas) ||  personas < 1 ) {
		$('ermi_2').showMSG();
		(e == 0)?frm.personas.focus():'';
		e++;
	}
	
	if (e == 0) {
		
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SAVE']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
	} else {
		return false;
	}
}

/////////////////////////////////////////////////
//FUNCION ENVIAR LISTA DE INVITADOS A BODAPLAN
function enviarListaInvitados(frm) {
	var enviar = confirm('¿Esta seguro de enviar un recordatorio a la lista invitados?');
	
	if ( enviar ) {
		
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SEND']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		
		return true;
	} else {
		return false;
	}
}

/////////////////////////////////////////////////
//FUNCION CONFIRMAR ASISTENCIA
function confirmAsist() {
	if ($('loading_generic')) {
		$('loading_generic').setHTML(_LANG['_LBL_LOAD_SEND']);
		
		var loadg = $('loading_generic').clone();
		loadg.setStyle('display', 'block');
		
		$('div_envia').empty();
		loadg.inject($('div_envia'));
	} else {
		$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
	}
}

/////////////////////////////////////////////////
//FUNCION VALIDA CONFIRMACION DE RECUPERAR CONTRASEÑA
function validaRecupera( frm ) {
	
	var e = 0; //numero de errores
	
	if (frm.usuario.value.trim() == "") {
		$('errec_1').showMSG();
		(e == 0)?frm.usuario.focus():'';
		e++;
	}
	
	if (e == 0) {
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SEND']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
		
	} else {
		return false;
	}
}

//////////////////////////////////////////////////
//FUNCION VALIDA INVITADO
function validaInvitado(frm) {
	var e = 0; //numero de errores
	
	if (frm.nombre.value.trim() == "") {
		$('erinv_1').showMSG();
		frm.nombre.focus();
		e++;
	}
	
	if (frm.apellidos.value.trim() == "") {
		$('erinv_2').showMSG();
		(e == 0)?frm.apellidos.focus():'';
		e++;
	}
	
	if (!frm.email.value.isMail()){
		$('verifica_email').empty();
		$('erinv_3').showMSG();
		(e == 0)?frm.email.focus():'';
		e++;
	}
	
	if (frm.user.value.trim() == "") {
		$('verifica_user').empty();
		$('erinv_4').showMSG();
		(e == 0)?frm.user.focus():'';
		e++;
	}
	if (frm.password1.value.trim() == "") {
		$('erinv_5').showMSG();
		(e == 0)?frm.password1.focus():'';
		e++;
	}
	
	if (frm.password1.value.trim() != frm.password2.value.trim()) {
		$('erinv_6').showMSG();
		(e == 0)?frm.password2.focus():'';
		e++;
	}
	
	if (reg_email && frm.email.value.trim() != "") {
		tips.show(frm.email, _LANG['_PRV_EXISTE_EMAIL']);
		( e == 0 )?frm.email.focus():'';
		e++;
	}
	
	if (reg_user && frm.user.value.trim() != "") {
		tips.show(frm.user, _LANG['_PRV_EXISTE_USER']);
		( e == 0 )?frm.user.focus():'';
	}
	
	if (e == 0) {
		tips.hide();
	
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SAVE']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			//loadg.replaces($('btn'));		
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
	} else {
		return false;
	}
}

//////////////////////////////////////////////////
//FUNCION VALIDA PRESUPUESTO
function validaPresupuesto(frm) {
	var e = 0; //numero de errores
	
	//verifica si la fecha tiene un formato valido
	if (frm.fecha.value.trim() != "") {
		//verifica fecha
		if ( !frm.fecha.value.isDate() ) {
			$('erpres_1').showMSG();
			frm.fecha.focus();
			e++;
		}
	}
	
	var monto = frm.monto.value.trim().toFloat();
	
	if (monto == "") {
		$('erpres_2').showMSG();
		( e == 0 )?frm.monto.focus():'';
		e++;
	} else if ( isNaN(monto) ) {
		$('erpres_2').showMSG();
		( e == 0 )?frm.monto.focus():'';
		e++;
	}
	
	if (e == 0) {
		
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SAVE']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			$('div_loading').empty();
			loadg.inject($('div_loading'));
		} else {
			$('div_loading').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		
		$('div_guardar').setStyle('display', 'none');
		$('div_modificar').setStyle('display', 'none');
		$('div_loading').setStyle('display', 'block');
		
		return true;
	} else {
		return false;
	}
}
var monto_anterior = 0;
var guardando_presupuesto = false;
/////////////////////////////////////////////////
//FUNCION GUARDAR PRESUPUESTO
function guardarPresupuesto( id_frm, op ){
	var frm = $(id_frm);
	if ( frm ) {
		var opt = ( typeof(op) != 'undefined' )?op:'add';
		if ( validaPresupuesto(frm) ) {
			guardando_presupuesto = true;
			ajax('/index.php?act=cliente&sec=ajax_act_pres&ajax=1&op='+opt, '', function (response) {
				
				var monto = frm.monto.value.trim().toFloat();
				var fecha = frm.fecha.value.trim();
				var concepto = frm.concepto.value.trim();
				
				var tbl = '';
				tbl += (op == 'add')?'<div id="presupuesto_'+response+'">':'';
				tbl += '<table class="invitados" width="100%"><tr>';
						tbl += '<td width="15%">'+ fecha +'</td>';
						tbl += '<td width="47%">'+ concepto.nl2br() +'</td>';
						tbl += '<td width="20%">$ '+ monto.numberFormat(2, '.', ',') +'</td>';
						tbl += '<td width="18%" class="td_center" id="options_'+response+'">';
							tbl += '<a href="#" onclick="editarPresupuesto( \''+id_frm+'\',{id:\''+response+'\', fecha:\''+fecha+'\', concepto:\''+escape(concepto)+'\', monto:\''+monto+'\'}); return false;">Editar</a> |';
							tbl += '<a href="#" onclick="borrarPresupuesto(\'frm_presupuestador\', \''+response+'\', \''+monto+'\'); return false;">Borrar</a>';
						tbl += '</td>';
					tbl += '</tr></table>';
				tbl += (op == 'add')?'</div>':'';
				
				frm.reset();
				
				$('div_loading').setStyle('display', 'none');
				$('div_modificar').setStyle('display', 'none');
				$('div_guardar').setStyle('display', 'block');
				
				frm.fecha.focus();
				
				if ( opt == 'add' ) {
					$('lista_presupuestos').innerHTML += tbl;
				} else {
					$('presupuesto_'+response).setHTML(tbl);
					monto = monto - monto_anterior;
				}
				
				var mt = $('monto_total');
				var act = mt.getText().replace(',', '').toFloat();
				var new_monto = ( act + monto ).numberFormat(2, '.', ',');
				mt.setText(  new_monto );
				
				guardando_presupuesto = false;
					
			}, 'post', toQueryStringForm(id_frm));
		}
	}
	
}

/////////////////////////////////////////////////
//FUNCION EDITAR PRESUPUESTO
function editarPresupuesto(id_frm, opt){
	var frm = $(id_frm);
	//asignar valores a los campos
	frm.id_presupuesto.value = opt.id;
	frm.fecha.value = opt.fecha;
	frm.concepto.value = unescape(opt.concepto);
	frm.monto.value = opt.monto.replace(',', '');
	
	monto_anterior = opt.monto.replace(',', '');
	
	$('div_guardar').setStyle('display', 'none');
	$('div_modificar').setStyle('display', 'block');
}

/////////////////////////////////////////////////
//FUNCION CANCELAR PRESUPUESTO
function cancelarPresupuesto(id_frm){
	var frm = $(id_frm);
	frm.reset();
	
	$('div_modificar').setStyle('display', 'none');
	$('div_guardar').setStyle('display', 'block');
}

/////////////////////////////////////////////////
//FUNCION CANCELAR PRESUPUESTO
function actualizarPresupuesto(id_frm){
	guardarPresupuesto( id_frm, 'update' );
}

/////////////////////////////////////////////////
//FUNCION BORRAR PRESUPUESTO
function borrarPresupuesto(id_frm, id_presupuesto, monto){
	//verifica si actualmente esta guardando el presupuesto
	if (guardando_presupuesto)
		return false;
	
	var presupuesto = $('presupuesto_'+id_presupuesto);
	if ( !presupuesto ) 
		return false;
	
	var con = confirm("¿Esta seguro de borrar este presupuesto?");
	if ( !con )
		return false;
	
	var frm = $(id_frm);
	frm.reset();
	
	$('div_modificar').setStyle('display', 'none');
	$('div_loading').setStyle('display', 'none');
	$('div_guardar').setStyle('display', 'block');
	
	var opt = $('options_'+id_presupuesto);
	opt.setHTML('&nbsp;');
	opt.setStyles({
	    'background-image': 'url('+templatePath+'images/load_valida.gif)',
		'background-repeat': 'no-repeat',
		'background-position': 'center'
	});
	
	var monto_actual = monto.replace(',', '').toFloat();
	
	ajax('/index.php?act=cliente&sec=ajax_act_pres&ajax=1&op=delete&id='+id_presupuesto, '', function() {
		
		var mt = $('monto_total');
		var act = mt.getText().replace(',', '').toFloat();
		var new_monto = ( act - monto_actual ).numberFormat(2, '.', ',');
		mt.setText(  new_monto );
		
		presupuesto.destroy();
		
	}, 'get');
	
}

/////////////////////////////////////////////////
//FUNCION CAMBIA IMAGEN
function cambiaImagen( el, img ){
	var el = $(el);
	if ( el ) {
		if ( typeof(img) != 'undefined' && img != '' ) {
			hs.options.loadingText = "Cargando...";
			hs.show(el);
			el.setProperty('src', img);
			el.addEvent('load', function(){
				hs.hide();
				el.opacity();
			});
		}
	}
}

/////////////////////////////////////////////////
//FUNCION BUSCA PROVEEDORES
function buscaProveedores( el ){
	var el = $(el);
	if ( el ) {
		var act = el.options[el.selectedIndex].value;
		
		var url = ( act != '' )?'/index.php?act=proveedor&sec=list&sucursal='+act:'/index.php?act=proveedor&sec=list';
		
		if (document){
			document.location = url;
		} else {
			location.href = url;
		}
		
	}
}

/////////////////////////////////////////////////
//FUNCION LOADING ACTUALIZA
function loadingA(n){
	var divLoading = $("progress");
	if (divLoading != null) {
		if (n == 1) {
			centrarDiv(divLoading);
			divLoading.setStyle('visibility', 'visible');
		} else {
			divLoading.setStyle('visibility', 'hidden');
		}
	}
}

//////////////////////////////////////////////////
//FUNCION SELECCIONAR TODOS
function toogleAll(obj, nom_sel) {
	
	var frm = ($('frm_comentarios'))?$('frm_comentarios'):obj.form;
	
	var sel = obj.checked;
	
	var ne = frm.elements.length;
	var str = "";
	for (i = 0; i < ne; i++) {
		tmp = frm.elements[i];
		
		if (tmp.type == 'checkbox' && tmp.name == nom_sel) {
			tmp.checked = (sel)?true:false;
		}
	}
	
}

//////////////////////////////////////////////////
//FUNCION REDIRECT
function redirect(url, time) {
	var span_tr = $('time_redirect');
	if ( span_tr ) {
		if (time > 1) {
			var nt = time - 1;
			span_tr.setText(nt);
			redirect.delay(1000, '', Array(url, nt));
		} else {
			if (document){
				document.location = url;
			} else {
				location.href = url;
			}
		}
	}
}

//////////////////////////////////////////////////
//FUNCION CAMBIAR PAGINA DE ACUERDO AL VALOR DEL SELECT
function changePage(obj) {
	var url = $(obj).get('value');
	if (document){
		document.location = url;
	} else {
		location.href = url;
	}
}


// ==========================
// Funciones AJAX
// ==========================
function getXmlHttpObject()
{
var xmlHttp=null;try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 // Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}
// Funcion para enviar datos via ajax
// mediante el metodo POST, recibe la url
// a la que se realiza la peticion, las variables
// con formato:
// { 'var1':valor1, 'var2':valor2 } o variable array
// respuesta a la funcion en retFuncion
function sendRequest(url,vars,retFunction){
	var parameters="";
	for(var key in vars){
		parameters+=key+"="+encodeURIComponent(vars[key])+"&";
	}
	parameters=parameters.substr(0,parameters.length-1);
	ajaxReq=getXmlHttpObject();
	if(ajaxReq==null){
		alert("Tu navegador no es compatible con AJAX, por favor actualízalo!");
	}
	ajaxReq.onreadystatechange=function(){
		if((ajaxReq.readyState==4)||(ajaxReq.readyState=="complete")){
			response=ajaxReq.responseText;
			document.body.style.cursor="default";
			retFunction(response);
		}else{
			document.body.style.cursor="wait";
		}
	}
	url=(url=='')?'/index.php':url; // URL por default
	ajaxReq.open("POST",url,true);
	ajaxReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajaxReq.setRequestHeader("Content-length", parameters.length);
    ajaxReq.setRequestHeader("Connection", "close");
    ajaxReq.send(parameters);
    return false;
}
// Evaluay devuelve objeto
function parseJSON(response){
	return eval('('+response+')');
}
function number_format( number, decimals, dec_point, thousands_sep ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://crestidg.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // *     example 1: number_format(1234.5678, 2, '.', '');
    // *     returns 1: 1234.57     
 
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}
function get(name){
	return document.getElementById(name);
}
//GALERIA HOME PROVEEDORES
function gallery_proveedores() {
	window.addEvent('domready', function() {
		// Let's define some variables first
		var wrapper = $('gallery_wrap'); // The outer wrapper
		var carousel = $('gallery_carousel'); // The inner wrapper
		var items = $$('#gallery_carousel li'); // The different elements, this is an array
		var item_width = 100; // The full width of a single item (incl. borders, padding, etc ... if there is any)
		var max_margin = items.length * item_width - item_width;
		var act_img = 1;
		
		// Set up the animation
		var animation = new Fx.Tween(carousel, {duration: 500});
		
		// The function to browse forward
		function next_item(pos){
			//console.log(pos);
			if(pos < -max_margin){
				act_img = 1;
				animation.start('left', 0);
			} else { 
				act_img++;
				//var newposition = (pos - item_width) - ( act_img * 1.5 );
				var newposition = pos - item_width - act_img;
				//console.log(newposition);
				animation.start('left', newposition);
			}
		}
		
		// The function to browse backward
		function previous_item(pos){
			if(pos >= 0){
				act_img = 1;
				animation.start('left', -max_margin - 30);
			} else {
				act_img++;
				var newposition = pos + item_width+act_img;
				animation.start('left', newposition);
			}
		}
		
		// Set up the 'next' and 'previous' buttons
		$('gallery_next').addEvent('click', function(){
			var position = parseInt(carousel.getStyle('left'));
			next_item(position);
		});
		
		$('gallery_previous').addEvent('click', function(){
			var position = parseInt(carousel.getStyle('left'));
			previous_item(position);
		});
		
	});
    return false;
}

function buscarCliente(frm){
	var err=0;
	if(frm.nombre_cliente.value==''){
		$('nombre_cliente').showMSG();
		get('nombre_cliente').focus();
		return false;
	}
	if(frm.apellidos_cliente.value==''){
		$('apellidos_cliente').showMSG();
		get('apellidos_cliente').focus();
		return false;
	}
	return true;
}

/////////////////////////////////////////////////
//FUNCION VALIDA CONFIRMACION DE RECUPERAR CONTRASEÑA
function validaCotizacion( frm ) {
	
	var e = 0; //numero de errores
	var dia = frm.dia.options[frm.dia.selectedIndex].value;
	var mes = frm.mes.options[frm.mes.selectedIndex].value;
	var anio = frm.anio.options[frm.anio.selectedIndex].value;
	
	if ( dia != "" || mes != "" || anio != "" ) {
		var fecha = dia+'-'+mes+'-'+anio;
		if ( !fecha.isDate() ) {
			$('ercot_1').showMSG();
			(e == 0)?frm.dia.focus():'';
			e++;
		} else {
			$('ercot_1').hideMSG();
		}
	} else {
		$('ercot_1').hideMSG();
	}
	
	if (e == 0) {
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SEND']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
		
	} else {
		return false;
	}
    return false;
}

/////////////////////////////////////////////////
//FUNCION VALIDA AFILIACION
function validaAfiliacion( frm ) {
	
	var e = 0; //numero de errores
	
	if (frm.nombre_comercial.value.trim() == "") {
		$('erafi_1').showMSG();
		frm.nombre_comercial.focus();
		e++;
	}
	
	if (frm.nombre_resp.value.trim() == "") {
		$('erafi_2').showMSG();
		( e == 0 )?frm.nombre_resp.focus():'';
		e++;
	}
	
	if (frm.rfc.value.trim() == "") {
		$('erafi_3').showMSG();
		( e == 0 )?frm.rfc.focus():'';
		e++;
	}
	
	if (frm.domicilio.value.trim() == "") {
		$('erafi_4').showMSG();
		( e == 0 )?frm.domicilio.focus():'';
		e++;
	}
	
	if (frm.telefono.value.trim() == "") {
		$('erafi_5').showMSG();
		( e == 0 )?frm.telefono.focus():'';
		e++;
	}
	
	if (!frm.email.value.isMail()) {
		$('erafi_6').showMSG();
		( e == 0 )?frm.email.focus():'';
		e++;
	}
	
	if (frm.email.value.trim() != frm.email2.value.trim()) {
		$('erafi_7').showMSG();
		(e == 0)?frm.email2.focus():'';
		e++;
	}
	
	if (frm.password.value.trim() == "") {
		$('erafi_8').showMSG();
		( e == 0 )?frm.password.focus():'';
		e++;
	}
	
	if (frm.password.value.trim() != frm.password2.value.trim()) {
		$('erafi_9').showMSG();
		( e == 0 )?frm.password2.focus():'';
		e++;
	}
	
	if (frm.nombre_comercial.value.trim() == "") {
		$('erafi_1').showMSG();
		( e == 0 )?frm.nombre_comercial.focus():'';
		e++;
	}
	
	if (frm.servicio.options[frm.servicio.selectedIndex].value == "") {
		$('erafi_10').showMSG();
		( e == 0 )?frm.servicio.focus():'';
		e++;
	}
	
	if (e == 0) {
		if ($('loading_generic')) {
			$('loading_generic').setHTML(_LANG['_LBL_LOAD_SEND']);
			
			var loadg = $('loading_generic').clone();
			loadg.setStyle('display', 'block');
			
			$('div_envia').empty();
			loadg.inject($('div_envia'));
		} else {
			$('div_envia').setHTML(_LANG['_LBL_LOAD_SAVE']);
		}
		return true;
		
	} else {
		return false;
	}
        return false;
}
function popUp(url) {
	newwindow=window.open(url,'name','height=550,width=550,scrollbars=yes');
	if (window.focus) {newwindow.focus()}
        return false;
}

//////////////////////////////////////////////////
//BORRAR LOGOTIPO DEL PROVEEDOR
function borrarLogotipo(id_proveedor) {
	
	var borrar = confirm("¿Está seguro que desea borrar el logotipo?");
	
	if (typeof(id_proveedor) != "undefined" && borrar) {
		hs.options.loadingText = "Borrando...";
		hs.show('logotipo_proveedor');
		ajax('/index.php?act=proveedor&sec=ajax_del_logo&id='+id_proveedor+'&ajax=1', '', function() {
			hs.hide();
			$('logotipo_proveedor').destroy();
		});
	}
        return false;
}

function popUpDynamic(page, width, height, name) {
	if ( typeof(page) == 'undefined' )
		return false;
	var w = ( typeof(width) != 'undefined' && isNumber(width) )?width:500;
	var h = ( typeof(height) != 'undefined' && isNumber(height) )?height:500;
	var n = ( typeof(name) != 'undefined' && !isNumber(height) )?name:'nw';
	
	var newWindow = window.open(page, n, 'toolbar=0,scrollbars=0,location=0,status=0,menubar=0,resizable=1,width='+w+',height='+h);
	newWindow.focus();
        return false;
}