
// INIT PAGE

strFormSending 		= 'Enviando Formulário';
strFormSuccess 		= 'Formulário enviado com sucesso';
strFormError 		= 'Falha ao enviar formulário';
strFormMsgRequired 	= 'Campo obrigatório';
strFormMsgEmail 	= 'E-mail inválido';
strFormMsgDate 		= 'Data inválida';
strFormMsgTime 		= 'Hora inválida';
strFormMsgCurrency 	= 'Moeda inválida';

$(document).ready(function() 
{

	// LOAD SITE CONFIG
	$.ajax({
		url: "lib/util/ajaxSiteConfig.php", 
		data: "name=strSiteTitle", 
		success: function(strHTML) {
			eval(strHTML);
		}
	});

	// DISTRIBUTE MENU
	var numTotal = 0;
	$('#ulMenu').children().each(function() { 
		numTotal += $(this).outerWidth();
	});
	$('#ulMenu').outerWidth();
	var numPadding = Math.floor( (parseInt($('#ulMenu').outerWidth()) - numTotal) / $('#ulMenu').children().length / 2 );
	$('#ulMenu > li ').css('padding-left',numPadding);
	$('#ulMenu > li ').css('padding-right',numPadding);
	$('#ulMenu').css('visibility','visible');

	// FORM PREPARE
	$("[required]").each(function() 
	{
		$(this).removeAttr('required');
		$(this).attr('s3required','true');
	});

	// FORM E-MAIL ACTIONS
	$("#divContent form[method='get'][noAjax!='true']").submit(function(){
		bolValidation = formSubmit(this);

		if (bolValidation)
		{
			$.fancybox({ content: strFormSending, showCloseButton: false });

			strAjax = "strEmailDestination=" + escape($(this).attr('action')) + "&strEmailSubject=" + escape($(this).attr('name'));
			$(":input", this).each(function(){
				if ($(this).attr('type') != 'submit' && $(this).attr('type') != 'reset' && $(this).attr('type') != 'button')
				{
					strAjax += "&" + escape($(this).attr('name')) + "=" + escape($(this).val());
				}
			});

			$.ajax({
				type: "POST",
				url: "lib/util/ajaxSendForm.php",
				data: strAjax,
				success: function(strHTML) {
					if (strHTML == 'true')
					{
						$.fancybox({ content: strFormSuccess });
					}
					else
					{
						$.fancybox({ content: strFormError  });
					}
				},
				error: function() {
					$.fancybox({ content: strFormError });
				}
			});


		}
		return false;
	});

	// RTE IMAGES
	$('img[rel=rte]').each(function(){
		strSrc = $(this).attr('src');
		numWidth = $(this).attr('width');
		numHeight = $(this).attr('height');
		arrSrc = strSrc.split('upl/ckfinder/images/');
		$(this).attr('src','images/rte/'+numWidth+'x'+numHeight+'/'+arrSrc[1]);
		
		if ($(this).attr('thumb'))
		{
			$(this).attr('border','0');
			imgClone = $(this);
			$(this).wrap(
				$('<a/>')
					.attr('href','images/rte/max-'+700+'x'+500+'/'+arrSrc[1])
					.attr('title',imgClone.attr('alt'))
					.addClass('lnkThumbnail')
			)
		}
	});

	//THUMBNAIL FOR RTE IMAGES
	$('img[thumb]').parent().fancybox({
		'titleShow'			: true,
		'overlayOpacity'	: 0.8,
		'overlayColor'		: '#000',
		'type'				: 'image'
	});

});

// GENERAL FORM SUBMIT FUNCTION

function formSubmit(objForm)
{
	$bolReturn = formValidation(objForm);
			
	return $bolReturn;
}

// CHECK ALL POSSIBLE VALIDATIONS

function formValidation(objForm)
{
	var isValid = true;

	$(':input', $(objForm)).each(function() 
	{

		if (!formValidationRequieredField(this))
		{
			isValid = false;
			formErrorMessage(this, strFormMsgRequired);
		}
		else if (!formValidationEmail(this))
		{
			isValid = false;
			formErrorMessage(this, strFormMsgEmail);
		}
		else if (!formValidationDate(this))
		{
			isValid = false;
			formErrorMessage(this, strFormMsgDate);
		}
		else if (!formValidationTime(this))
		{
			isValid = false;
			formErrorMessage(this, strFormMsgTime);
		}
		else if (!formValidationCurrency(this))
		{
			isValid = false;
			formErrorMessage(this, strFormMsgCurrency);
		}

	});

	return isValid;
}

// VALIDATION FIELDS FUNCTIONS

function formValidationRequieredField(objField)
{
	var isValid = true;

	if ($(objField).attr('s3required'))
	{
		if ($(objField).attr('type') == 'radio' || $(objField).attr('type') == 'checkbox')
		{
			var isChecked = false;
			$("input[name='"+$(objField).attr('name')+"']").each(function() {
				if ($(this).attr('checked')) 
				{
					isChecked = true;
				}
			});
			if ($("input[name='"+$(objField).attr('name')+"']:first")[0] == $(objField)[0]) 
			{
				isValid = isChecked;
			}
		}
		else if ($(objField).attr('type') == 'select-multiple')
		{
			if (!$(objField).val())
			{
				isValid = false;
			}
		}
		else
		{
			if (jQuery.trim($(objField).val()) == "")
			{
				isValid = false;
			}
		}
	}

	return isValid;
}
function formValidationCPF(objField)
{
	var isValid = true;

	if ($(objField).attr('validation') == 'cpf')
	{
		if ($(objField).val().length != 14)
		{
			isValid = false;
		}
		var regExp = /^[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}\b/;
		if (!regExp.test($(objField).val())) isValid = false;
	}
	return isValid;
}
function formValidationRG(objField)
{
	var isValid = true;

	if ($(objField).attr('validation') == 'rg')
	{
		if ($(objField).val().length != 14)
		{
			isValid = false;
		}
		var regExp = /^[0-9]{2}\.[0-9]{3}\.[0-9]{3}-[0-9]{1}\b/;
		if (!regExp.test($(objField).val())) isValid = false;
	}
	return isValid;
}
function formValidationEmail(objField)
{
	var isValid = true;

	if ($(objField).attr('validation') == 'email')
	{
		var regExp = /^[.a-z0-9_-]{1,}@[.a-z0-9_-]{1,}\.[a-z]{2,3}(\.[a-z]{2,3})?\b/;
		if (!regExp.test($(objField).val())) isValid = false;
	}
	return isValid;
}
function formValidationDate(objField)
{
	var isValid = true;

	if ($(objField).attr('validation') == 'date')
	{
		
		if ($(objField).val().length == 0)
		{
			return true;
		}
							 
		var objRegExp = /^\d{2}(\/)\d{2}(\/)\d{4}$/
		strValue = $(objField).val();
		
		//check to see if in correct format
		if (!objRegExp.test(strValue))
		{
			return false;
		}
		else
		{
			var strSeparator = "/"; 
			var arrayDate = strValue.split(strSeparator); 
			//create a lookup for months not equal to Feb.
			var arrayLookup = { '01' : 31,'03' : 31, 
			'04' : 30,'05' : 31,
			'06' : 30,'07' : 31,
			'08' : 31,'09' : 30,
			'10' : 31,'11' : 30,'12' : 31}
			var intDay = parseInt(arrayDate[0],10); 
			
			//check if month value and day value agree
			if(arrayLookup[arrayDate[1]] != null) 
			{
				if(intDay <= arrayLookup[arrayDate[1]] && intDay != 0)
				{
					return true; //found in lookup table, good date
				}
			}
				
			//check for February (bugfix 20050322)
			var intMonth = parseInt(arrayDate[1],10);
			if (intMonth == 2) 
			{ 
				var intYear = parseInt(arrayDate[2]);
				if (intDay > 0 && intDay < 29) 
				{
					return true;
				}
				else if (intDay == 29) 
				{
					if ((intYear % 4 == 0) && (intYear % 100 != 0) || (intYear % 400 == 0)) 
					{
						// year div by 4 and ((not div by 100) or div by 400) ->ok
						return true;
					}   
				}
			}
		}  
		return false; //any other values, bad date
	}
	return isValid;
}
function formValidationTime(objField)
{
	var isValid = true;

	if ($(objField).attr('validation') == 'time')
	{
		if ($(objField).val().length == 0)
		{
			return true;
		}

		arrTime = $(objField).val().split(':');
		if (arrTime.length != 2)
		{
			isValid = false;
		}
		else if (parseInt(arrTime[0]) > 23)
		{
			isValid = false;
		}
		else if (parseInt(arrTime[1]) > 59)
		{
			isValid = false;
		}
	}
	return isValid;
}
function formValidationCurrency(objField)
{
	var isValid = true;
	return isValid;
}
function formValidationIntegerNonZero(objField)
{
	var isValid = true;

	if ($(objField).attr('validation') == 'integerNonZero')
	{
		if (parseInt($(objField).val()) != $(objField).val())
		{
			isValid = false;
		}
		if (parseInt($(objField).val()) <= 0)
		{
			isValid = false;
		}
	}
	return isValid;
}

// SET ERROR MESSAGE ON A FIELD

function formErrorMessage(objItem, strMessage)
{
	formErrorMessageClear(objItem);
	if ($('#'+$(objItem).attr('spnErrorMessage')).length == 0)
	{

		// CHECK IF TAB EXIST AND SHOW IT
		if ($('.divFormTab').length > 0)
		{
			var objTab = $(objItem);
			do
			{
				var objTab = $(objTab).parent();
			}
			while (!objTab.attr('id').match(/divFormTab/gi) && objTab[0].tagName != 'FORM')

			if (objTab[0].tagName != 'FORM')
			{
				numIndex = objTab.attr('id').split("-")[1];
				$('.divFormTab').tabs('select',numIndex);
				$('.divFormTab').tabs('select',numIndex);
			}
		}
		
		var numLeft = $(objItem).position().left;
		var numTop = $(objItem).position().top;
		
		var objParent = $(objItem).parent();
		
		do 
		{
			var strSpanId = 'spnErrorMessage'+Math.round(Math.random()*10000);
		}
		while ($('#'+strSpanId).length > 0)
		
		if ($(objItem).attr('type') == 'radio' || $(objItem).attr('type') == 'checkbox')
		{
			numTop -= 4;
			$(objItem).parent().css('z-index','100');
	
			$("input[name='"+$(objItem).attr('name')+"']").attr('spnErrorMessage',strSpanId);
			$("input[name='"+$(objItem).attr('name')+"']").bind("focus click", function() {
				formErrorMessageClear(this);
			});
		}
		else if ($(objItem).attr('type') == 'file')
		{
			numTop = 17;
			numLeft = 0;
			objParent = $(objItem).parent().parent();
	
			$(objItem).attr('spnErrorMessage',strSpanId);
			$(objItem).bind("focus click", function() {
				formErrorMessageClear(this);
			});
		}
		else
		{
			$(objItem).attr('spnErrorMessage',strSpanId);
			$(objItem).bind("focus", function() {
				formErrorMessageClear(this);
			});
		}
	
		$(objParent).append(
			$('<span/>')
			.addClass("spnErrorMessage")
			.html(strMessage)
			.attr('id',strSpanId)
			.css('top',numTop+10)
			.css('left',numLeft+10)
			.click(function() {
				formErrorMessageClear(objItem);
			})
		);
	}
}

// CLEAR ERROR MESSAGE ON A FIELD

function formErrorMessageClear(objItem)
{
	$('#'+$(objItem).attr('spnErrorMessage')).remove();
}

// TEXTAREA MAX LENGTH FUNCTION

function formMaxLength(objItem)
{
	numMaxLenght = parseInt(objItem.getAttribute('maxlenght'));

	strText = objItem.value;
	strText = strText.substr(0, numMaxLenght);
	
	objItem.value = strText;
}

