/**
 * Autocasion Javascript Framework
 *
 * @company Autocacion.com
 * @author	Lubert Palacios
 * 
 * @file 	specific.js
 *
 */
 
 Autocasion.Dispatcher = {} || Autocasion.Dispatcher;
 
 Autocasion.Dispatcher = function(){
	
	this.menu = function(){
		var menuElements = $('ul#menu li:not(.pta)'),
			menuActive = $('ul#menu li.active'),
			submenu = $('.menuLv2_contenedor ul'),
			inMenu = false,
			itemSelected = menuActive.prevAll().length,
			itemFocus = itemSelected;
			
		
		var showMenu = function(){
			submenu.hide().addClass('hidden');
			$('.submenu-' + (inMenu ? itemFocus : itemSelected) ).show().removeClass('hidden');
		}
		
		var addLast = itemSelected > 0 ?  $(menuElements[itemSelected - 1]).addClass('last') : null;
		
		menuElements.bind('mouseover', function(e){
			inMenu = true;
			itemFocus = $(this).prevAll().length;
			showMenu();			
		}).bind('mouseout', function(){
			inMenu = false;
			itemFocus = itemSelected;
			setTimeout(showMenu, 100);
		});
		
		submenu.bind('mouseover', function(){
			inMenu = true;
			itemFocus = $(this).prevAll().length;
			showMenu();
		}).bind('mouseout', function(){
			inMenu = false;
			itemFocus = itemSelected;
			showMenu();
		});
		
		showMenu();
		
	}
	
	this.searchResult = function(){
		
	}
	
	this.sheetMap = function(coords){		
		 var map;
		 var panoramioLayer = new google.maps.panoramio.PanoramioLayer();
		
		var mapMenu = $('.map-menu').bind('click', function(e){
			e.preventDefault(),
			updateMap(this.href.split('#')[1]);
			$('.map-menu').removeClass('activo');
			$(this).addClass('activo');
		});
		
		var initMap = function(coords) {			
			coords = coords.split(',');						
            var ll = new google.maps.LatLng(coords[0], coords[1]);		
            				
			var options = {
				 zoom: 13,
                 center:ll,
                 disableDefaultUI: true,
                 panControl: true,
                 zoomControl: true,
                 scaleControl: true,
                 mapTypeId: google.maps.MapTypeId.ROADMAP				
			}
						
			
            map = new google.maps.Map(document.getElementById("map"),options);            
                        
            
             var marker = new google.maps.Marker({
                position: ll, 
                map: map                
            });
    
            
            
		}
		
		var updateMap = function(type){
			type = type || 'map';
			panoramioLayer.setMap(null);
			
			switch(type){
				case 'map':
				    map.setMapTypeId(google.maps.MapTypeId.ROADMAP);						
					break;
				case 'hib':
				    map.setMapTypeId(google.maps.MapTypeId.HYBRID);						
					break;
				case 'sat':
    				map.setMapTypeId(google.maps.MapTypeId.SATELLITE);						
    				break;
				case 'pic':
					panoramioLayer.setMap(map);
					break;
				default:
					break;	
			}
		}

		initMap(coords);
	}
	
	
	this.emuleAnchors = function(){
		$('.lt-link').unbind('click').bind('click', function(){
			var a = $(this); 
			a.hasClass('blank') ? window.open(a.attr('rel')) : ( a.hasClass('modal-link') ? '' : location.href = a.attr('rel'));
			//, dyn = $('#lt-link-dyn');
			//dyn.attr('href', a.attr('rel')).attr('class', '').attr('class', a.attr('class')).attr('target', a.hasClass('blank') ? '_blank' : '').click();
		});	
	}
	
	this.sheet = function(){
		
		
		//Emule anchors
		this.emuleAnchors();
		
		// Prevents default
		$('.more').bind('click', function(e){
			e.preventDefault();
		});
		
		// Map
		var coords = $('#map-coords').val();
		if(coords){
			this.sheetMap(coords);
		}
		
		var _this = this;
		// See phone
		$('.see-phone').bind('click', function(e){
			e.preventDefault();
			$(this).hide().addClass('hidden');
			$('.phone-content').show().removeClass('hidden');
			//Click counter
			_this.clickCounter(this);
		});
		
		$('.frm-contact-phone .enlace').bind('click', function(e){
			e.preventDefault();
			var p = $(this).parent();
			$(this).hide().addClass('hidden');
			p.find('.phone-enc').hide().addClass('hidden');
			p.find('.phone').show().removeClass('hidden');
			_this.clickCounter(this);
		});	
		
		//Click counter
		$('.webc').bind('click', function(e){
			_this.clickCounter(this);
		});
		
		
		// Social Layer
		var social = {
			icons: $('.social-icons'),
			layer: $('.social-layer'),
			visible: false,
			show: function(){
				this.icons.addClass('activo');
				this.layer.show().removeClass('hidden');
				this.visible = true;
			},
			hide: function(){
				if(!social.visible){
					social.icons.removeClass('activo');
					social.layer.hide().addClass('hidden');
				}
			}
		}
		
		social.icons.bind('mouseover', function(e){
			social.visible = true;
			social.show();	
		}).bind('mouseout', function(){
			social.visible = false;
			setTimeout(social.hide, 200);	
		});
		
		social.layer.bind('mouseover', function(e){
			social.visible = true;
		}).bind('mouseout', function(){
			social.visible = false;
			setTimeout(social.hide, 200);	
		});
		
		
		// Image Slider
		var gThumbs = $('.thumbs li'),
			gContainer = $('ul.galeria'),
			gButtons = $('.thumbs .btn'), gPrev = $('.thumbs .prev'), gNext = $('.thumbs .next'), 
			gImage = $('.galeria img:first'), items = $('ul.galeria img.min-url'),
			tam = 68, maxSize = (items.length - 5) * tam * -1;
		
		var activateButtons = function(le){
			var le = le || 0, ap = le < 0, an = items.length > 5 && le > maxSize;
			gPrev.addClass(ap ? 'ant' : 'ant_first').removeClass(ap ? 'ant_first' : 'ant');
			gNext.addClass(an ? 'sig' : 'sig_last').removeClass(an ? 'sig_last' : 'sig');
		}
		
		var moveGallery = function(c, ex){
			ex = ex || false; 
			var le = parseInt(gContainer.css('margin-left').split('px')[0]),
				nl = (ex ? c : le + c)* tam,
				ft = nl > 0 ? 0 : (nl < maxSize ? maxSize : nl);
			gContainer.animate({
				'margin-left': ft
			}, 'fast', function(){
				le = parseInt(gContainer.css('margin-left').split('px')[0]);
				activateButtons(le);
			});
		}
		
		gThumbs.bind('click', function(e){
			e.preventDefault();
			var _t = $(this),
				ni = _t.find('img.real-url');
			
			gImage.attr('src', ni.attr('src')); //.replace('med/', 'grd/'));
			
			var i = _t.find('a').attr('class').substr(2);
			if(i > 1 && i < items.length - 2){
				moveGallery((i - 2) * -1, true);
			}
		});
		
		gButtons.bind('click', function(e){
			e.preventDefault();
			if(items.length > 5){
				moveGallery($(this).hasClass('prev') ? 1 : -1);
			}
		});
			
		activateButtons();
		
		
		// Validate forms
		var forms = $('.lt-form');
		forms.find('a.f-submit').bind('click', function(e){
			e.preventDefault();
			$(this).closest('form').submit();	
		});
		
		forms.bind('submit', function(e){
			//e.preventDefault();
			var _t = $(this),
				fields = {
					name: _t.find('.f-name'),
					phone: _t.find('.f-phone'),
					mail: _t.find('.f-mail'),
					comments: _t.find('.f-comments'),
					policy: _t.find('.f-policy'),
					remember: _t.find('.f-remember'),
					type: _t.find('.f-type')
				};
			//console.log(fields);
			
			if(fields.name && fields.name.val() == ''){
				alert('Debe ingresar un nombre');
				fields.name.focus();
				return false;
			}
			
			if(fields.phone && fields.phone.val() == '' && fields.phone.hasClass('required')){
				alert('Debe ingresar un teléfono');
				fields.name.focus();
				return false;
			}
			
			if(fields.mail && fields.mail.val() == '' && fields.mail.hasClass('required')){
				alert('Debe ingresar un e-mail');
				fields.mail.focus();
				return false;
			}
			
			if(fields.mail && fields.mail.val() != ''){
				var filter = /[A-Za-z0-9_.\-]*@[A-Za-z0-9_\-]+\.[A-Za-z0-9_.]+[A-za-z]$/;
				if(!filter.test( fields.mail.val() )){
					alert('Debe ingresar un mail válido');
					fields.mail.focus();
					return false;
				}
			}
			
			if(fields.policy && fields.policy.hasClass('required') && !fields.policy.attr('checked')){
				alert('Debe aceptar la política de privacidad');
				return false;
			}
			
			if(fields.type && fields.type.val() == 'null'){
				alert('Debe seleccionar una opción');
				fields.type.focus();
				return false;
			}
			
			
			//console.log('ok values');
			if(_t.hasClass('ajax')){
				$.ajax({
					url: '/ficha-mensaje.php',
					data: 'par=' + _t.find('.f-type').val() + '&' + _t.serialize(),
					success: function(data){
						if(data == '1'){
							
							_t.find('.mens_enviado').show().removeClass('hidden');								
							_t.find('.f-mail').val('');
							_t.find('.f-name').val('');
							_t.find('.f-policy').attr('checked', false);							
							
							
							
						}
					},
					error: function(e){
						//console.log(e);
					}
				});
				return false;
			}
			return true;
			//return false;
		});
		
		
		// Modal window
		var fbContainer = $('#fb-container');
		var modal = $('#capa_flotante'),
			overlay = $('#bg_white'),
			modalClose = modal.find('.cerrar'),
			modalContainer = modal.find('.container'),
			modalHide = function(){
				var c = modalContainer.children();
				modal.find('.mens_enviado').hide().addClass('hidden');
				$('#hidden-popups').append(c.addClass('hidden'));
				
				modal.addClass('hidden').hide().attr('class', '');
				$('body').css('overflow', 'visible');
				overlay.addClass('hidden').hide();
				
				fbContainer.show().removeClass('hidden');
			},
			modalShow = function(content){
				modal.removeClass('hidden').show();
				overlay.removeClass('hidden').show();	
				modal.offset({
					top: $(window).scrollTop() + 50
				});
				$('body').css('overflow', 'hidden');
				modalContainer.html('').append(content.removeClass('hidden').show());
				
				fbContainer.hide().addClass('hidden');
			}
		
		modalClose.bind('click', function(e){
			e.preventDefault();
			modalHide();
		});
		
		$('.modal-link').bind('click', function(e){
			e.preventDefault();
			modalContainer.removeClass('ancho100');
			var layer = ( $(this).attr('href') ? $(this).attr('href') : $(this).attr('rel') ).split('#')[1];
			switch(layer){
				case 'modal-contact':
					modal.addClass('contacto_vo');
					modalContainer.addClass('ancho100');
					break;
				case 'modal-alerts':
					modal.addClass('alertas');
					break;
				case 'modal-er':
					modal.addClass('notificar');
					break;
				default:
					break;	
			}
			modalShow($('#' + layer));
		});
		
		
		// Print
		$('.print').bind('click', function(e){
			e.preventDefault();			
			window.print()
		});
		
	}
	
	this.clickCounter = function(e){
		var titles = {
			'phone-right': ['tfnos_dcha', 1],
			'phone-bottom': ['tfnos', 2],
			'phone-middle': ['tfnos_centro', 1],
			'phone-cons': ['vertfnos']
		}
		
		var _t = $(e), id = $('#ad-id').val();
		if(_t.hasClass('phonec')){
			pos = ''
			for(var i = 0; i < titles.length; i++){
				//Positions?
			}
			
			$.ajax({
		  		url: '/includes/contar_visitas_telefono.ajax.php?id=' + id + ( pos != '' ? '&posi=' + pos : '' ),
		  		method:'get'
		  	});
		}
		
		if(_t.hasClass('webc')){
			$.ajax({
		  		url: '/includes/contar_clicks_web_concesionario.ajax.php?id=' + id,
		  		method:'get'
		  	});
		}
		
		/*switch(type){
			case 'ads':
				$.ajax({
			  		url: 'includes/contar_ads.ajax.php?code=' + code,
			  		method:'get'
			  	});
				break;
			case 'web':
				$.ajax({
			  		url: '/includes/contar_clicks_web_concesionario.ajax.php?id=' + code,
			  		method:'get'
			  	});
				break;
			case 'phone':
				$.ajax({
			  		url: '/includes/contar_visitas_telefono.ajax.php?id=' + code + '&posi=' + pos,
			  		method:'get'
			  	});
				break;
		}*/
				
	}
	
	this.init = function(){
		this.menu();
		
		try{
			if(this.sc.id){
				this[this.sc.id]();
			}
		}
		catch(e){
			//console.log(e);
		}
	}
	
	
	var _this = this;
	this.sc = siteConfig || {
		sitePath: '',
		id: ''
	};
	
	this.sc = {
		sitePath: '',
		id: 'sheet'
	};  
	
	this.init();
 
 };
 
 
 $(document).ready(function(){
	var at = new Autocasion.Dispatcher();
 });
 
 /**
  * Funciones del portal anterior
  */
var contarClickAds = function(code){
	$.ajax({
  		url: 'includes/contar_ads.ajax.php?code=' + code,
  		method:'get' 
  	});
}
