/*
 * JavaScript Components Beta
 * http://www.axa.com/
 *
 * Date: Sat Feb 13 22:33:48 2010 -0500
 */
 
 
/*$(function(){
	navegacionPrincipal.init();
	//navegacionPrincipal.mostrarSegundoNivel(0);
	selectorIdioma.init();
});*/

$(document).ready(function(){

	navegacionPrincipal.init();
	//navegacionPrincipal.mostrarSegundoNivel(0);
	selectorIdioma.init();
	$(".c31_image_carousel_5 ul").each(function(){
		$(this).galeria();
	});
	
	$('.c31_image_carousel_5 .wrapper ul a').modal({});
	
	otrasUtilidades(); // zoom e impresión
	axaMundo();
	$('div.grupoNavegacion ul.primerNivel>li.activo').prev().addClass('activoSiguiente');
	
	var alineacionMapaWeb = new alineacionVerticalMapaWeb();
	alineacionMapaWeb.inicia();
	
	// ROTATORIO 3D
	// tiempoEfecto: en milisegundos, tiempo de la transición
	// El tiempo entre transiciones se aplica a través del gestor de contenidos
	
	
	if(/compatible; MSIE 6.0/i.test(navigator.userAgent) || /compatible; MSIE 7.0/i.test(navigator.userAgent)) {
		$('#carrusel3d div.lista').galeria3d({efecto:'3d',elementosLista:'div.itemCarrusel',selector:'div.itemCarrusel',controlesAdicionales:true,fondo:true,tiempoEfecto:1500});
	} else {
		$('#carrusel3d div.lista').galeria3d({efecto:'3d',elementosLista:'div.itemCarrusel',selector:'div.itemCarrusel>.interior>p img, div.itemCarrusel div.flashInterior',controlesAdicionales:true,fondo:true,tiempoEfecto:1500});
	}
	
	
	$('div.fila').igualarAlturas({elementoAIgualar:'div.contenido'});

});



(function($){
	$.fn.igualarAlturas = function(options){
		var defaults = { // Opciones por defecto
		 elementoAIgualar:''
		}
		var op = $.extend(defaults, options);
		return this.each(function(){
			var fila = $(this);
			var alturaFinal=0;
			fila.find(op.elementoAIgualar).each(function () {
				var altura = $(this).height();
				if (altura>alturaFinal) {alturaFinal=altura;}
			}).css('height',alturaFinal+'px');
			
    });
		
  }
})(jQuery);




function axaMundo () {
	$('.axaMundo form').eq(0).submit(function (event) {
		event.preventDefault();
		var url = $('#pais option:selected').eq(0).attr('value');
		window.location = url;
	})
}

function otrasUtilidades () {
	var html = '<div class="c19_case_tool"><p class="indentado">Otras utilidades</p><ul><li class="aumentarFuente"><a href="#" title="Aumentar el tamaño de la fuente"><span class="indentado">Aumentar el tamaño de la fuente</span></a></li><li class="reducirFuente"><a href="#" title="Disminuir el tamaño de la fuente"><span class="indentado">Disminuir el tamaño de la fuente</span></a></li><li class="imprimir"><a href="#" title="Imprimir"><span class="indentado">Imprimir</span></a></li></ul></div>';
	$('#cabecera .wrap .c1_header .wrapper').eq(0).append(html);
	
	$('li.aumentarFuente a, li.reducirFuente a').zoominator();
	$('li.imprimir a').click(function (event) {
		event.preventDefault();
		window.print();
	});
}


/* zoom */
(function($){
	$.fn.zoominator = function(options){
		var defaults = {
			selectorParaAplicar: '#container'
			,selectorContenedorEnlace: 'li'
			,claseAumentar: 'aumentarFuente'
			,claseDisminuir: 'reducirFuente'
			,intervalo: 10
		};
		var op = $.extend(defaults, options);
		return this.each(function(){
			var enlace = $(this);
			if (!$.cookie('zoominator')) {$.cookie('zoominator', '100',{expires: 7, path: '/'});}
			var valorPredeterminado = $.cookie('zoominator');
			$(op.selectorParaAplicar).attr('rel',valorPredeterminado).css('font-size',valorPredeterminado+'%');
			enlace.bind('click',function (event) {
				event.preventDefault();
				var direccion = 1;
				if (enlace.closest(op.selectorContenedorEnlace).hasClass(op.claseDisminuir)) {
					direccion = -1;
				}
				variarFuente(direccion)
			})
			
			
		});
		
		function variarFuente (direccion) {
			var valorActual = parseInt($(op.selectorParaAplicar).attr('rel'));
			var valorNuevo = valorActual+(op.intervalo*direccion);
			$(op.selectorParaAplicar).css('font-size',valorNuevo+'%').attr('rel',valorNuevo);
			$.cookie('zoominator', valorNuevo);
		}
		
	}
	
})(jQuery);
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

/* Galeria de imagenes */

(function($){
	$.fn.galeria = function(options){
		var defaults = {
			htmlControles: '<ul class="controles"><li class="primera"><a href="#"><img src="/recursos/c31ControlAnterior.gif" alt="Anterior" /></a></li><li class="ultima"><a href="#"><img src="/recursos/c31ControlSiguiente.gif" alt="Siguiente" /></a></li></ul>'
			,htmlContenedorLista: '<div class="contenedorLista" />'
			,claseContenedorLista: 'contenedorLista'
			,claseJs: 'c31_image_carousel_5_js'
			,claseControlAnterior: 'primera'
			,claseControlSiguiente: 'ultima'
			,claseOculto: 'oculto'
			,selectorContenedorLista: '.contenedorLista'
			,selectorContenedorComponente: '.c31_image_carousel_5'
			,selectorElementoLista: 'li'
			,selectorContenedorEnlaceControl: '.controles li'
		    ,selectorControlAnterior: '.primera'
		    ,selectorControlSiguiente: '.ultima'
		    ,selectorOculto: '.oculto'
		    ,animacion: true // Activar animación 'true', desactivar animación 'false'

		};
		var datos = {
			listado: ''
			,componente: ''
			,elementosLista: ''
			,contenedorLista: ''
			,anchoElemento: ''
		    ,anchoListado: ''
		    ,anchoVisibleGaleria: ''
		    ,enlaceControlAnterior: ''
		    ,enlaceControlSiguiente: ''

		};
		var op = $.extend(defaults, options);
		return this.each(function(){
			datos.listado = $(this);
			datos.componente = datos.listado.closest(op.selectorContenedorComponente);
			datos.componente.addClass(op.claseJs);
			prepararLista();
			prepararControles();
			
		});
		
		function prepararLista() {
			datos.listado.wrap(op.htmlContenedorLista);
			datos.contenedorLista = datos.listado.parent();
			calculaAncho();
		}
		
		function calculaAncho() {
			datos.elementosLista = datos.listado.find(op.selectorElementoLista);
			var numElementosLista = datos.elementosLista.length;
			var i = 0;
			var ancho = 3;
			var margen = 0;
			while (i<numElementosLista) {
				var elementoLista =  datos.elementosLista.eq(i);
				ancho += elementoLista.outerWidth(true);
				if(i+1==numElementosLista){
					margen = elementoLista.outerWidth(true)-elementoLista.outerWidth();
					elementoLista.css('margin','0')
				}
			i++;
			}
			
			var elementosVisibles = parseInt(datos.listado.attr('class').split('-')[1]);
			datos.anchoElemento = ancho/numElementosLista;
			datos.anchoVisibleGaleria = (datos.anchoElemento*elementosVisibles)-margen;
			datos.anchoListado = ancho-margen;
			datos.listado.css('width',datos.anchoListado+'px');
			datos.contenedorLista.css('width',datos.anchoVisibleGaleria+'px');

			var anchoComponente = datos.contenedorLista.outerWidth(true);
			datos.componente.css('width',anchoComponente+'px');

		}
		
		function prepararControles () {
		  datos.componente.append(op.htmlControles);
		  datos.enlaceControlAnterior = datos.componente.find(op.selectorContenedorEnlaceControl+op.selectorControlAnterior+' a').eq(0);
		  datos.enlaceControlSiguiente = datos.componente.find(op.selectorContenedorEnlaceControl+op.selectorControlSiguiente+' a').eq(0);

		  if (recuperarPosicionActual()==0) {ocultarControl(datos.enlaceControlAnterior);}

		  datos.componente.find(op.selectorContenedorEnlaceControl+' a').click(function (event) {
			event.preventDefault();
			var direccion = 1;
			if ($(this).closest(op.selectorContenedorEnlaceControl).hasClass(op.claseControlSiguiente)) {
			  direccion = -1;
			  if (datos.enlaceControlAnterior.hasClass(op.claseOculto)) {mostrarControl(datos.enlaceControlAnterior)}
			} else {
			  if (datos.enlaceControlSiguiente.hasClass(op.claseOculto)) {mostrarControl(datos.enlaceControlSiguiente);}
			}
			mover(direccion);
		  })
		}
		
		function mover (direccion) {
		  var posicionActual = recuperarPosicionActual();

		  var posicionNueva = (direccion*datos.anchoElemento)+posicionActual;
		  var posicionMaxima = (datos.anchoListado-datos.anchoVisibleGaleria)*(-1);

		  if (posicionNueva>=0) {
			posicionNueva=0;
			ocultarControl(datos.enlaceControlAnterior);
		  }
		  if (posicionNueva<=posicionMaxima) {
			ocultarControl(datos.enlaceControlSiguiente);
			posicionNueva=posicionMaxima;
		  }
		  if (op.animacion) {
			datos.listado.animate({left: posicionNueva},50);
		  } else {
			datos.listado.css('left',posicionNueva+'px');
		  }

		}
		
		function recuperarPosicionActual () {
		return parseInt(datos.listado.css('left').split('px')[0]);
		}
		
		function ocultarControl (enlace) {
		  enlace.addClass(op.claseOculto);
		}

		function mostrarControl (enlace) {
		  enlace.removeClass(op.claseOculto);
}




		
	}
	
})(jQuery);

/* Ventana modal */

(function($){
	$.fn.modal = function(options){
		
		var defaults = { // Opciones por defecto
			selector: 'red',
			capas: '<div id="modal_over"></div><div id="modal_cargando"><p>Cargando...</p></div><div id="modal_contenido"><div id="modal_contenido_interior"></div></div>',
			capa1: '#modal_over',
			capa2: '#modal_contenido',
			capa3: '#modal_contenido_interior',
			capa4: '#modal_cargando',
			contenedor: 'li',
			imagen1: 'modal_imagen',
			opacidad: '60',
			tamanoMaximo: '86', // porcentaje
			htmlAnterior: '<li class="anterior"><a href="#">Anterior</a></li>',
			htmlSiguiente: '<li class="siguiente"><a href="#">Siguiente</a></li>'
			
		}
		
		var datos = {
			anchoVista: $(window).width(),
			altoVista: $(window).height(),
			enlace: '',
			enlaceNavegacion: '',
			imagen: '',
			htmlAnterior: '',
			htmlSiguiente: '',
			htmlInteriorModal: '',
			altoMaximo: '',
			anchoMaximo: ''
		}
		
		var op = $.extend(defaults, options);
		
		return this.each(function(){
			$(this).bind('click', inicia);
		});
		
		function inicia(ev){
			ev.preventDefault();
			datos.enlace = $(this);
			dimensionesVentana();
			capaOver();
			$(window).resize(redimensionVentana);
		};
		
		function dimensionesVentana () {
			datos.anchoVista = $(window).width();
			datos.altoVista = $(window).height();//alert(datos.anchoVista+'x'+datos.altoVista)
		}
		
		function redimensionVentana () {
			dimensionesVentana();
			estilosCapaOver();
		}
		
		function capaModal () {
			
			generarHtmlInteriorModal();
			
			$(op.capa3).append(datos.htmlInteriorModal);
			
			$('#'+op.imagen1).load(function () {
				mostrarCapaModal();
			});
		}
		
		function generarHtmlInteriorModal () {
			var destino = datos.enlace.attr('href');
			
			datos.htmlInteriorModal = '<div class="imagen"><p><img id="'+op.imagen1+'" src="'+destino+'" alt="" /></p></div><div class="navegacion"><p class="cerrar"><a href="#" id="modal_cerrar">Cerrar</a></p></div>';
		}
		
		
		function dimensionesMaximas () {
			datos.altoMaximo = parseInt((datos.altoVista/100*op.tamanoMaximo));
			datos.anchoMaximo = parseInt((datos.anchoVista/100*op.tamanoMaximo));
		}
		
		function mostrarCapaModal () {
			datos.imagen = $('#'+op.imagen1);
			datos.imagen.css('visibility','hidden');
			
			$(op.capa2).show().css('visibility','hidden');
			dimensionesMaximas();
			if (datos.imagen.height()>datos.altoMaximo) {datos.imagen.css({"max-height":datos.altoMaximo+"px"});}
			if (datos.imagen.width()>datos.anchoMaximo) {datos.imagen.css({"max-width":datos.anchoMaximo+"px"});}
			
			datos.imagen.closest(op.capa3).css({"width":datos.imagen.width()+"px"});
			var anchoCapa2 = $(op.capa2).width();
			var altoCapa2 = $(op.capa2).height();
			datos.imagen.attr('height',datos.imagen.height());
			datos.imagen.attr('width',datos.imagen.width());
			datos.imagen.parent().css({"height":datos.imagen.height()+"px","width":datos.imagen.width()+"px"});
			$(op.capa2).css({"left":parseInt(((datos.anchoVista-anchoCapa2)/2))+"px","top":parseInt(((datos.altoVista-altoCapa2)/2))+"px"});
			$(op.capa4).hide();
			$(op.capa2).hide().css('visibility','visible').fadeIn(250,function () {
					datos.imagen.hide().css('visibility','visible').fadeIn(150);
				});
				
			
			$('#modal_cerrar').click(cierra);
			
		}
		
		
		function capaOver () {
			$('body').append(op.capas);
			$(op.capa1).bind('click',cierra);
			estilosCapaOver();
			$(op.capa1).fadeIn(function () {
				capaCargando();
				capaModal();
			});
		}
		
		function estilosCapaOver () {
			$(op.capa1).css({"height":datos.altoVista+"px","filter":"alpha(opacity="+op.opacidad+")","width":datos.anchoVista+"px"});
		}
		
		function capaCargando () {
			var altoCapa4 = $(op.capa4).height();
			var anchoCapa4 = $(op.capa4).width();
			$(op.capa4).show().css('visibility','hidden');
			$(op.capa4).css({"left":parseInt(((datos.anchoVista-anchoCapa4)/2))+"px","top":parseInt(((datos.altoVista-altoCapa4)/2))+"px"});
			$(op.capa4).hide().css('visibility','').fadeIn(150);
		}
		
		function cierra (ev) {
			ev.preventDefault();
			$(op.capa2+','+op.capa1+','+op.capa4).fadeOut(function () {
				$(document).unbind('keydown keypress');
				$(this).remove();
			})
		}
		
	}
})(jQuery);

/* Mapa web */

function alineacionVerticalMapaWeb () {

		var datos = {
			area: ".c53_mapa_web .area"
			,tituloArea: "h2"
		}
		
		this.inicia = function () {
			jQuery(datos.area).each(function () {
				var alturaArea = $(this).height();
				var titulo = $(this).find(datos.tituloArea).eq(0);
				var alturaTitulo = titulo.height();
				var rellenoSuperior = Math.floor((alturaArea-alturaTitulo)/2);
				titulo.css({paddingTop: rellenoSuperior+"px"});
			});
		}
		
}

/* Carrusel 3D */

(function($){
$.fn.galeria3d = function(options){

var op = {
	htmlCapaListado: '<div class="carrusel-js" />'
	,htmlCapaControles: '<div id="controles"><ul id="paginadorSlide" class="paginadorSlide"></ul><ul id="controlesSlide" class="controlesSlide"><li class="controlAnterior"><a href="#"><img alt="Anterior" src="/recursos/ico_anterior.gif"/></a></li><li class="controlPausar"><a href="#"><img alt="Pausar" src="/recursos/ico_pausa.gif"/></a></li><li class="controlContinuar" style="display:none;"><a href="#"><img alt="Continuar" src="/recursos/ico_play.gif"/></a></li><li class="controlSiguiente"><a href="#"><img alt="Siguiente" src="/recursos/ico_siguiente.gif"/></a></li></ul></div>'
	,listaControles: '#paginadorSlide'
	,icoSlide: '/recursos/ico_slide.gif'
	,icoSlideActivo: '/recursos/ico_slide_activo.gif'
	,selectorActiva: '.activa'
	,selectorCapaFondo: '.capaTextoInterior'
	,claseActiva: 'activa'
	,claseActivo: 'activo'
	,claseSeleccionado: 'seleccionado'
	,slidesDetalle: '#slides li.slide'
	,efecto: 'fade'
	,elementosLista: 'li'
	,selector: 'li'
	,controlesAdicionales:false
	,fondo:false
	,tiempo:3000
	,tiempoEfecto:2000
}

var datos = {
	capa: ''
	,lista:''
	,controles:''
}

var options = $.extend(op, options);
	return this.each(function(){ 
		datos.lista = $(this); //alert(datos.lista.find(op.selector).length)
		enlace();
		datos.lista.wrap(op.htmlCapaListado);
		datos.capa = datos.lista.parent();
		datos.capa.after(op.htmlCapaControles);
		datos.controles = $(op.listaControles);
		
		var elementos = datos.lista.children(op.elementosLista);
		paginacion(elementos);
		accionarControles();
		insertarEnlacePaginacion();
		if (op.fondo) {insertarFondo();}
  });
	
	
	
	function seleccionaPaginacion (id) {
		datos.capa.find(op.elementosLista).eq(id).addClass(op.claseActiva).siblings().removeClass(op.claseActiva);
		flash();
		datos.capa.prev().find('li').eq(id).addClass(op.claseActiva).siblings().removeClass(op.claseActiva);
		$(op.listaControles).find('.'+op.claseSeleccionado).removeClass(op.claseSeleccionado).find('img').eq(0).attr('src',op.icoSlide);
		$(op.listaControles).find('.paginaSlide').eq(id).addClass(op.claseSeleccionado).find('img').eq(0).attr('src',op.icoSlideActivo);
	}
	function enlace () {
		datos.lista.find('.enlace').hide();
		datos.lista.find('.slide').hover(
			function () {$(this).find('.enlace').show();}
			,function () {$(this).find('.enlace').hide();}
		);
	}
	function paginacion (elementos) {
		var numLista = elementos.length;
		var i = 0; var j = 1; var anchoTotal=0;
		while (i<numLista) {
			var htmlPagina =  '<li class="paginaSlide" id="paginaSlide-'+j+'"><a href="#"><span class="indentado">Opción '+j+'</span> <img alt="" src="/recursos/ico_slide.gif"/></a></li>';
			datos.controles.append(htmlPagina);
			i++;j++;
		}
		$(datos.lista).theatre({onMove: function(id) { seleccionaPaginacion(id);},effect:op.efecto,selector:op.selector,controls:'none',still:op.tiempo,speed:op.tiempoEfecto});
	}
	function accionarControles () {
		datos.capa.parent().find('.controlesSlide a, .paginadorSlide a, a.carruselDetalle').each(function () {
			$(this).click(function (event) {
				event.preventDefault();
				var elementoListaControles = $(this).parent();
				if (elementoListaControles.hasClass('controlPausar')) {
					elementoListaControles.hide().next().show();
					$('.theatre').theatre('stop');
				}
				if (elementoListaControles.hasClass('controlContinuar')) {
					elementoListaControles.hide().prev().show();
					$('.theatre').theatre('play');
				}
				if (elementoListaControles.hasClass('controlSiguiente')) {
					alternarBotonPausa();
					$('.theatre').theatre('next');
				}
				if (elementoListaControles.hasClass('controlAnterior')) {
					alternarBotonPausa();
					$('.theatre').theatre('prev');
				}
				
				if (elementoListaControles.hasClass('paginaSlide')) {
					var pag = parseInt(elementoListaControles.attr('id').split('-')[1]);
					$('.theatre').theatre('jump',pag);
					alternarBotonPausa();
				}
				
				if ($(this).hasClass('carruselDetalle')) {
					var pag = parseInt($(this).attr('href').split('-')[1]);
					$('.theatre').theatre('jump',pag);
					elementoListaControles.closest('.carrusel-js').next().find('.controlPausar').eq(0).hide().next().show();
				}
			});
		});
		
		if (op.controlesAdicionales) {
			navegacionTeclado();
		}
	}
	
	function navegacionTeclado () {
		var eventoTecla = 'keyup';
		$(document).bind(eventoTecla,function(ev) {
			if (ev.keyCode == '37' || ev.keyCode == '39') {
				ev.preventDefault();
				if (ev.keyCode == '37') {
					$('.theatre').theatre('prev');
				}
				if (ev.keyCode == '39') {
					$('.theatre').theatre('next');
				}
				alternarBotonPausa();
			}
		});
		
		datos.lista.find(op.elementosLista).mousewheel(function (event,delta) {
			event.preventDefault();
			var direccion = 'next';
			if (delta>0) {direccion='prev';}
			$('.theatre').theatre(direccion);
			alternarBotonPausa();
		});
	}
	
	function alternarBotonPausa () {
		var pausa = datos.controles.next().find('.controlPausar').eq(0);
		pausa.hide().next().show();
	}
	
	function flash () {

		datos.lista.find('object').each(function (id) {
			var id = $(this).attr('id');
			var flash = document.getElementById(id);
			if (document.getElementById('comprobacionId-'+id)) {
				pararFlash(flash);
			}
		});
	}
	
	function insertarFondo () {
		//datos.lista.find(op.selectorCapaFondo).prepend('<img src="/recursos/carrusel_fondo.png" alt="" class="imgFondo imgFondoPng" /><img src="/recursos/carrusel_fondo.gif" alt="" class="imgFondo imgFondoIe6" />');
		datos.lista.find(op.selectorCapaFondo).prepend('<img src="/recursos/carrusel_fondo_item.gif" alt="" class="imgFondo" />');
	}
	
	function insertarEnlacePaginacion () {
		datos.lista.find(op.selectorCapaFondo).each(function (id) {
			var html = '<a href="#" class="seleccionar" rel="'+id+'"><img src="/recursos/blanco.gif" alt="Seleccionar" /></a>';
			$(this).append(html);
		});
		datos.lista.find('a.seleccionar').click(function (event) {
			event.preventDefault();
			$('.theatre').theatre('stop');
			alternarBotonPausa();
			
			var id = parseInt($(this).attr('rel'));
			var pag = id+1;
			
			$('.theatre').theatre('jump',pag);
			seleccionaPaginacion(id);
		});
	}
	
	
	
}})(jQuery);
var flashNum = 0;
function onYouTubePlayerReady(playerid) {
	flashNum += 1;
	$('#'+playerid).after('<div id="comprobacionId-'+playerid+'"></div>')
}
function pararFlash (flash) {
		if (flashNum>0) {if (flash.getPlayerState()==1) {flash.pauseVideo();}}
}





(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener ) {
            for ( var i=types.length; i; ) {
                this.addEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = handler;
        }
    },
    
    teardown: function() {
        if ( this.removeEventListener ) {
            for ( var i=types.length; i; ) {
                this.removeEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = null;
        }
    }
};

$.fn.extend({
    mousewheel: function(fn) {
        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
    },
    
    unmousewheel: function(fn) {
        return this.unbind("mousewheel", fn);
    }
});


function handler(event) {
    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
    event = $.event.fix(orgEvent);
    event.type = "mousewheel";
    
    // Old school scrollwheel delta
    if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
    if ( event.detail     ) { delta = -event.detail/3; }
    
    // New school multidimensional scroll (touchpads) deltas
    deltaY = delta;
    
    // Gecko
    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
        deltaY = 0;
        deltaX = -1*delta;
    }
    
    // Webkit
    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
    
    // Add event and delta to the front of the arguments
    args.unshift(event, delta, deltaX, deltaY);
    
    return $.event.handle.apply(this, args);
}

})(jQuery);



