
var submit = false;
var objFocus   = '';
var temp       = '';
var objArg     = null;
var objContext = null;
var panelContext = false;
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;
    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);
    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_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 )
{
    //9 tab
    //13 enter
    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) 
{
    objArg = null;
    //Effect.Fade(div);
    //Element.hide(div);
    new Ajax.Updater(div, url);//, {
    //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'></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 + '=' + 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);
    }
}

var contador_banner = 0;
function banner_rotativo(images, periodo)
{
    if (images[contador_banner] == undefined) {
        contador_banner = 0;
    }
    window.setTimeout("banner_rotativo()", periodo);
    document.getElementById('banner_rotativo').src = '/images/' + images[contador_banner];
    contador_banner++;
}

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, '/app/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;

    Ajax.Responders.register(
    {
	onCreate: function(request, xmlhttp) {
	    if(objContext != null) {
		objContext.style.backgroundColor ='#f4f5f7';
	    }
	    init_request = new Date();
	    $('modalTransaction').show();
	    request['timeoutId'] =
		window.setTimeout(
            function() {
                if(callInProgress(xmlhttp)) {
                    alert('Abortando a requisição !');
                    xmlhttp.abort();
                    if (request.options['onFailure']) {
                        request.options['onFailure'](xmlhttp, request.json);
                    }
                    $('content').innerHTML = failureMessage();
                    $('modalTransaction').hide();
                }
            },
            30000
	);
	    objArg = null;
	    objContext = null;
	},
	onComplete: function(request, xmlhttp) {
	    //$('loading').innerHTML = 'ok ...';
	    end_request = new Date();
	    $('modalTransaction').hide();
	    objArg = null;
	    window.clearTimeout(request['timeoutId']);

	    if(xmlhttp.status == 200 ) {
		//somente requisicoes text/html sao definidas por default
		/*
            if(! xmlhttp.getHeader('Content-Type').match(/text\/html/)) {
             alert(xmlhttp.getHeader('Content-Type'));
            }*/
		//             alert(xmlhttp.getHeader('Content-Type'));
		if(xmlhttp.getHeader('Content-Type').match(/text\/html/) ) {

		    if (! request.options['onSuccess'] && ! request.options['onComplete']) {
			if(panelContext) {
			    //$('panel').update(xmlhttp.responseText); //or
			    Element.update('panel', xmlhttp.responseText);
			    //$('panel').innerHTML   = xmlhttp.responseText; // NAO USAR !!!
			} else {
			    $('content').update(xmlhttp.responseText); //or
			    //Element.update('content', xmlhttp.responseText);
			    //$('content').innerHTML = xmlhttp.responseText; // NAO USAR !!!
			}
		    }
		}
	    } else {
		if (! request.options['onFailure']) {
		    alert(xmlhttp.responseText);
		}
	    }
	}
    }
);

    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='/app/images/icons/ajax-load-big.gif'></td></tr><tr>";
	buffer = buffer + "</tr></table>";
	return buffer;
    }

    function modal_open(url)
    {
	var width = 500;
	//var x = (screen.width  - width)/2 ;
	var y = (screen.height)/2;
	panelContext = true;
	$('panel_modal').show();
	//$('panel').width = ""+x;
	//$('panel').height = ""+y;

	$('panel').innerHTML = modal_loading();//"<table class='font_default' height='100%' width='100%'><tr height='100%' width='50%'><td align='right'><img src='/icones/loading.gif'></td><td width='50%'>carregando...</td></tr></table>";
	//$('panel_modal').show();
	$('panel').show();
	$('container').show();
	new Ajax.Request(url, {
	    asynchronous:true,
	    evalScripts:true,
	    noloading:true
	});
	$('panel').show();
	$('container').show();

    }

    function modal_close()
    {
	panelContext = false;
	$('panel').hide();
	$('panel_modal').hide();
	$('container').hide();
    }





    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'];

