/*

	Dependencies:
		jQuery 1.5
		jquery.boxheight.js (auth. RQ)
		jquery.placeholder.js (also auth. RQ)
		PIE - the Internet Explorer shim library
		jquery.tcsvalidate.js (super light-weight form validator, auth, ahem, RQ)

*/
(function($, undefined){
	
	$(function(){
	    $('.slideShow').cycle();
		$('.boxes div, .inside .display').equalHeight();
		$('.refer input[type=text], .refer textarea').placeholder();
	});
	
	$.tcsValidate.messages.required = "Please fill in all the fields"; // Override the default required message for validation
	
	$(function() {	
		var form = '.refer'
		  , messageBox = $('<p class="message">&nbsp;</p>')
							.appendTo(form)
							.hide()
							.bind('send:message', function(e, status, message) {
								$this = $(this);
								$this.slideUp(400, function(){
									$this.removeClass('success error')
										 .addClass(status ? 'success' : 'error')
										 .css('width', $(this).parent().width()) // Setting the width fixes jumping animation bug in chrome/FF
									     .html(message)
									     .slideDown();
								});
							});
		$(form).submit(false);
		$(form).submit(function(e){
			var self = this
			  , formData = $(this).serialize();
			$.ajax(self.action, {
				type: 'POST',
				data: formData,
				dataType: 'text',
				context: messageBox, // defines scope of callbacks
				beforeSend: function() {
					var result = $(self).find('input').tcsValidate();
					var message;
					if (!result.valid) {
						message = result.message.join('<br/>');
						this.trigger('send:message', [false, message]);
						$(self).find('input').blur();
						return false;
					}
				},
				success: function(response) {
					message = response.split(', ');
					status = parseInt(message.shift());
					message = message.join(', ');
					
					this.trigger('send:message', [status, message]);
					$(self).find('input').blur();
				}
			});
			e.preventDefault();
		});
		
		$('#description').keydown(function(evt){
			var charCode = typeof evt.which == "number" ? evt.which : evt.keyCode;
			if (charCode && charCode > 31) {
				var maxLength = this.className.match(/maxLength-[\d]+/);
				maxLength = maxLength ? maxLength[0].split('-')[1] : '';
				maxLength = parseInt(maxLength);
				
				if (maxLength && this.value.length >= maxLength) {
					return false;
				}
			}
		});

	});
	
})(jQuery);
