function init() {

	function urlencode( str ) {  

		var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];  
		var ret = str.toString();  

		var replacer = function(search, replace, str) {  
			var tmp_arr = [];  
			tmp_arr = str.split(search);  
			return tmp_arr.join(replace);  
		};  

		// The histogram is identical to the one in urldecode.  
		histogram['!']   = '%21';  
		histogram['%20'] = '+';  

		// Begin with encodeURIComponent, which most resembles PHP's encoding functions  
		ret = encodeURIComponent(ret);  

		/*for (search in histogram) {  
			replace = histogram[search];  
			ret = replacer(search, replace, ret) // Custom replace. No regexing  
		} */
		ret = replacer('!', '%21', ret);
		ret = replacer('%20', '+', ret);

		// Uppercase for full PHP compatibility  
		return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {  
			return "%"+m2.toUpperCase();  
		});  

		return ret;  
	}
	
	function centerWrapper() {
		var $wrapper = $('wrapper');
		var diff = Math.round((window.getSize().y - $wrapper.getSize().y)/2);
		if (diff<0) {diff = 0;}
		$wrapper.setStyle('margin-top',diff);
	}

	window.addEvent('resize', centerWrapper);

	centerWrapper();

	$$('#menu a.boton').addEvent('click', function(e) {this.blur();});

	var $viewstate = $('viewstate');
	var $busca = $('busca');
	var $offset = $('os');

	var $s = $('s');

	$s.value = buscatxt;
	$s.addEvents({
		'focus': function(e) {
			if (e.target.className == 'inactive') { 
				e.target.className = '';
				if (buscaini) {e.target.value = '';}
			}
		},
		'change': function(e) {
			e.target.className = (e.target.value.replace(/\n|\s|\t|\r/,'')=='')?'inactive':'';
		},
		'blur': function(e) {
			var vacio = (e.target.value.replace(/\n|\s|\t|\r/,'')=='');
			if (vacio||!buscaini) {
				e.target.className = 'inactive';
				if (buscaini) {e.target.value = buscatxt;}
			}
		},
		'keypress': function(e) {
			if (e.event.keyCode==13) {
				if (e.target.value.replace(/\n|\s|\t|\r/,'')!='') {
					//$busca.value = e.target.value;
					//$offset.value = 0;
					//$viewstate.set('action','/lalibrairiefrancaise/index.php?busca='+urlencode(e.target.value)+'&os=0');
					//$viewstate.submit();
					document.location.href = '/index.php/busca/'+urlencode(e.target.value)+'/relevancia/';
					return false;
				}
			}
		}
	});
	$('gosearch').addEvent('click', function(e) {
		$s.fireEvent('focus', {target: $s});
		$s.fireEvent('keypress', {target: $s, event: {keyCode: 13}});
		$s.fireEvent('blur', {target: $s});
	});

	var $anadelibro = $('anadelibro')
	if ($anadelibro)  {
		$$('#content a.buy').addEvent('click', function(e) {
			new Event(e).stop();
			$anadelibro.value = e.target.href.split('add=')[1].split('&')[0];
			$viewstate.set('action', document.location.href.replace(document.location.search,''));
			$viewstate.submit();
			return false;
		});
	}

	var $quitalibro = $('quitalibro');
	if ($quitalibro) {
		$$('#tabla_bolsa a.cancel').addEvent('click', function(e) {
			new Event(e).stop();
			$quitalibro.value = e.target.href.split('remove=')[1].split('&')[0];
			$viewstate.set('action', document.location.href.replace(document.location.search,''));
			$viewstate.submit();
			return false;
		});
	}

	/*$$('#content a.info').addEvent('click', function(e) {
		new Event(e).stop();
		e.target.blur();
		return false;
	})*/

	var $paginador = $('paginador');
	var $criterio = $('criterio')
	if ($offset && $paginador && $busca && $criterio) {
		$paginador.addEvent('change', function(e) {
			//$offset.value = e.target.value;
			//$viewstate.submit();
			if (e.target.hasClass('avanzado')) { 
				params = document.location.href.split('/busqueda.php/')[1].split('/');
				var dest = '/busqueda.php';
				dest += '/' + ((params.length>0)?params[0]:'');
				dest += '/' + ((params.length>1)?params[1]:'');
				dest += '/' + ((params.length>2)?params[2]:'');
				dest += '/' + ((params.length>3)?params[3]:'');
				dest += '/' + ((params.length>4)?params[4]:'');
				dest += '/' + ((params.length>5)?params[5]:'');
				dest += '/' + (e.target.value*1+1);
				document.location.href = dest;
			} else { 
				if (document.location.href.test(/tienda.php\/categoria/)) {
					 document.location.href = '/tienda.php/categoria/'+document.location.href.match(/.*categoria\/([0-9]*)(\/)*/)[1]+'/'+(e.target.value*1 +1);
				} else {
					document.location.href = '/index.php/busca/'+urlencode($busca.value)+'/'+$criterio.value+'/'+(e.target.value*1 +1); 
				}	

			}
		});
	}	

	var $ordenacion = $('ordenacion');
	if ($busca && $ordenacion && $criterio) {
		$ordenacion.addEvent('change', function(e) {
			document.location.href = '/index.php/busca/'+urlencode($busca.value)+'/'+e.target.value;
		});
	}

	var $pedido = $('pedido');

	var $forma_entrega = $('forma_entrega');
	var $direccion_entrega = $('direccion_entrega');
	var $poblacion_entrega = $('poblacion_entrega');
	var $cp_entrega = $('cp_entrega');
	if ($forma_entrega && $direccion_entrega && $poblacion_entrega && $cp_entrega) {
		$forma_entrega.addEvent('change', function(e) {
			$direccion_entrega.disabled = (e.target.value == 2);
			$poblacion_entrega.disabled = (e.target.value == 2);
			$cp_entrega.disabled = (e.target.value == 2);
		});
	}

	var $nombre_contacto = $('nombre_contacto');
	var $correo_contacto = $('correo_contacto');
	var $telefono_contacto = $('telefono_contacto');
	var $sumas = $('sumas');
	var $pide = $('pide');
	if ($pedido && $pide && $forma_entrega && $direccion_entrega && $nombre_contacto && $correo_contacto) {
		$pide.addEvent('click', function(e) {
			if ($nombre_contacto.value.replace(/\s|\t|\n|\r/g,'')=='') {alert($('msg_nomvacio').value); return false;}
			if ($forma_entrega.value == 1) {
				if ($direccion_entrega.value.replace(/\s|\t|\n|\r/g,'')=='') {alert($('msg_dirvacia').value); return false;}
				if ($cp_entrega.value.replace(/\s|\t|\n|\r/g,'')=='') {alert($('msg_codvacio').value); return false;}
				if ($poblacion_entrega.value.replace(/\s|\t|\n|\r/g,'')=='') {alert($('msg_pobvacia').value); return false;}
			}
			if ($correo_contacto.value.replace(/\s|\t|\n|\r/g,'')=='') {alert($('msg_emavacio').value); return false;}
			if ($telefono_contacto.value.replace(/\s|\t|\n|\r/g,'')=='') {alert($('msg_telvacio').value); return false;}
			if ($sumas.value.replace(/\s|\t|\n|\r/g,'')=='') {alert($('msg_sasvacio').value); return false;}
			$pedido.submit();
		});
	}

	$$('a.coverlink').addEvent('click', function(e) {
		if (e.target.nodeName.toLowerCase()=='img') {e.target = e.target.parentNode;}
		var d = e.target.get('rel').split(':::');
		window.open('/verimagen.php?'+d[0],'imagen',d[1]+',status=0,toolbar=no,menubar=no,location=no');
	});


	$$('#aboutus div.bloque_fotos').each(function($bloque,i) {

		var $ts = $bloque.getElements('div.tanda_fotos');
		if ($ts.length==1) {
			var $t = $ts[0].clone().injectAfter($ts[0]);
			var coor = $ts[0].getCoordinates();
			$t.setStyle('left', coor.width);
		}

		function mueveBloque(bloque,inc) {
			var $tandas = bloque.getElements('div.tanda_fotos');
			var l = $tandas[0].getStyle('left').replace('px','')*1;
			var co = $tandas[0].getCoordinates();
			if (l < 0 - co.width) { 
				$tandas[0].dispose();
				$tandas[0] = $tandas[1];
				l = $tandas[0].getStyle('left').replace('px','')*1;
				var $t = $tandas[0].clone().injectAfter($tandas[0]);
				$t.setStyle('left', co.width);
				$tandas[1] = $t;
			}
			$tandas[0].setStyle('left', l + inc);
			l = $tandas[1].getStyle('left').replace('px','')*1;
			$tandas[1].setStyle('left', l + inc);
			setTimeout(function() {mueveBloque(bloque,-1);}, 120);
		}
		mueveBloque($bloque,-1);

	});

	var $tabla_lote = $('tabla_lote');

	if ($tabla_lote) {
		
		var $checkall = $('checkall');
		
		function actualizaLote() {
			var total = 0; 
			$tabla_lote.getElements('tbody tr').each(function(n,i) {
				if (n.getElement('input.enabler').checked) {
					n.removeClass('disabled');
					var subtotal = n.getElement('span.subtotal');
					var sub = n.getElement('span.price').innerHTML * n.getElement('input.units').value;
					subtotal.innerHTML = sub.toFixed(2);
					total += sub;
				} else {
					n.addClass('disabled');
					$checkall.checked = false;
				}
			});
			$tabla_lote.getElement('tfoot th.total>span').innerHTML = total.toFixed(2);
		}
		actualizaLote();

		var $enablers = $$('#tabla_lote tbody input.enabler');
		$enablers.addEvent('click', actualizaLote);
		$$('#tabla_lote tbody input.units').addEvent('change', function(e) {
			var num = Math.round(e.target.value*1);
			if (isNaN(num)) {num=1;}
			if (num<1) {num=1;}
			e.target.value = num;
			actualizaLote();
		});

		if ($checkall) {
			$checkall.addEvent('click', function(e) {
				e.target.checked = true;
				$enablers.each(function(n,i) {n.checked=true;});
				actualizaLote();
			});
		}

	}

	var $animados = $$('#lista_categorias>li>a.categoria_overlay');
	if ($animados.length) {
		$animados.removeEvent('mouseover');
		$animados.addEvent('mouseover', function(e) {
			var a = e.target;
			if (a.tagName!='A') {a = a.getParent('a');}
			if (a.moving=='down') {return false;}
			var span = a.getParent('li').getElement('a.categoria>span');
			if (e.stop) {e.stop();}
			var fx = span.fx;
			if (fx) {fx.cancel();}
			fx = new Fx.Morph(span);
			fx.addEvent('complete', function() {a.moving=null;});
			a.moving = 'down';
			span.fx = fx;
			fx.start({'top': '40px', 'color': '#fff', 'background-color': '#1F8BFF'});
		});
		$animados.removeEvent('mouseout');
		$animados.addEvent('mouseout', function(e) {
			var a = e.target;
			if (a.tagName!='A') {a = a.getParent('a');}
			if (a.moving=='up') {return false;}
			var span = a.getParent('li').getElement('a.categoria>span');
			if (e.stop) {e.stop();}
			var fx = span.fx;
			if (fx) {fx.cancel();}
			fx = new Fx.Morph(span);
			fx.addEvent('complete', function() {a.moving=null;});
			a.moving = 'up';
			span.fx = fx;
			fx.start({'top':'6px', 'color': '#1F8BFF', 'background-color': '#fff'});
		});
	}

	var $advsearch_form = $('advsearch_form');
	if ($advsearch_form) {
		$advsearch_form.addEvent('submit', function(e) {
			e.preventDefault();
			return false;
		});
		$advsearch_form.getElement('input[type=submit]').addEvent('click', function(e) {
			e.preventDefault();
			document.location.href = '/busqueda.php/'+encodeURIComponent($('titulo').value)+'/'+encodeURIComponent($('autor').value)+'/'+encodeURIComponent($('materia').value)+'/'+encodeURIComponent($('editorial').value)+'/'+encodeURIComponent($('coleccion').value)+'//1';
			return false;
		});
	}

}
init();

