jQuery(document).ready(function() {
	
/* <!-- Global variables */

	var frm = $('#frm_data');	// Data form
	var fId= 'cI'; 				// Fieldset identifier
	var companyType;				// Holder for company type
	var A_benchmarks = {			// Benchmark data: string to preserve precision
		pv: {
			CUR:	'USD',
			CW:	'3.76',
			PC:	'100',
			MP:	'2',
			AC:	'6.0',
			PSC:	'2.0',
			RDC:	'4.0',
			WC:	'0.7',
			SC:	'3.0',
			CE:	'18.0',
			LS:	'20'
		},
		csp: {
			CUR:	'USD',
			CW:	'3.76',
			PC:	'100',
			MP:	'2',
			AC:	'6.0',
			PSC:	'2.0',
			RDC:	'4.0',
			WC:	'0.7',
			SC:	'3.0',
			CE:	'18.0',
			LS:	'20'
		},
		bos: {
			CUR:	'USD',
			CW:	'1.31',
			PC:	'1000000',
			MP:	'2',
			AC:	'6.0',
			PSC:	'2.0',
			RDC:	'4.0',
			WC:	'0.7',
			SC:	'3.0',
			LS:	'20'		
		}
	};

/* Global variables --> */

/* <!-- Global Functions */

	// Show relevant data fields
	var showDataFields = (function(){
		companyType = $.trim($('#cI_type').val().substr(0,3).toLowerCase()); // Trimmed
		if (companyType == '') {
			$('#company-data-fields').hide('fast'); // No selection
		}
		else {
			$('#company-data-fields .field-row').each(function(n){
				var el = $(this);
				if (el.hasClass(companyType)) { $(':input', el).enableMe(); el.show(); } // Enable & show field
				else { el.hide(); $(':input', el).val('').disableMe(); }; // Hide, clear & disable duplicate field
			});
			$('#company-data-fields').show('fast');
		};
		insertBenchmarks(); // Inserts defaults
	});

	// Insert benchmark values on company type change
	var insertBenchmarks = (function(){
		if (typeof(A_benchmarks[companyType]) == 'object') {
			// Iterate
			for (var k in A_benchmarks[companyType]) {
				var v = A_benchmarks[companyType][k];
				var el = $('.field-row.'+companyType+' :input[name=cI_'+k+']'); // Use name not ID
				if (el) {
					el.val(v);
				};
			};
			$('#CW_CUR').text('USD'); // Reset currency label
			$('#cI_CUR').change(); // Sync currency		
		};
	});

	var t1 = (function() {
		$('li#tab_CompanyInformation').click();
	});
	var t2 = (function() {
		$('li#tab_PersonalInformation').click();
	});

/* Global Functions --> */

/* <!-- Form validation */

	// Custom method for multi-part form
	$.validator.addMethod("pageRequired", function(value, element) {
		var $element = $(element);
		function check(index) {
			return fId == index && $(element).parents("fieldset#" + index).length;
		};
		if (check('cI') || check('pI')) {
			return !this.optional(element);
		};
		return "dependency-mismatch";
	}, $.validator.messages.required);
	
	// Change required className to pageRequired to trigger custom method
	$(':input.required', frm).removeClass('required').addClass('pageRequired');
	
	// Create validator object
	var v = frm.validate({
		invalidHandler: function(e, validator) {
			var errors = validator.numberOfInvalids();
			if (errors) {
				var message = "Please complete or correct the highlighted fields below to continue. ";
				if (fId == 'cI') {
					message += "<br />Some fields below require <strong>numeric</strong> input within a sensible unit range.";
				}
				else if (fId == 'pI') {
					 message += "<br />Please be sure to use a valid corporate email address.";
				};
				$("fieldset#" + fId + " .error-message span").html(message);
				$("fieldset#" + fId + " .error-message").show();
			}
			else {
				$("fieldset#" + fId + " .error-message").hide();
			};
		},
		rules: {
			cI_CW: 		{ number: true, min: 0 },
			cI_PC: 		{ number: true, min: 1 },
			cI_MP: 		{ number: true, min: 1 },
			cI_AC: 		{ number: true, min: 0, max: 100 },
			cI_PSC: 		{ number: true, min: 0, max: 100 },
			cI_RDC: 		{ number: true, min: 0, max: 100 },
			cI_WC: 		{ number: true, min: 0, max: 100 },
			cI_SC: 		{ number: true, min: 0, max: 100 },
			cI_CE: 		{ number: true, min: 0, max: 100 },
			cI_LS: 		{ number: true, min: 1 },

			pI_email: 	{ email: true }
		},
		onkeyup: false,
		submitHandler: function(form) {
			if (fId == 'cI') { // tab1 valid
				$('#btn_continue').click(); // Mimic click
			}
			else if (fId == 'pI') {
				/* Form validated */
				form.submit();
			}
			else {
				return false;	
			};
		}
	});
	
/* Form Validation --> */

	// Field hooks
	$('#cI_type').bind('change',showDataFields).change(); // Bind & activate
	$('#cI_CUR').bind('change',function(evt){
		var el 			= $(this);
		var cur_label	= $('#CW_CUR');
		var cur_field	= $('#cI_CW');
		
		var curBefore = cur_label.text();
		var curAfter = el.val();
		
		if (!curAfter) { cur_label.text(''); $('#cI_CW').val(''); } // Empty selection
		else if (curBefore && (curAfter != curBefore) && (cur_field.val())) { // Convert CWp value by currency
			// Convert to dollars
			eval("var curDollars = (cur_field.val() / CVR_"+curBefore+");");
			// Convert to final currency
			eval("var curFinal = (curDollars * CVR_"+curAfter+");");
			cur_field.val(curFinal.toFixed(2));
		};
		cur_label.text(el.val());
	});

	// Button hooks
	$('#btn_continue').bind('click',function(evt){ // Validate tab1
		if (v.form()) {
			$(".error-message").hide(); // Hide all error messages
			t2(); // Show tab2
			fId = 'pI';
		};
	});
	$('#btn_back').bind('click',function(evt){ // No validation needed
		t1();
		fId = 'cI';
	});
			  
	// Prevent manual tabbing
	$('ul.tabs li.tab a').click(function(evt){ return false; });
	
	// Round corners not against gradient backgrounds
	$('.tab-container').corner('8px');
	$('ul.tabs li.tab a').corner('8px tl tr');


});
