/**
 * Replaces "string" template placeholder vars with corresponding arg number
 * E.g. format('My name is {1}', 'Ryan') would return 'My name is Ryan'
 */ 
function format(string) 
{
    var args = arguments;
    var pattern = new RegExp('{([1-' + arguments.length + '])}','g');
    return String(string).replace(pattern, function(match, index) { return args[index]; });
}
 
/**
 * Looks up the "subject" field in your $form (jQuery selector for target form) and using 
 * the supplied template, replaces each field name with its value from the form.
 *
 * E.g. {enquiryType} Enquiry: {firstName} {lastName} ({email}) will replace  the value
 * for each of these field names with their values.
 * 
 */
function setSubject($form)
{
    // if no subjeetc field found, abort (GIMP will use default subject based on Type)
    if($form.find('input[name="subject"]').length == 0) { return; }
 
    var $subject = $form.find('input[name="subject"]');
    var matches = $subject.val().match(/\{([a-zA-Z0-9])+\}/g);
 
    // If no tokens found, abort
    if(matches == null) { return; }
 
    jQuery.each(matches, function(i) 
    {
        var fieldName = matches[i].match(/[a-zA-Z0-9]+/)[0];
        var $field = $form.find(format('input[name="{1}"]', fieldName));
        var fieldValue = (typeof $field.val() != 'undefined') ? $field.val() : '';
        $subject.val($subject.val().replace(matches[i], fieldValue));
    });
}

/*
*@ OVERRIDING FCL GIMP SETTINGS THIS IS A WORK SHOULD BE ADDED AS HIDDEN FIELDS
*/ 
 
;(function()
{
	$ = jQuery;
	
	var $enquiryForm = $('#enquiryForm');

    FCL.GIMP.settings.forwardUrl = '/enquiry/thankyou';
    FCL.GIMP.settings.failUrl = '/enquiry/fail';
    FCL.GIMP.settings.brand = 'TA';
	

	$('#todaysDate').val(TA.getTodaysDate());
	
	
	$(document).ready(function()
	{   
		//Populate referrer URL
	    $enquiryForm.find('input[name="refUrl"]').val(window.location.href);
		$('.unbuttonify').attr("disabled", "");
	});
	
	
	$('#enquiryForm').validate(
	{
		rules: 
		{
			departFrom: 'required',
			destination: 'required',
			firstName: 'required',
			lastName: 'required',
			postCode: 
			{
			    required: true,
			    digits: true,
                rangelength:[4,4]
		    },
			email: 
			{
				required: true,
				email: true
			},
			phoneNumber: 
			{
				required: true,
				minlength: 8,
                maxlength: 10
			},
			
			receiveOffers: 
			{
				required: true
			}
		},
		
		messages: 
		{
			
			postCode:
            {
              rangelength: 'Please enter a 4 digit postcode'  
            },
			email: 
			{
				
				email: 'Please enter a valid email address'
			},
			phoneNumber: 
			{
				required: 'Phone number required',
                maxlength: 'Must be less then 10 characters',
                minlength: 'Must be more then 8 characters'
			},
			receiveOffers: 
			{
				required: 'Please indicate whether or not you would like to receive special future offers'
			}
		},
        
        submitHandler: function(form)
        {
			
			if($enquiryForm.find('input[name=emailNewsletter]').is(':checked'))
        	{
        		var firstName = $enquiryForm.find('input[name=firstName]').val();
        		var lastName = $enquiryForm.find('input[name=lastName]').val();
        		var fullName = firstName + ' ' + lastName;
	            var email = $enquiryForm.find('input[name=email]').val();
	            var phone = $enquiryForm.find('input[name=phoneNumber]').val();
	            var postCode = $enquiryForm.find('input[name=postCode]').val();
	            var source = '10008'; //website see doc for more source id's
				var key = 'b9omw9gk110f28769370bcd5564f5870f';
				
				$.ajax({
					url: '/fcl/js/fcl/fcl.xcomm.js?v=5',
					dataType: 'script',
					async:false,
					success:function(data){  
						FCL.UTIL.xcommSubscribe(email,fullName,phone,postCode,source,key);
					}
				 });
        	}

        	// Auto create and populate the psuedo field to send keyword through to GIMP Kyle
			var psuedoValue = '';
			
			if (TA.cookie.psuedo == null || TA.cookie.psuedo == "") {
				//psuedoValue = "TA" + postcodeToPsuedo[$enquiryForm.find('#postCode').val()];
			}
			else
			{
				psuedoValue = TA.cookie.psuedo;
			}
			
			$enquiryForm.find('input#brand').after('<input type="hidden" name="psuedo" value="' + psuedoValue + '">');
			
            // Process everything else
			
			if ($enquiryForm.find('#firstName').val()=="") {
                var strSubject = 'General Enquiry: ' + $enquiryForm.find('#fullName').val() + ' ' + $enquiryForm.find('#emailAddress').val();
			} else {
                var strSubject = 'General Enquiry: ' + $enquiryForm.find('#firstName').val() + ' ' + $enquiryForm.find('#lastName').val() + ' ' + $enquiryForm.find('#emailAddress').val();
			}			
			
            $('.unbuttonify').attr("disabled", "disabled");
            
            $enquiryForm.find('input[name="Subject"]').val(strSubject);
                    
                        
            var gimpUrl = FCL.GIMP.getUrl($enquiryForm);
             
            window.location = 'http://'+TA.env+'.travel-associates.com.au/sendEnquiry?' + gimpUrl;
            
            return false

        }	
        
	});
})();
