
// DOM ready event
jQuery(document).ready(function() {
	Service.ContactSales.getInstance();
});

// Creating Namespace
var Service = {};

/**
 * Module: ContactSales
 */
Service.ContactSales = (function()  {
	function constructor(caller, options) {
		// Private members.
		function onSend() {
			var firstName = jQuery('#salesForm #firstName').val();
			if (jQuery.trim(firstName) == '') {
				jQuery('#salesForm #firstName').focus();
				alert('Please enter your first name.');
				return false;
			}

			var lastName = jQuery('#salesForm #lastName').val();
			if (jQuery.trim(lastName) == '') {
				jQuery('#salesForm #lastName').focus();
				alert('Please enter your last name.');
				return false;
			}

			var company = jQuery('#salesForm #company').val();
			if (jQuery.trim(company) == '') {
				jQuery('#salesForm #company').focus();
				alert('Please enter your company name.');
				return false;
			}

			var position = jQuery('#salesForm #position').val();
			if (jQuery.trim(position) == '') {
				jQuery('#salesForm #position').focus();
				alert('Please enter your job position.');
				return false;
			}

			var phone = jQuery('#salesForm #phone').val();
			if (jQuery.trim(phone) == '') {
				jQuery('#salesForm #phone').focus();
				alert('Please enter your contact number.');
				return false;
			}

			var validEmail = Common.Validate.validateFormat(
				Common.Validate.FORMAT.EMAIL, jQuery('#salesForm #email').val());
			if (!validEmail) {
				jQuery('#salesForm #email').focus();
				alert('Please enter a valid E-mail address.');
				return false;
			}

			var website = jQuery('#salesForm #website').val();
			if (jQuery.trim(website) == '') {
				jQuery('#salesForm #website').focus();
				alert('Please enter a valid website URL.');
				return false;
			}

			var country = jQuery('#salesForm #country').val();
			if (jQuery.trim(country) == '') {
				jQuery('#salesForm #country').focus();
				alert('Please select the country you live in.');
				return false;
			}

			var validInterest = jQuery('#salesForm #interestTypes :radio:checked').length;
			if (validInterest <= 0) {
				jQuery('#salesForm #hardwareBundle').focus();
				alert('Please select your business interest.');
				return false;
			}

			var comment = jQuery('#salesForm #comment').val();
			if (jQuery.trim(comment) == '') {
				jQuery('#salesForm #comment').focus();
				alert('Please give your comments.');
				return false;
			}

			var validCaptcha = Common.Validate.validateFormat(
				Common.Validate.FORMAT.CAPTCHA, jQuery('#salesForm #captchaId').val());
			if (!validCaptcha) {
				jQuery('#salesForm #captchaId').focus();
				alert('Please enter the correct Secure ID you see in the image.');
				return false;
			}

			var param = jQuery('#salesForm').serialize();
			Common.Utils.log("salesForm form: \n" + Common.Utils.tostr(param));
			Common.AJAX.getInstance().postOnBlock("/contact/contactSalesCall.call",
				param, afterSend);

			// force browser ignore the another event at one time because this method binds the event 'onsubmit' and 'onclick'
			return false;
		}

		function afterSend(data, textStatus) {
			Common.Utils.log(Common.Utils.tostr(data));

			if (Common.Utils.isObject(data)) {
				if (data.type == 'INFO') {
					var ignoredNames = new Array();
					ignoredNames.push('country');
					ignoredNames.push('interest');
					jQuery('#salesForm').clearForm(ignoredNames);
					alert(data.message);
				} else {
					// occur exception
					alert(data.message);
				}
			}
		}

		return { // Public members.
			initialize: function() {
				jQuery('#sbSalesLink').removeClass('sidebarNav').addClass('sidebarNavCur');
				jQuery('#salesForm').submit(onSend);
				jQuery('#salesForm #send').click(onSend);
				jQuery('#salesForm #firstName').focus();

				Common.Utils.EXT.loadCountryCodes();
				Common.Utils.loadCaptcha();
			}
		};
	} // constructor end

	// Singleton control code
	var instance;
	return {
		getInstance: function()	{
			if(!instance) {
				instance = constructor();
				instance.initialize();
			}
			return instance;
		}
	}
})();

