$.fn.clearForm = function() {
	return this.each(function() {
		// iterate the elements within the form
		$(':input', this).each(function() {
			var type = this.type, tag = this.tagName.toLowerCase();

			if (type == 'text' || type == 'password' || tag == 'textarea'){
				this.value = '';

			} else if (type == 'checkbox' || type == 'radio'){
				this.checked = false;

			} else if (tag == 'select'){
				this.selectedIndex = -1;

			}
		});
	});
}

$.fn.validarForm = function(){
	var retorno = true;
	this.each(function(){
		$('.obrigatorio:input', this).each(function(){
            if($(this).hasClass('email')){
                var validar_email = validarEmail($(this).val());
                if(!validar_email){
                    alert('Seu email é inválido!\nTente novamente.')
                    return false;
                }
            }
			if($(this).val() == ''){
				alert($(this).attr('title'));
				retorno = false;
                return false;
			}

		});
	});
    
	return retorno;
}

$.fn.buttonRed = function(){
		$(this).button().addClass('ui-button-red');
}

$.fn.maxlength = function(max){
	$(this).keypress(function(){
		var nLength = $(this).val().length;
		if(nLength > max){
			$(this).val($(this).val().substr(0, max));
		}
	});
}


$.extend({
	password: function (length, special) {
	var iteration = 0;
	var password = "";
	var randomNumber;
	if(special == undefined){
		var special = false;
	}
	while(iteration < length){
		randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;
		if(!special){
			if ((randomNumber >=33) && (randomNumber <=47)) { continue; }
			if ((randomNumber >=58) && (randomNumber <=64)) { continue; }
			if ((randomNumber >=91) && (randomNumber <=96)) { continue; }
			if ((randomNumber >=123) && (randomNumber <=126)) { continue; }
		}
		iteration++;
		password += String.fromCharCode(randomNumber);
	}

	return password;
	},
	msgErro: function(msg){
        if($('#alerta_erro').length > 0){
            $('#txt_alerta').html(msg);
            
            return false;
        }

		var uiWidget = $('<div>').attr('id', 'alerta_erro').addClass('alerta').addClass('ui-widget');
		var uiState = $('<div>').addClass('ui-state-error').addClass('ui-corner-all').css('padding', '0 0.7em');
		var pMsg = $('<p>');
		var iconAlert = $('<span>').addClass('ui-icon').addClass('ui-icon-alert').css({float: 'left', marginRight: '.3em'});
        var botaoFechar = $('<div>').addClass('botao_fechar');
        var iconFechar = $('<a>').attr('href', 'javascript:void(0);').addClass('ui-icon').addClass('ui-icon-closethick');
        var fechaAlertaErro = function(){
            $('#alerta_erro').remove();
        }

        $(iconFechar).click(function(){
            fechaAlertaErro();
        });

        botaoFechar.append(iconFechar);
        
		pMsg.append(iconAlert);
		pMsg.append('<span id="txt_alerta">' + msg + '</span>');
        pMsg.append(botaoFechar);

		uiState.append(pMsg);

		uiWidget.append(uiState);

		$('body').prepend(uiWidget);
        $('#alerta_erro').animate({ left: ($(document).width() - $('#alerta_erro').width()) / 2 }, 'slow');
        
        setTimeout(fechaAlertaErro, 15000);
	},
    msgSucesso: function(msg){
        if($('#alerta_sucesso').length > 0){
            $('#txt_alerta').html(msg);
            
            return false;
        }
        
		var uiWidget = $('<div>').attr('id', 'alerta_sucesso').addClass('alerta').addClass('ui-widget');
		var uiState = $('<div>').addClass('ui-state-highlight').addClass('ui-corner-all').css('padding', '0 0.7em');
		var pMsg = $('<p>');
		var iconAlert = $('<span>').addClass('ui-icon').addClass('ui-icon-info').css({float: 'left', marginRight: '.3em'});
        var botaoFechar = $('<div>').addClass('botao_fechar');
        var iconFechar = $('<a>').attr('href', 'javascript:void(0);').addClass('ui-icon').addClass('ui-icon-closethick');
        var fechaAlertaSucesso = function(){
            $('#alerta_sucesso').remove();
        }
        
        $(iconFechar).click(function(){
            fechaAlertaSucesso();
        });

        botaoFechar.append(iconFechar);
        
		pMsg.append(iconAlert);
		pMsg.append('<span id="txt_alerta">' + msg + '</span>');
        pMsg.append(botaoFechar);

		uiState.append(pMsg);

		uiWidget.append(uiState);

		$('body').prepend(uiWidget);
        $('#alerta_sucesso').animate({ left: ($(document).width() - $('#alerta_sucesso').width()) / 2 }, 'slow');
        
        setTimeout(fechaAlertaSucesso, 15000);
	}
});

function ajaxLoaderMin(Container){
	$(Container).html('<div align="center"><img src="/img/ajax-loader-min.gif" alt="Carregando..." title="Carregando..." class="ui-corner-all" /></div>');
}

function formularioAjax(formulario, inner){
	var erro;
	var valores = $(formulario).serialize();
	$.ajax({
		type: $(formulario).attr('method'),
		data: valores,
		url: $(formulario).attr('action'),
		beforeSend: function(){
			if(inner == 'html') ajaxLoaderMin(formulario);
		},
		success: function(s){
			switch(inner){
				case 'html':
					$(formulario).html(s);
				break;
				case 'alert':
					alert(s);
				break;
			}
			erro = false;
		},
		error: function(j, d, e){
			alert('Ocorreu um erro:\n' + e);
			erro = true;
		}
	});

	return (erro) ? false : true;
}

function validarEmail(email){
	var filtro = /^.+@.+\..{2,}$/;
	var ilegal = /[\(\)\<\>\,\;\:\\\/\"\[\]]/;

	if(!(filtro.test(email)) || (email.match(ilegal))){
		return false;
	}

	return true;
}

function preloaderModal(ac){
	function createModal(){
		var divModal = $('<div></div>');
		$(divModal).addClass('loader-modal');
		$(divModal).attr('title', 'Aguarde, carregando...');

		var pCenter = $('<p></p>');
		$(pCenter).attr('align', 'center');

		var imgLoader = $('<img />');
		$(imgLoader).attr('src', '../img/bar-loader.gif');

		$(pCenter).append(imgLoader);
		$(divModal).append(pCenter);

		$('body').append(divModal);

		$('.loader-modal').dialog({
			autoOpen: false,
			modal: true,
			height: 90
		});
	}

	switch(ac){
		case 'open':
			if($('.loader-modal').length == 0) createModal();
			$('.loader-modal').dialog('open');
		break;
		case 'close':
			$('.loader-modal').dialog('close');
			$('.loader-modal').remove();
		break;
	}
}

function miniLoader(ac){
    switch(ac){
        case 'open':
            if(!$('#mini-loader').length){
                $('body').prepend('<div id="mini-loader"><img src="../img/ajax-loader-min.gif" /></div>');
            }
        break;
        case 'close':
            if($('#mini-loader').length){
                $('#mini-loader').remove();
            }
        break;
    }
}
