var initialValues = {};
$('document').ready( function() {

	// OPTIONS HOVER EFFECT
	$('#mainMenu ul').hover( function(){
        if( !$(this).hasClass('mainMenuItemInactive') ){
    		$('.inactive', this).show();
    		$(this).addClass('hover');
		}
	},
	function() {
        if( !$(this).hasClass('mainMenuItemInactive') ){
    		$('.inactive', this).hide();
    		$(this).removeClass('hover');
        }
	});
	
	
	// search box
	$('#searchInput').focus( function() {
		// guardo el valor actual
		initialFieldValue = $(this).val();
		// pongo el campo en blanco
		$(this).attr('value', '');
	});
	
	$('#searchInput').blur( function() {
		// testeo si ha cambiado el valor, si no lo pongo como antes
		if ( $(this).val() == '' ) {
			$(this).attr('value', initialFieldValue);
		}
	});
	
	/**
	TABS
	**/
	
	$('ul.tabHeader a').click(function(){
		
		if($(this).hasClass('noAjax')){
			return true;
		}
		
        // anterior seleccinado
        parent_ul = $(this).parent().parent().parent();
        a_title = $('a.selected:first', parent_ul);
        a_new = $(this);
        //alert('#content_' + a_title.attr('id'));
        a_title.removeClass('selected');
		$('#content_' + a_title.attr('id') ).css('visibility', 'hidden');
        $('#content_' + a_new.attr('id') ).css('visibility', 'visible');
        a_new.addClass('selected');
        /*
		$('#content_' + a_title.attr('id') ).fadeOut('slow', function(){
            a_title.removeClass('selected');
            $('#content_' + a_title.attr('id')).css('visibility');
            $('#content_' + a_new.attr('id')).fadeIn('slow');
            a_new.addClass('selected');
        });
        */
        return false;

    });
    
    /***********************************
    Reemplazo de los botones de búsqueda
    ************************************/
    var id_button = new Number(0);
    $('.btn').each(function(){
        $(this).removeClass('btn');
        var clases = $(this).attr('class');
        $(this).before('<a href="#" class="similButton ' + clases + '" id="button_' + id_button + '"><span>' + $(this).attr('value') + '</span></a>');
        $(this).wrap('<div style="height: 1px; width: 1px; overflow: hidden;"><div style="margin: 10px 0 0 0"></div></div>');    
        $('#button_'+ id_button).bind('click', function(){
            $(this).parents('form:first').submit();   
            return false;
        });
        id_button++;
    })
    
    $('.clearOnFocus').focus(function(){
            // chequeo si ya existe
            if( typeof(eval( 'initialValues.' + $(this).attr('id') ) ) == 'undefined' ){
                eval( 'initialValues.' + $(this).attr('id') + ' = "' + $(this).val() + '"' ); // guardo el valor predeterminado
            }
            $(this).val('');
        })
    $('.clearOnFocus').blur(function(){
            if( $(this).val() == '' ){
                $(this).val(  eval( 'initialValues.' + $(this).attr('id'))  );
            }
        });
        
    // fechas
    $('.datepicker').datePicker({startDate: '01/01/1970'});
    
    // listados
    //$('.simpleList li:first').addClass('first');
    $('li:last', $('.simpleList') ).addClass('last');
    
    // sistema de tamaños
    $('.mirror').each(function(){
    	var variacion = new Number(0);
    	var reflejo = $('#reflejo_' + $(this).attr('id') );
		 

		//console.log(reflejo.attr('lang'));
		variacion+=getPixelNumber( reflejo.css('padding-top'));
		variacion+=getPixelNumber( reflejo.css('padding-bottom'));
		variacion+=getPixelNumber( reflejo.css('border-top-width'));
		variacion+=getPixelNumber( reflejo.css('border-bottom-width'));
		
		//console.log('padding top: ' + reflejo.css('padding-top') );
		//console.log('variacion: ' + variacion);
		//console.log('height: ' + $(this).height());
		//alert(reflejo.attr('id'));	
		reflejo.css('height', $(this).height() - variacion);
		
	})
	$('.scrollit').each(function(){
		//console.log($(this).parent().height());
		//console.log( $(this).parent().parent().parent().parent().height() );
		$(this).css('height', $(this).parent().parent().parent().height() );
		$(this).jScrollPane({showArrows: true, scrollbarWidth: 16, scrollbarMargin: 5});
	});
	
	// veo si tab_titles necesita scroll
	$('.tabs_titles').each(function(){
		
		var ancho = new Number(0);
		var mov = new Number(0);
		var counter = new Number(0);
		
		$('li', $(this)).each(function(){ ancho += $(this).width(); });
		
		if(ancho > 454){
			$('ul', $(this)).wrap('<div id="tabs_scroll_'+counter+'"></div>');
			var scroller = $('#tabs_scroll_'+counter, $(this));
			scroller.css('width', 454).css('overflow', 'hidden').css('position', 'relative');
			$('ul', $(this)).width(ancho);
			var mov = ancho - 454;
			scroller.mousemove(function(e){
				//console.log( (e.pageX - this.offsetLeft));
				mouse_pos = new Number( e.pageX - this.offsetLeft);
				posy = Math.round((mouse_pos*mov)/454); // movimiento que debe realizar 
				$('ul', $(this)).css('margin-left', (posy*-1).toString() + 'px');
			});
			counter++;
		}
		//alert(ancho);
	});
   
	
});

/**
 * Convierte la cadena de pixeles a número
 */
function getPixelNumber( texto){
	//console.log( 'ingreso getPixelNumber:' + texto);
	//var retorno = new Number (0);
	if( texto != undefined && texto != ''){
		if( texto.indexOf('px') != -1){ // le quita el px
 			return new Number( ( new String(texto) ).substring(0, ( new String(texto) ).length - 2) );
		}else
			return new Number(texto);
		
	}
	//console.log( 'retorno getPixelNumber: ' + retorno);	
}

/**
 * Objeto encargado de manejar los scrolls de noticias
 * jQuery dependiente
 *
 */

function rotator(){

    // variables
    var parent = this;

    // toma lo devuelto y guarda el estado y retorna solo el contenido

    this.ajaxData = function(dataWrapper, checkStatus){

        if(checkStatus){ // es para setear el estado

            if(dataWrapper.indexOf('<!--paginator-->') != -1){

              var data = dataWrapper.split('<!--paginator-->');
              var statusData = data[1].split(':');

              // control de estado
              parent.previous = eval( $.trim(statusData[0])*1 );
              parent.next = eval( $.trim(statusData[1])*1 );
              
              // paginador
              parent.paginator = data[2];
              
              // paginas totales
              parent.pageCount = data[3] * 1;
              
              return data[0]; // datos
              
            }else{
                return dataWrapper;
            }

        }else{
        
            if(dataWrapper.indexOf('<!--paginator-->') != -1){
            
                var data = dataWrapper.split('<!--paginator-->');
                return data[0]; // sólo retorna la data
                
            }else{
                return dataWrapper;
            }
        }

    }
    
    /**
     * Carga los paneles según el número de páginas
     */
     
    this.generatePanels = function(){

        // sólo si hay más páginas
        if(parent.pageCount > 1){

            // por cada página genero un div
            for(a = 2; a <= parent.pageCount; a++ ){

                // incremento el id interno
                parent.internalID = parent.internalID * 1 + 1;
                $( '#content_wrapper_' + parent.id ).append('<div style="height: ' + parent.w.height() + 'px; width: ' + parent.w.width() + 'px; left:  ' + ( parent.w.width() * (parent.internalID - 1) )  + 'px; top: 0; position: absolute; overflow: hidden;" id="ajax_'+ parent.id + parent.internalID + '" title="' + parent.internalID + '" class="' + parent.cssPreload + '"></div>');

            }
            
            // número de páginas
            for(a = 1; a <= parent.pageCount; a++ ){

                // incremento el id interno
                if(a == 1)$('.nav .numbers', parent.w).append(parent.pagesTitle + ': ' + '<a href="#" class="selected" id="link_' + parent.id + '_' + a + '">' + a + '</a>');
                else $('.nav .numbers', parent.w).append('<a href="#" id="link_' + parent.id + '_' + a + '">' + a + '</a>');

            }
            
            // al terminar de generar los divs, comienzo la carga de los elementos
            parent.loadAjaxContent();

            // agrego el nextPanel
            $('.nav .next', parent.w).bind( "click", parent.scrollNextPanel ).show();
            $('.nav .noprevious', parent.w).show();

            // eventos de las páginas
            $('.nav .numbers a', parent.w).bind('click', parent.scrollToPage);

        }
        
    }
    
    /**
     * Carga el contenido de cada div (página)
     */
    
    this.loadAjaxContent = function(){

        for(a = 2; a <= parent.pageCount; a++ ){
            $("#ajax_" + parent.id + a ).load( parent.url + '/page:' + a, function(data){
               $(this).removeClass( parent.cssPreload ).html( parent.ajaxData( data, false) );
                	// onload callback
               		if(parent.onPageLoad != 'none')
			   			eval( parent.onPageLoad + '("' + $(this).attr('id') + '")' );           
				});
        }
        return;
    }
    
    // scrollers
    this.scrollNextPanel = function(){
        // numero de página
        $('#link_' + parent.id + '_' + parent.actualID).removeClass('selected');
        // movimiento
        parent.actualID = parent.actualID * 1 + 1; //id actual
        $( '#content_wrapper_' + parent.id ).animate({ left: (parent.w.width() * ( parent.actualID - 1 ) * -1 ) + 'px' }, 1500, 'swing');
        if(parent.pageCount <= parent.actualID)$('.nav .next', parent.w).hide();
        $('.nav .previous', parent.w).bind('click', parent.scrollPreviousPanel).show();
        $('.nav .noprevious', parent.w).hide();
        // selecciona la página
        $('#link_' + parent.id + '_' + parent.actualID).addClass('selected');
        return false;
    }

    this.scrollPreviousPanel = function(){
        // numero de página
        $('#link_' + parent.id + '_' + parent.actualID).removeClass('selected');
        // movimiento
        parent.actualID = parent.actualID * 1 - 1; //id actual
        $( '#content_wrapper_' + parent.id ).animate({ left: (parent.w.width() * ( parent.actualID - 1 ) * -1 ) + 'px' }, 1500, 'swing');
        if(parent.actualID == 1){
            $('.nav .previous', parent.w).hide();
            $('.nav .noprevious', parent.w).show();
        }
        $('.nav .next', parent.w).show();
        // selecciona la página
        $('#link_' + parent.id + '_' + parent.actualID).addClass('selected');
        return false;
    }
    
    this.scrollToPage = function(){
    
        if( !$(this).hasClass('selected') ){
        
            var tempId = $(this).attr('id').split('_');
            tempId = tempId[ tempId.length - 1 ];

            // clases de los enlaces
            $('#link_' + parent.id + '_' + parent.actualID).removeClass('selected');
            $(this).addClass('selected');

            parent.actualID = tempId; //id actual

            $( '#content_wrapper_' + parent.id ).animate({ left: (parent.w.width() * ( parent.actualID - 1 ) * -1 ) + 'px' }, 1500, 'swing');
            
            // chequeo si debe existir o no el previo y el siguiente
            if(parent.actualID > 1){
                $('.nav .previous', parent.w).bind('click', parent.scrollPreviousPanel).show();
                $('.nav .noprevious', parent.w).hide();
            }else{
                $('.nav .previous', parent.w).hide();
                $('.nav .noprevious', parent.w).show();
            }
            if(parent.actualID < parent.pageCount)$('.nav .next', parent.w).bind( "click", parent.scrollNextPanel ).show();
            else $('.nav .next', parent.w).hide();
            
        }
        return false;
    }
    

    this.reload = function(options){
        $('#wrapper_' + parent.id ).fadeOut( 'slow', function(){
            $(this).remove();
            parent.init(options);
        });
    }

    this.getRandom = function(){
        var tempDate = new Date();
        return tempDate.getTime();
    }
	// Mode FADE ----------------------------------------------------------------
	this.ajaxFade = function(){
		
		var pagina = 0;
		
		// siguiente
		if($(this).hasClass('next')){
			// siguiente página
			$('.nav .selected', parent.w).removeClass('selected');
			pagina = parent.actualID*1 + 1;
			$('#link_' + parent.id + '_' + pagina).addClass('selected');
		}       
		// previo
		if($(this).hasClass('previous')){
			// siguiente página
			$('.nav .selected', parent.w).removeClass('selected');
			pagina = parent.actualID*1 - 1;
			$('#link_' + parent.id + '_' + pagina).addClass('selected');
		}		
		// numero
		if($(this).hasClass('num')){
			// es el actual, no cargo nada
			if($(this).hasClass('selected'))
				return false;
			else{
				// remuevo la clase del que esta seleccionado
				$('.nav .selected', parent.w).removeClass('selected');
				$(this).addClass('selected');
				// toma el numero de página
				pagina = $(this).attr('id').split('_');
				pagina = pagina[2];		
			}
		}
		
		parent.actualID = pagina;
				
		$.get(parent.url + '/page:' + pagina , function(data){
			var container = $('#content_' + parent.id);
			container.fadeOut(function(){
				$(this).html( parent.ajaxData( data, false));			
				// onload callback
            	if(parent.onPageLoad != 'none')
					eval( parent.onPageLoad + '("content_' + parent.id + '")' );
				$(this).fadeIn();
			});

		});
		
		// chequeo los previos y los próximos
		if(parent.actualID > 1){
			$('.nav .previous', parent.w).show();
        	$('.nav .noprevious', parent.w).hide();			
		}else{
			$('.nav .previous', parent.w).hide();
        	$('.nav .noprevious', parent.w).show();		
		}
		
		if( (parent.actualID*1 + 1) > parent.pageCount ){
			$('.nav .next', parent.w).hide();
        	$('.nav .nonext', parent.w).show();		
		}else{
			$('.nav .next', parent.w).show();
        	$('.nav .nonext', parent.w).hide();		
		}
		
		return false;
	}
	
	this.loadPaginator = function(){
		//alert('paginator');
        for(a = 1; a <= parent.pageCount; a++ ){
            // incremento el id interno
            if(a == 1)
				$('.nav .numbers', parent.w).append('<span>' + parent.pagesTitle + ':</span> ' + '<a href="#" class="selected num" id="link_' + parent.id + '_' + a + '"> ' + a + '</a>');
            else
				$('.nav .numbers', parent.w).append(' <a href="#" class="num" id="link_' + parent.id + '_' + a + '">' + a + '</a>');
        }
        if(a > 68){

			$('.nav .numbers', parent.w).wrapInner('<div class="numscroll" style="width: 20000px;"><div style="float:left"></div></div>').attr('id', 'num_scroll_' + parent.id );
        	// ancho fijo y algo dependiendo
        	var ancho_scroll =  parent.navWidth - 32; //flechas
			$('.nav .numbers', parent.w).css('width', ancho_scroll)
        								.css('height', 16)
        								.css('overflow', 'hidden');

        	var ancho_total = $('.nav .numscroll div:first', parent.w).width();
        	// evento de scroll
			var mov = ancho_total - ancho_scroll;
			//alert(ancho_scroll);

			$('#num_scroll_' + parent.id).mousemove(function(e){
				//console.log( (e.pageX - this.offsetLeft));
				var offset = 0;
				var widthTotal = 0;
				$('#wrapper').each(function(){offset = this.offsetLeft; widthTotal = $(this).width(); });
				offset = offset + parent.navLeft + 16; // ajuste por diferentes anchos  16 (el left del numbers)
				mouse_pos = new Number( e.pageX - offset);
				posy = Math.round((mouse_pos*mov)/ancho_scroll); // movimiento que debe realizar
				$('.nav .numscroll div:first', parent.w).css('margin-left', (posy*-1).toString() + 'px');
			});

		}
		$('.nav .previous', parent.w).hide();
        $('.nav .noprevious', parent.w).show();
		if( parent.pageCount > 1)
			$('.nav .next', parent.w).show();
		else
			$('.nav .nonext', parent.w).show();

		$('.nav .next', parent.w).bind('click', parent.ajaxFade);
		$('.nav .previous', parent.w).bind('click', parent.ajaxFade);
		$('.nav .num', parent.w).bind('click', parent.ajaxFade);
	}	
	

    /**
     *  Se ejecuta sólo al inicalizar el objeto
     */

    this.init = function(options){

        // opciones por defecto
        defaults = { id:'', url:'', link: null, internalID:1, actualID:1, paginator:'', pageCount:0, pagesTitle:'Pàgina', navLeft: 0, navTop:0, navWidth: 'auto', onPageLoad: 'none', cssPreload: 'preload', mode: 'slide'}

        // opciones
        for( a in defaults){
            parent[a] = options[a] ? options[a] : defaults[a];
        }

        parent.w = $('#' + parent.id);


        html = new Array();

        // contenedor

        html[1] = '<div style="position: relative;" id="wrapper_' + parent.id + '" class="rotator" title="' + parent.id + '">'; // contenedor con oferflow   width: ' + parent.w.width() + 'px; height: ' +  ( parent.w.height() + parent.heightNav + 25 ) + 'px;
        html[2] = '<div style="width: ' + parent.w.width() + 'px; height: ' +  parent.w.height() + 'px; overflow: hidden; left: 0; position: absolute;" id="content_' + parent.id + '">';
        html[3] = '<div style="top: 0; left: 0; position: absolute;" id="content_wrapper_' + parent.id + '">';
        html[4] = '<div style="top: 0; left: 0; width: ' + parent.w.width() + 'px; height: ' +  parent.w.height() + 'px; position: absolute; display: none; overflow: hidden;" class="' + parent.cssPreload + '" id="ajax_' + parent.id + parent.internalID + '"></div>'; // primer contenido
        html[5] = '</div></div>'; // finaliza los contenedores

        //controles
        if(parent.navWidth != 'auto')var tempNavigatorWidth = parent.navWidth;
        else var tempNavigatorWidth = parent.w.width();
        
        html[6] = '<div style="width: ' + tempNavigatorWidth + 'px; top: ' + parent.navTop + 'px; left: ' + parent.navLeft + 'px; position: absolute;" class="nav">';
        html[7] = '<a href="#" class="previous" style="display: none;"><span>&laquo; previous</span></a>';
        html[8] = '<span class="noprevious" style="display: none"><strong>no previous</strong></span>';
        html[9] = '<div class="numbers"></div>'
        html[10] = '<span class="nonext" style="display: none"><strong>no next</strong></span>';
        html[11] = '<a href="#" class="next" style="display: none;"><span>next &raquo;</span></a>';
        html[12] = '</div>';
        html[13] = '</div>'; // end wrapper

        parent.w.html(html.join(''));

        $.get(parent.url + '/' + parent.getRandom(), null, function(ajaxReturnedData){

            $('#ajax_' + parent.id + parent.internalID).removeClass( parent.cssPreload );
            $('#ajax_' + parent.id + parent.internalID).html( parent.ajaxData(ajaxReturnedData, true) ).fadeIn('slow');
            // onload callback
            if(parent.onPageLoad != 'none')
				eval( parent.onPageLoad + '("' + 'ajax_' + parent.id + parent.internalID + '")' );
			
			if(parent.mode == 'slide') // modo por defecto	
            	parent.generatePanels();
            else // hace los cambios entre páginas con FADE
           		parent.loadPaginator(); 	

        });

    }


}

/**
 * Rotación de imágenes
 * Si no paso las posiciones del navegador <> me lo coloca luego
 * y no posicionado absolutamente
 */

function bannerRotator(){

    // relacion con el
    var parent = this;

    this.init = function(options){

        // opciones por defecto
        defaults = { id:'', actualPos: 0, navTop: 0, navLeft: 0, navWidth: 'auto', mov: 0 }

        // opciones
        for( a in defaults){
            parent[a] = options[a] ? options[a] : defaults[a];
        }
        
        parent.w = $('#' + parent['id']);
        
        //alert($('.mask', parent.w).width());
        
        parent.w.css('position', 'relative');

        // cuento los items
        var liCount = $('li', parent.w ).length;
        if(liCount <= 1)return; // si es uno no tengo que rotarlos
		//alert(liCount);
        var html = new Array();
        var tempPosition = ( parent.navTop === 0 ) ? 'margin-bottom: 10px;' : 'position: absolute; width: ' + parent.navWidth + 'px; top: ' + parent.navTop + 'px; left: ' + parent.navLeft + 'px';
        
        html[0] = '<div id="navigator_' + parent.id + '" style="' + tempPosition + '">';
        html[1] = '<div class="navigator clearfix">';
        html[2] = '<a href="#" class="previous" style="display: none"><span>&laquo; previous</span></a>';
        html[3] = '<span class="noprevious" style="display: none"><strong>no previous</strong></span>';
        html[4] = '<a href="#" class="next"><span>next &raquo;</span></a>';
        html[5] = '</div>';
        html[6] = '</div>';
		//alert($('li:first', parent.w).html());
		if($('li:first', parent.w).outerWidth(true)){
			var liWidth = parent.mov = $('li:first', parent.w).outerWidth(true);
		}else{
			var liWidth = parent.mov;
		}
        // var liWidth = parent.mov = $('li:first', parent.w).outerWidth(true);
		// ancho total
        var totalWidth = liCount * liWidth;
        parent.movement = ( totalWidth - liWidth ); // movimiento total
        
        $('ul', parent.w).css( 'width', + totalWidth + 'px')
                         .css('position', 'absolute')
                         .css('left', 0)
                         .addClass('clearfix');
		/*
        if( (parent.movement + parent.actualPos) < parent.mov  ){
            return;
        } */
        
        // pie
        if( parent.navTop === 0 )parent.w.after(html.join(''));
        else parent.w.append(html.join(''));
        
        // botones
        navContainer =  $('#navigator_' + parent.id );
        $('.next', navContainer).bind('click', parent.nextItem );
        $('.noprevious', navContainer).show();
        $('.previous', navContainer).bind('click', parent.previousItem );
        
    }
    
    this.nextItem = function(){
        // nueva posición
        //alert(parent.mov);
        parent.actualPos = parent.actualPos + (parent.mov * -1);
        // oculto si ya no entra un próximo objeto
        if( (parent.movement + parent.actualPos) < parent.mov  )$(this).hide();
        $('ul', parent.w).animate({left: parent.actualPos + 'px'}, 1500, 'swing');
        $('.noprevious', $(this).parent()).hide();
        $('.previous', $(this).parent()).show();
        return false;
    }
    
    this.previousItem = function(){
        // movimientos
        parent.actualPos = parent.actualPos + parent.mov;
        // oculto si estoy en la posición cero
        if( parent.actualPos >= 0){
            $(this).hide();
            $('.noprevious', $(this).parent()).show();
        }
        $('ul', parent.w).animate({left: parent.actualPos + 'px'}, 1500, 'swing');
        $('.next', $(this).parent()).show();
        return false;
    }

}

 
 