/**
 * 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
 */

var widthScreen;
function executaAcaoModal(acao,parametros,title,method,id){
    //var janela = carregaObjetoJanela('',title,id);

	try{
	   janela = window.open(acao+'?modalwindow=true&'+parametros,title,"status=yes,toolbar=no,resizable=yes,width=800,height=500,scrollbars=yes,modal=yes");
	   width = (window.screen.width-820)/2;
	   
	   
	   janela.moveTo(width,220);
	   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();
    }
}



