/*
Autor: Candido Tominaga <candido1212@gmail.com>
Date: 2007-01-20
Many Functions for use Jquery, e others

This script would be locate after body tag because of document.body
*/
// Global Variables;
var gx,gy;
var d = document;
var db = document.body;
var de = document.documentElement;
var w = window;


var t1 = db.scrollHeight;
var t2 = db.offsetHeight
if (t1 > t2) // all but Explorer Mac
{
	gx = db.scrollWidth;
	gy = db.scrollHeight;
}
else // Explorer Mac;
     //would also work in Explorer 6 Strict, Mozilla and Safari
{
	gx = db.offsetWidth;
	gy = db.offsetHeight;
}

/* Browser Detect http://www.quirksmode.org/js/detect.html */
ua = navigator.userAgent;
nv = navigator.vendor;
np = navigator.platform;
var Browser = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(ua)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ string: ua, subString: "OmniWeb",  versionSearch: "OmniWeb/", identity: "OmniWeb" },
		{ string: nv, subString: "Apple", identity: "Safari" },
		{ prop: window.opera, identity: "Opera" },
		{ string: nv, subString: "iCab", identity: "iCab" },
		{ string: nv, subString: "KDE", identity: "Konqueror" },
		{ string: ua, subString: "Firefox", identity: "Firefox" },
		{ string: nv, subString: "Camino", identity: "Camino" },
		// for newer Netscapes (6+)
		{ string: ua,  subString: "Netscape", identity: "Netscape" },
		{ string: ua, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE" },
		{ string: ua, subString: "Gecko", identity: "Mozilla", versionSearch: "rv" },
		// for older Netscapes (4-)
		{ string: ua, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla" }
	],
	dataOS : [
		{ string: np, subString: "Win", identity: "Windows" },
		{ string: np, subString: "Mac", identity: "Mac" },
		{ string: np, subString: "Linux", identity: "Linux" }
	]
};
Browser.init();

/** For Jquery **/
function AddCmd(k,v, arr)
{
	return arr.push({name: k, value: v});
}

/* Default Command */
var url = "";
function DCmd(){
	var _ser = new Array();
	var v='';
	var args = DCmd.arguments;
	var numArgs = args.length;
	if(!numArgs){
		alert("Faltando Argumentos");
		return false;
	}
	if(!args[1]) { alert("Favor, fornecer o ID do formulário"); return false; }	
	else var formID = args[1];
	var cmd = args[0];
	dataType = "script";
	switch (cmd){
		case "save":
			_ser = $("#"+formID).fastSerialize(false);
			break;
		case "combo":
			AddCmd('combo_box', args[1],_ser);
			AddCmd('id',args[2],_ser);
			break;
		case "tabs":
			cmd = args[1];
			url = document.location.pathname.replace("index.php","") + cmd + "/rpc.php";
			if($("#js_"+cmd)[0])
			{
				$("#js_"+cmd)[0].src = cmd + '/script.js';
			}
			else
			{
				// Carregar script padrao do modulo
				$.getScript(cmd + "/script.js");
			}
			break;
		default:
			_ser = $("#"+formID).fastSerialize(false);
	}
	AddCmd("act",cmd,_ser);
	Send(_ser);
}

/* Perform Ajax Request */
function Send(data)
{
	if(!dataType) var dataType="html";
	if(!url) { alert("Missing URL param"); return; }
	AddCmd('rand',Math.random(),data);
	$.ajax({
		type: "POST",
		url: url,
		dataType: dataType,
		data: data,
		success: function(msg){
			$("#hidden").html(msg);
   }
 });
}

/* Hide Div Msg */
function HideMSG()
{
	if($("#msg").css("display") == "none") return;
	$("#msg").slideUp("slow");
}

/**** Other Util Functions ****/
/*
First arg would be the string like "The %1 want %2";
Second and others a,b... = args
Usage: Sprintf(s,1,2) -> The 1 want 2
Last-modified: 20041229
*/
function Sprintf()
{
	var v='';
	var args = Sprintf.arguments;
	var numArgs = args.length;
	if(numArgs)
	{
		var msg = args[0];
		for(var i=1; i < numArgs; i++)
		{
			v = args[i] != undefined ? args[i] : "";
			msg = msg.replace("%"+i, v);
		}
	}
	return msg;
}

/* Base64 Decode - B64d(code) */
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(c/a))+String.fromCharCode(c%a+161)};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[(function(e){return d[e]})];e=(function(){return'[\xa1-\xff]+'});c=1};while(c--){if(k[c]){p=p.replace(new RegExp(e(c),'g'),k[c])}}return p}('¬ £="º+/";² ´(¡){¬ ¥,¢=\'\',i=0;µ(;i<¡.¨;i+=4){¥=(£.¦(¡.§(i))&¤)<<¶|(£.¦(¡.§(i+1))&¤)<<·|(£.¦(¡.§(i+2))&¤)<<6|£.¦(¡.§(i+3))&¤;¢+=¸.¹((¥&°)>>±,(¥&³)>>8,¥&¤)}­(¡.¯(i-2)==ª)© ¢.«(0,¢.¨-2);® ­(¡.¯(i-1)==ª)© ¢.«(0,¢.¨-1);® © ¢}',26,26,'encStr|decOut|b64s|0xff|bits|indexOf|charAt|length|return|61|substring|var|if|else|charCodeAt|0xff0000|16|function|0xff00|B64d|for|18|12|String|fromCharCode|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split('|'),0,{}))

/*********************************************************
     * You may use this code for free on any web page provided that 
     * these comment lines and the following credit remain in the code.
     * Floating Div from http://www.javascript-fx.com
     ********************************************************/
var ns = (navigator.appName.indexOf("Netscape") != -1);
var d = document;
var px = document.layers ? "" : "px";
function JSFX_FloatDiv(id, sx, sy)
{
    var el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
    window[id + "_obj"] = el;
    if(d.layers)el.style=el;
    el.cx = el.sx = sx;
    el.cy = el.sy = sy;
    el.sP=function(x,y)
    {
        this.style.left=x+px;
        this.style.top=y+px;
    };
    el.flt=function()
    {
        var pX, pY;
        pX = (this.sx >= 0) ? 0 : ns ? innerWidth :
        d.documentElement && de.clientWidth ?
        de.clientWidth : db.clientWidth;
        pY = ns ? pageYOffset : de && de.scrollTop ?
        de.scrollTop : db.scrollTop;
        if(this.sy<0)
        pY += ns ? innerHeight : de && de.clientHeight ?
        de.clientHeight : db.clientHeight;
        this.cx += (pX + this.sx - this.cx)/8;
        this.cy += (pY + this.sy - this.cy)/8;
        this.sP(this.cx, this.cy);
        setTimeout(this.id + "_obj.flt()", 10);
    }
    return el;
}



/* 16-04-2007 */
function GLoading()
{
	//$("#gloading").show();	
	ShowModal("gloading");
	//fechaModal("gloading");
    var divpos = (gx/2) - ($("#gloading").width() * 2);
	JSFX_FloatDiv("gloading", divpos, 150).flt();
	$("#gloading").css('left',divpos);

}


function GUnLoading()
{
	HideModal("gloading");
}


function ShowModal(i)
{
	$("#modalgrade").css("display","block");
	$("#"+i).css("display","block");
	
	// Pegando Altura do DIV#geral
	var gy = $("#geral").height()
	$("#modalgrade").height(gy);
	$("#modalgrade").width(gx);
	$("#"+i).css("left", (gx-200)/2 - (gx-30)/2 +"px");
}

function HideModal(i)
{
	$("#modalgrade").css("display","none");
	$("#"+i).css("display","none");
}

// Global Ajax Jquery Loading
$(document).ready(function() {
	// Show Image Loading Before Send Request
	$("#gloading").ajaxStart(function(){
		GLoading();
	});
	// Hide Image Loading OnComlete Request
	$("#gloading").ajaxComplete(function(){
		GUnLoading();
	});	
});

// For Debug IE
if (!w.console) 
{
	var wtd = window.top.debugWindow;
	w.console = 
	{
		timers: {},
		openwin: function() 
		{
			wtd = w.open("", "Debug", "left=0,top=0,width=300,height=700,scrollbars=yes,status=yes,resizable=yes");
			wtd.opener = self;
			wtd.document.open();
			wtd.document.write('<html><head><title>debug window</title></head><body><hr /><pre>');
		},
		log: function(entry) 
		{
			w.console.openwin();
			wtd.document.write(entry+"\n");
			wtd.focus();
		},
		time: function(title) 
		{
			w.console.timers[title] = new Date().getTime();
		},
		timeEnd: function(title) 
		{
			var time = new Date().getTime() - w.console.timers[title];
			console.log(['<strong>', title, '</strong>: ', time, 'ms'].join(''));
		},
		dump: function(obj)
		{
			w.console.openwin();
			var s = new Array (); var i; var j = 0;
			for (i in obj) { s[j] = i + ": " + obj[i]; j = j + 1; } s.sort ();
			wtd.document.write ("<p><b>");  // make it kosher
			wtd.document.write (navigator.appName, "<br />");
			wtd.document.write (navigator.userAgent, "</b><br /><br />");
			for (i=0; i<j; i++) { wtd.document.write (s[i], "<br />"); }
			wtd.document.write ("</p>");
			wtd.focus();
		}
	}
}

/*
function AddConsole(o)
{
	var html = '<div id="jsconsole" style="position:absolute; z-index:10001; background:#000000; padding: 10px;">[<a href="javascript:void(0);" onclick="document.getElementById(\'jsarea\').style.display=\'\'"><font color="white">Mostrar</font></a>] [<a href="javascript:void(0);" onclick="document.getElementById(\'jsarea\').style.display=\'none\'"><font color="white">Esconder</font></a>]<br> <span id="jsarea"><textarea cols="90%" rows="20" id="jscode"></textarea><br><input type="button" name="Button" value="Execute" onClick="eval(document.getElementById(\'jscode\').value)"></span></div>';
	$(o).append(html);
	JSFX_FloatDiv("jsconsole", 10,200).flt();
}
//AddConsole(document.forms[1]);
*/

function Zebra()
{
	$(".stripeMe tr").mouseover(function(){
		$(this).addClass("over");}).mouseout(function() {
			$(this).removeClass("over");
		});
	$(".stripeMe tr:even").addClass("alt");
	$(".stripeMe tr:odd").addClass("odd");
}

