
var submit = false;
var objFocus   = '';
var temp       = '';
var objArg     = null;
var objContext = null;
if(self.top.contextLevel == null) {
  self.top.contextLevel = 0;
}
var js_controll = new Array();

function js_loader(url)
{
    if( js_controll.indexOf(url) == -1) {
        //alert("carregando lib: " + url); //debug: if lib is loader
        new Ajax.Request(url, {
            asynchronous:false,
            evalScripts:true,
            onSucess:function(transport) {
                //alert('escrivento');
                document.write(transport.responseText);
            //alert('terminei' + transport.responseText);
            }
        }
        );
    }
    js_controll[js_controll.length + 1] = url;
}

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------

function isSubmit( form ) 
{
    if ( submit ) {
        alert("Aguarde, formulário sendo processado !");
        return false;
    } else {
        submit = true;
        return true;
    }
}

//------------------------------------------------------------------------------
// FUNCOES PARA TRABALHAR COM NUMEROS
//------------------------------------------------------------------------------

function isNumber( value ) {
    if( value =='0' || value =='1' ||
        value =='2' || value =='3' ||
        value =='4' || value =='5' ||
        value =='6' || value =='7' ||
        value =='8' || value =='9') {
        return true;
    } else {
        return false;
    }
}//isNumber

//exclue todos os caracteres que nao sejam numeros
function delAlfa(value) {
    var newvalue = "";
    for (i=0; i < value.length; i++) {
        if(isNumber( value.charAt(i) ) /* || value.charAt(i) =='-' */ ) {
            newvalue += value.charAt(i);
        }
    }
    return newvalue;
}//delAlfa


//exclue todos os caracteres que nao sejam numeros
function convertDecimal(value) {
    var newvalue = "";
    for (i=0; i < value.length; i++) {
        if(isDecimal(value.charAt(i))) {
            newvalue += value.charAt(i);
        }
    }
    return newvalue;
}//delAlfa

  
function openWindow(url, name, width, height, scroll) {
    var x = (screen.width  - width)/2 ;
    var y = (screen.height - height)/2;
    //alert('teste: ' + y);
    var newWindow = window.open(url, name, "height="+height+",width="+width+",left="+x+", screenX="+x+", top="+y+",resizable=0,status=0,scrollbars="+scroll);
    newWindow.focus();
}
  
function openWindowPlus(url, name, scroll) {
    var width  = screen.width*0.95;
    var height = screen.height/2;
    var x      = (screen.width  - width)/2 ;
    var y      = (screen.height - height)/2;
    // comentado pelo alexandre em 27/09/2011 em razao do window=true somente ser usado quando tinha PHP
    //var newUrl = null;
    //if ( url.indexOf("?") == -1) {
    //    newUrl = url+"?window=true";
    //} else {
    //    newUrl = url+"&window=true";
    //}
    //var newWindow = window.open(newUrl, name, "height="+height+",width="+width+",left="+x+", screenX="+x+", top="+y+",resizable=0,status=0,scrollbars="+scroll);
    var newWindow = window.open(url, name, "height="+height+",width="+width+",left="+x+", screenX="+x+", top="+y+",resizable=0,status=0,scrollbars="+scroll);

    newWindow.focus();
}

  
function openWindowBoleto(url, name, scroll) {
    var width  = screen.width*0.95;
    var height = screen.height/2;
    var x      = (screen.width  - width)/2 ;
    var y      = (screen.height - height)/2;
    var newUrl = null;
    if ( url.indexOf("?") == -1) {
        newUrl = url+"?window=true";
    } else {
        newUrl = url+"&window=true";
    }
    window.open(newUrl, name, "height="+height+",width="+width+",left="+x+", screenX="+x+", top="+y+",menubar=yes,resizable=0,status=0,scrollbars="+scroll);
}
/*
function format(field, mask) {
    var str = delAlfa( field.value );
    var sinal = "";
    if(field.value.charAt(0) == '-') {
        sinal = "-";
    }
    var length = ( str.length > mask.length ) ? mask.length : str.length;
    var tmp = "";
    var j = 0;
    for( var i = 0; i < length; i++ ) {
        if ( mask.charAt( j ) != "*" ) {
            tmp += mask.charAt ( j );
            j++;
        }
        tmp += str.charAt ( i );
        j++;
    }
    field.value = sinal + tmp.substring( 0, mask.length );

}
*/
function format(field, mask) {
	var str = delAlfa( field.value );
	var length = ( str.length > mask.length ) ? mask.length : str.length;
	var tmp = "";
	var j = 0;
	for( var i = 0; i < length; i++ ) {
		if ( mask.charAt( j ) != "*" ) {
			tmp += mask.charAt ( j );
			j++;
		}
		tmp += str.charAt ( i );
		j++;
	}
	field.value = tmp.substring( 0, mask.length );
}

function format_nextel(field){
    var valor = field.value;
    valor = valor.replace(/\D/g,""); //Remove tudo o que não é dígito
    valor = valor.replace(/^(\d{2})(\d{4})/, "$1*$2") //Coloca um asterisco entre a parte 1 e a parte 2
    valor = valor.replace(/(^\d{2}\*\d{4})(.*)/,"$1"); // retira
    field.value = valor
}


function format_telefone(form_name) {
  var tipo     = $(form_name + '_tipo');
  var telefone = $(form_name + '_telefone');
  switch(tipo.getValue()) {
    case 'nextel':
      format_com_regex( telefone, '([0-9]{0,2})([0-9]{0,2})([0-9]{0,5})', ['*', '*']);
      break;
    case 'central':
      format( telefone, '****-***-****' );
      break;
    default:
      format( telefone, '****-****' );
  }
}

function format_com_regex(field, mask, separadores){
    /*
     *field: campo HTML (obrigatório)
     *mask: mascara de formato do campo (String contndo RegExp) (obrigatório)
     *separadores: array contendo os separadores do dos grupos, ou nulo
     *caso não haja separador.
     *
     *Ex de mask, sparadores: '([0-9]{0,2})([0-9]{0,2})([0-9]{0,4})', ['*', '*']
     *formata o texto no seguinte formato ##*##*####
     *
     *Ex de mask, sparadores: '([0-9]{0,15})', null
     *formata o texto no seguinte formato ###############
     */
    var i = 0;
    var valor = field.value;
    var mascara = new RegExp (mask);
    var resultado;
    if (separadores != null){
      resultado = new Array(separadores.length + 1);
    }
    else{
      resultado = new Array(1);
    }
    var saida = "";
    if(separadores != null){
    //Retira os caracteres separadores da string
      for (i = 0; i < separadores.length; i++){
        valor = valor.replace(separadores[i], "");
      }
    }
    /*
     *Encontra as partes do que foi digitado e cabem nas partes da expressão
     *regular.
     *O primeiro elemento do array é a expressão toda, e a última sempre vazia
     *não sei porque...
     */
    var array =  mascara.exec(valor);
    if (array != null){
      for (i  = 1; i < array.length; i++){
          if(array[i] != null){
              resultado[i -1] = array[i];
          }
      }
    }
    //verifica se todas as partes da xpressão foram preenchidas
    var todos = true;
    if(resultado != null){
        for(i = 0; i < resultado.length; i++){
            if (resultado[i] == ""){
                todos = false;
            }
        }
        //monta o valor que será mostrado na tela do usuário
        for(i = 0; i < resultado.length; i++){
            saida += resultado[i];
            if (separadores != null){
              if(i < (resultado.length -1)){
                 if ((todos == true) && (separadores[i] != null)){
                   saida += separadores[i];
                 }
               }
            }
      }
      field.value = saida;
    }
}

function format_invert(field, mask) 
{
    var str = delAlfa( field.value );
    var length = str.length;
    var end = mask.length;
    for( var i = 0 ; i < length; i++ ) {
        if ( mask.charAt( end ) != "*" ) {
            end = end - 1;
        }
        end = end - 1;
    }
    //alert( mask.length );
    //alert( end );
    format( field, mask.substring( end  + 1 , mask.length ) );
}

function excluir ( link ) 
{
	if ( window.confirm( "Confirma a exclusão ?" ) )
	{
		window.location.href = link;	
	}
}

function toFloat( value )
{
    var result = value.replace(".", "");
    result = result.replace( ",", "." );
    return parseFloat( result );
}


function inputFocus( obj )
{
    objFocus = obj.name;
}

function inputPress( obj, presskey, callback )
{
    //9 tab
    //13 enter
    if( callback && presskey.keyCode == 13 ) {
      return callback.call();
    }
    if ( presskey.keyCode != 9 && presskey.keyCode != 13 ) {
        if ( objFocus == obj.name )
        {
            temp = obj.value ;
            obj.value = '';
            objFocus = '';
        }
    }
}


function inputBlur( obj )
{
    if ( obj.value == '' && temp != '') {
        temp = '';
    }
}

function prepareRedirect( form , redirect )
{
    form.redirect.value =  redirect;
    form.submit( );
}

function createRequestObject( ) 
{
    var request_o;
    var browser = navigator.appName;
    if ( browser == 'Microsoft Internet Explorer' ) {
        request_o = new ActiveXObject( 'Microsoft.XMLHTTP' );
    } else {
        request_o = new XMLHttpRequest( );
    }
    return request_o;
}

function getContent(url, nalert ) 
{
    var request = createRequestObject( );
    request.open( 'get', url, false );
    request.send( null );
    var result = request.responseText;
    if ( nalert == true ) {
        alert(  'Requisi��o efetuada !' );
    }
    return result;
}

function replace_report(div, url) 
{
    //alert('aqui...');
    objArg = null;
    //Effect.Fade(div);
    //Element.hide(div);
    //new Ajax.Updater(div, url);//, {
    new Ajax.Request(url, {
        asynchronous:true,
        evalScripts:true
    });

//onComplete:  function() { new Effect.Highlight(div, {durantion: 0.05}); }
//});
//Appear
//BlindDown
//Element.show(div);

}


function replaceHtml( html, url, nalert ) 
{
    objArg = null;
    var request = createRequestObject( );
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            var result = request.responseText;
            if ( result == '' ) {
                alert('houve um erro na requisicao !');
            } else {
                document.getElementById( html ).innerHTML = result;//+ 'aqui';
                if(nalert == true) {
                    alert(  'Atualização efetuada !' );
                }
            }
        } else {
            document.getElementById(html).innerHTML = "<table cellpading='0' cellspacing='0'><tr><td><img src='/icones/loading.gif' border='0'></td><td width='5'></td><td><font class='font_default'><b>carregando...</b></font></td></tr></table>";
        }
    }
    request.open('get', url, true);
    request.send( null );
}

//armazena o conteudo utilizado em replaceInputText
var htmlContent = new Array();
function replaceContent(name, url) 
{
    if(htmlContent[name] == undefined)  {
        htmlContent[name] = document.getElementById(name).innerHTML;
        replaceHtml( name, url );
    } else {
        document.getElementById(name).innerHTML = htmlContent[name];
        htmlContent[name] = undefined;
    }

}

function format_cpf_cnpj(input) 
{
    if (input.value.length <= 14) {
        format( input, '***.***.***-**');
    } else {
        format_invert( input, '***.***.***/****-**');
    }
}

function cancelar ( $link ) 
{
    if ( window.confirm( "Confirma o cancelamento ?" ) )
    {
        window.location.href = $link;
    }
}

function help( path )
{
    openWindow( "/action/help.php?path="+path, "help", "500", "200", "no");
}

function clonar(url) 
{
    if (window.confirm('Você clicou em clonar, deseja realmente clonar este produto ?')) {
        window.location.href = url;
    }
}

function selectObjArg(obj, _objArg)
{
    objArg = _objArg;
    if(objContext != null) {
        objContext.style.backgroundColor ='#f4f5f7';
    }
    obj.style.backgroundColor='#c4c4c4';
    objContext = obj;
}

function checkArg()
{
    if(objArg == null) {
        alert('Clique primeiramente sobre o item !');
        return false;
    }
    return true;
}

function form2QueryString(oForm)
{

    var open = false;
    var queryString = '';
    for(i=0; i < oForm.length; i++) {
        var increment = false;
        if(oForm[i].type == 'radio' && oForm[i].checked == false) {
            increment = false;
        } else if(oForm[i].type == 'checkbox' && oForm[i].checked == false) {
            increment = false;
        } else {
            increment = true;
        }
        if(increment) {
            if(open == true) {
                queryString += '&';
            }
            queryString += oForm[i].name + '=' + escape(oForm[i].value);
            open = true;
        }
    }
    return queryString;
}

function urlTimestamp(url)
{
    var data   = new Date();
    var newUrl = url;
    newUrl+= url.indexOf("?") == -1 ? "?" : "&";
    newUrl+=  "timestamp=" + data.getTime();
    window.location.href = newUrl;
}

function error_or_redirect(request, redirect)
{
    if(request.responseText == 'ok'){
        window.location.href = redirect;
    } else {
        alert(request.responseText);
    }
}

function hidden_visible(request)
{
    if(request.responseText == 'ok'){
        document.getElementById('form').visibility = "hidden"
    } else {
        alert(request.responseText);
    }
}

function app_loading(div_id)
{
    objArg = null;
    if (! div_id) {
        div_id = 'app_loading';
    }
    $(div_id).innerHTML = "<table cellpading='0' cellspacing='0'><tr><td><img src='/icones/loading.gif'></td><td width='5'></td><td><font class='font_default'><b>carregando...</b></font></td></tr></table>";
}

function defaultFailure(request) {
    alert(request.responseText);
}

function default_failure(request) {
    alert(request.responseText);
    return false;
}

function default_process(request)
{
    if(request.status != 200) {
        alert(request.responseText);
    //var res_request = (init_request.getTime() - end_request.getTime()) / 1000;
    //$('loading').innerHTML = "<b>GERADA EM</b>: " + res_request + "<b>&nbsp;";
    //$('loading').innerHTML = "";
    } else {
//$('content').innerHTML = request.responseText;
}
}


function defaultSuccess(request) { 
    Element.update('content', request.responseText)
}

function defaultLoading(div_id)
{
    if (! div_id) {
        div_id = 'loading';
    }
    document.getElementById(div_id).innerHTML = "<table cellpading='0' cellspacing='0'><tr><td><img src='/icones/loading.gif'></td><td width='5'></td><td><font class='font_default'><b>carregando...</b></font></td></tr></table>";
}

function autoCompleteToggle(value)
{
    if(htmlContent[value] == '' || $(value).innerHTML == '' || $('obj_' + value).value == '') {
        JavaScript:Element.toggle('obj_' + value);
    }
    replaceContent(value, '/ajax/' + value);
}

//------------------------------------------------------------------------------
// PROTOTYPE TIMEOUT
//------------------------------------------------------------------------------
//Exemplo de como criar um evento de conexao com  o Prototype

function callInProgress (xmlhttp) {
    switch (xmlhttp.readyState) {
        case 1: case 2: case 3:
            return true;
            break;
        //case 4 and 0
        default:
            return false;
            break;
    }
}

function failureMessage()
{
    var buffer = "";
    buffer = buffer + "<table class='failureRequest'>";
    buffer = buffer + "<tr>";
    buffer = buffer + "<td valign='top'><img src='/images/icons/message.gif'/> </td>";
    buffer = buffer + "<td>";
    buffer = buffer + "<table class='font_default'>";
    buffer = buffer + "<tr><td><b>Verifique as mensagens abaixo:</b></td></tr>";
    buffer = buffer + "<tr><td>Problemas em sua conexão impediram a conclusão da requisição. <br>Se o problema persistir entre em contato com seu provedor...</td></tr>";
    buffer = buffer + "</table>";
    buffer = buffer + "</td>";
    buffer = buffer + "</table>";
    return buffer;
}

var init_request = null;
var end_request  = null;


function modal_loading()
{
    var buffer = "<table class='font_default' height='100%' width='100%'>";
    buffer = buffer + "<tr height='100%' width='50%'>";
    buffer = buffer + "<td align='center'><img src='/images/icons/ajax-load-big.gif'></td></tr><tr>";
    buffer = buffer + "</tr></table>";
    return buffer;
}

function modal_open(url, modal_callbacks)
{
  if(self.top.modal_list == undefined) {
    self.top.modal_list = new Array();
  }
  self.top.modal_list[self.top.contextLevel] = modal_callbacks;

  if(modal_callbacks && modal_callbacks.before_open) {
    modal_callbacks.before_open.call();
  }
  $('panel_' + self.top.contextLevel).innerHTML = modal_loading();
  $('panel_modal_' + self.top.contextLevel).style.display = '';
  $('panel_' + self.top.contextLevel).style.display = '';
  $('container_' + self.top.contextLevel).style.display = '';
  $('modalIframe_' + self.top.contextLevel).style.display =  '';
  $('panel_' + self.top.contextLevel).innerHTML = "<iframe src='/intranet/modal_open?url="+jQuery.base64Encode(url)+"' width='100%' height='100%' scrolling='auto' marginheight='0' marginwidth='0' frameBorder='no' id='iframe_"+self.top.contextLevel+"' name='iframe_"+self.top.contextLevel+"'/>";


  if(modal_callbacks && modal_callbacks.after_open) {
    modal_callbacks.after_open.call();
  }
}

self.modal_close = function()
{
   var downLevel = (self.top.contextLevel - 1);

   modal_callbacks = self.top.modal_list[downLevel];
   self.top.modal_list[downLevel] = undefined;

  if(modal_callbacks && modal_callbacks.before_close) {
    modal_callbacks.before_close.call();
  }

  if(jQuery("#iframe_" + downLevel).length) {
    jQuery("#iframe_" + downLevel).attr('src', '/intranet/modal_close?context_level='+downLevel);
  } else {
    jQuery(self.parent.document.getElementById('iframe_' + downLevel)).attr('src', '/intranet/modal_close?context_level='+downLevel);
  }

  if(modal_callbacks && modal_callbacks.after_close) {
    modal_callbacks.after_close.call();
  }

}

function paginator(url)
{
    new Ajax.Request(url, {
        asynchronous:true,
        evalScripts:true
    });
}

self.roundNumber = function(rnum, scale)
{
    if(! scale) scale = 2;
    return (Math.round(rnum*Math.pow(10,scale))/Math.pow(10,2)).toString().replace(".", ",");
}

//------------------------------------------------------------------------------
// String
//------------------------------------------------------------------------------

String.prototype.toFloat = function() {
    return parseFloat(this.replace('.', '').replace(',', '.'));
}

//------------------------------------------------------------------------------
// Number
//------------------------------------------------------------------------------
Number.prototype.format = function(scale) {
    if(!scale) scale = 2;
    return this.toFixed(scale).toString().replace('.', ',');
}

    //------------------------------------------------------------------------------
    // Fusion
    //------------------------------------------------------------------------------

    //var Fusion = Class.create();
    //Fusion.precos = ['preco1', 'preco2', 'preco3', 'preco4'];



