//Calcula combinaciones CON repeticion de N tomados de a M
function CalcularCombinaciones(n,m)
    {
    	var factorn=1;
    	var factorm=1;
    	var factornm=1;
    	if (Math.floor(n) < Math.floor(m))
    		alert("n tiene que ser mayor o igual que m");
    	else {
    		// n factorial
    		if(n<0)
    			alert("Has introducido un número negativo, n debe ser positivo");
    		else{
    			if(Math.floor(n)!=n)
    				alert("n ha de ser entero");
    			else{
    				for(var i=n-1; i>0; i--)
    				factorn*=i;
    			}
    		}
    		// m factorial
    		if(m<0)
    			alert("Has introducido un número negativo, m debe ser positivo");
    		else{
    			if(Math.floor(m)!=m)
    				alert("m ha de ser entero");
    			else{
    				for(i=m; i>0; i--)
    				factorm*=i;
    			}
    		}
    		// n+m-1 factorial
    		if(n+m-1<0)
    			alert("Has introducido un número negativo, n+m-1 debe ser positivo");
    		else{
    			if(Math.floor(n+m)!=n+m)
    				alert("n+m-1 ha de ser entero");
    			else{
    				for(i=Math.abs(n)+Math.abs(m)-1; i>0; i--)
    				factornm*=i;
    			}
    		}
    	}
    	$("#CombinacionesPosibles").val(Math.floor(factornm/(factorn*factorm)));
    }

function GenerarAleatorio(Longitud,CaracteresPosibles)
    {
        var TextoAleatorio = "";
        for (var i = 0; i < Longitud; i++)
            TextoAleatorio += CaracteresPosibles.charAt(Math.floor(Math.random() * CaracteresPosibles.length));
        return TextoAleatorio;
    }

function ActualizarURLCorta()
    {
        //Define URL raiz del framework
        URL_PracticoFramework=window.location.href;
        if(URL_PracticoFramework.indexOf("?") > -1)
            URL_PracticoFramework=window.location.href.split("?")[0].split("index.php")[0];
        //Elimina de la URL el index.php innecesario
        URL_PracticoFramework=URL_PracticoFramework.replace('index.php', '');
        //Concantena valores para obtener la URL recortada    
        $("#url_recortada").val(URL_PracticoFramework+"?e="+$("#url_corta").val());
    }

function GenerarCodigoCorto()
    {
        var CaracteresPosibles = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        $("#url_corta").val(GenerarAleatorio($("#CantidadCaracteres").val(),CaracteresPosibles));
        CalcularCombinaciones(CaracteresPosibles.length,$("#CantidadCaracteres").val());
        ActualizarURLCorta();
    }

function FrmAutoRun()
    {
        //Verifica si entra desde cero y va a crear o si esta recuperando registro
        if ($("#url_larga").val()=="")
            {
                $("#PCOContenedor_contador_uso").hide();
                $("#btn_actualizar").hide();
                GenerarCodigoCorto();
            }
        else
            {
                ActualizarURLCorta();
                $("#PCOContenedor_CantidadCaracteres").hide();
                $("#PCOContenedor_url_corta").hide();
                $("#PCOContenedor_CombinacionesPosibles").hide();
                $("#PCOContenedor_btn_regenerar").hide();
                $("#btn_guardar").hide();
            }
    }
