var rennSite;

(function(jQuery){
rennSite = {
	initSite : function() {
		// Set the Accordion Functionality
		jQuery("#accordion").tabs("#accordion div.pane", {tabs: 'h2', effect: 'slide', initialIndex: 0});
	},
	
	// Load Nivo Slider
	loadNivoSlider : function(obj, effect, showButtons, showArrows, slices, speed, interval, pauseOnHover, autoplay) {
		obj.find('img:first').css({zIndex:10000});
		
		jQuery(window).load(function() {
			obj.nivoSlider( {
				effect : effect, // Specify sets like fold, fade, sliceDown.
				slices : slices,
				animSpeed : speed,
				pauseTime : interval,
				startSlide : 0, // Set starting Slide (0 index)
				directionNav : showArrows, // Next & Prev
				directionNavHide : true, // Only show on hover
				controlNav : showButtons, // 1, 2, 3...
				controlNavThumbs : false, // Use thumbnails for control nav
				controlNavThumbsFromRel : false, // Use image rel for thumbs
				keyboardNav : true, // Use left & right arrows
				pauseOnHover : pauseOnHover, // Stop animation while hovering
				manualAdvance : !autoplay, // Force manual transitions
				captionOpacity : 0.8, // Universal caption opacity
				beforeChange : function() {},
				afterChange : function() {},
				slideshowEnd : function() {} // Triggers after all slides have been shown
			});
		});
	}

};

// Renn Contact Form
rennContactForm = {
	emptyNameMessage : 'Please enter your name.',
	invalidEmailMessage : 'Please enter a valid email.',
	emptyMessage : 'Please enter your message.',
	sentMessage : 'Your message was sent, thank you.',
	emptyImageMessage : 'Please answer the question about the image.',
	errorMessage : 'There was an error sending your message',
	actionPath : '',
	imagePath: '',
    imageMessage: 'What color is the ## bicycle on this page?',
	imageAlt: 'What color is this ## bicycle?',
	colors: ['blue','red','green'],
    cindex: -1,
    
	set : function(actionPath, sentMessage, nameError, emailError, messageError, imagePath) {
		this.emptyNameMessage = nameError;
		this.invalidEmailMessage = emailError;
		this.emptyMessage = messageError;
		this.actionPath = actionPath;
		this.sentMessage = sentMessage;
		this.imagePath = imagePath;
		this.setSendButtonClickHandler();
		this.setInputClickHandler();
        this.cindex = Math.floor(Math.random()*(rennContactForm.colors.length));
        jQuery(window).load(function() {
            $index = rennContactForm.cindex;
            $image = jQuery("#cf_image");
            $message = rennContactForm.imageMessage.replace('##',rennContactForm.colors[$index]);
            $alt = rennContactForm.imageAlt.replace('##',rennContactForm.colors[$index]);
            $src = rennContactForm.imagePath.replace('##',$index);
            $image.attr('src',$src);
            $image.attr('alt',$alt);
            jQuery('#cf_imageanswerlabel').text($message);
            jQuery("#cf_image").show();
            jQuery('#cf_imageitems').show();
            jQuery('#send_button').show();
        });
	},

	// Send Button Click Event
	setSendButtonClickHandler : function() {
		jQuery("#send_button").click(function(event) {
			event.preventDefault();
			valid = true;

			// Remove previous validation error messages and warning styles
			jQuery("#cf_name").removeClass('invalid');
			jQuery("#cf_email").removeClass('invalid');
			jQuery("#cf_message").removeClass('invalid');
			jQuery("#cf_imageanswer").removeClass('invalid');
			jQuery('#cf_notice').hide().html('');

			// Verify whether the name field is empty
			var cf_name = jQuery("#cf_name").val();
			if (cf_name == '' || cf_name == null) {
				jQuery("#cf_name").addClass('invalid');
				valid = false;
				jQuery('#cf_notice').show().append('<p>' + rennContactForm.emptyNameMessage + '</p>');
			}

			// Verify whether the inserted email address is valid
			var cf_email = jQuery("#cf_email").val();
			if (!rennContactForm.isValidEmailAddress(cf_email)) {
				jQuery("#cf_email").addClass('invalid');
				valid = false;
				jQuery('#cf_notice').show().append('<p>' + rennContactForm.invalidEmailMessage + '</p>');
			}

			// Verify whether the message is empty
			var cf_message = jQuery("#cf_message").val();
			if (cf_message == '' || cf_message == null) {
				jQuery("#cf_message").addClass('invalid');
				valid = false;
				jQuery('#cf_notice').show().append('<p>' + rennContactForm.emptyMessage + '</p>');
			}

			// Verify whether the message is empty
			var cf_imageanswer = jQuery("#cf_imageanswer").val();
			if (cf_imageanswer == '' || cf_message == null) {
				jQuery("#cf_imageanswer").addClass('invalid');
				valid = false;
				jQuery('#cf_notice').show().append('<p>' + rennContactForm.emptyImageMessage + '</p>');
			}
			
			if (valid) {
				jQuery('#cf_notice').show().html('<div class="contact_loader"></div> Sending your message...');
				//var dataString = 'name=' + cf_name + '&email=' + cf_email + '&message='+ cf_message;
				var data = { name: cf_name,
				         email: cf_email, 
				         message: cf_message,
				         imageid: rennContactForm.cindex,
				         imageanswer: cf_imageanswer};
				jQuery.ajax( {
					type : "POST",
					url : rennContactForm.actionPath,
					data : data,
					success : function(data) {
                        if('ANSWER!'== data)
                        {
                            jQuery("#cf_imageanswer").attr('value','');
                            jQuery("#cf_notice").html('<div class="check"></div>Invalid answer.');
                            return;
                        } else if(data == 'ERROR!' || data == 'FAIL!') {
                            jQuery("#cf_notice").html('<div class="check"></div>The system failed to send the message.');
                            return;
                        }
                        
						jQuery("#contact_form").each(function() {
							this.reset();
						});
						jQuery('#cf_notice').show().html('<div class="check"></div>' + rennContactForm.sentMessage);
						setTimeout(function() {
							jQuery('#cf_notice').fadeOut(500, function() {
								//jQuery(this).html('').show();
							});
						}, 3000);
					}
				});
			}
		});
	},

	setInputClickHandler : function() {
		jQuery('.form_input').click(function() {
			jQuery(this).removeClass('invalid');
		});

		jQuery('.form_input').live('keydown', function(e) {
			var keyCode = e.keyCode || e.which;

			if (keyCode == 9) {
				var index = jQuery('.form_input').index(jQuery(this));
				jQuery('.form_input').eq(index + 1).removeClass('invalid');
			}
		});
	},

	// Check if Valid Email
	isValidEmailAddress : function(emailAddress) {
		var pattern = new RegExp(
				/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
		return pattern.test(emailAddress);
	}		
	
};
}(jQuery));
