﻿CmdUtils.CreateCommand({
	name: "json-lint",
	homepage: "http://ubiquity.danilosousa.net/",
	author: { name: "Danilo Sousa", email: "eu@danilosousa.net" },
	takes: { "json code": noun_arb_text },
	icon: "chrome://ubiquity/content/icons/page_code.png",
	description: "Parse and check your JSON.",
	preview: function( previewBlock, directObject ) {
		var code = directObject.text;
		var url = "http://www.jsonlint.com/ajax/validate";
		var params = {
			json: code,
			reformat: "yes"
		};
		jQuery.post( url, params, function( data ) {
			context.focusedWindow.dataJSONLint = data;
			previewBlock.innerHTML = "";
			if( data.responseCode ){
				var bg 		= "#FBE3E4";
				var font 	= "#D12F19";
				var border 	= "#FBC2C4";
			} else {
				var bg 		= "#E6EFC2";
				var font 	= "#529214";
				var border 	= "#C6D880";
			}
			var doc = context.focusedWindow.document;
			var div = doc.createElement( "div" );
			div.style.background = bg + " none repeat scroll 0 0";
			div.style.border = "2px solid " + border;
			div.style.color = font;
			div.style.padding = "5px";
			div.style.lineHeight = "1.5";
			div.innerHTML = data.result;
			previewBlock.appendChild( div );
		},"json");
	},
	execute:function(directObj) {
		var data = context.focusedWindow.dataJSONLint;
		if( !data.responseCode ){
			CmdUtils.setSelection( "<pre>" + data.prettyJSON + "</pre>" )
		}
	}
});
CmdUtils.CreateCommand({
	name: "sedex",
	homepage: "http://ubiquity.danilosousa.net/",
	author: { name: "Danilo Sousa", email: "eu@danilosousa.net" },
	takes: { "code": noun_arb_text },
	icon: "chrome://ubiquity/content/icons/map.png",
	description: "Verifica o <b>status</b> do seu pacote SEDEX! :)",
	preview: function( previewBlock, directObject ) {
		previewBlock.innerHTML = "Carregando...";
		var doc = context.focusedWindow.document;
		var code = jQuery.trim( directObject.text );
		if( code == "" ){
		    previewBlock.innerHTML = "Digite um código de rastreamento.";
		    return false;
		} else if( code.length != 13 ){
		    previewBlock.innerHTML = "Código de rastreamento inválido.";
		    return false;
		}
		var url = "http://websro.correios.com.br/sro_bin/txect01$.QueryList";
		var params = {
			"P_LINGUA": "001",
			"P_TIPO": "001",
			"P_COD_UNI": code
		};
		jQuery.get( url, params, function( data ) {
			previewBlock.innerHTML = '<div id="sedexHTML" style="display:none">' + data + '</div>';
			var sedexHTML = previewBlock.firstChild;
			var form = sedexHTML.lastChild;

			for( i in form.childNodes ){
			    if( form.childNodes[i].tagName == "TABLE" ){
			        var content = form.childNodes[i];
			break;
			    }
			}

			if( !content ){
				previewBlock.innerHTML = form.lastChild.textContent;
			} else {
				var style = doc.createElement('style');
				style.type = 'text/css';
				style.innerHTML += 'table tbody tr:first-child td font { color: white; font-weight: bold; }';
				style.innerHTML += 'table tbody td { color: white; }';
				style.innerHTML += '';
				style.innerHTML += '';
				style.innerHTML += '';

				previewBlock.innerHTML = "";
				previewBlock.appendChild( style );
				previewBlock.appendChild( content );
			}
		});
	},
	execute:function(directObj) {
		var code = jQuery.trim( directObj.text );
		Utils.openUrlInBrowser( 'http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=' + code );
	}
});
CmdUtils.CreateCommand({
	name: "pre",
	homepage: "http://ubiquity.danilosousa.net/",
	author: { name: "Danilo Sousa", email: "eu@danilosousa.net" },
	takes: { "text": noun_arb_text },
	icon: "chrome://ubiquity/content/icons/html_go.png",
	description: "Put your selection inside a <b>&lt;pre&gt;</b> tag.",
	preview: function( previewBlock ) {
		previewBlock.innerHTML = this.description;
	},
	execute: function(directObj) {
		if( directObj.html.length ){
			CmdUtils.setSelection( "<pre>" + directObj.html + "</pre>" )
		}
	}
});