//Convertimos los enlaces que tengan clase external a blank
$(document).ready(function () {
    $("a.external").attr('target', '_blank');
});

//----COMPROBAR FORMS
//Filtros
var filters = {
    required: function(el) {return ($(el).val() != '' && $(el).val() != -1);},
    number: function(el) {return ($(el).val()=='' || !isNaN($(el).val()))},
	date: function(el) {return ($(el).val()=='' || isDate($(el).val())=='')},
	email: function(el) {return /^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/.test($(el).val());},
    telefono: function(el){return /^[0-9]*$/.test($(el).val());},
	isChecked: function(el) {
			result=false; 
			$("form").find("input").each(function(y,radio) {
				if (radio.name==el.name) {if (radio.checked) result=true;}
			});
			return result;
	},
	nomultiples: function (el) {return (/[;.\/,]/.test($(el).val())?false:true);},
	coincideClave: function(el) {return $(el).val()==$("#pass2").val();},
	isImage: function(el) {valor=$(el).val(); return (valor != '' && (valor.indexOf('jpg')>0 || valor.indexOf('jpeg')>0 || valor.indexOf('gif')>0));}
};	
// Extensiones
$.extend({
	stop: function(e){
        if (e.preventDefault) e.preventDefault();
        if (e.stopPropagation) e.stopPropagation();
    }
});
// Código
$(document).ready(function(){
	$("form").bind("submit", function(e){
		//Limpiamos las clases de error anteriores si las hay
		$(this).find(".error").removeClass("error");
		$(this).find(".errorSpan").removeClass("errorSpan");
		
		if (typeof filters == 'undefined') return;
	    $(this).find("input, textarea, select").each(function(x,el){
	        if ($(el).attr("class") != 'undefined') {
	        $.each(new String($(el).attr("class")).split(" "), function(x, klass){
	            if ($.isFunction(filters[klass]))
	                if (!filters[klass](el))  {
						//Definimos las clases de error
						$(el).addClass("error");
						$(el.parentNode).addClass("errorSpan");
					}
			});
	        }
	    });
		if ($(this).find(".error").size() > 0) {
			$.stop(e || window.event);
			$(this).find(".error:first").focus();
			
			//Movemos scroll hasta el error
			var targetOffset = $(this).find(".error:first").offset().top;
			targetOffset-=30;
			$('html, body').animate({scrollTop: targetOffset}, 1000);	
			//Fin movimiento scroll hasta el error
			
			return false;
		}
	    return true;
	});
});
function isDate(dateStr) {
//Se introducen fechas con el formato dd/mm/yyyy o dd-mm-yyyy
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
	var respuesta = "";
    if (matchArray == null) {
        respuesta+="Por favor, introduzca la fecha con formato dd/mm/yyyy o dd-mm-yyyy. \n";
		return respuesta;
    }
    month = matchArray[3]; // parse date into variables
    day = matchArray[1];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
        respuesta+="El mes debe tener un valor entre 1 y 12. \n";
		return respuesta;
    }

    if (day < 1 || day > 31) {
        respuesta+="Día debe tener un valor entre 1 y 31. \n";
		return respuesta;
    }

    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        respuesta+="El mes "+month+" no tiene 31 días! \n";
		return respuesta;
    }

    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            respuesta+="Febrero " + year + " no tiene " + day + " días! \n";
			return respuesta;
        }
    }
	return respuesta;
}
//---- FIN COMPROBAR FORMS


 function relative_time(time_value) {
   var values = time_value.split(" ");
   time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
   var parsed_date = Date.parse(time_value);
   var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
   var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
   delta = delta + (relative_to.getTimezoneOffset() * 60);

   if (delta < 60) {
      return 'hace menos de un minuto';
   } else if(delta < 120) {
      return 'hace un minuto';
   } else if(delta < (45*60)) {
      return 'hace '+(parseInt(delta / 60)).toString() + ' minutos';
   } else if(delta < (90*60)) {
      return 'hace una hora';
   } else if(delta < (24*60*60)) {
      return 'hace ' + (parseInt(delta / 3600)).toString() + ' horas';
   } else if(delta < (48*60*60)) {
      return 'hace 1 día';
   } else {
      return 'hace '+(parseInt(delta / 86400)).toString() + ' días';
   }
}
function twitterCallback(obj) {
   var id = obj[0].user.id;
   document.getElementById('my_twitter_status').innerHTML = obj[0].text;
   document.getElementById('my_twitter_status_time').innerHTML = relative_time(obj[0].created_at);
}

