
// Variáveis globais
var Nav = new verifNavegador();


// Chamadas de funções
//...


function abreJanela( url, largura, altura, nome, barra_ferram, barra_url, barra_links, barra_satus, barra_menu, barra_rolagem, redimencionar, focus ) {
    
    if ( nome == null ) { nome = ''; }
    barra_ferram  = ( barra_ferram==null  || !barra_ferram )  ? 0 : 1;
    barra_url     = ( barra_url==null     || !barra_url )     ? 0 : 1;
    barra_links   = ( barra_links==null   || !barra_links )   ? 0 : 1;
    barra_satus   = ( barra_satus==null   || !barra_satus )   ? 0 : 1;
    barra_menu    = ( barra_menu==null    || !barra_menu )    ? 0 : 1;
    barra_rolagem = ( barra_rolagem==null || !barra_rolagem ) ? 0 : 1;
    redimencionar = ( redimencionar==null || !redimencionar ) ? 0 : 1;
    focus         = ( focus==null )                           ? 1 : focus;
    
    var janela;
    var pos_top  = (screen.height/2) - (altura/2)  - 50;
    var pos_left = (screen.width/2)  - (largura/2) - 20;
    
    if ( screen.height <= altura ) {
        pos_top  =  0;
        altura   =  screen.height;
    }
    
    if ( screen.width <= largura ) {
        pos_left  =  0;
        largura   =  screen.width;
    }
    
    janela = window.open(url,nome,'toolbar='+barra_ferram+',location='+barra_url+',directories='+barra_links+',status='+barra_satus+',menubar='+barra_menu+',scrollbars='+barra_rolagem+',resizable='+redimencionar+',copyhistory=0,screenX='+screen.width+',screenY='+screen.height+',top='+pos_top+',left='+pos_left+',width='+largura+',height='+altura);
    
    if ( focus ) {
        janela.focus();
    }
    
    return janela;
    
}


function verifNavegador() {
    this.ver   = navigator.appVersion;
    this.agent = navigator.userAgent;
    this.dom   = document.getElementById ? 1 : 0;
    this.opera = (navigator.userAgent.indexOf("Opera")>-1 && document.getElementById) ? 1 : 0;
    this.ie5   = (this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera) ? 1 : 0; 
    this.ie6   = (this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera) ? 1 : 0;
    this.ie4   = (document.all && !this.dom && !this.opera)?1:0;
    this.ie    = (this.ie4 || this.ie5 || this.ie6);
    this.mac   = (this.agent.indexOf("Mac") > -1);
    this.ns6   = (this.dom && parseInt(this.ver) >= 5) ? 1 : 0; 
    this.ns4   = (document.layers && !this.dom) ? 1 : 0;
    this.ns    = (this.ns6 || this.ns4);
    this.bw    = (this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera);
    return this;
}


function showHideElem( elem, show ) {
    if ( typeof elem == 'string' ) {
        elem = $(elem);//document.getElementById(elem);
    }
    if ( elem==null ) {
        return;
    }
    if ( show != null ) {
        elem.style.display = ( show ? '' : 'none' );
        return;
    }
    if ( elem.style.display == 'none' ) {
        elem.style.display = '';
    } else {
        elem.style.display = 'none';
    }
}


function scrollByTop( animado ) {
    var scrollPos = document.body.scrollTop;
    if ( scrollPos <= 0 )
        return; 
    if ( animado ) {
        window.scrollTo( 0, scrollPos/1.2 );
        setTimeout("scrollByTop()", 10);
    } else {
        window.scrollTo( 0, 0 );
    }
}


function scrollByTopLoadLinks() {
    if ( !document.getElementById )
        return;
    var url;
    var elemA=document.getElementsByTagName("a");
    for (var i=0; i<elemA.length; i++)  {
        atualElemA = elemA.item(i);
        url = atualElemA.getAttribute("href");
        if ( url.substring(url.length-1) == '#' ) {
            atualElemA.onclick = function() { scrollByTop(); return false; };
        }
    }
}


function redimensionarJanela( largura, altura ) {
    parent.resizeTo(largura, altura);
    var pos_top  = (screen.height/2) - (altura/2)  - 50;
    var pos_left = (screen.width/2)  - (largura/2) - 20;
    parent.moveTo(pos_left, pos_top);
}


function getOffsetPosElem( elem ) {
    var pos = {x:0,y:0};
    try {
        while ( elem ) {
            pos.y += elem.offsetTop;
            pos.x += elem.offsetLeft;
            elem = elem.offsetParent;
        }
    } catch (e) {}
    return pos;
}


function getOffsetDimElem( elem ) {
    var dim = {width:0,height:0};
    try {
        dim.width  += elem.offsetWidth;
        dim.height += elem.offsetHeight;
    } catch (e) {}
    return dim;
}

function getStylePropertyValueElem( elem, styleProp ) {
    var value='';;
	if (elem.currentStyle) {
		value = elem.currentStyle[styleProp];
	} else if (window.getComputedStyle) {
		value = document.defaultView.getComputedStyle(elem,null).getPropertyValue(styleProp);
	}
    return value;
}


function getDimJanelaPrincipal() {
    return {width: document.body.clientWidth, height: document.body.clientHeight};
}


function formatFileSize( fileSize ) {
    if ( fileSize >= 1073741824 ) {
        fileSize  =  parseFloat(fileSize/1073741824).toFixed(1) + ' gb';
    } else if ( fileSize >= 1048576 ) {
        fileSize  =  parseFloat(fileSize/1048576).toFixed(1) + ' mb';
    } else if ( fileSize >= 1024 ) {
        fileSize  =  parseFloat(fileSize/1024).toFixed(1) + ' kb';
    } else {
        fileSize  =  fileSize + ' bytes';
    }
    return fileSize;
}


function linkUrl( url ) {
    location.href = url;
}


function ativaSelecao() {
    if ( window.navigator.appVersion.indexOf("MSIE") != -1 ) {
        document.onselectstart = ativaSelecaoTexto;
        document.ondragstart   = ativaSelecaoTexto;
    }
}


function desativaSelecao() {
    if ( window.navigator.appVersion.indexOf("MSIE") != -1 ) {
        document.onselectstart = desativaSelecaoTexto;
        document.ondragstart   = desativaSelecaoTexto;
    }
}


function ativaSelecaoTexto() {
    return true;
}


function desativaSelecaoTexto() {
	return false;
}


function msgErro( str ) {
    alert( str );
    return false;
}

function daneditExibeImagem( path_img, vars, largura, altura, cor_fundo) {
  
  var imagem = '';
  
  imagem += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="'+largura+'" height="'+altura+'" align="middle">' ;
  imagem +=   '<param name="allowScriptAccess" value="sameDomain" />' ;
  imagem +=   '<param name="movie" value="'+path_img+'" />' ;
  imagem +=   '<param name="menu" value="false" />' ;
  imagem +=   '<param name="quality" value="high" />' ;
  imagem +=   '<param name="scale" value="noscale" />' ;
  imagem +=   '<param name="salign" value="lt" />' ;
  if ( cor_fundo != '' ) 
    imagem +=   '<param name="bgcolor" value="'+cor_fundo+'">\n';
  imagem +=   '<param name="wmode" value="transparent">' ;
  imagem +=   '<param name="FlashVars" value="'+vars+'">' ;
  imagem +=   '<embed src="'+path_img+'" flashvars="'+vars+'" menu="false" quality="high" scale="noscale" salign="lt" width="'+largura+'" height="'+altura+'" '+( (cor_fundo != '') ? ('bgcolor="'+cor_fundo+'"') : '' )+' align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />' ;
  imagem += '</object>' ;
  
  document.write( imagem );
    
}


function addLoadEvent( func ) {	
	var old_onload = window.onload;
	if ( typeof window.onload != 'function' ){
    	window.onload = func;
	} else {
		window.onload = function() { old_onload(); func(); }
	}
}


function addResizeEvent( func ) {	
	var old_resize = window.onresize;
	if ( typeof window.resize != 'function' ){
    	window.onresize = func;
	} else {
		window.onresize = function() { old_resize(); func(); }
	}
}


function addMousemoveEvent( func ) {	
    if ( Nav.ns ) {
    	var old_event = window.onmousemove;
    	if ( typeof window.onmousemove != 'function' ) {
            document.captureEvents(Event.MOUSEMOVE);
            window.onmousemove = func;
    	} else {
            document.captureEvents(Event.MOUSEMOVE);
    		window.onmousemove = function(Event) { old_event(Event); func(Event); }
    	}
    } else {
    	var old_event = document.onmousemove;
    	if ( typeof document.onmousemove != 'function' ) {
            document.onmousemove = func;
    	} else {
    		document.onmousemove = function() { old_event(); func(); }
    	}
    }
}


function getQtdCasasDecimais( num ) {
    /*return ( num.length - num.indexOf(".",0)-1 );*/
    var casas = 0;	
	while ( Math.abs(num-Math.floor(num)) > 0.0 ) {
        num *= 10;
        casas++;
    }
    return casas;
}


//
// Função que exibe todas as propriedades e metodos de um objeto
//
function infoObject( obj ) {
  var str = '';
  for(prop in obj) {
    str += prop + " value :"+ obj[prop]+"\n";
  }
  return str;
}


//******************************************************************//
//                          N O V A S
//******************************************************************//

//
// %b - Binary number 
// %c - The character according to the ASCII value 
// %d - Signed decimal number 
// %e - Exponencial number 
// %f - Floating-point number 
// %o - Octal number 
// %s - String 
// %u - Absolute number 
// %x - Hexadecimal number (lowercase letters) 
// %X - Hexadecimal number (uppercase letters) 
// Additional format values. These are placed between the % and the letter (example %.2f):
// 
// + (Forces both + and - in front of numbers. By default, only negative numbers are marked) 
// - (Left-justifies the variable value) 
// 0 zero will be used for padding the results to the right string size 
// .[0-9] (Specifies the number of decimal digits or maximum string length) 
//
function sprintf() {
    if ( arguments.length <= 0 ) 
        return "";
    var strRepeat = function (i, m) { 
                        for (var j=''; m-- > 0; j += i); 
                        return j; 
                    }
    var str=arguments[0], arg, result='';
    var i=1, match=[''], s='';
    var fil='', fir='';
    while ( str = str.substring(match[0].length) ) {
        match = /^([^\%]*)(?:(\x25)((\x25)|(?:(\d+)\$)?(\+)?(0|'([^$]))?(-|\^)?(\d+)?(?:\.(\d+))?([bcdefosuxX])))?/.exec(str);
        if ( arg = match[12] ) {
            if (arguments.length > (i = match[5] || i)) {
                arg = arguments[i];
                s = (/[def]/.test(match[12]) && match[6] && arg > 0) ? '+':'';
                switch ( match[12] ) {
                    case 'b': arg = arg.toString(2); break;
                    case 'c': arg = String.fromCharCode(arg); break;
                    case 'd': arg = parseInt(arg); break;
                    case 'e': arg = match[11] ? arg.toExponential(match[11]) : arg.toExponential(); break;
                    case 'f': arg = match[11] ? parseFloat(arg).toFixed(match[11]) : parseFloat(arg); break;
                    case 'o': arg = arg.toString(8); break;
                    case 's': arg = ((arg = String(arg)) && match[11] ? arg.substring(0, match[11]) : arg); break;
                    case 'u': arg = Math.abs(arg); break;
                    case 'x': arg = arg.toString(16); break;
                    case 'X': arg = arg.toString(16).toUpperCase(); break;
                }
                if  (match[10] && (match[10] > arg.length) ) {
                    fir = fil = this.strRepeat(match[7] ? match[8] || '0' : ' ', match[10]-arg.length);
                    if (match[9] == '^') {
                        fil = fil.substr(0, fil.length / 2);
                        fir = fir.substr(fil.length);
                    } else {
                        match[9] == '-' ? (fil = '') : (fir = '');
                    }
                    arg = fil + arg + fir;
                }
            }
        }
        i++;
        result += match[1] + ((match[3] ? match[4] || (s + arg) : match[2]) || '');
    }
    return result;
}


//
// Codifica uma string para o padrão de URL
//
function urlEncode( str ) {
    
    str =  escape(str);
    str =  str.replace(/\+/g, '%2B');
    str =  str.replace(/\"/g, '%22');
    str =  str.replace(/\'/g, '%27');
    str =  str.replace(/\//g, '%2F');
    
    return str;
    
}


//
// Decodifica uma string para o padrão de URL
//
function urlDecode( str ) {
    
    str = str.replace('+', ' ');
    str = unescape(str);
    
    return str;
    
}



//
// Ex: addEvent(window,'load',func1,false);
//
function addEvent( elm, evType, fn, useCapture ) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}


//
// Retorna uma lista de todos os elementos que utilizam uma determinada classe CSS
//
function getElementsByClass( searchClass, node, tag ) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	//var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (var i=0; i<elsLen; i++) {
		//if ( pattern.test(els[i].className) ) {
		if ( els[i].className == searchClass ) {
			classElements.push( els[i] );
		}
	}
	return classElements;
}


function insertAfter( parent, node, referenceNode ) {
	parent.insertBefore( node, referenceNode.nextSibling );
}


Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};


//
// getCookie(), setCookie(), deleteCookie()
//
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}


//
// Retorna o elemento (ou uma lista de elementos) HTML apartir de seu ID
//
function $() {  // Argumentos: ['id_elem1', 'id_elem2', 'id_elem3', ...]
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}


//
// Cria um formulário invisivel e enviar variáveis por metodo GET ou POST
// Ex: postVarsUrl( null, 'post', null, 'campo1', 'Bla bla bla', 'campo2', 'Aaaa aaaa aaaa' );
//
function postVarsUrl( /* url=null, method=null, target=null, varName1, varValue1 [, varName2, varValue2, ...] */ ) {
    if ( arguments.length < 3) {
        return;
    }
    url    = arguments[0];
    method = arguments[1];
    target = arguments[2];
    var elemForm = document.createElement( 'form' );
    var elemVar;
    if ( url    ) elemForm.action = url;
    if ( method ) elemForm.method = method;
    if ( target ) elemForm.target = target;
    elemForm.style.visibility = 'hidden';
    elemForm.style.width      = '1px';
    elemForm.style.height     = '1px';
    for (var i=3; i<arguments.length; i+=2) {
        var elemVar  = document.createElement( 'input' );
        elemVar.type  = 'hidden';
        elemVar.name  = arguments[i];
        elemVar.value = arguments[i+1];
        if ( elemVar.name=='' || elemVar.name=='submit' ) {
            continue;
        }
        elemForm.appendChild( elemVar );
    }
    document.body.appendChild( elemForm );
    elemForm.submit();
}


//
// Verifica se os campos obrigatórios de um formulário foram preenchidos corretamente
// Ex: verificaPostForm( forms['nome_do_form'], 'nome', 'mail' );
//
function verificaPostForm( /* elemForm, nomeCampo1 [, nomeCampo2, ...] */ ) {
    if ( arguments.length < 2) {
        return;
    }
    var elemForm  = arguments[0];
    var arrCampos = [];
    var strNome   = '';
    var campo;
    for (var i=1; i<arguments.length; i++) {
        arrCampos.pop( arguments[i] );
        for (var j=0; j<elemForm.length; j++) {
            campo = elemForm[j];
            if ( campo.name==arguments[i] && campo.value==''  ) {
                strNome = ( campo.title.length > 0 ) ? campo.title : campo.name;
                alert('Preencha o campo: '+strNome);
                return false;
            }
        }
    }
    return true;
}


//
// Cria uma mascara para uma campo onde é preciso formaçar o usuário a utilizar uma padrão
// Ex: <input type="text" name="cpf" onkeyup="criaMascara(this, '###.###.###-##')">
//
function criaMascara(elemCampo, modelMask){
    var valorAtual = elemCampo.value;
    var valorFinal = '';
    var charMask, charValor, numero;
    for (var i=0; i<modelMask.length && i<valorAtual.length; i++){
        charMask  = modelMask.charAt(i);
        charValor = valorAtual.charAt(i);
        numero    = !isNaN(parseInt(charValor)) ? charValor : '';
        if (charMask != '#'){
            valorFinal += charMask+numero;
        } else if ( !isNaN(parseInt(charValor)) ) {
            valorFinal += charValor;
        } else {
            break;
        }
    }
    elemCampo.value = valorFinal;
}


//
// Retorna o simbolo da moeda a partir de seu código
// Ex: alert(getSimboloMoeda('BRL')); //Exibe "R$"
//
function getSimboloMoeda(codMoeda){
    switch ( codMoeda.toUpperCase() ) {
        
        case 'BRL':  return 'R$';
        case 'USD':  return 'US$';
        case 'AUD':  return 'A$';
        case 'EUR':  return '€';
        case 'ALL':  return 'Lek';
        
        case 'AWG':
        case 'ANG':  return 'ƒ';
        
        case 'BYR':  return 'p.';
        case 'BZD':  return 'BZ$';
        case 'BOB':  return '$b';
        case 'BAM':  return 'KM';
        case 'BWP':  return 'P';
        
        case 'CNY':
        case 'JPY':  return '¥';
        
        case 'HRK':  return 'kn';
        
        case 'DKK':
        case 'EEK':
        case 'ISK':
        case 'NOK':
        case 'SEK':  return 'kr';
        
        case 'DOP':  return 'RD$';
        
        case 'IDR':
        case 'INR':
        case 'LKR':  return 'Rp';
        
        case 'EGP':
        case 'GBP':
        case 'FKP':
        case 'IMP':
        case 'JEP':
        case 'LBP':
        case 'SHP':
        case 'SYP':
        case 'TRL': 
        case 'GBP':  return '£';
        
        case 'HNL':  return 'L';
        case 'GHC':  return '¢';
        case 'HUF':  return 'Ft';
        case 'JMD':  return 'J$';
        case 'LVL':  return 'Ls';
        case 'CHF':  return 'CHF';
        case 'LTL':  return 'Lt';
        case 'MYR':  return 'RM';
        case 'NIO':  return 'C$';
        
        case 'PKR':
        case 'SCR':  return 'Rp';
        
        case 'PAB':  return 'B/.';
        case 'PYG':  return 'Gs';
        case 'PEN':  return 'S/.';
        case 'PHP':  return 'Php';
        case 'PLN':  return 'zt';
        case 'RON':  return 'lei';
        case 'SOS':  return 'S';
        case 'TWD':  return 'NT$';
        case 'THB':  return 'B';
        case 'TTD':  return 'TT$';
        case 'TRY':  return 'YTL';
        case 'UYU':  return '$U';
        case 'VEF':  return 'Bs';
        case 'ZAR':  return 'R';
        case 'ZWD':  return 'Z$';
    }
    return '$';
}


//
// Abre o visualizador de Impressão
// Ex: <button onclick="visualizarImpressao()">Preview</button>
//
function visualizarImpressao() {
    var Navegador = '<object id="Navegador1" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
    document.body.insertAdjacentHTML('beforeEnd', Navegador);
    Navegador1.ExecWB(7, 1);
    Navegador1.outerHTML = "";
}




//******************************************************************//
//******************************************************************//



//******************************************************************//
//  "APELIDOS" DE FUNÇÕES
//  Para manter a funcionalidade de antigas aplicações
//******************************************************************//
abre_janela                 = abreJanela;
verif_navegador             = verifNavegador;
show_hide_elem              = showHideElem;
toggle                      = showHideElem;
scroll_by_top               = scrollByTop;
scroll_by_top_load_links    = scrollByTopLoadLinks;
redimensionar_janela        = redimensionarJanela;
link_url                    = linkUrl;
ativa_selecao               = ativaSelecao;
desativa_selecao            = desativaSelecao;
ativa_selecao_texto         = ativaSelecaoTexto;
desativa_selecao_texto      = desativaSelecaoTexto;
msg_erro                    = msgErro;
danedit_exibe_imagem        = daneditExibeImagem;
add_load_event              = addLoadEvent;
add_resize_event            = addResizeEvent;
add_mousemove_event         = addMousemoveEvent;
//******************************************************************//