/* opciones */

function Global ()
{
    this.desplazamiento = 0;
    this.last_login_check = new Array(0, 0);
    this.last_email_check = new Array(0, 0);
    this.last_bank_check = new Array(0, 0);
    this.bannerDelay = 10000;
    this.imgCache = [];
    
    /*$.ajaxSetup({ 
        contentType: "application/x-www-form-urlencoded; charset UTF-8"
    });*/

}

var global = new Global();

/* jQuery hooks */

$.preloadCssImages = function(){
    var allImgs = [];//new array for all the image urls  
    var k = 0; //iterator for adding images
    var sheets = document.styleSheets;//array of stylesheets
    
    for(var i = 0; i<sheets .length; i++){//loop through each stylesheet
        var cssPile = '';//create large string of all css rules in sheet
        var csshref = (sheets[i].href) ? sheets[i].href : 'window.location.href';
        var baseURLarr = csshref.split('/');//split href at / to make array
        baseURLarr.pop();//remove file path from baseURL array
        var baseURL = baseURLarr.join('/');//create base url for the images in this sheet (css file's dir)
        if(baseURL!="") baseURL+='/'; //tack on a / if needed
        if(document.styleSheets[i].cssRules){//w3
            var thisSheetRules = document.styleSheets[i].cssRules; //w3
            for(var j = 0; j<thisSheetRules.length; j++){
                    cssPile+= thisSheetRules[j].cssText;
            }
        }
        else {
            cssPile+= document.styleSheets[i].cssText;
        }
      
        //parse cssPile for image urls and load them into the DOM
        var imgUrls = cssPile.match(/[^\(]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "(" and a ".filename"
        if(imgUrls != null && imgUrls.length>0 && imgUrls != ''){//loop array
            var arr = jQuery.makeArray(imgUrls);//create array from regex obj        
            jQuery(arr).each(function(){
                allImgs[k] = new Image(); //new img obj
                allImgs[k].src = (this[0] == '/' || this.match('http://')) ? this : baseURL + this;     //set src either absolute or rel to css dir
                k++;
            });
        }
    }//loop
    return allImgs;
} 

$.preloadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
        var cacheImage = document.createElement('img');
        cacheImage.src = arguments[i];
        global.imgCache.push(cacheImage);
    }
}

$.fn.tagName = function() {
    try {
        return this.get(0).tagName.toUpperCase();
    }
    catch(e)
    {
        try {
            return this.tagName.toUpperCase();
        }
        catch(e)
        {
            return;
        }
    }
}

$.fn.blink = function(options)
{
    var defaults = { delay: 500, blinked: {opacity: 0.5}, normal: {opacity: 1} };
    var options = $.extend(defaults, options);
    
    return this.each(function()
    {
        var element = $(this);
        
        element.everyTime(options.delay, null, function() {
            
            var element = $(this);
            
            if(element.attr("src") == "img/accept.png")
            {
                element.stopTime();
                element.stop(true, true).animate(options.normal);
                element.removeClass("blinking");
            }
            
            if(element.hasClass("blinking"))
            {
                element.animate(options.blinked);
                element.removeClass("blinking");
            }
            else
            {
                element.animate(options.normal);
                element.addClass("blinking");
            }
        });
    });
};

$.fn.bubble = function(options)
{
    var defaults = { msg: "[no msg]", type: "error", id: "" };
    var options = $.extend(defaults, options);
    
    return this.each(function()
    {
        var element = $(this);
        var alto = element.height();
        
        var bubbles = element.next(".bubble");
        var deleting = false;
    
        if(bubbles.length > 0)
        {
            var bubble = $(bubbles[0]);

            if($(bubble.children("div.msg")[0]).html().replace(/<.+?>/ig, '') != options.msg.replace(/<.+?>/ig, ''))
            {
                deleting = true;
                bubbles.animate({opacity: "hide", top: (alto + global.desplazamiento + 15) + "px"}, function() { $(this).remove(); });
            }
            else
            {
                bubble
                    .animate({top: (alto + global.desplazamiento + 5) + "px"}, "fast", "swing")
                    .animate({top: (alto + global.desplazamiento + 10) + "px"}, "fast", "swing")
                    .animate({top: (alto + global.desplazamiento + 5) + "px"}, "fast", "swing")
                    .animate({top: (alto + global.desplazamiento + 10) + "px"}, "fast", "swing");
    
                return;
            }
        }
    
        // Create bubble
        
        var bubble = $('<div></div>')
            .addClass("bubble")
            .attr("title", "Clic para cerrar")
            .css("left", (-25 + (element.width() / ( element.width() > 30 ? 4 : 2 ))) + "px")
            .css("top", (alto))
            .html('<div class="top"></div><div class="msg">' + options.msg + '</div><div class="bottom"></div>');
    
        if(element.parent().tagName() != "DIV")
            element.wrap('<div class="bubble-wrapper"></div>');
        else 
            element.parent().css("position", "relative");
        
        element.after(bubble);

        bubble.click(function() {
            $(this).clearBubble();
        });
    
        // Animate it
        bubble.animate({opacity: "show", top: (alto + global.desplazamiento + 10) + "px"});
    
        // <div class="bubble" title="Clic para cerrar"><div>Probando</div></div>
    });
};

$.fn.clearBubble = function()
{
    return this.each(function()
    {
        var element = $(this);
        var alto = element.height();
      
        if(element.hasClass("bubble"))
        {
            $(element).animate({opacity: "hide", top: (alto + global.desplazamiento + 5) + "px"}, function() { 
                $(this).remove();
            })
        }
      
        if(element.next(".bubble").length > 0)
        {
            $(element).next(".bubble").animate({opacity: "hide", top: (alto + global.desplazamiento + 5) + "px"}, function() { 
                $(this).remove();
            })
        }
    });
};

jQuery.fn.exists = function(){return jQuery(this).length>0;}

/* code */

function changeCatStatus(obj, id, status)
{
    var razon = "";
    
    if(status == 1)
    {
        while(true)
        {
            razon = prompt("¿Alguna razón en concreto?", razon);
            
            if(razon == null)
                return false;
            else if(razon.length > 500)
                alert("La razón es demasiado larga.");
            else
                break;
        }
    }
    else if(status == 2)
    {
        if(!confirm("¿Estas seguro de que quieres borrar el anuncio?"))
            return false;
    }
        
    $.post("index.php", {ajax: "true", "action": "change-cat-status", "id": id, "status": status, "reason": razon}, function(data) {
        
        if(data.error != "false")
        {
            //$(".cat-action:first").bubble({msg: data.error});
            alert("Error: " + data.error);
            
            buttons.removeAttr("disabled");
            buttons.removeClass("input-disabled");
            buttons.addClass("input_reg");
            
            return;
        }
        
        switch(parseInt(data.status))
        {
            default:
            case 0:
            case 1:
            {
                document.location = document.location;
                break;
            }
            case 2:
            {
                $("#cat-ad-body").slideUp("slow", function() { document.location = "index.php" });
                // todo: disabled color
                break;
            }
        }
        
    }, "json");
    
    $(obj).val("Espera...");
    
    var buttons = $(".cat-action");
    
    buttons.attr("disabled", "disabled");
    buttons.removeClass("input_reg");
    buttons.addClass("input-disabled");
}

function conmuteStick(obj)
{
    var button = $(obj);
    var tochange = button.parent().next(".pinned");
    
    tochange.toggle();   
    button.css("background-image", tochange.is(":visible") ? "url('img/minus.gif')" : "url('img/plus.gif')");
}

function configureHighslide()
{
    hs.graphicsDir = 'img/graphics/';
    hs.allowSimultaneousLoading = true;
    hs.wrapperClassName = 'borderless';
    //hs.dimmingOpacity = 0.75;
    hs.align = "center";
    
    hs.lang.loadingText = "Cargando..."; 
	hs.lang.loadingTitle = "Clic para cancelar la descarga";
	hs.lang.focusTitle = "Clic para traer delante";
	hs.lang.fullExpandTitle = "Tamaño completo";
	hs.lang.restoreTitle = "Clic para cerrar la imagen y clic y arrastrar para moverla.";

	hs.lang.previousText = 'Anterior';
	hs.lang.nextText = 'Siguiente';
	hs.lang.moveText = 'Mover';
	hs.lang.closeText = 'Cerrar'; 
	hs.lang.closeTitle = 'Cerrar (esc)'; 
	hs.lang.playText = 'Play';
	hs.lang.playTitle = 'Continuar transición (barra espaciadora)';
	hs.lang.pauseText = 'Pausar';
	hs.lang.pauseTitle = 'Pausar transición (barra espaciadora)';
	hs.lang.previousTitle = 'Anterior (tecla izquierda)';
	hs.lang.nextTitle = 'Siguiente (tecla derecha)';
	hs.lang.moveTitle = 'Mover';
	hs.lang.fullExpandText = '1:1';
	hs.lang.number = 'Imagen %1 de %2';

}

function hookShoutBox()
{
    $("#shoutbox .shouts").scrollTop("0px");
    $("#shoutbox .text").removeAttr("disabled");
    $("#shoutbox input.button").removeAttr("disabled");
    
    var refreshFunc = function(data) {
        
        var shouts = $("#shoutbox .shouts");
        var text = $("#shoutbox .text");
        var button = $("#shoutbox input.button");
        
        text.removeAttr("disabled");
        button.removeAttr("disabled");
        $("#shoutbox .shouts").fadeTo("fast", 1);
        
        if(data.error != "false")
        {
            text.bubble({msg: data.error});
            
            return false;
        }
        
        if(data.shouts.length > 0)
        {
            global.firstShout = data.first_id;
            
            for(var i=data.shouts.length-1; i>=0; i--)
                shouts.prepend(data.shouts[i]);

            $("#shoutbox .shouts").scrollTop("0px");
            /*$("#shoutbox .shouts .new").animate({backgroundColor: "#ff0000"}, "slow", function() {
                
                $(this).removeClass("new");
                
            });*/
        }
    };
    
    $("#shoutbox .refresh").click(function() { 
        $.post("index.php", "shoutbox=true&action=refresh&first_id=" + global.firstShout, refreshFunc, "json"); 
    });
    
    $("#shoutbox .text").keypress(function(e) {
        
        $(this).clearBubble();
        
        if(e.which == 13)
        {
            $("#shoutbox input.button").click();
            $(this).focus();
            return false;
        }

        return true;
    });
    
    $("#shoutbox input.button").click(function() {
        
        var text = $("#shoutbox .text");
        var button = $(this);
        var shouts = $("#shoutbox .shouts");

        var value = $.trim(text.val());
        
        if(value.length < 1)
        {    
            text.bubble({msg: "¿Se te ha comido la lengua el gato?"});
            text.focus();
            return false;
        }
            
        text.clearBubble();
        
        text.attr("disabled", "true");
        button.attr("disabled", "true");
        shouts.fadeTo("medium", 0.3);

        $.post("index.php", {"shoutbox": "true", "action": "add", "first_id": global.firstShout, "msg": value}, function(data) {
            
            var text = $("#shoutbox .text");
            
            if(data.error != "false")
            {
                var button = $("#shoutbox input.button");
                
                text.removeAttr("disabled");
                button.removeAttr("disabled");
                $("#shoutbox .shouts").fadeTo("fast", 1);
                
                text.bubble({msg: data.error});
                
                return false;
            }
            
            text.val("");
            
            refreshFunc(data);
            
        }, "json");
        
        return true;
    });
    
    $("#shoutbox .shouts").scroll(function() {
                
        var shouts = $("#shoutbox .shouts");
        
        var scrollTop = shouts.scrollTop();
        var maxScroll = shouts.attr("scrollHeight") - shouts.height();
        
        if(scrollTop == maxScroll && !shouts.hasClass("loading") && !shouts.hasClass("completed"))      
        {
            shouts.addClass("loading");
            
            // jQuery
            shouts.append('<div class="loading-ajax"><img src="img/loading-shout.gif" alt="Cargando..." /></div>');
            
            shouts.attr("scrollTop", shouts.attr("scrollHeight") - shouts.height());
            
            $.post("index.php", "shoutbox=true&action=archive&last_id=" + global.lastShout, function(data) {
                
                var shouts = $("#shoutbox .shouts");
                var loading = shouts.children(".loading-ajax");

                loading.remove();
                shouts.removeClass("loading");

                if(data.shouts.length < 1)
                {
                    shouts.addClass("completed");
                    shouts.append('<div class="shout end">Fin del registro</div>');
                    
                    return;
                }

                global.lastShout = data.last_id;
                
                for(var i=0; i<data.shouts.length; i++)
                    shouts.append(data.shouts[i]);

            }, "json");
        }
    });
}

function postComment(button, topic_id) {
    
    var value = $('#msg').val();
    var button = $(button);
    
    if(value.length < 1)
    {
        button.bubble({msg: "¿Se te ha comido la lengua el gato?"});
        return false;
    }
    
    button.clearBubble();
    
    /*$.post("index.php", "comentar=true&topic_id=" + topic_id + "&msg=" + escape(value), function(data) {
        
        alert(data);
        
    });*/
    
    return true;    
}

function submitNewCatForm()
{
    var res1 = checkErrorIcons('#step1c, #step4');
    
    if(!res1)
        return false;
        
    if($("#uploadedImages").children(".uploading, .queue").length > 0)
    {
        alert("Espera hasta que se suban todas las fotografias.");
        return false;
    }
    
    if(!$("#cats_type_adopt").is(":checked") && $("#cat_message").val().length < 3)
    {
        alert("No has escrito un mensaje en el anuncio.");
        return false;
    }
        
    return true;
}

function removeUpload(obj)
{
    var holder = $(obj).parent();

    if(holder.hasClass("queue") || holder.hasClass("uploading"))
    {
        var id=holder.attr("id").substr(5);

        try
        {
            global.uploader.cancelUpload(id);
        }
        catch(e) {}
    }
    
    holder.remove();
}

function hookGoogleMap()
{
    if(!$("#googlemapshow").exists())
        return;
    
    global.gmaps_map = new GMap2(document.getElementById('googlemapshow'));
    global.gmaps_map.setMapType(G_HYBRID_MAP);
    global.gmaps_map.setUIToDefault();
    global.gmaps_geocoder = new GClientGeocoder();
    
    if(global.google_latitude == 0)
    {
        global.gmaps_geocoder.getLatLng(
            global.google_address,
            function(point) {
                if (point) {
                    global.gmaps_map.setCenter(point, 14);
                    global.gmaps_marker = new GMarker(point);                    
                    global.gmaps_map.addOverlay(global.gmaps_marker);
                }
            }
        );
    }
    else
    {
        var str_p = global.google_latitude.split(",");
        var point = new GLatLng(str_p[0], str_p[1]);

        global.gmaps_map.setCenter(point, 14);
        global.gmaps_marker = new GMarker(point);                    
        global.gmaps_map.addOverlay(global.gmaps_marker);
    }
}

function createMap()
{
    if(!$("#googlemap").exists() || $("#googlemap").hasClass("created"))
        return;
    
    $("#googlemap").addClass("created").removeClass("hidden");
    
    // Mapa
    global.gmaps_map = new GMap2(document.getElementById('googlemap'));
    global.gmaps_map.setMapType(G_HYBRID_MAP);
    global.gmaps_map.setUIToDefault();
    global.gmaps_geocoder = new GClientGeocoder();
    
    global.gmaps_geocoder.getLatLng(
        "Zaragoza, Zaragoza",
        function(point) {
            if (!point) {
                alert("Dirección no encontrada");
            } 
            else {
                global.gmaps_map.setCenter(point, 14);
                
                global.gmaps_marker = new GMarker(point, {draggable: true});
                
                GEvent.addListener(global.gmaps_marker, "dragend", function(geo) {
                    
                    global.gmaps_geocoder.getLocations(geo, function(response) {
                        if (!response || response.Status.code != 200) {
                            alert("Status Code:" + response.Status.code);
                        } else {
                            place = response.Placemark[0];
                            point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
                            
                            $("#cat_google_latitude").val(place.Point.coordinates[1] + "," + place.Point.coordinates[0]);
                            
                            if($("#googlemap_address").val() == "")
                                $("#googlemap_address").val(place.address);
                        }
                    });
                    
                });
                
                global.gmaps_map.addOverlay(global.gmaps_marker);
            }
        }
    );
}

function showAddress(address) 
{
    global.gmaps_geocoder.getLatLng(
    address,
    function(point) {
        if (!point) {
            alert(address + " no se ha encontrado.");
        } else {
            global.gmaps_map.setCenter(point, 17);
            global.gmaps_marker.setLatLng(point);
        }
    }
    );
}

function hookAddCatForm() 
{
    if(!$("#add-cat").exists())
        return;
    

    // Special events / type
    
    $("#cats_type_adopt").click(function() {
        $("#step1b").show();
        $("#step1c").show();
    });
    
    var hideOthers = function()
    {
        $("#step1b").hide();
        $("#step1c").hide();
    };
    
    $("#cats_type_lost").click(hideOthers);
    $("#cats_type_group").click(hideOthers);
    $("#cats_type_help").click(hideOthers);
    
    //if(!$("#cats_type_adopt").is(":checked"))
    //    hideOthers();
    
    $('#cats_type_adopt').click();    
    
    // Special event group/individual
    
    $("#cats_amount_one").click(function() {
        $("#cat_individual").show();
        $("#cat_individual_name").show();
        $("#cat_group").hide();
    });
    
    var showGroup = function() {
        $("#cat_individual").hide();
        $("#cat_individual_name").hide();
        $("#cat_group").show();
    };
    
    $("#cats_amount_group").click(showGroup);

    //if($("#cats_amount_group").is(":checked"))
    //    showGroup();

    $("#cats_amount_one").click();

    // Hook search address
    
    $("#googlemap_address_button").click(function() {
        createMap();
        showAddress($("#googlemap_address").val());
        $("#googlemap_address").focus();
    });
    
    $("#googlemap_address").keypress(function(e) {
        if(e.which == 13) {
            createMap();
            showAddress($(this).val());
            $(this).focus();
            return false;
        }
        return true;
    });

    // New upload
    
    global.upload_id = 0;
    
    var settings = {
		flash_url : "include/swfupload.swf",
		upload_url: "index.php",
		post_params: {"action" : "upload", "section" : "catthumb", "id" : ""},
		file_size_limit : "5 MB",
		file_types : "*.jpg;*.jpeg;*.gif;*.png",
		file_types_description : "Archivos de imagen",
		file_upload_limit : 0,
		file_queue_limit : 0,
        file_post_name: "userfile",
        debug: false,

		button_width: "180",
		button_height: "25",
		button_placeholder_id: "uploadImageButton",
		button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
		button_cursor: SWFUpload.CURSOR.HAND,
        
        file_queued_handler: function(file) 
        { 
            $("#uploadedImages").append('<div id="thumb'+ file.id +'" class="image_cat_preview queue"><div class="delete" onclick="removeUpload(this);" title="Clic para cancelar">Cancelar</div></div>');
        },
        
        file_queue_error_handler: function(file, errorCode, message) 
        {
            var msg = "";
            
            switch (errorCode) 
            {
                case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
                {
                    msg = 'El archivo "'+ file.name +'" es demasiado grande.';
                    break;
                }
                case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
                {
                    msg = 'El archivo "'+ file.name +'" está vacío.';
                    break;
                }
                case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
                {
                    msg = 'El archivo "'+ file.name +'" no es válido.';
                    break;
                }
                case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
                {
                    $("#uploadImage").bubble({msg: "No puedes subir más de 8 archivos."});
                    break;
                }
                default:
                {
                    $("#uploadImage").bubble({msg: "Se ha producido un error." + " (" + errorCode + ")"});
                    break;
                }
            }
            
            if(msg != "")
                $("#uploadedImages").append('<div class="image_cat_preview upload-error"><div class="delete" onclick="$(this).parent().remove();" title="Clic para eliminar">Eliminar</div>'+ msg +'</div>');

        },
        
        file_dialog_complete_handler: function(numFilesSelected, numFilesQueued)
        { 
            try
            {
                this.startUpload();
            }
            catch(e) {} 
        },
        
        upload_start_handler: function(file) 
        { 
            var holder = $("#thumb" + file.id);

            if(!holder.exists())
                return false;

            holder.removeClass("queue");
            holder.addClass("uploading");
        },
        
        upload_progress_handler: function(file, bytesLoaded, bytesTotal) 
        { 
            var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
            
            var holder = $("#thumb" + file.id);
            
            if(!holder.exists())
                return false;
            
            holder.css("background-position", "0px " + (100-percent)  + "px");
        },
        
        upload_error_handler: function(file, errorCode, message) 
        { 
            var holder = $("#thumb" + file.id);
            
            if(!holder.exists())
                return false;
            
            var error = "";
            
            switch (errorCode) 
            {
        		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
        		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
        		case SWFUpload.UPLOAD_ERROR.IO_ERROR:
        		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
                case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
                default:
       			{
       			    error = "Error inesperado ("+ errorCode +")";
        			break;
                }
        		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
       			{
		            error = "Limite de subida superado";
        			break;
                }
                case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
        		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
       			{
 			        holder.remove();                  
        			return;
                }
    		}
            
            holder.removeAttr("id");
            
            holder.removeClass("uploading");
            holder.addClass("upload-error");
            holder.append('<div>'+ errorCode +'</div>');
            
            holder.children("div.delete").text("Eliminar");
        },
        
        upload_success_handler: function(file, serverData) 
        { 
            var data = eval("("+ serverData +")");
            
            // finalizado
            var holder = $("#thumb" + file.id);
            
            if(!holder.exists())
                return false;
            
            holder.removeAttr("id");
            holder.children("div.delete").text("Eliminar");
            
            if(data.error == "false")
            {
                holder.removeClass("uploading");
                holder.addClass("completed");    
                
                holder.append('<img src="'+ data.preview +'" alg="" />');
                holder.append('<input type="hidden" name="cat_images[]" value="'+data.id+'" />');
            }
            else
            {
                holder.removeClass("uploading");
                holder.addClass("upload-error");  
                holder.append('<div>'+ data.error +'</div>');
            }
        },
        
        upload_complete_handler: function(file) 
        { 
        },
        
        queue_complete_handler: function() 
        { 
            
        }
        
        /*
		debug: false,

		// The event handler functions are defined in handlers.js
		file_queued_handler : fileQueued,
		file_queue_error_handler : fileQueueError,
		file_dialog_complete_handler : fileDialogComplete,
		upload_start_handler : uploadStart,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,
		queue_complete_handler : queueComplete	// Queue plugin event
        */
	};

	global.uploader = new SWFUpload(settings);


    // Upload
    /*new AjaxUpload('uploadImage', {
        action: 'index.php',
        data: {
            action: 'upload',
            section: 'catthumb'
        },
        
        autoSubmit: true,
        onChange: function() {
            if($("#uploadedImages").children("div.completed").length >= 8)
            {
                alert("¡Uf! ¡Demasiadas fotografias!\nRecuerda que el limite es de 8.");
                return false;
            }
        },
        onSubmit: function(file, ext) {

            if (!(ext && /^(jpe?g|png|gif)$/i.test(ext))) {
                alert('Solo puedes subir imagenes con las extensiones: jpeg, gif o png');
                return false;
            }
            
            var name = "thumb" + new Date().getTime();            
            this.setDataMember('fid', name);
            
            $("#uploadedImages").append('<div id="'+ name +'" class="image_cat_preview uploading"><div class="delete" onclick="$(this).parent().remove();" title="Clic para eliminar">Eliminar</div></div>');
            
            return true
        },
        onComplete: function(file, response) {
            
            var data = eval("(" + response + ")");
            
            var thumb = $("#" + data.fid);
            
            if(data.error == "false")
            {
                thumb.removeClass("uploading");
                thumb.addClass("completed");    
                thumb.append('<img src="'+ data.preview +'" alg="" />');
                thumb.append('<input type="hidden" name="cat_images[]" value="'+data.id+'" />');
            }
            else
            {
                thumb.removeClass("uploading");
                thumb.addClass("upload-error");  
                thumb.append('<div>'+ data.error +'</div>');
            }
        }
    });*/

    // Hook
    
    // Paso 1c
    var inputs1c = $("#step1c input");
    
    for(var i=0; i<inputs1c.length; i++)
        hookInput(inputs1c[i]);
        
    // Paso 4
    var inputs4 = $("#step4 input");
    
    for(var i=0; i<inputs4.length; i++)
        hookInput(inputs4[i]);
}

function hookUtils() {

    // Google maps
    
    /*$(".google-map-this").each(function() {
        
        var obj = $(this);
        var direccion = obj.html().replace(/<br.*?>/i, ",");
        
        //obj.append('<img onclick="googleMapThis(this);" class="visitar-mapa" src="img/world.png" alt="(Ver mapa)" title="Ver mapa" />');
        obj.wrap('<a href=""></a>');

        return false;
    });*/

    // Reverse mails for security
    
    $('.reverse-this').each(function() {
        $(this).text($(this).text().split('').reverse().join('')).fadeIn("slow");
    });

    // Preload
    
    $.preloadImages(
        "img/bubble-tail.png",
        "img/corner-red-top.png",
        "img/corner-red-bottom.png",
        "img/uploading.png",
        "img/uploading.gif",
        "img/error.png"
    );
    //$.preloadCssImages();

    // Shoutbox resizable
    
    //$('#shoutbox .body').resizable();

    // Cuadro de texto
    
    var resizeTextArea = function() {
        var element = $(this);
        var value = element.val();
        
        element.attr("rows", Math.max(value.split("\n").length + 1, 3));
    }
    
    var commentTArea = $('#comment_body');
    commentTArea.click(resizeTextArea);
    commentTArea.keyup(resizeTextArea);
    commentTArea.change(resizeTextArea);
    commentTArea.click();

    // Banners

    var wrapper = $('#righttop_banner .banners');
    
    if(!wrapper || wrapper.children().length < 2)
        return;
    
    var changeImageFunc = function() {
        
        var wrapper = $('#righttop_banner .banners');
        var selected = wrapper.children(":visible");

        if(selected.next(":hidden").length > 0)
        {
            selected.fadeOut(function() {
                selected.next(":hidden,:first").fadeIn();
            });
        }                
        else
        {
            selected.fadeOut(function() {
                wrapper.children(":first").fadeIn();
            });            
        }
        
        var nav_wrapper = $('#righttop_banner .nav');
        var nav_selected = nav_wrapper.children("span.selected");

        if(nav_selected.next(":first").length > 0)
        {
            var selected_off = nav_selected.children(":last");
            var selected_on = nav_selected.children(":first");
            
            selected_off.hide();
            selected_on.show();
            
            var next_off = nav_selected.next(":first").children(":first");
            var next_on = nav_selected.next(":first").children(":last");
            
            next_off.hide();
                next_on.show();
            
            
            nav_selected.removeClass("selected");
            nav_selected.next(":first").addClass("selected");
        }                
        else
        {
            nav_selected.children(":last").hide();
            nav_selected.children(":first").show();
            
            nav_wrapper.children(":first").children(":first").hide();
            nav_wrapper.children(":first").children(":last").show();
            
            nav_selected.removeClass("selected");
            nav_wrapper.children(":first").addClass("selected");
        }
    };
    
    wrapper.everyTime(global.bannerDelay, null, changeImageFunc);
    
    // Banner buttons
    
    var nav_wrapper = $('#righttop_banner .nav');
    
    nav_wrapper.children('span').click(function() {
        
        if($(this).hasClass("selected"))
            return;
        
        wrapper.stopTime();
        
        var nav_selected = nav_wrapper.children('span.selected');
        nav_selected.children(":last").hide();
        nav_selected.children(":first").show();
        
        var newone = $(this);
        newone.children(":first").hide();
        newone.children(":last").show();
        
        nav_selected.removeClass("selected");
        newone.addClass("selected");
        
        var all = nav_wrapper.children("span");
        
        for(var i=0; i<all.length; i++)
            if($(all[i]).hasClass("selected"))
                break;
        
        wrapper.children().stop(true, true);
        
        wrapper.children(":visible").fadeOut(function() {
            $(wrapper.children(":hidden")[i]).fadeIn();
        });;
        
        wrapper.everyTime(global.bannerDelay, null, changeImageFunc);
        
    });
}

function hookContactForm() {
    
    if(!$('#contact_form').exists())
        return;
        
    // Paso 1: Nombre / Email
    var inputs1 = $("#step1 input");
    
    for(var i=0; i<inputs1.length; i++)
        hookInput(inputs1[i]);
        
    // Paso 2: A / Asunto / Mensaje
    var inputs2 = $("#step2 input, #step2 select, #step2 textarea");
    
    for(var i=0; i<inputs2.length; i++)
        hookInput(inputs2[i]);
}

function hookRegisterForm() {

    if(!$('#cuenta_n').exists())
        return;
        
    // Tipo de cuenta

    var radio_socio = $('#cuenta_s');
    var radio_usuario = $('#cuenta_n');

    radio_socio.click(function() {
        $('#register_user').hide();
        $('#register_donator').show();
    });

    radio_usuario.click(function() {
        $('#register_user').show();
        $('#register_donator').hide();
    });

    if(radio_usuario.is(":checked"))
    {
        radio_usuario.click();
        $('#register_user').show();
        $('#register_donator').hide();
    }
        
    // Información de cuenta
    
    var inputs1a = $("#step1a input, #step1a select");
    
    for(var i=0; i<inputs1a.length; i++)
        hookInput(inputs1a[i]);
        
    var inputs1b = $("#step1b input, #step1b select");

    for(var i=0; i<inputs1b.length; i++)
        hookInput(inputs1b[i]);
        
    // Datos personales
        
    var inputs3 = $("#step3 input, #step3 select");
    
    for(var i=0; i<inputs3.length; i++)
        hookInput(inputs3[i]);
        
    // Dirección
    
    var inputs4 = $("#step4 input, #step4 select");
    
    for(var i=0; i<inputs4.length; i++)
        hookInput(inputs4[i]);
        
    // Colaboración
    
    $("#col_5").change(function() { $("#custom_col").change(); });
    $("#col_9").change(function() { $("#custom_col").change(); });
    $("#col_15").change(function() { $("#custom_col").change(); });
    $("#col_otra").change(function() { $("#custom_col").change(); });
    
    var inputs5 = $("#step5 input:text");
    
    for(var i=0; i<inputs5.length; i++)
        hookInput(inputs5[i]);
        
    // Metodo de pago
    
    var inputs6 = $("#step6 input:text");
    
    for(var i=0; i<inputs6.length; i++)
        hookInput(inputs6[i]);
        
    // Pequeñas ayudas
    $('#col_otra').click(function() { $('#custom_col').focus(); });
    
    var checkLength = function() {
        if($(this).val().length == $(this).attr("maxlength"))
            $(this).next("input").focus();
    };
    
    $('#bank1').keyup(checkLength);
    $('#bank2').keyup(checkLength);
    $('#bank3').keyup(checkLength);
    
    
}

function getErrorIcons(selector)
{
    var elements = $(selector).find("img.icon:visible");
    var fail = new Array();
    
    for(var i=0; i<elements.length; i++)
        if($(elements[i]).attr("src") != "img/accept.png")
            fail.push($(elements[i]));
    
    //alert(fail);
    
    return fail;
}

function checkErrorIcons(selector)
{
    var fail = getErrorIcons(selector);

    if(fail.length > 0)
    {
        //for(var i=0; i<fail.length; i++)
        //    fail[i].blink();
        
        //elements.clearBubble();
        
        //fail = getErrorIcons(selector);
        
        alert("Hay fallos en el formulario.\nCorrígelos antes de continuar.");
        
        fail[0].bubble({msg: fail[0].attr("alt") });
        
        return false;
    }
    
    return true;
}

function submitUserRegisterForm()
{   
    return checkErrorIcons('#step1a');
}

function submitContactForm()
{
    return checkErrorIcons('#step1, #step2');
    
    return false;
}

function submitRegisterForm()
{
    return checkErrorIcons('#step1a, #step3, #step4, #step5, #step6');
}

function onRegisterLogin(button)
{
    return checkErrorIcons('#step1b');
}

function hookInput(input) {
    
    var input = $(input);
    var checkImage = $(input.parent().next().find("img")[0]);
    
    if(!checkImage || checkImage.tagName() != "IMG")
        return;
     
    var enter = function() {

        var ele = $(this);
        var msg = ele.attr("alt");
        
        if(ele.attr("src") == "img/accept.png")
            return;
        
        if(ele.attr("src") == "img/asterisk_orange.png")
            msg = "Campo obligatorio";
        
        ele.bubble({msg: msg});
    };
    
    var leave = function() {
        $(this).next(".bubble").clearBubble();
    };
    
    if(!checkImage.hasClass("hooked"))
    {
        checkImage.addClass("hooked");
        
        checkImage.mouseenter(enter);
        checkImage.mouseleave(leave);
    }
        
    // checkImage.attr("src", "img/asterisk_orange.png");
    // checkImage.attr("src", "img/accept.png");
    
    var change = function() {
        
        var obj = $(this);
        
        var value = obj.val();
        var alt = obj.attr("alt");
        var max = obj.attr("maxlength");

        max = max > 0 ? max : 300;
        
        var opcional = checkImage.hasClass("opcional");
        
        if((value == "" || value == "dd/mm/aaaa" || value == "0") && alt != "bank" && alt != "colaboration" && !opcional)
        {
            checkImage.attr("src", "img/asterisk_orange.png");
            checkImage.attr("alt", "Campo obligatorio");
            return;
        }

        if(obj.tagName() == "TEXTAREA")
            alt = "textarea";
        
        switch(alt)
        {
            case "login":
            {                
                if(value.length < 3)
                {
                    checkImage.stopTime();
                    
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debe de tener más de 3 carácteres.");
                }
                else if(!new RegExp("^[^\\[\\]\\|;,\\$\\\\<>]{3,"+ max +"}$", "i").exec(value))
                {
                    checkImage.stopTime();
                    
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "No puedes usar: [ ] | ; , $ \ < > \"");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "logincheck":
            {                
                if(value.length < 3)
                {
                    checkImage.stopTime();
                    
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debe de tener más de 3 carácteres.");
                }
                else if(!new RegExp("^[^\\[\\]\\|;,\\$\\\\<>]{3,"+ max +"}$", "i").exec(value))
                {
                    checkImage.stopTime();
                    
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "No puedes usar: [ ] | ; , $ \ < > \"");
                }
                else
                {
                    if(global.last_login_check[0] != value)
                    {
                        global.last_login_check[0] = value;
                        
                        if(checkImage.attr("src") != "img/loading.gif")
                        {
                            checkImage.attr("src", "img/loading.gif");
                            checkImage.attr("alt", "Comprobando los datos...");
                        }
                        
                        global.last_login_check[1] = new Date().getTime();
                        
                        checkImage.stopTime();
                        checkImage.oneTime(1000, null, function() {
                            
                            $.post('index.php', 'usernamecheck=true&time='+ global.last_login_check[1] +'&username=' + escape(value), function(data) {
                                
                                if(global.last_login_check[1] != data.time)
                                    return;
    
                                if(data != "error" && data.result == "true")
                                {
                                    checkImage.attr("src", "img/exclamation.png");
                                    checkImage.attr("alt", "El nombre de usuario ya está en uso.");
                                }
                                else
                                {
                                    checkImage.attr("src", "img/accept.png");
                                    checkImage.attr("alt", "");
                                }
                            }, "json");
                            
                        });  
                    }
                }
                
                break;
            }
            case "email":
            {
                if(opcional && value.length < 1)
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                else if(!new RegExp("^[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El email no es válido.<br/>(Ej. <u>correo@dominio.com</u>)");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "emailcheck":
            {
                if(!new RegExp("^[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El email no es válido.<br/>(Ej. <u>correo@dominio.com</u>)");
                }
                else
                {
                    if(global.last_email_check[0] != value)
                    {
                        global.last_email_check[0] = value;
                        
                        if(checkImage.attr("src") != "img/loading.gif")
                        {
                            checkImage.attr("src", "img/loading.gif");
                            checkImage.attr("alt", "Comprobando los datos...");
                        }
                        
                        global.last_email_check[1] = new Date().getTime();
                        
                        checkImage.stopTime();
                        checkImage.oneTime(1000, null, function() {
                            
                            $.post('index.php', 'emailcheck=true&time='+ global.last_email_check[1] +'&email=' + escape(value), function(data) {
                                
                                if(global.last_email_check[1] != data.time)
                                    return;

                                if(data != "error" && data.result == "true")
                                {
                                    checkImage.attr("src", "img/exclamation.png");
                                    checkImage.attr("alt", "El email introducido ya está en uso.");
                                }
                                else
                                {
                                    checkImage.attr("src", "img/accept.png");
                                    checkImage.attr("alt", "");
                                }
                            }, "json");
                            
                        });  
                    }
                }
                
                break;
            }
            case "password":
            case "string":
            {
                if(opcional && value.length < 1)
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                else if(value.length < 2)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debe de tener más de 2 carácteres.");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "cats_quantity":
            {
                if(!new RegExp("^\\d{1,2}$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debe de ser un numero.");
                }
                else if(parseInt(value) < 2)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Si son menos de dos gatos entonces ve al paso 1.2");
                }
                else if(parseInt(value) > 15)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "¿De verdad son más de 15 gatos de una misma camada? Guau");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "catage":
            {
                if(opcional && (value.length < 1 || value == 0))
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                else if(!new RegExp("^\\d{1,2}$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debe de ser un numero.");
                }
                else if(parseInt(value) < 0 || parseInt(value) > 30)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "¿De verdad el gato tiene más de 30 años? A lo mejor es un loro muy peludo.");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "textarea":
            {
                if(value.length < 2)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debe de tener más de 2 carácteres.");
                }
                else if(value.length > 5000)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debe de tener menos de 5000 carácteres. Te has pasado en " + (value.length - 5000)) + ".";
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "passcheck":
            {
                if(value.length < 3 || value.length > max || $('#account_password_1').val() != value)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Las dos contraseñas deben de coincidir.");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                     
                break;
            }
            case "postal":
            {
                if(!new RegExp("^([0-4]\\d|5[0-2])\\d{3}$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El código postal es erroneo.<br/>(Ej. <u>50003</u>)");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "date":
            {
                if(!new RegExp("^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/(19|20)[0-9]{2}$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "La fecha es incorrecta.<br/>(Ej. <u>24/01/1987</u>)");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "dni":
            {
                var letters = "TRWAGMYFPDXBNJZSQVHLCKE";
                
                if(!new RegExp("^\\d{8}[a-z]$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El formato del DNI no es correcto.<br/>(Ej. <u>00000000A</u>)");
                }
                else if(letters.charAt(parseInt(value.substring(0, 8)) % 23) != value.charAt(8).toUpperCase())
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El DNI es invalido, contiene algún error y no ha podido ser validado.");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "telephone":
            {
                if(!new RegExp("^([0-9 -]{8,10}|)$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El telefono solo puede contener números, guiones o espacios.<br/>(Ej. <u>976333333</u>)");
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                }
                
                break;
            }
            case "colaboration":
            {
                if(!$("#col_otra").is(":checked"))
                {
                    checkImage.hide();
                }
                else if(value == "")
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Debes especificar con qué cantidad deseas colaborar");
                    checkImage.show();
                }
                else if(!new RegExp("^\\d{1,"+max+"}$", "i").exec(value))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "Solo se admiten numeros.<br/>(Ej. <u>7</u>)");
                    checkImage.show();
                }
                else if(parseInt(value) < 5)
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El mínimo para colaborar son 5 € mensuales.");
                    checkImage.show();
                }
                else
                {
                    checkImage.attr("src", "img/accept.png");
                    checkImage.attr("alt", "");
                    checkImage.show();
                }
                
                break;
            }
            case "bank":
            {
                var b1 = $("#bank1").val();
                var b2 = $("#bank2").val();
                var b3 = $("#bank3").val();
                var b4 = $("#bank4").val();
                
                var account = b1 + " " + b2 + " " + b3 + " " + b4;
                
                if(b1 == "" && b2 == "" && b3 == "" && b4 == "")
                {
                    checkImage.attr("src", "img/asterisk_orange.png");
                    checkImage.attr("alt", "Campo obligatorio");
                }
                else if(!new RegExp("^\\d{4} \\d{4} \\d{2} \\d{10}$", "i").exec(account))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El formato del número de cuenta no es correcto.<br/>(Ej. <u>0000 0000 00 0000000000</u>)");
                }
                else if(!comprobarCuenta(b1, b2, b3, b4))
                {
                    checkImage.attr("src", "img/exclamation.png");
                    checkImage.attr("alt", "El número de cuenta no es correcto.");
                }
                else
                {
                    var acc = b1 + "" + b2 + "" + b3 + "" + b4;
                    
                    if(global.last_bank_check[0] != acc)
                    {
                        //global.last_bank_check[0] = acc;
                        
                        if(checkImage.attr("src") != "img/loading.gif")
                        {
                            checkImage.attr("src", "img/loading.gif");
                            checkImage.attr("alt", "Comprobando los datos...");
                        }
                        
                        global.last_bank_check[1] = new Date().getTime();
                        
                        checkImage.stopTime();
                        checkImage.oneTime(1000, null, function() {
                            
                            $.post('index.php', 'bankcheck=true&time='+ global.last_bank_check[1] +'&account=' + escape(acc), function(data) {
                                
                                if(global.last_bank_check[1] != data.time)
                                    return;
    
                                if(data != "error" && data.result == "true")
                                {
                                    checkImage.attr("src", "img/exclamation.png");
                                    checkImage.attr("alt", "La cuenta bancaria que has introducido ya está registrada.");
                                }
                                else
                                {
                                    checkImage.attr("src", "img/accept.png");
                                    checkImage.attr("alt", "");
                                }
                            }, "json");
                            
                        });  
                    }
                }
                
                break;
            }
            default:
            {
                checkImage.attr("src", "img/accept.png");
                checkImage.attr("alt", "");
                
                break;
            }
        }  
        
        if(checkImage.attr("src") == "img/accept.png")
            checkImage.clearBubble();
    };

    input.change(change);
    input.keyup(change);
    
    input.change();
}

function mostrarColaborador(obj)
{
    $(obj).next("div").stop(true, true).slideToggle();
    
    return false;
}

function comprobarCuenta(n1, n2, n3, n4) {
    var cuenta = n1 + n2 + n3 + n4;

    var digit1 = 0;
    var digit2 = 0;
    var suma1 = 0;
    var suma2 = 0;
    var parc1 = 0;
    var parc2 = 0;
    
    digit1 = parseFloat(cuenta.substr( 8, 1));
    digit2 = parseFloat(cuenta.substr(9, 1));
    
    suma1 = parseFloat(cuenta.substr(0,1))*4 + parseFloat(cuenta.substr(1,1))*8 + parseFloat(cuenta.substr(2,1))*5;
    suma1 = suma1 + parseFloat(cuenta.substr(3,1))*10 +parseFloat(cuenta.substr(4,1))*9 + parseFloat(cuenta.substr(5,1))*7;
    suma1 = suma1 + parseFloat(cuenta.substr(6,1))*3 + parseFloat(cuenta.substr(7,1))*6;
    
    parc1 = 11 - ( suma1 % 11);
    
    if (parc1 > 9) 
    parc1= 11- parc1; 
    
    suma2 = parseFloat(cuenta.substr(10,1))*1 + parseFloat(cuenta.substr(11,1))*2 + parseFloat(cuenta.substr(12,1))*4;
    suma2 = suma2 + parseFloat(cuenta.substr(13,1))*8 + parseFloat(cuenta.substr(14,1))*5 + parseFloat(cuenta.substr(15,1))*10;
    suma2 = suma2 + parseFloat(cuenta.substr(16,1))*9 + parseFloat(cuenta.substr(17,1))*7 + parseFloat(cuenta.substr(18,1))*3;
    suma2 = suma2 + parseFloat(cuenta.substr(19,1))*6;
    
    parc2 = 11 - (suma2 % 11);
    
    if (parc2 > 9) 
        parc2 = 11 - parc2;
    
    if (digit1 == parc1 & digit2 == parc2) 
        return true;
    
    return false;
}

function redirect(url) {
    document.location = url;
}

function onlogin(object)
{
    var login = $("#login_username");
    var login_value = login.val();

    if(login_value.length < 1)
    {
        $("#toplogin_no_password").clearBubble();
        $("#toplogin_short_password").clearBubble();

        login.bubble({id: "toplogin_no_username", msg: "No has introducido un nombre de usuario."});

        return false;
    }

    if(login_value.length < 3)
    {
        $("#toplogin_no_password").clearBubble();
        $("#toplogin_short_password").clearBubble();

        login.bubble({id: "toplogin_short_username", msg: "El nombre introducido debe tener 3 caracteres mínimo."});

        return false;
    }

    $("#toplogin_no_username").clearBubble();
    $("#toplogin_short_username").clearBubble();

    var password = $("#login_password");
    var password_value = password.val();

    if(password_value.length < 1)
    {
        password.bubble({id: "toplogin_no_password", msg: "No has introducido la contraseña de la cuenta."});

        return false;
    }

    if(password_value.length < 3)
    {
        password.bubble({id: "toplogin_short_password", msg: "La contraseña introducida debe tener 3 caracteres mínimo."});

        return false;
    }

    $("#toplogin_no_password").clearBubble();
    $("#toplogin_short_password").clearBubble();

    // Check username

    /*$.post("index.php?ajax=true", "logincheck=true&username=" + escape(login_value) + "&password=" + md5(password_value), function(data) {
        alert(data);
    });*/

    return true;
}

function initInput(obj)
{
    var obj = $(obj);
    
    if(obj.hasClass("virgin"))
    {
        obj.removeClass("virgin");
        
        if(obj.val() == obj.attr("alt"))
            obj.val("");
    }
    else if(!obj.hasClass("virgin") && obj.val() == "")
    {
        obj.addClass("virgin");
        obj.val(obj.attr("alt"));
    }
}

function checkFormat(obj, format)
{
    var object = $(obj);
    var value = object.val();
    
    var good = function(obj) { obj.css("border-color", "Green"); };
    var bad = function(obj) { obj.css("border-color", "Red"); };
    
    switch(format)
    {
        case 'dni':
        {
            value = value.replace(/(-| )/i, '');
            
            var letters = "TRWAGMYFPDXBNJZSQVHLCKE";
                
            if(!new RegExp("^\\d{8}[a-z]$", "i").exec(value))
            {
                bad(object);
                
                //checkImage.attr("src", "img/exclamation.png");
                //checkImage.attr("alt", "El formato del DNI no es correcto.<br/>(Ej. <u>00000000A</u>)");
            }
            else if(letters.charAt(parseInt(value.substring(0, 8)) % 23) != value.charAt(8).toUpperCase())
            {
                bad(object);
                
                //checkImage.attr("src", "img/exclamation.png");
                //checkImage.attr("alt", "El DNI es invalido, contiene algún error y no ha podido ser validado.");
            }
            else
            {
                good(object);
                
                //checkImage.attr("src", "img/accept.png");
                //checkImage.attr("alt", "");
            }
            
            break;
        }
        case 'name':
        {
            
        }
        default:
            return;
    }
}

function compartirPensamiento(ojb) 
{
    $("#compartir-pensamiento").fadeOut("fast", function() {
        $("#pensamiento").fadeIn("slow");
    });
    
    return false;
}

function updateLength(obj, where)
{
    var obj = $(obj);
    
    $("#" + where).html(obj.attr("maxlength") - obj.val().length); 
}

function firmar(obj, reason)
{
    if($(obj).hasClass("loading"))
        return;

    var in_name =  $("#firmar-nombre");
    var in_dni = $("#firmar-dni");
    var in_thought = $("#firmar-pensamiento");
    
    // Mirar si estan iniciadas
    if(in_name.attr("alt") == in_name.val())
        in_name.addClass("virgin");
    else
        in_name.removeClass("virgin");
        
    if(in_dni.attr("alt") == in_dni.val())
        in_dni.addClass("virgin");
    else
        in_dni.removeClass("virgin");
            
    if(in_thought.attr("alt") == in_thought.val())
        in_thought.addClass("virgin");
    else
        in_thought.removeClass("virgin");
        
    // Datos
    var name = in_name.val();
    var dni = in_dni.val().replace(/[^0-9a-z]/ig, "").toUpperCase();
    var thought = $("#pensamiento").is(":visible") ? in_thought.val() : "";
    
    if(thought == in_thought.attr("alt"))
        thought = "";
    
    // Obligadas
    if(in_name.hasClass("virgin"))
    {
        in_name.bubble({msg: "No has introducido un nombre y un apellido." });
        return false;
    }
    
    if(!name.match(/^[^ ]{2,} [^ ]{2,}/))
    {
        in_name.bubble({msg: "Tienes que introducir un nombre y un apellido mínimo." });
        return false;
    }
    
    in_name.clearBubble();
    
    if(in_dni.hasClass("virgin"))
    {
        in_dni.bubble({msg: "No has introducido el DNI." });
        return false;
    }
    
    var letters = "TRWAGMYFPDXBNJZSQVHLCKE";

    if(!new RegExp("^\\d{8}[a-z]$", "i").exec(dni) || letters.charAt(parseInt(dni.substring(0, 8)) % 23) != dni.charAt(8).toUpperCase())
    {
        in_dni.bubble({msg: "No has introducido un DNI válido." });
        return false;
    }
    
    in_dni.clearBubble();
    $(obj).addClass("loading");


    // Postear la info
    $.post("index.php", {ajax: "true", "action": "firmar", "reason": reason, "name": name, "dni": dni, "thought": thought}, function(data) {
        
        var firma = $("#seccion-firma");
        var status = $("#firma-status");
        var loading = $("#seccion-loading");
        
        var in_name =  $("#firmar-nombre");
        var in_dni = $("#firmar-dni");
        var in_thought = $("#firmar-pensamiento");
        
        var firmas = $("#firmas");
        
        if(data.error == "false")
        {
            firma.stop(true, true);
            
            status.stop(true, true).fadeOut(function() {
                $(this).html('Gracias por tu firma <span style="color: #8F9F1D">'+ data.firstname +'</span> ;)').fadeIn(function() { 
                    
                    $("#firmas-totales").html( parseInt($("#firmas-totales").html()) + 1);
                    //firmas.children("div:last").fadeOut();
                    firmas.prepend(data.result);
                    firmas.children("div:hidden").fadeIn("slow");
                    
                    $(this).oneTime(3000, null, function() {
                    
                        loading.fadeOut("slow", function() {

                            in_name.addClass("virgin").val(in_name.attr("alt"));
                            in_dni.addClass("virgin").val(in_dni.attr("alt"));
                            in_thought.addClass("virgin").val(in_thought.attr("alt"));

                            $("#compartir-pensamiento").show();
                            $("#pensamiento").hide();

                            firma.fadeIn("fast");
                        });
                        
                        $(obj).removeClass("loading");
                        
                    });
                });
            });
        }
        else
        {
            firma.stop(true, true);
            
            status.stop(true, true).fadeOut(function() {
                $(this).html('<span style="color: #C23301">'+ data.error +'</span>').fadeIn(function() { 
                    $(this).oneTime(5000, null, function() {
                    
                        loading.fadeOut("slow", function() {
                            firma.fadeIn("fast");
                        });
                        
                        $(obj).removeClass("loading");
                        
                    });
                });
            });
        }
        
    }, "json");
    
    $("#seccion-firma").fadeOut("slow", function() {
        $("#firma-status").html("Firmando...");
        $("#seccion-loading").fadeIn("fast");
    });
}







