

$(function(){
$("#MessageSection2 .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
$('#MessageSection2 .Message_NoMessages').slideUp(300);

//new message
var $message = $('<li class="MessageSection_Message '+(data.IsApproved == "1" ? 'Message_Approved' : 'Message_Unapproved')+'">'
+data.Html
+'</li>');

$message.hide().prependTo('#MessageSection2 .MessageSection_AllMessages').slideDown(300, function(){
$('a[rel*=lightbox]', $message).lightBox({useOverlayInIE:false, fixedNavigation:true, imageRoot:"/cirkuit/includes/"});
});
}

function hideFormContainer(){
var $formContainer = $('#MessageSection2 .MessageSection_Dialog1');
$formContainer.fadeOut(150, function(){
$formContainer.remove();
});

var $overlay = $('#MessageSection2 .MessageSection_DialogOverlay');
$overlay.fadeOut(150, function(){
$overlay.remove();
});
}


function submitForm(form){ //invoked when form validation has passed
var $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();

var $errorContainer = $('.MessageForm_StatusMsg', $form);
$errorContainer.html("Your information has been sent. Thank you.")
}
else { //server said error
//escort.SetStatus(2,result.message); //TODO create a status container?
$(':submit', $form).removeAttr('disabled'); //re-enable the submit button

var $errorContainer = $('.MessageForm_StatusMsg', $form);
$errorContainer.html(result.message);
}
},
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

var $errorContainer = $('.MessageForm_StatusMsg', $form);
$errorContainer.html(result.message);
}
});
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.FormFingerprint();

$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":511},"Message[ImageName]":{"maxlength":31},"Message[IsApproved]":{"maxlength":1},"Message[IPAddress]":{"maxlength":15},"Message[Referrer]":{"maxlength":127},"Message[CustomField1]":{"maxlength":1000},"Message[CustomField2]":{"maxlength":1000},"Message[CustomField3]":{"maxlength":1000},"Message[CustomField4]":{"maxlength":1000},"Message[CustomField5]":{"maxlength":1000},"Message[CustomField6]":{"maxlength":1000},"Message[CustomField7]":{"maxlength":1000},"Message[CustomField8]":{"maxlength":1000},"Message[CustomField9]":{"maxlength":1000},"Message[CustomField10]":{"maxlength":1000},"Message[CustomField11]":{"maxlength":1000},"Message[CustomField12]":{"maxlength":1000},"Message[CustomField13]":{"maxlength":1000},"Message[CustomField14]":{"maxlength":1000},"Message[CustomField15]":{"maxlength":1000},"Message[CustomField16]":{"maxlength":1000},"Message[CustomField17]":{"maxlength":1000},"Message[CustomField18]":{"maxlength":1000},"Message[CustomField19]":{"maxlength":1000},"Message[CustomField20]":{"maxlength":1000}},
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 511 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[Referrer]":{"maxlength":"Number of characters allowed for 'Referrer' exceeds the 127 character limit."},"Message[CustomField1]":{"maxlength":"Number of characters allowed for 'Custom Field 1' exceeds the 1000 character limit."},"Message[CustomField2]":{"maxlength":"Number of characters allowed for 'Custom Field 2' exceeds the 1000 character limit."},"Message[CustomField3]":{"maxlength":"Number of characters allowed for 'Custom Field 3' exceeds the 1000 character limit."},"Message[CustomField4]":{"maxlength":"Number of characters allowed for 'Custom Field 4' exceeds the 1000 character limit."},"Message[CustomField5]":{"maxlength":"Number of characters allowed for 'Custom Field 5' exceeds the 1000 character limit."},"Message[CustomField6]":{"maxlength":"Number of characters allowed for 'Custom Field 6' exceeds the 1000 character limit."},"Message[CustomField7]":{"maxlength":"Number of characters allowed for 'Custom Field 7' exceeds the 1000 character limit."},"Message[CustomField8]":{"maxlength":"Number of characters allowed for 'Custom Field 8' exceeds the 1000 character limit."},"Message[CustomField9]":{"maxlength":"Number of characters allowed for 'Custom Field 9' exceeds the 1000 character limit."},"Message[CustomField10]":{"maxlength":"Number of characters allowed for 'Custom Field 10' exceeds the 1000 character limit."},"Message[CustomField11]":{"maxlength":"Number of characters allowed for 'Custom Field 11' exceeds the 1000 character limit."},"Message[CustomField12]":{"maxlength":"Number of characters allowed for 'Custom Field 12' exceeds the 1000 character limit."},"Message[CustomField13]":{"maxlength":"Number of characters allowed for 'Custom Field 13' exceeds the 1000 character limit."},"Message[CustomField14]":{"maxlength":"Number of characters allowed for 'Custom Field 14' exceeds the 1000 character limit."},"Message[CustomField15]":{"maxlength":"Number of characters allowed for 'Custom Field 15' exceeds the 1000 character limit."},"Message[CustomField16]":{"maxlength":"Number of characters allowed for 'Custom Field 16' exceeds the 1000 character limit."},"Message[CustomField17]":{"maxlength":"Number of characters allowed for 'Custom Field 17' exceeds the 1000 character limit."},"Message[CustomField18]":{"maxlength":"Number of characters allowed for 'Custom Field 18' exceeds the 1000 character limit."},"Message[CustomField19]":{"maxlength":"Number of characters allowed for 'Custom Field 19' exceeds the 1000 character limit."},"Message[CustomField20]":{"maxlength":"Number of characters allowed for 'Custom Field 20' exceeds the 1000 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){
var $formContainer = $('#MessageSection2 .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
var $overlay = $('<div class="MessageSection_DialogOverlay" />').fadeTo(1, 0, function(){
$overlay.appendTo('#MessageSection2');

//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
var $formContainer = $(formContainerHtml);
var $inner = $formContainer.find('.MessageSection_DialogInner');
$formContainer.appendTo('#MessageSection2');

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]': $('#MessageSection2 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
$("#MessageSection2 .Message_ButtonAddNew").click(function(){
var dialogContainer = $("#MessageSection2 .MessageSection_Dialog1");
if(!(dialogContainer).is(":visible")){
showFormContainer();
}
return false;
});


});


