﻿function trace(s){ window.open("","trace").document.write(s) }
//-----------------------------------------------------------
function dialog(s){
    var b = true;
    s = s.trim();
    if(s.length>0){
        if(s.indexOf("?")>-1){
            b = confirm("ATENÇÃO:\n\n" + s + "\n\n");
        } else {
            s = s.charAt(0)=="{" ? s.substring( s.indexOf("}")+1 ) : s;
            alert("ATENÇÃO:\n\n" + s + "\n\n");
        }
    }   
    return b;
}
//----------------------------------------------------------------------------
function getNav() {
    var nv = navigator.userAgent;
    var vs = navigator.appVersion;
    var q = "IE";
    if (nv.indexOf("Opera")>-1) q = "OPERA";
    if (nv.indexOf("Firefox")>-1) q = "FIREFOX";
    if (nv.indexOf("Netscape")>-1) q = "NETSCAPE";
    if (nv.indexOf("Mozilla")>-1 && nv.indexOf("Netscape")==-1 && nv.indexOf("MSIE")==-1 && nv.indexOf("Firefox")==-1) q = "MOZILLA";
     if (nv.indexOf("Chrome")>-1) q = "CHROME";

    var avs = null;
    if (q=="IE") {
        avs = vs.split(";");
        vs = parseFloat(avs[1].substring(5));
    } else if (q=="FIREFOX") {
        avs = nv.split("/");
        vs = parseFloat(avs[3]);
    } else
        vs = 0;

    var r = { n: q, v: vs };

    return r;
}
var NV = getNav();
var IE5 = NV.n=="IE"&NV.v<6?true:false;
var IE6 = NV.n=="IE"&NV.v==6?true:false;
var IE7 = NV.n=="IE"&NV.v==7?true:false;
var IE = NV.n=="IE"?true:false;
var FF = NV.n=="FIREFOX"?true:false;
var FF3 = NV.n=="FIREFOX"&NV.v==3?true:false;
var OP = NV.n=="OPERA"?true:false;
var MZ = NV.n=="MOZILLA"?true:false;
var NS = NV.n=="NETSCAPE"?true:false;
var CH = NV.n=="CHROME"?true:false;
var VS = NV.v;
//----------------------------------------------------------------------------
function addEvent(obj, evType, fn){
    obj = typeof obj=="string" ? ID(obj) : obj;
    if(obj.addEventListener) obj.addEventListener(evType, fn, true);
    if(obj.attachEvent) obj.attachEvent("on" + evType, fn);
}
//--------
function removeEvent(obj, evType, fn){ //alert(fn)
    obj = typeof obj=="string" ? ID(obj) : obj;
    if(obj.removeEventListener) obj.removeEventListener(evType, fn, true);
    if(obj.detachEvent) obj.detachEvent("on" + evType, fn);
}
//----------------------------------------------------------------------------
function createCookie(name, value, expires, path, domain, secure) {
    var objDate = new Date();
    objDate.setMonth(objDate.getMonth()+expires);
    document.cookie = name + "=" + escape(value) + 
        ((expires) ? "; expires=" + objDate.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +  
        ((secure) ? "; secure=" + secure : "");  
}
//------------------------------------------
function getValueCookie(name) {
    
    var valueCookie = function(offset){
        var endstr = document.cookie.indexOf(";", offset);
        if (endstr == -1) endstr = document.cookie.length;
        return unescape(document.cookie.substring(offset, endstr));
    }
    
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i,j) == arg) return valueCookie(j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return "";
}
//----------------------------------------------------------------------------
//Evitar que conteudo seja selecionado
function notSeletionDocument(evt,f) { 
    var e = IE?event.srcElement:evt.target; 
    var t = e.tagName.toLowerCase();
    //try {
    if (f==true && t!="input" && t!="textarea") {
        if (IE) {
            document.selection.empty(); 
        } else {
            var selection = window.getSelection(); 
            selection.removeAllRanges();
        }
    }
    //} catch(e) {};
}
//----------------------------------------------------------------------------
function setActionKeyPress(fcAnon,aKey,evt) {
    var k = getKey(evt).Code;
    var e = getEvent(evt).element;
    for(var i=0;i<aKey.length;i++) {
        if(aKey[i]==k && (e.tagName!="TEXTAREA" && k==13) ) fcAnon(evt);
    }
    return true;
}
//----------------------------------------------------------------------------
//atribui ao keypress para cada elemento "aEl" uma action para cada keyCode "aKey"
function setKeyPress(aEl,aKey,fcAnon) {
    for(var i=0;i<aEl.length;i++) aEl[i].onkeypress = function(event){setActionKeyPress(fcAnon,aKey,event)};
}
//----------------------------------------------------------------------------
var TIMEKEYUP = null;
function setActionKeyTime(fnc,time) {
    time = time!=null ? time : 1100;
    clearTimeout(TIMEKEYUP);
    TIMEKEYUP = setTimeout(fnc,time);
}
//----------------------------------------------------------------------------
//retorna index e value do radio marcado na coleção
function getValueListRadio(e) {
    e = typeof e=="string" ? ID(e) : e;
    var r = null;
    for (var i=0;i<e.length;i++){
        if(e[i].checked) r = { index:i, value:e[i].value };
    }
    return r;
}
//###################################################################################################################################
String.prototype.trim = function()
{
    var r = this;
    var er = /^\s|\s$/;
    while (er.test(r)) r = r.replace(/^\s|\s$/g,"");
    return r;
}
//---------------------------------------------------------------------
//troca caracteres especiais para comuns
String.prototype.unaccented = function()
{
    var s = this;
    var a = "ãâàáäêèéëîìíïõôòóöûúùüÃÂÀÁÄÊÈÉËÎÌÍÏÕÔÒÓÖÛÙÚÜçÇñÑ";
    var c = "aaaaeeeeiiiiooooouuuuAAAAAEEEEIIIIOOOOOUUUUcCnN";
    var i, x, n = "";
    for(i=0; i<s.length; i++)
    {
        x = a.indexOf(s.charAt(i));
        n += (x>-1 ? c[x] : s.charAt(i));
    }
    return n;
}

//---------------------------------------------------------------------
// s = string a ser cadastrada na enumeration 
// b = 1 -> incluir nova se nao existir / b = 0 -> excluir valor de existir
String.prototype.setEnum = function(s,b)
{
    var e = this; //alert(s);
    s = "{" + s + "}";
    e = b==1 ? (e.toUpperCase().indexOf(s.toUpperCase())==-1?e+=s:e) : e.replace(s,"").trim();
    return e.trim();
}
//-------------------------------------------
String.prototype.replaceAll = function(str,newStr){
    var r = this;
    while (r.indexOf(str)>-1) r = r.replace(str,newStr);
    return r;
}
//-------------------------------------------
//adiciona string "chr" n vezes antes ou depois da string
var ADD_CONCAT = { FIRST:0, LAST:1 };
String.prototype.addConcat = function(chr, maxLength, firstOrLast) //0 = first / 1 = last
{
    if( typeof firstOrLast!="object" ) firstOrLast = ADD_CONCAT.FIRST;
    var s = this;
    while (s.length<maxLength)
    {
        if(firstOrLast==0)
            s = chr.toString() + s;
        else
            s += chr.toString();
    }
    return s;
}
//-------------------------------------------
String.prototype.toDate = function(){ //Somente formatos: dd/MM/yyyy HH:mm:ss
    var s = this;
    var x = s.length>10 ? s.indexOf(" ") : s.length;
    var a = s.substring( s.lastIndexOf("/")+1, x).trim();
    var m = parseInt(s.substring( s.indexOf("/")+1, s.lastIndexOf("/") ))-1;
    var d = s.substring( 0, s.indexOf("/") ); 
    var H=0,M=0,S=0;
    if(s.length>10){ //data posssui HH:mm:ss
        H = s.substring( x, s.indexOf(":") ).trim();
        M = s.substring( s.indexOf(":")+1, s.lastIndexOf(":") );
        S = s.substring( s.lastIndexOf(":")+1 );
    } //alert(a + "\n" + m + "\n" + d + "\n" + H + "\n" + M + "\n" + S);
    return (s.length>10) ? new Date(a,m,d,H,M,S) : new Date(a,m,d);
}
//-------------------------------------------
//Verifica se "o" ja esta no array
Array.prototype.isExist = function(o){
    var a = this;
    var b = false;
    if(a.length>0){ //alert("Array: " + a);
        for(var i=0;i<a.length;i++){ //alert(a[i] + " = " + o);
            if(typeof a[i]!="undefined"){
                if(a[i].toLowerCase()==o.toLowerCase()) {
                    b = true;
                    break;
                }
            }
        }
    }
    return b;
}
//-------------------------------------------
//Verifica em arrayValues existe um item cujo o trecho exite na string
String.prototype.isExist = function(arrayValues){
    var a = this;
    var b = false;
    for(var i=0; i<arrayValues.length; i++){
        if(a.indexOf(arrayValues[i].trim())>-1){
            b = true;
            break;
        }
    }
    return b;
}
//---------------------------------------------------------------------
function getEvent(evt){ 
    evt = IE?event:evt;
    var el = IE?event.srcElement:evt.target;

    var x = !FF?evt.offsetX:evt.layerX;
    var y = !FF?evt.offsetY:evt.layerY;

    return {event: evt, element: el, x:x, y:y};
}
//---------------------------------------------------------------------
//retorna codigo ou caracter capturado sobre o evento gerado pelo teclado
function getKey(evt){
    evt = getEvent(evt).event;
    var keyCode = evt.keyCode ? evt.keyCode : (evt.which ? evt.which : evt.charCode);
    return { Char:String.fromCharCode( keyCode ), Code: keyCode }
}
//---------------------------------------------------------------------
//coordenadas do clique do mouse
function getPosClickMouse(evt){
    evt = getEvent(evt).event;
    var t = document.documentElement.scrollTop+document.body.scrollTop;
    var l = document.documentElement.scrollLeft+document.body.scrollLeft;
    return {
        x: (!FF?evt.offsetX:evt.layerX)+l, y: (!FF?evt.offsetY:evt.layerY)+t, /* ---------> coordenadas em relação ao elemento */
        X: (evt.clientX)+l, Y: (evt.clientY)+t /* ---------> coordenadas em relação ao Body */
    }
}
//---------------------------------------------------------------------
function ID(id){  return document.getElementById(id) }
//---------------------------------------------------------------------
function CE(tg, id, css){
    var e = document.createElement(tg);
    if(typeof id!="undefined") e.id = id;
    if(typeof css!="undefined" && css!=null){
        if(css.indexOf("=")==-1) e.className = css;
        else with(e.style){ eval(css) }
    } 
    return e;
}
//---------------------------------------------------------------------
function Div(id,html,css,objFather) {
    var d = CE("div", id, css);
    if(html!="undefined"&&html!=null) {
        if (typeof html=="object") d.appendChild(html); else d.innerHTML=html;
    }
    if(objFather!="undefined" && objFather!=null) objFather.appendChild(d);
    return d;
}
//---------------------------------------------------------------------
function A(id,html,css,fa,objFather){
    var a = CE("a", id, css);
    if(IE) a.href = "javascript:void(0)";    
    if(html!="undefined"&&html!=null) { if (typeof html=="object") a.appendChild(html); else a.innerHTML=html; }
    if(objFather!="undefined" && objFather!=null) objFather.appendChild(a);
    if(fa!="undefined") a.onclick = fa;
    return a;
}
//---------------------------------------------------------------------
function alpha(e, n){
    e = typeof e=="string" ? ID(e) : e;
    if(IE) e.style.filter = "alpha(opacity:" + n +")";
    else e.style.opacity = n/100;
}
//---------------------------------------------------------------------
//Retorna posicao absoluta do elemento "el"
function getAbsolutePos(el) {
    el = typeof el=="object" ? el : ID(el);
    var SL = el.scrollLeft;
    var ST = el.scrollTop;
    var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
    if (el.offsetParent) { //Passa por cada elemento parent ate chegar no ultimo, o que ser usado como parametro de posicao
        var tmp = this.getAbsolutePos(el.offsetParent);
        r.x += tmp.x;
        r.y += tmp.y;
    }
    return r;
}
//---------------------------------------------------------------------
//offsetParent real para IE e FF, pois "offsetParent" retorna valores diferentes nestes navegadores
function getOffSetParent(elem) {
    if (elem.parentNode) {
        while (elem.parentNode != document.body) {
            elem = elem.parentNode;
            while (elem.nodeType != 1) {
                elem = elem.parentNode;
            }
            if (elem.style.position == "absolute" || elem.style.position == "relative") {
                return elem;
            }
            elem = elem.parentNode;
        }
        return null;
    } else if (elem.offsetParent && elem.offsetParent.tagName != "HTML") {
        return elem.offsetParent;
    } else {
        return null;
    }
}

//---------------------------------------------------------------------
//Retorna elemento "el" acima de tag
function getElementFather(el,tag) 
{ 
    var f = null;
    el = el.parentNode;
    while (el) 
    {
        if (el.tagName==tag.toUpperCase()) 
        { 
            f = el;	
            break;
        }
        el = el.parentNode;				
    }
    return f;	
}
//---------------------------------------------------------------------
//gera um numero sempre diferente para uso de identificacao unica
function getUniqueKey()
{
    var dt = new Date();
    return dt.getTime().toString();
}
//---------------------------------------------------------------------
//simula uma multithread
function newThread(funcAnon)
{
    setTimeout(funcAnon, 0);
}
//---------------------------------------------------------------------
function windowPopup(name, url, width, height, resize, objRef)
{
    objRef = typeof objRef!="object" ? document : objRef;
    resize = resize ? "yes" : "no";
    var l = (objRef.documentElement.offsetWidth - width)/2;
    var t = (objRef.documentElement.offsetHeight - height)/2;
    var popup = window.open( url, name, 'height='+height+'px,width='+width+'px,left='+l+'px,top='+t+'px,resizable='+resize+',toolbar=no,location=no,directories=no,menubar=no,titlebar=no,status=yes,scrollbars=yes' );
    popup.focus();
}
//---------------------------------------------------------------------
function isEmail(str_email) {	
	var ok = true;
	
	if(str_email.length > 0)
	    {
	    var invalidos = "\/:,;|=+*#%!§¬¹²³£¢><°ºª";	// Caracteres inválidos para o campo e-mail
	    // Verifica a existência de caracteres inválidos no email_contato digitado
	    for (i=0; i < invalidos.length; i++) {
		    x = invalidos.charAt ( i )
		    if (str_email.indexOf ( x , 0 ) > -1 ) {
			        ok = false;
		    }
	    }
    	
	    // Confere a existência do arroba "@" no email_contato digitado, se existe mais de um "@"
	    // e se existe um "." com pelo menos dois caracteres após (Ex.: '.com' ou '.br')
	    arroba = str_email.indexOf ( "@" , 1 )
	    ponto = str_email.indexOf ( "." , arroba )
    	
	    if ( arroba == -1 || str_email.indexOf ( "@" , arroba+1 ) != -1 || ponto == -1 || ponto+3 > str_email.length ) {
		    ok = false;
	    }
	}
	return ok;
}

//---------------------------------------------------------------------

function maskFieldNumber(f)
{
    if(typeof f=="string") f = ID(f);
    if(f.tagName == "FORM")
    {
        var e = null, at = "";
        for(var i=0; i<f.elements.length; i++)
        {
            e = f.elements[i];
            at = getParams( e.getAttribute("conf"), "type", "");
            if(at.indexOf("number")>-1)
            {
                at = at.substring( at.indexOf("(")+1, at.lastIndexOf(")") );
                setMaskFieldNumber(e, (at.indexOf("#")>-1 ? at : eval(at)) );
            }
        }    
    }

}

//------------------------------
function setMaskFieldNumber(e, mask)
{   
    e = typeof e=="string" ? ID(e) : e;
    e.style.textAlign = "right";
    e.setAttribute("maxlen", mask.replace(/[^#]/g,"").length );
    e.setAttribute("mask", mask);  
    e.onkeypress = setMask; 
    e.onclick = function(){ this.select() };
    e.onkeyup = maskaredNumber;
}
//------------------------------
Masks = {
    CURRENCY:   "###.###.###,##",
    NUMBER:     "###.###.###",
    DATE:       "##/##/##",
    DATEFULL:   "##/##/####"
}
//- - - - - - - - - -
function setMask(evt)
{
    var b = true, d = "";     
    var e = getEvent(evt).element;  
    var v = e.value.replace(/\D/g,"");
    
    var maxlength = e.getAttribute("maxlen");
    
    var k = getKey(evt);
    var d = k.Char;

    if( (!IE && (k.Code==8 || k.Code==9)) ? false : true ) //Tratamentos para Mozilla
    {        
        if( IE ? true : (FF && k.Code>0 && k.Code!=8 ? true : false) ) 
            b = (/\d/).test(d);                
            
        if(b) b = v.length<maxlength;                            
    } 
       
    return b;
}
//------------------------------

function maskaredNumber()
{
    var e = this; 
    var v = e.value.replace(/\D/g,"").replace(/^0/g,""); //limpa e deixa somente numeros
    var mask = e.getAttribute("mask");
    var cd = 0;
    if(mask.indexOf(",")>-1) cd = mask.substring(mask.indexOf(",")+1).length;   
    
    //completa valor com zeros a esquerda
    if(v.length>0)
    {
        while( v.length <= cd ) v = "0" + v;     
            
        e.value = formatString(v, mask);
        if( parseInt(e.value.replace(/\D/g,""))==0 ) e.select();
    }
    return false;
}

//---------------------------------------------------------------------

function setMaskeredPassword(f, _maxlength)
{
    f = typeof f=="string" ? ID(f) : f;
    f.setAttribute("maxlen", _maxlength);
    addEvent(f,"keypress", maskaredPwd);
}
//------------
function maskaredPwd(evt)
{
    var b = true, d = "";     
    var e = getEvent(evt).element;  
    
    var maxlength = e.getAttribute("maxlen");
    
    var k = getKey(evt);
    var d = k.Char;

    if( (!IE && (k.Code==8 || k.Code==9)) ? false : true ) //Tratamentos para Mozilla
    {        
        if( IE ? true : (FF && k.Code>0 && k.Code!=8 ? true : false) ) 
            b = (/[0-9a-zA-Z_-]/).test(d);                
            
        if(b) b = e.value.length<maxlength;                            
    } 
       
    return b;
}

//---------------------------------------------------------------------

function formatString(s, mask)
{
    var i = 0, y = 0, x = 0, d = 0;
    var n = "";
           
    for(y = mask.length-1; y>=0; y--)
    {
        if(mask.charAt(y)=='#')
        {

            i = s.length-1-x;
            if(i>=0)
            {
                d = s.charAt(i);                    
                x++;
            } 
            else
                break;
        } 
        else
            d = mask.charAt(y);

        n = d.toString() + n;
    }
    
    //se primeiro ou ultimo caracter for: "." ou "/" ou "," , despresar
    if( (/^[\.|\/|,]/).test(n) || (/[\.|\/|,]$/).test(n) ) n = n.substring(1);

    return n.toString();
}

//-----------------------------------------------------------------------------------

var onFocusField = function(evt)
{
    var e = getEvent(evt).element;
    var cl = e.className ? e.className : "";
    e.setAttribute("oldClassName", cl);
    e.className = cl + " field-focus";
}

var onBlurField = function(evt)
{
    var e = getEvent(evt).element;
    e.className = e.getAttribute("oldClassName");
}

function setStatesFieldsForms()
{
    var el, i, x, forms = document.body.getElementsByTagName("form");
    for(i=0; i<forms.length; i++)
    {
        for(x=0; x<forms[i].elements.length; x++)
        {            
            el = forms[i].elements[x];            
            if(el.type == "text" || el.type == "textarea")
            {                
                addEvent(el,"focus", onFocusField);
                addEvent(el,"blur", onBlurField);                
            }            
        }   
    }
}

//-----------------------------------------------------------------------------------

function toggleContainer(bt, e)
{
    e = typeof e=="string" ? ID(e) : e;
    var b = e.style.display == "block";
    e.style.display = b ? "none" : "block";
    var seta = bt.getElementsByTagName("span")[0];
    if(seta) seta.innerHTML = b ? "&#9658;" : "&#9660;";
}

//-----------------------------------------------------------------------------------

function toggleChecked(_this, ct)
{
    ct = typeof ct=="string" ? ID(ct) : ct;
    var el = ct.getElementsByTagName("input");
    for(var i=0; i<el.length; i++) el[i].checked = _this.checked;    
}

//-----------------------------------------------------------------------------------
//tb = id da tabela com os dados / rowHead = linha que sera os titulos
function OrderByTable(tb, rowHead)
{
    tb = typeof tb=="string" ? ID(tb) : tb;
    rowHead = typeof rowHead=="undefined" ? 0 : rowHead;
    if(tb)
    {
        if(tb.rows.length-rowHead-1 > 1)
        {
            var i = 0, x, y, data = [], cols = []; 
            for(x = rowHead+1; x < tb.rows.length; x++)
            {
                for(y = 0; y < tb.rows[x].cells.length; y++)
                {
                    cols[y] = tb.rows[x].cells[y].innerHTML.trim();  
                }
                data[data.length] = cols;
                cols = [];
            }
            
            //verificar tipos das colunas
            var titles = [], t, c;
            for(y = 0; y < tb.rows[rowHead].cells.length; y++)
            {
                c = tb.rows[rowHead].cells[y];
                c.setAttribute("index", y);
                c.setAttribute("order", "desc");
                t = c.getAttribute("type");
                t = t ? t : "string";
                titles[y] = { type: t, legend: (t!="no" ? c.innerHTML.trim() : ""), element:c };
                
                if(t!="no")
                {
                    c.style.cursor = "pointer";
                    c.title = "Clique para ordernar os dados por esta coluna";
                    c.onclick = function(evt){ orderBy(evt) };
                }   
            }       
            
            orderBy = function(evt)
            {                
                alpha(tb,50);
                statusSort(evt);
            
                var e = getEvent(evt).element;
                while(e.tagName!="TD") e = e.parentNode;
            
                e.setAttribute("order", e.getAttribute("order")=="asc"?"desc":"asc" );
                var o = e.getAttribute("order");
                var i = e.getAttribute("index"); 
                
                var st;        
                for(var y=0; y<titles.length; y++) 
                {
                    st = titles[y].element.getElementsByTagName("span")[0];
                    if(st) titles[y].element.removeChild(st);
                }
                
                st = document.createElement("span");
                with(st.style){ font="normal 10px arial"; color="#666"; marginLeft="5px"; };
                st.innerHTML = o=="asc" ? "&#9660;" : "&#9650;";
                e.appendChild(st);                      
                
                newThread( function(){ sort(o, i); alpha(tb,100); statusSort(); } );    
            }
            
            var sort = function(ascOrDesc, nCol) //0 - asc / 1 - desc
            {       
                var i, y, x, old;                    
                for(i = 1; i < data.length; i++)
                { 
                    for(y = 0; y < data.length-1; y++)
                    {
                        //compara dados respeitando ordem e tipo de dado
                        if( compare( data[y][nCol], data[y+1][nCol], titles[nCol].type, ascOrDesc ) )
                        {
                            for(x = 0; x < data[y].length; x++)
                            {
                                if(titles[x].type != "no")
                                {
                                    old = data[y][x];
                                    data[y][x] = data[y+1][x];
                                    data[y+1][x] = old;
                                }
                            }                            
                        }
                    }              
                }          
                
                i = 0;    
                for(x = rowHead+1; x < tb.rows.length; x++)
                { 
                    for(y = 0; y < tb.rows[x].cells.length; y++)
                    {
                        tb.rows[x].cells[y].innerHTML = data[i][y];                
                    }
                    i++;
                }       
            }
            
            var compare = function( first, second, type, orderby )
            {  
                var b = true;
                if(type=="number")
                {
                    first = parseFloat(first.replace(/\./g,"").replace(/[,]/g,".")); 
                    second = parseFloat(second.replace(/\./g,"").replace(/[,]/g,"."));
                    b = orderby=="asc" ? (first > second) : (first < second);
                } 
                else if(type=="date")
                {
                    //******* UNDER CONSTRUCTION
                }
                else
                {
                    first = first.toLowerCase().replace(/\s/g,"").unaccented();
                    second = second.toLowerCase().replace(/\s/g,"").unaccented();
                    var z = 0, t = first.length > second.length ? second.length : first.length;
                    var f = '', s = '';
                    while(f == s && z < t)
                    { 
                        f = first.charAt(z);
                        s = second.charAt(z);
                        b = orderby=="asc" ? f > s : f < s;
                        z++;
                    }
                }            
                return b;         
            } 
            
            
            var statusSort = function(evt)
            {
                var st = ID("status_sort_orderbytable");
                if(st) st.parentNode.removeChild(st);
                else
                {
                    var p = getPosClickMouse(evt);
                    st = Div("status_sort_orderbytable","Aguarde, ordenando dados...","border='1px solid red';color='red';backgroundColor='yellow';font='bold 12px arial';width='180px';textAlign='center';padding='3px 0 3px 0';position='absolute';top='" + (p.Y-25) + "px';left='" + (p.X-90) + "px';",document.body);           
                }       
            }  
            
       }
    }
}

//-----------------------------------------------------------------------------------


//################################################################################################################################################

function validaAlphaPNG() {
    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);    
    if ((version >= 5.5 && version < 7) && (document.body.filters)) {
        for(var i=0; i<document.images.length; i++) {
            var img = document.images[i];
            var imgName = img.src.toUpperCase();
            if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
                var imgID = (img.id) ? "id='" + img.id + "' " : "";
                var imgClass = (img.className) ? "class='" + img.className + "' " : "";
                var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
                var imgStyle = "display:inline-block;" + img.style.cssText ;
                if (img.align == "left") imgStyle = "float:left;" + imgStyle;
                if (img.align == "right") imgStyle = "float:right;" + imgStyle;
                if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
                var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + img.src + "\', sizingMethod='scale');\"></span>";
                img.outerHTML = strNewHTML;
                i-=1;
            }
        }
    }
}

//################################################################################################################################################