			var BrowserDetect = {
				init: function () {
					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";
				},
				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",
						versionSearch: "Version"
					},
					{
						prop: window.opera,
						identity: "Opera",
						versionSearch: "Version"
					},
					{
						string: navigator.vendor,
						subString: "iCab",
						identity: "iCab"
					},
					{
						string: navigator.vendor,
						subString: "KDE",
						identity: "Konqueror"
					},
					{
						string: navigator.userAgent,
						subString: "Firefox",
						identity: "Firefox"
					},
					{
						string: navigator.vendor,
						subString: "Camino",
						identity: "Camino"
					},
					{		// for newer Netscapes (6+)
						string: navigator.userAgent,
						subString: "Netscape",
						identity: "Netscape"
					},
					{
						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.userAgent,
						   subString: "iPhone",
						   identity: "iPhone/iPod"
					},
					{
						string: navigator.platform,
						subString: "Linux",
						identity: "Linux"
					}
				]
			
			};
			BrowserDetect.init();



jcForms = new Class({

	//Agrega|Inserta captcha en el formulario...
		addCaptcha: function(table){
			var divContainer = new Element('div',{
				styles : {
					'background'	: 'url(http://ftpmundocuervo.com/images/securebar_fnd.png)',
					'width'			: '86px',
					'height'		: '23px'					
				}
			});
			
			var divSlider = new Element('div',{
				id 					: 'slider',
				styles : {
					'width'			: '76px',
					'height'		: '23px',
					'padding-top'	: '2px',
					'position'		: 'relative',
					'padding-left'	: '3px'
				}			
			});
			
			var divKnob = new Element('div',{
				styles : {
					'background'	: 'url(http://ftpmundocuervo.com/images/securebar_movil_1.png)',
					'width'			: '41px',
					'height'		: '19px',
					'cursor'		:'move'
				}			
			});
			
			var inpHidden = new Element('input',{
				type 				: 'text',
				value				: '',
				name				: 'securebar',
				id					: 'securebar',
				styles				: {
					'dispay'		: 'block',
					'width'			: '2px',
					'height'		: '2px',
					'opacity'		: '.0',
					'-moz-opacity'	: '.0',
					'filter'		: 'alpha(opacity=0)'				
   				},
				dir					: 'jcForms.evalCaptcha(this)'
			});
			
			var spanLegend = new Element('span',{
				html				: 'Deslice la barra de seguridad',
				styles				: {
					'display'		: 'block',
					'position'		: 'absolute',
					'left'			: '90px',
					'width'			: '300px',
					'top'			: '5px',
					'color'			: '#5a5a5a',
					'font-weight'	: 'bold',
					'font-size'		: '10px'
				}
			});
			
			var trTable = new Element('tr',{
				html				: '<td style="color:#000000;">Captcha:</td><td id="secureBarHere">&nbsp;</td>'
			});
			
			
			//Armo la estrucutura de elementos que conformar&aacute;n "securbar" para despu&eacute;s
			//adoptarla en el elemento form...
			divSlider.adopt(divKnob);
			divSlider.adopt(inpHidden);
			divSlider.adopt(spanLegend);
			divContainer.adopt(divSlider);
			
			if(BrowserDetect.browser == 'Explorer')
			{
				var lastTr = $$('input[name=submit]').getParent('tr');
					lastTr.set('id','lastTr');				
				document.all.lastTr.parentNode.insertBefore(trTable); 
			}
			else
			{
				var lastTr = table.getElement('tbody').getLast('tr');
				trTable.inject(lastTr,'before');
			}
			
			
			$('secureBarHere').adopt(divContainer);
			
			//Le doy funcionalidad a "secure bar"...
			var slider = divSlider;
			new Slider(slider, divKnob, {
				range: [0, 1],
				initialStep: 0,
				onChange: function(value){
					if(value == 1)
					{
						$('securebar').set('value',1);
						divKnob.setStyle('background','url(http://ftpmundocuervo.com/images/securebar_movil_2.png)');
					}
					else
					{
						$('securebar').set('value','');
						divKnob.setStyle('background','url(http://ftpmundocuervo.com/images/securebar_movil_1.png)');
					}
				}
			});
		},
		



		
	//Agrega checkbox de T&eacute;rminos y condiciones...
		addTerms: function(table){
			
			var trTable = new Element('tr',{
				html				: '<td>&nbsp;</td><td style="padding-top:7px;"><input type="checkbox" name="chkterms" id="chkterms">Acepto <a style="color:#E2D390; cursor:pointer;" onclick="jcForms.goPop(document.terms,\'T&eacute;rminos y condiciones\');">T&eacute;rminos y condiciones</a></td>'
			});
			
			if(BrowserDetect.browser == 'Explorer')
			{
				var lastTr = $$('input[name=submit]').getParent('tr');
					lastTr.set('id','lastTr');
				document.all.lastTr.parentNode.insertBefore(trTable); 				
			}
			else
			{
				var lastTr = table.getElement('tbody').getLast('tr');
				trTable.inject(lastTr,'before');
			}
		},
		
		
	//Lanza el pop ...
		goPop: function(html,title){
			
			//Scroll en Y...
			document.scrollY = window.pageYOffset;
			var winScroller = new Fx.Scroll(window);

			$('popBox').getElement('h2').set('html',title);
			$('popBox').getElement('#popContent').set('html',html);
			
			setTimeout(function(){
				//Dimensiones del pop
					var thePop = document.getElementById('popBox');
					var x = thePop.offsetWidth;
					var x = 400;
					var y = thePop.offsetHeight;
					var y = 300;
				//Posici&oacute;n centro del elemento..
					$('popBox').setStyles({
						'display'		: 'block',
						'position'	 	: 'fixed',
						'top' 		 	: '50%',
						'left'		 	: '50%',
						'margin-top' 	: '-'+(y/2)+'px',
						'margin-left'	: '-'+(x/2)+'px',
						'margin-bottom' : '30px',
						'z-index'	 	: '9999'
					});	
			},500);
		},
		
		
	//Crea el pop donde se lanzar&aacute;n los t&eacute;rminos...
		createPop: function(table){
			
			var divPopBox = new Element('div',{
				id					: 'popBox',
				styles: {
					'display'		: 'none',
					'position'		: 'absolute',
					'background'	: 'none',
					'top'			: '100px',
					'left'			: '50px',
					'z-index'		: '99999',
					'box-shadow'	: '1px 2px 7px 2px #999',
					'border-radius'	:'5px'
				}
			});
	
			var divClose = new Element('div',{
				styles: {
					'width'				: '14px',
					'height'			: '14px',
					'padding'			: '2px',
					'margin'			: '0',
					'margin-right'		: '-1px',
					'float'				: 'right',
					'position'			: 'relative',
					'z-index'			: '10',
					'top'				: '5px',
					'right'				: '5px',
					'background-color'	: '#000000',
					'border-radius'		: '2px',					
					'cursor'			: 'pointer'
				}
			});
			
			var imgClose = new Element('img',{
				src					: 'http://ftpmundocuervo.com/images/close.png',
				events				: {
					click: function(){
						jcForms.closePop();
       				}
				}
			});	
			
			var divData = new Element('div',{
				styles: {
					'position'		: 'relative',
					'border-radius'	: '5px',
					'background'	: '#fbf9f9',
					'border'		: '1px solid #d3d2d2'
				}
			});
			
			var h2Title = new Element('h2',{
				styles				: {
					'display'		: 'block',
					'font-size'		: '18px',
					'padding'		: '20px 5px 5px 20px',
					'margin'		: '0px'
				}
			});
			
			var divContent = new Element('div',{
				id					: 'popContent',
				styles: {
					'color'			: '#8c8c8a',
					'padding'		: '20px',
					'font-size'		: '10px',
					'border-radius'	: '5px',
					'padding-top'	: '0px'
				}
			});
			
			var divClear = new Element('div',{
				styles: {
					'clear'			: 'both'
				}
			});
			
			//Crea la estructura del pop...
			divClose.adopt(imgClose);
			divPopBox.adopt(divClose);
			divData.adopt(h2Title);
			divData.adopt(divContent);
			divPopBox.adopt(divData);
			divPopBox.adopt(divClear);
			$$('body').adopt(divPopBox);	
		},
		




	//Cierra el pop...
		closePop: function(){
			$('popBox').setStyle('display','none');
		},



	//Evalúa el formulario...
		evalForm: function(table,form,mode,ocf,wcf){
			setTimeout(function(){
				if(form)
				{
					//Genera un array de los elementos del formulario [inputs, selects, textareas, radios, checks]...
						var fieldsOnForm = table.getElements('input, select, textarea');
					
					//Agrega la clase evalForm a todos los [inputs, selects, textareas, radios, checks] del form...
						fieldsOnForm.each(function(field){
							field.addClass('evalForm');
							field.addEvent('blur', function() {
								field.tween('background-color', '#111111');
							});
						});
						
					//Encuentra todos los elementos con clase "evalForm" y los retomo en orden de aparici&oacute;n...
						var fieldsToEval = table.getElements('.evalForm');
						
					//Detiene el submit hasta que los campos sean validados...
						form.addEvent('submit',function(event){							
							var goSubmit = true;
							
							//Validaciones...
								fieldsToEval.each(function(el){
									//Prioridad si el campo debe ser validado con una funci&oacute;n especial...
									if(el.get('dir') && goSubmit)
									{
										var dirfunction = el.get('dir');
										var params = dirfunction.split('(');
										var funct  = params[0];
											params = params[1].split(')');
											params = params[0];
										if(params == '')
											var fun = ''+funct+'("'+el.get('id')+'")';
										else
											var fun = ''+funct+'("'+el.get('id')+'",'+params+')';
		
										if(!eval(fun))
										{
											goSubmit = false;
											event.stop();
										}
									}
									
									//Si el campo no tiene una validaci&oacute;n especial...
									if(!el.get('dir') && !el.get('disabled') && goSubmit && !el.hasClass('displayNone'))
									{
										if(el.getParent('td'))
											var whatkind = el.getParent('td').getPrevious('td').get('html').toLowerCase();
		
										switch(el.get('type'))
										{
											case "text":
												if(el.get('value')=='' && goSubmit)
												{
													jcForms.fxFieldError(el);
													jcForms.goPop('Ha olvidado completar este campo.','Campos requeridos');
													goSubmit = false;
													event.stop();
												}
												else
												{													
													if((whatkind.search('user') != '-1' || whatkind.search('usuario') != '-1' || whatkind.search('apellido') != '-1' || whatkind.search('nombre') != '-1' || whatkind.search('pass') != '-1') && goSubmit)
													{
														if(!(/^([a-zA-Z.áéíóúÁÉÍÓÚñÑ]+\s{0,1})+$/.test(el.get('value'))))
														{
															jcForms.fxFieldError(el);
															jcForms.goPop('Escriba s&oacute;lo caracteres alfanum&eacute;ricos, no deje m&aacute;s de un espacio en blanco.','Campos requeridos');
															goSubmit = false;
															event.stop();
														}
													}
													if((whatkind.search('email') != '-1' || whatkind.search('mail') != '-1') && goSubmit)
													{
														if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(el.get('value'))))
														{
															jcForms.fxFieldError(el);
															jcForms.goPop('El email no tiene una esctructura v&aacute;lida.','Campos requeridos');
															goSubmit = false;
															event.stop();
														}
													}
													if(whatkind.search('lada') != '-1' && goSubmit)
													{
														if(!(/(^[0-9]*)+$/.test(el.get('value'))))
														{
															jcForms.fxFieldError(el);
															jcForms.goPop('Escriba &uacute;nicamente n&uacute;meros.','Campos requeridos');
															goSubmit = false;
															event.stop();
														}
														else if(el.get('value').length < 2)
														{
															jcForms.fxFieldError(el);
															jcForms.goPop('Se esperan al menos dos d&iacute;gitos','Campos requeridos');
															goSubmit = false;
															event.stop();
														}
													}
													if((whatkind.search('telefono') != '-1' || whatkind.search('phonenumber') != '-1') && goSubmit)
													{
														if(!(/(^[0-9]*)+$/.test(el.get('value'))))
														{
															jcForms.fxFieldError(el);
															jcForms.goPop('Escriba &uacute;nicamente n&uacute;meros.','Campos requeridos');
															goSubmit = false;
															event.stop();
														}
														else if(el.get('value').length < 8)
														{
															jcForms.fxFieldError(el);
															jcForms.goPop('Se esperan al menos ocho d&iacute;gitos','Campos requeridos');
															goSubmit = false;
															event.stop();
														}
													}
												}
											break;
											case "password":
												if(el.get('value')=='' && goSubmit)
												{
													jcForms.fxFieldError(el);
													jcForms.goPop('Ha olvidado completar este campo.','Campos requeridos');
													goSubmit = false;
													event.stop();
												}
											break;
											case "select-one":
												if((el.get('value')=='' || el.get('value')=='0') && goSubmit)
												{
													jcForms.fxFieldError(el);
													jcForms.goPop('Ha olvidado seleccionar una opci&oacute;n.','Campos requeridos');
													goSubmit = false;
													event.stop();
												}
											break;
											case "textarea":
												if(el.get('value')=='' && goSubmit)
												{
													jcForms.fxFieldError(el);
													jcForms.goPop('Ha olvidado completar este campo.','Campos requeridos');
													goSubmit = false;
													event.stop();
												}
											break;
											case "checkbox":
												if(el.get('checked')==false && goSubmit)
												{
													jcForms.goPop('Ha olvidado seleccionar la casilla','Campos requeridos');
													goSubmit = false;
													event.stop();
												}
											break;
											case "radio":
												if(el.get('checked')==false && goSubmit)
												{
													jcForms.goPop('Ha olvidado completar este campo.','Campos requeridos');
													goSubmit = false;
													event.stop();
												}
											break;
										}
									}
								});
								if(goSubmit == true)
								{
									switch (mode)
									{
										
										case 'ajax':
										
											if(wcf)
											eval(wcf);
											
											new Request.HTML({
												method: 'post', 
												url: form.get('action'),
												data: form.toQueryString(),
												onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript)
												{
													//Javascript...
													eval(responseJavaScript);
		
													if(ocf)
													eval(ocf)
												}
											}).send();
										break;
										
										case 'submit':
											//form.submit();
										break;
									}
								}
						});
				}
			},1000);
		},
		
		
		
		fxFieldError: function(el){
			el.tween('background-color', '#AA4B4B');
			setTimeout(function(){el.tween('background-color', '#333333');},1000);
			el.focus();
		},
		
		
		
		
		evalCaptcha: function(el){
			if($(''+el+'').get('value') == '')
			{
				jcForms.goPop('Es necesario que deslice la barra de seguridad','Campos requeridos');
				return false;
			}
			else
				return true;
		}

		
});
var jcForms = new jcForms();
	
/*****************************************************************************************************/

window.addEvent('domready', function() {

	document.terms  = '<div style="width:400px; max-height:300px; overflow:auto;">';
	document.terms += '<p>Los datos personales que nos comparta ser&aacute;n tratados por Casa Cuervo, S.A. de C.V., con domicilio en Guillermo Gonz&aacute;lez Camarena No. 800, C.P. 01220, M&eacute;xico, D.F., M&eacute;xico, con el fin obtener r&eacute;cord de sus visitas, ponernos en contacto con usted y hacerle llegar informaci&oacute;n de Casa Cuervo con fines publicitarios y de promoci&oacute;n.</p>';
	document.terms += '<br><br>';
	document.terms += '<p>Al compartir sus datos personales otorga consentimiento para que los mismos sean tratados de conformidad con lo antes descrito y el Aviso de Privacidad, disponible en el mostrador y en <a href="www.mundocuervo.com/avisoprivacidad" target="_blank">www.mundocuervo.com/avisoprivacidad</a></p>';
	document.terms += '</div>';
		
	
	if($('frmContacto'))
	{
		$('frmContacto').erase('onsubmit');
		$('frmContacto').removeEvents('submit');
		document.getElementById("frmContacto").onsubmit = null;
		jcForms.createPop($('usrFormTable'));
		jcForms.addCaptcha($('usrFormTable'));
		jcForms.addTerms($('usrFormTable'));
		jcForms.evalForm($('usrFormTable'),$('frmContacto'),'submit',false,false);
		
		if(BrowserDetect.browser == 'Explorer')
		{
			var dis = $('lastTr').dispose();
			$('frmContacto').getElement('tbody').adopt(dis);
			var disb = $('frmContacto').getElement('tbody').dispose();
			$('frmContacto').adopt(disb);
		}
	}
});

