// ==UserScript==
// @name           Cuevana Downloader
// @namespace      Ironicnet.Cuevana
// @require        https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js
// @include        http://www.cuevana.tv/player/*
// ==/UserScript==

$(document).ready(cd_init);

function cd_getParameterByName( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}

function cd_init()
{
    $("#sources a").each(function(index, value) { 
      var script = $(value).parent().next().html().replace(/(\r\n|\n|\r)/gm,"");
      var data = cd_getScriptParams(script);
      var movieId = cd_getParameterByName("id");
      var lang = "ES";
      cd_getDLSource(data[1], data[2], movieId, lang, $("#" + data[0]));
    });
}

function cd_getScriptParams(txt)
{
    var re1='.*?';	// Non-greedy match on filler
    var re2='((?:[a-z][a-z0-9_]*))';	// Variable Name 1
    var re3='.*?';	// Non-greedy match on filler
    var re4='(\\\'.*?\\\')';	// Single Quote String 1
    var re5='.*?';	// Non-greedy match on filler
    var re6='((?:[a-z][a-z]+))';	// Word 1

    var p = new RegExp(re1+re2+re3+re4+re5+re6,["i"]);
    var m = p.exec(txt);
    var data = [];
    if (m != null)
    {
        var element=m[1];
        element = element.replace(/</,"&lt;");
        var key=m[2];
        key = key.replace(/</,"&lt;").replace("\'","").replace("\'","");
        var host=m[3];
        host = host.replace(/</,"&lt;")
        data[0] = element;
        data[1] = key;
        data[2] = host;
    }
    return data;
}

function cd_getDLSource(key, host, id, lang, element)
{
    var e = $("#error");
    var vars = "id=" + id;
    var cuevanaVars= "subs=";
    e.html("Cargando link de descarga...");
    $.ajax({
			url: 'source_get',
			type: 'POST',
			data: {key:key,host:host,vars: "&" + vars},
			success: function(u) {
                var paramsIndex = u.indexOf(cuevanaVars);
                var url = paramsIndex >-1 ? u.substring(0, paramsIndex) : u;
				e.html("Fuente cargada con éxito. Redirigiendo...");
                var ddlLink = $("<br/><a href='" + url + "'>Descargar </a>");
                element.parent().append(ddlLink);
			},
			error: function() {
				e.html("Ha ocurrido un error. Por favor, intenta nuevamente.");
			}
		});
}

