/**
 * Seleciona todos os checkboxes
 * @param checar
 * @return
 */
$().ajaxStop($.unblockUI);
janelaTop = 0;
janelaLeft = 0;

function selecionarCheckboxes(checar,id){		
    $('#'+id+' input:checkbox').attr('checked',checar);
}

/**
 * Retorn um gif de carregando do ajax
 * @return html img
 */
function preloadImg(msg){
    $.blockUI({
        message: msg,
        overlayCSS: {
            backgroundColor: '#FFF',
            'filter': 'alpha(opacity=10)',
            '-moz-opacity':'0.1',
            '-khtml-opacity': '0.1',
            'opacity': '0.1',
            '-webkit-opacity': '0.1' ,
            cursor:          'wait'
        },
		
        css: {
            border: 'none',
            padding: '15px',
            backgroundColor: '#000',
            '-webkit-border-radius': '10px',
            '-moz-border-radius': '10px',
            'filter': 'alpha(opacity=50)',
            '-moz-opacity':'0.8',
            '-khtml-opacity': '0.5',
            'opacity': '0.5',
            '-webkit-opacity': '0.5'
            ,
            color: '#fff'
        }
    });
}

/**
 * Retora a url da pagina
 * @return
 */
function getAtualAction(){
    return window.location;
}


/**
 * Função para retorna todos os dados do formulario
 * @param formId
 * @return String parametros
 */
function serializaForm(formId){
    var parametros = '';
	
    $('#'+formId+' input[type!="checkbox"][type!="radio"]').each(function(){
        parametros+=  $(this).attr('name')+'/'+$(this).val()+'/';
    });
	
    $('#'+formId+' input:checked').each(function(){
        parametros+=  $(this).attr('name')+'/'+$(this).val()+'/';
    });
	
    $('#'+formId+' select').each(function(){
        parametros+=  $(this).attr('name')+'/'+$(this).val()+'/';
    });
	
    $('#'+formId+' textarea').each(function(){
        parametros+=  $(this).attr('name')+'/'+$(this).val()+'/';
    });
	
    return parametros;
}

/**
 * Cria e Renderiza o objeto janela modal 
 * @return
 */
function carregaObjetoJanela( content , title , id){
    if(janelaTop > 200){
        //janelaTop  = 25;
        janelaLeft = 25;
    }
	 
    var janela = $('<div></div>');
    preloadImg('Carregando conteúdo');
    removerElemento('modal-'+id);
	 
    janela.attr('id','modal-'+id).css('height',$(window).height()+'px');
	 
    $('body').append(janela);
	 
    //espaco = 25;
    //janelaTop+=espaco;
    //janelaLeft+=espaco;
    espaco = 5;
    janelaTop=espaco;
    janelaLeft=espaco;
	 
    janela.html(content);
	 
    alturaMax = $(window).height()-($(window).height()/5);
	
    janela.dialog({
        minWidth	:	'100%',
        position    :   [janelaTop,janelaLeft],
        width		:	900,
        title		:	title,
        modal       :   true,
        close: function(){
            $(this).remove();
        //			$('.ui-datepicker').hide();
        //			janelaTop-=espaco;
        //			janelaLeft-=espaco;
        }
    });
	
    return janela;
}

/**
 * Remove do html a janela modal
 * @param janela
 * @return void
 */
function removerObjetoJanela(janela){
    removerElemento(janela);
}

/**
 * Seta o conteudo do elemento
 * @var id do elemento
 * @var content conteudo do elemento
 */ 
function setaConteudo(id,content){
    $('#'+id).html(content);
}


/**
* remove elemento do html
* @var id do elemento
*/ 
function removerElemento(id){
    $('#'+id).remove();
}

/**
 * Transforma os formularios em ajax , jogando o conteudo gerado no targetID
 * @param html
 * @param targetId
 * @return
 */
function formularioViaAjax(html,targetId,options){	 
    var formularioS = $('form',html);
	
    formularioS.each(function(){    	
        $(this).ajaxForm({
            beforeSubmit : function(){
                preloadImg('Enviando dados');
            },
            success		 : function(html){
                try{
                    if(targetId.indexOf('#')>=0){
                        var container = $('form:first',targetId).html(html);
                    }else{
                        var container = $('#'+targetId).html(html);
                    }
					
                    var action = $(this).attr('action');
					
                    if(action==undefined){
                        action = formularioS.attr('action');
                    }
						
                    $('form',container).attr('action',action);
                    formularioViaAjax(container,targetId);
                    try{
                        options.postSubmit(html);
                    }catch(e){
						
                    }
                }catch(e){
                    alert(targetId);
                }
            }
        });
    });

    return html;
}


/**
 * @param campo
 * @return
 */
function classificar(caminho,campo,target) {
    path = caminho + '/order/' + campo;
    irPara(path,page,target);
}


function irPara(path,nPage,targetId) {
    preloadImg('Repaginando');
    executaAcao(path + '/page/' + nPage,'', targetId ,'get');
}



/**
 * Chama a ação no servidor e insere numa janela modal
 * @param acao
 * @return void
 */
function executaAcaoModal(acao,parametros,title,method,id){
   //var janela = carregaObjetoJanela('',title,id);

	try{
            if($.browser.msie){
            amp = '&amp;';
            }else{
                amp = '&';
            }

	   janela = window.open(acao+'?modalwindow=true'+amp+parametros,id,"status=yes,toolbar=no,resizable=yes,width="+(window.screen.width)+",height=500,scrollbars=yes,modal=yes");

	   janela.moveTo(0,20);
	   janela.focus();
	}catch(e){
		window.open(acao+'?modalwindow=true&amp;'+parametros,'',"status=yes,toolbar=no,resizable=yes,width=800,height=500,scrollbars=yes,modal=yes");
	}
}



/**
 * Chama a ação no servidor e insere num target especifico, 
 * caso o target não exista criasse uma div e insere-a no fim do body
 * @param acao 
 * @return void
 */
function executaAcao(acao,parametros,targetId,method){	
	
    target = $('#'+targetId);
	
    if(target.length == 0){
        target  = $('<div></div>');
        target.css('display','none');
        $('body').append(target);
    }
	
    $.ajax({
        url			:	 acao ,
        contentType	:	'html' ,
        data		:	parametros,
        contentType	:	'application/x-www-form-urlencoded',
        type		:	method,
        success		:	function(html){
            target.html(html);
            $("form", target).attr('action', acao);
            formularioViaAjax(target,targetId);
        },
        error: function(){
            OutMsg.error('Erro ao processar solicitação');
        }
    });
}

function mask (id, formatoData) {		
    jQuery(function($){
        $("#"+id).mask(formatoData).removeAttr("OnFocus");
    });
	
	
}

function somenteNumeros(id) {        
    $('#'+id).keypress(
        function(event) {
            if (event.charCode && (event.charCode < 48 || event.charCode > 57)) {
                event.preventDefault();
            }
        }
        );
}

function formatNumber(id) {	 
    $('#'+id).priceFormat({
        prefix: '',
        centsSeparator: '.',
        thousandsSeparator: '',
        centsLimit:4
    });
}

function carregaAba (campo) {	
    $(document).ready(function() {
        if($('[id^="'+campo+'"]:radio:checked').val() == 'J'){
            $('#tab_pessoa-fisica').hide();
            $('#tab_pessoa-juridica').show();
        } else {
            $('#tab_pessoa-juridica').hide();
            $('#tab_pessoa-fisica').show();
        }
    })
}

/**
 *  pilha de funçoes a serem disparadas
 * @param fn { fn : function()}
 * @return
 */

var fnStack = [];
var fnUnique = [];

function addStackPile(fn,unique){
    tem = false;
    $.each(fnUnique,function(i){
        if(fnUnique[i]==unique){
            tem = true;
        }
    });
    if(!tem){
        fnUnique[fnUnique.length] = unique;
        fnStack[fnStack.length] = fn;
    }
}

function processStackPile(fn){
    for(i = 0 ; i < fnStack.length; i++){
        fnStack[i].fn();
    }
}



