

	$(function(){
		$(".MessageSection_Message a[rel*=lightbox]").each(function(){ //attach to .each so lightbox doesnt group images when in slideshow view. otherwise lightbox would get f'd as we add/remove images
			$(this).lightBox({useOverlayInIE:false, fixedNavigation:true, imageRoot:"/cirkuit/includes/"});
		});

		//add our regex validation rule
		$.validator.addMethod("regex", function(value, element, param) {
			var regex = new RegExp(param, "i");
		    return this.optional(element) || (regex.test(value) !== false);
		}, "Invalid value.");

		//data needs keys: MessageId, IsApproved, Html
		function showMessage(data){ //invoked after the form has been validated and submit to the server
			$('.Message_NoMessages').slideUp(300);

			//new message
			var $message = $('\
				<li class="MessageSection_Message '+(data.IsApproved == "1" ? 'Message_Approved' : 'Message_Unapproved')+'">\
				'+data.Html+'\
				\
			');

			$message.hide().prependTo('.MessageSection_AllMessages').slideDown(300, function(){
				$('a[rel*=lightbox]', $message).lightBox({useOverlayInIE:false, fixedNavigation:true, imageRoot:"/cirkuit/includes/"});
			});
		}

		function hideFormContainer(){
			$formContainer = $('.MessageSection_Dialog1');
			$formContainer.fadeOut(150, function(){
				$formContainer.remove();
			});

			$overlay = $('.MessageSection_DialogOverlay');
			$overlay.fadeOut(150, function(){
				$overlay.remove();
			});
		}

		function submitForm(form) { //invoked when form validation has passed
			$form = $(form);
	   		$form.ajaxSubmit({
				dataType:'json',
				type:'POST',
				iframe: true,
				beforeSubmit: function(a,f,o) {
					$(':submit', $form).attr('disabled','disabled'); //disable the submit button
					//escort.SetStatus(1,"Saving..."); //TODO create a status container?
				},
				success:function(result){
					//FORM SUBMITTED CALLBACK
					if(result.success){ //server said success
													//escort.SetStatus(0,result.message); //TODO create a status container?
							showMessage(result.fields);
														hideFormContainer();
																		}
					else { //server said error
						//escort.SetStatus(2,result.message); //TODO create a status container?
						$(':submit', $form).removeAttr('disabled'); //re-enable the submit button
					}
				},
				error:function(XMLHttpRequest, textStatus, errorThrown){
					if(window.console) console.log(errorThrown);
					//escort.SetStatus(2,'Error submitting request.'); //TODO create a status container?
					$(':submit', $form).removeAttr('disabled'); //re-enable the submit button
				}
			});
			return false;
		}
		
		function attachFormSubmitHandler($formContainer){
			//VALIDATE COMMENT FORM
			$.validator.addClassRules('inputRequired', {required: true});
			var $theForm = null;
			if($formContainer[0].nodeName.toLowerCase() == "form") $theForm = $formContainer;
			else $theForm = $("form", $formContainer);
			
			$theForm.validate({
							rules: {"Message[MessageSectionId]":{"required":true},"Message[Name]":{"maxlength":63},"Message[Phone]":{"maxlength":15,"regex":"^([0-9]{1,3}[-. ]?)?\\(?[0-9]{3}\\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$"},"Message[Email]":{"maxlength":127,"regex":"^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$"},"Message[Website]":{"maxlength":1023},"Message[ImageName]":{"maxlength":31},"Message[IsApproved]":{"maxlength":1},"Message[IPAddress]":{"maxlength":15},"Message[CustomField1]":{"maxlength":255},"Message[CustomField2]":{"maxlength":255},"Message[CustomField3]":{"maxlength":255},"Message[CustomField4]":{"maxlength":255},"Message[CustomField5]":{"maxlength":255},"Message[CustomField6]":{"maxlength":255},"Message[CustomField7]":{"maxlength":255},"Message[CustomField8]":{"maxlength":255},"Message[CustomField9]":{"maxlength":255},"Message[CustomField10]":{"maxlength":255}},
				messages: {"Message[MessageSectionId]":{"required":"'MessageSectionId' field is required."},"Message[Name]":{"maxlength":"Number of characters allowed for 'Name' exceeds the 63 character limit."},"Message[Phone]":{"maxlength":"Number of characters allowed for 'Phone' exceeds the 15 character limit.","regex":"Invalid phone number format."},"Message[Email]":{"maxlength":"Number of characters allowed for 'Email Address' exceeds the 127 character limit.","regex":"Invalid email address format."},"Message[Website]":{"maxlength":"Number of characters allowed for 'Website' exceeds the 1023 character limit."},"Message[ImageName]":{"maxlength":"Number of characters allowed for 'Upload an Image' exceeds the 31 character limit."},"Message[IsApproved]":{"maxlength":"Number of characters allowed for 'Approved to display on website' exceeds the 1 character limit."},"Message[IPAddress]":{"maxlength":"Number of characters allowed for 'Submitted by IP Address' exceeds the 15 character limit."},"Message[CustomField1]":{"maxlength":"Number of characters allowed for 'Custom Column 1' exceeds the 255 character limit."},"Message[CustomField2]":{"maxlength":"Number of characters allowed for 'Custom Column 2' exceeds the 255 character limit."},"Message[CustomField3]":{"maxlength":"Number of characters allowed for 'Custom Column 3' exceeds the 255 character limit."},"Message[CustomField4]":{"maxlength":"Number of characters allowed for 'Custom Column 4' exceeds the 255 character limit."},"Message[CustomField5]":{"maxlength":"Number of characters allowed for 'Custom Column 5' exceeds the 255 character limit."},"Message[CustomField6]":{"maxlength":"Number of characters allowed for 'Custom Column 6' exceeds the 255 character limit."},"Message[CustomField7]":{"maxlength":"Number of characters allowed for 'Custom Column 7' exceeds the 255 character limit."},"Message[CustomField8]":{"maxlength":"Number of characters allowed for 'Custom Column 8' exceeds the 255 character limit."},"Message[CustomField9]":{"maxlength":"Number of characters allowed for 'Custom Column 9' exceeds the 255 character limit."},"Message[CustomField10]":{"maxlength":"Number of characters allowed for 'Custom Column 10' exceeds the 255 character limit."}},
				//showErrors: showFormValidationErrorText, //TODO put this somewhere. maybe escort is ok.
				errorClass: 'invalidFormInput',
				//errorPlacement: function(){}, //override default to not place any errors. we manually do this into escort with our showErrors callback
				submitHandler: submitForm
			});
		}
		
		
		function showFormContainer(messageId){
			$formContainer = $('.MessageSection_Dialog1');
			if($formContainer.length > 0){ return; }


			function formContainerLoaded(formContainerHtml){
				//overlay for ie crap (so you cant click behind the dialog). overlay needs a background to make this work.
				if (!($.browser.msie && $.browser.version < 7.0)) { //though ie6 overlay doesnt always work right
					$overlay = $('<div class="MessageSection_DialogOverlay" />').fadeTo(1, 0, function(){
						$overlay.appendTo('body');

						//ie6 fixed position fix
						if ($.browser.msie && $.browser.version < 7.0) {
							//requires fixed.js (ie6-fixed-position.js) to fix css "position:fixed;"
							if (fixed_bind != undefined) fixed_bind($overlay[0]);
						}
						$overlay.fadeTo(300, .3);
					});
				}

				//build the form
				$formContainer = $(formContainerHtml);
				$inner = $formContainer.find('.MessageSection_DialogInner');
				$formContainer.appendTo('body');

				var finalWidth = $inner.width();
				var finalHeight = $inner.height();
				$inner.css({width:'100px', height:'100px'});

				//ie6 fixed position fix
				if($.browser.msie && $.browser.version < 7.0){
					//requires fixed.js (ie6-fixed-position.js) to fix css "position:fixed;"
					if (fixed_bind != undefined) {
						fixed_bind($formContainer[0]);
						fixed_bind($inner[0]);
					}

				}

				$inner.animate({width:finalWidth, height:finalHeight}, 250, function(){
					$(this).height('auto');
				});

				//ATTACH LIGHTBOX TO FORM
				$('a[rel*=lightbox]', $formContainer).lightBox({useOverlayInIE:false, fixedNavigation:true, imageRoot:"/cirkuit/includes/"});

				attachFormSubmitHandler($formContainer);

				//CLOSE NEW COMMENT FORM
				$('input[name=closeMessage], .MessageSection_DialogX', $formContainer).click(function(){
					//escort.SetStatus(0); //hide any error messages or etc from the form container //TODO
					hideFormContainer();
				});
			}

			//GET FORM HTML VIA AJAX
			//escort.SetStatus(1, "Loading...") //TODO
			$.get('/cirkuit/cms/include/contentTypes/MessageSection/frontend/ajax', {
					action:'getMessageForm',
					messageId:messageId,
					referrer:window.location.pathname,
					'MessageSection[MessageSectionId]': $('input[name=\'MessageSection[MessageSectionId]\']').val()
				},
				function(data, textStatus){
					if(data){
						//escort.SetStatus(0); //TODO
						formContainerLoaded(data);
					}
					else{ //error?
						//escort.SetStatus(2, 'An error has occurred. Please try again.') //TODO
					}
				}, 'html');
		}
		
		//ADD NEW COMMENT CLICK
		$(".Message_ButtonAddNew").click(function(){
			var dialogContainer = $(".MessageSection_Dialog1");
			if(!(dialogContainer).is(":visible")){
				showFormContainer();
			}
			return false;
		});


	});
	
