//se recomienda un m&aacute;ximo de 160 caracteres por la integraci&oacute;n con Twitter, pero soporta hasta 254

const MD_ESTADO_MAXLONG = 254;


//Se recomienda un m&aacute;ximo de 140 caracteres (Twitter soporta 160)

const TWITT_ESTADO_MAXLONG = 160;



CmdUtils.CreateCommand({

  name: "twittmd",

  icon: "http://ubiquity-md.gibraine.com/images/favicon_twittmd.ico",

  takes: {estado: noun_arb_text},

  modifiers: {},

  description: "Env&iacute;a actualizaci&oacute;n de estado a M&eacute;xico Diario y a Twitter.",

  homepage: "http://ubiquity-md.gibraine.com",

  author: {name: "Gibran Gutierrez", homepage: "http://gibraine.com", email:"contacto@gibraine.com"},
  
  license: "BSD",

  help: "Si no est&aacute;s autentificado, se te pedir&aacute; nombre de usuario y contrase&ntilde;a (no se almacenan datos)." +
         "<br/>Se necesita tener usuario registrado <a href=\"http://mexicodiario.com/registro.php\">en M&eacute;xico Diario</a> y tambi&eacute;n <a href=\"https://twitter.com/signup\">en Twitter</a>.",

  preview: function(previewBlock, directObj) {

    var statusText = directObj.text

	  .replace("<", "&lt;")

	  .replace(">", "&gt;");



    var previewTemplate = "Actualizando tu estado de M&eacute;xico Diario y Twitter a: <br/>" +       

                          "<b>${estado}</b><br /><br />" + 

                          "Te quedan <b>${dispones_md}</b> " + "caracteres por usar en M&eacute;xico Diario" +
                          "<br/>Te quedan <b>${dispones_twitt}</b> " + "caracteres por usar en Twitter";

    var truncateTemplate = "<br />Los &uacute;ltimos <b>${trunca_md}</b> " + 

                           "caracteres ser&aacute;n eliminados en M&eacute;xico Diario!" +
                           
                           "<br />Los &uacute;ltimos <b>${trunca_twitt}</b> " + 

                           "caracteres ser&aacute;n eliminados en Twitter!";;

    var previewData = {

      estado: statusText,

      dispones_md: MD_ESTADO_MAXLONG - statusText.length,
      
      dispones_twitt: TWITT_ESTADO_MAXLONG - statusText.length

    };



    var previewHTML = CmdUtils.renderTemplate(previewTemplate, previewData);



    if(previewData.chars < 0) {

      var truncateData = {

        trunca_md: 0 - previewData.chars,
        
        trunca_twitt: 0 - previewData.chars

      };



      previewHTML += CmdUtils.renderTemplate(truncateTemplate, truncateData);

    }



    previewBlock.innerHTML = previewHTML;

  },

  execute: function(directObj) {

    var statusText = directObj.text;

    if(statusText.length < 1) {

      displayMessage("Error en el uso del comando - se requiere un estado para ser enviado, escribe algo despues de twittmd");

      return;

    }



    var updateUrl_md = "http://mexicodiario.com/touch.json.php";
    
    var updateUrl_twitt = "http://twitter.com/statuses/update.json";

    var updateParams_md = {

      source: "Ubiquity/GiBraiNe.com",

      status: statusText.slice(0, MD_ESTADO_MAXLONG)
      
   };
    
    var updateParams_twitt = {

      source: "Ubiquity/GiBraiNe.com",

      status: statusText.slice(0, TWITT_ESTADO_MAXLONG)

    };



    jQuery.ajax({

      type: "POST",

      url: updateUrl_md,

      data: updateParams_md,

      dataType: "json",

      error: function() {

        displayMessage("Error en Mexico Diario - el estado no ha sido actualizado, intenta mas tarde.");

      },

      success: function() {

        displayMessage("Tu estado en Mexico Diario ha sido actualizado.");

      }

    });
    
    
    jQuery.ajax({

      type: "POST",

      url: updateUrl_twitt,

      data: updateParams_twitt,

      dataType: "json",

      error: function() {

        displayMessage("Error en Twitter - el estado no ha sido actualizado, intenta mas tarde.");

      },

      success: function() {

        displayMessage("Tu estado en Twitter ha sido actualizado.");

      }

    });

  }

});



CmdUtils.CreateCommand({

  name: "md",

  icon: "http://ubiquity-md.gibraine.com/images/favicon_md.ico",

  takes: {estado: noun_arb_text},

  modifiers: {},

  description: "Env&iacute;a actualizaci&oacute;n de estado a M&eacute;xico Diario.",

  homepage: "http://ubiquity-md.gibraine.com",

  author: {name: "Gibran Gutierrez", homepage: "http://gibraine.com", email:"contacto@gibraine.com"},
  
  license: "BSD",

  help: "Si no est&aacute;s autentificado, se te pedir&aacute; nombre de usuario y contrase&ntilde;a (no se almacenan datos)." +
         "<br/>Se necesita tener <a href=\"http://mexicodiario.com/registro.php\">usuario registrado en M&eacute;xico Diario</a>.",

  preview: function(previewBlock, directObj) {

    var statusText = directObj.text

	  .replace("<", "&lt;")

	  .replace(">", "&gt;");



    var previewTemplate = "Actualizando tu estado de M&eacute;xico Diario a: <br/>" +       

                          "<b>${estado}</b><br /><br />" + 

                          "Te quedan <b>${disponibles}</b> " + "caracteres por usar";

    var truncateTemplate = "<br />Los &uacute;ltimos <b>${truncados}</b> " + 

                           "caracteres ser&aacute;n eliminados!!";

    var previewData = {

      estado: statusText,

      disponibles: MD_ESTADO_MAXLONG - statusText.length

    };



    var previewHTML = CmdUtils.renderTemplate(previewTemplate, previewData);



    if(previewData.chars < 0) {

      var truncateData = {

        truncados: 0 - previewData.chars

      };



      previewHTML += CmdUtils.renderTemplate(truncateTemplate, truncateData);

    }



    previewBlock.innerHTML = previewHTML;

  },

  execute: function(directObj) {

    var statusText = directObj.text;

    if(statusText.length < 1) {

      displayMessage("Error en el uso del comando - se requiere un estado para ser enviado, escribe algo despues de md");

      return;

    }



    var updateUrl = "http://mexicodiario.com/touch.json.php";

    var updateParams = {

      source: "Ubiquity/GiBraiNe.com",

      status: statusText.slice(0, MD_ESTADO_MAXLONG)

    };



    jQuery.ajax({

      type: "POST",

      url: updateUrl,

      data: updateParams,

      dataType: "json",

      error: function() {

        displayMessage("Error en Mexico Diario - el estado no ha sido actualizado, intenta mas tarde.");

      },

      success: function() {

        displayMessage("Tu estado en Mexico Diario ha sido actualizado.");

      }

    });

  }

});
