﻿
jQuery(document).ready(function($) {

    jQuery('.liveHelp-go').click(function(e) {
		e.preventDefault();
		
		jQuery('#liveChatBox').modal({ onOpen: modalOpen,
			onClose: modalClose,
			onShow: modalShow,
			closeClass: 'close-modalbox'
		});				
	});
	
	if (jQuery.modal != null) {
		jQuery.extend(jQuery.modal.defaults, {
			closeClass: 'close-modalbox',
			closeHTML: '<a class="modal-closeimg" title="Close"></a>'
		});
	}
	
	function modalOpen(dialog) {
	    
		dialog.overlay.fadeIn('slow', function() {
			dialog.container.fadeIn('slow', function() {
				dialog.data.fadeIn('slow');
			});
		});
	}

	function modalClose(dialog) {
		dialog.container.fadeOut('slow', function() {
			dialog.overlay.fadeOut('slow', function() {
				jQuery.modal.close();
			});
		});
	}
	
	liveChatModalClose = function() {
	    var dialog = $("#liveChatBox");
		dialog.container.fadeOut('slow', function() {
			dialog.overlay.fadeOut('slow', function() {
				jQuery.modal.close();
			});
		});
	}

	function modalShow(dialog) {
		var liveChatUrl = $("#liveChatUrl").val();
		var liveChatContent = jQuery('#liveChatBox .livechat-form').html();
		var parentElement = ".simplemodal-data";
		jQuery('#liveChatBox .livechat-form').empty();
		jQuery("<form>").attr({id: "liveChatForm", 
						  name:"liveChatForm", 
						  method:"post",
						  target:"chatWindow", 
						  action:liveChatUrl
						 })
						.append(liveChatContent)
						.appendTo("#liveChatBox .livechat-form");
		
	    dialog.data.find('#sendLiveChat').click(function() {
	        if(validateLiveChatForm('liveChatForm', parentElement)){
                if (typeof (s) != 'undefined') {
		           cms.onlineChatTracking();
		        }
		        jQuery('#p_cats').val($('#lvl1MenuFilterForm_10').val());
		        appendQueryParamsToLiveChatUrl('liveChatForm', parentElement);
		        window.open('','chatWindow','toolbars=0, width=630, height=500');		        
		        jQuery('#liveChatForm').submit();
		        jQuery.modal.close();
            }	        
	    });	    		
	}
	
	function appendQueryParamsToLiveChatUrl(formId, parentElement) {
	   	var firstName = encodeURIComponent(jQuery(parentElement).find("#" + formId).find('#c_fname').val());
		var lastName = encodeURIComponent(jQuery(parentElement).find("#" + formId).find('#c_lname').val());
		var emailAddress = encodeURIComponent(jQuery(parentElement).find("#" + formId).find('#c_email').val());
		var categoryValue = encodeURIComponent(jQuery(parentElement).find("#" + formId).find('#lvl1MenuFilterForm_10').val());
		
		jQuery("#" + formId).attr('action', $("#liveChatUrl").val() + "/first_name/" + firstName + "/last_name/" + lastName + "/email/" + emailAddress + "/cat/" + categoryValue);
	}
		
	function validateLiveChatForm (formId, parentElement) {
		var firstName = jQuery(parentElement).find("#" + formId).find('#c_fname').val();
		var lastName = jQuery(parentElement).find("#" + formId).find('#c_lname').val();
		var emailAddress = jQuery(parentElement).find("#" + formId).find('#c_email').val();
		var categoryValue =jQuery(parentElement).find("#" + formId).find('#lvl1MenuFilterForm_10').val();

		var message = '';
		var errorMessageSpanStart = '<span>';
		var errorMessageSpanEnd	='</span>';
		
		if (!firstName) {
			message += errorMessageSpanStart;
			message +='* Your first name is required.';
			message += errorMessageSpanEnd;
		}	

		if (!lastName) {
			message += errorMessageSpanStart;
			message +='* Your last name is required.';
			message += errorMessageSpanEnd;
		}
		
		if (!emailAddress) {
			message += errorMessageSpanStart;
			message += '* Your email address is required.';
			message += errorMessageSpanEnd;
		}
		else {
			if (!validateEmail(emailAddress)) {
				message += errorMessageSpanStart;
				message += '* Please enter a valid email address.';
				message += errorMessageSpanEnd;
			}
		}
		
		if(!categoryValue || parseInt(categoryValue) < 1) {
			message += errorMessageSpanStart;
			message +='* Please select a category.';
			message += errorMessageSpanEnd;
		}
		
		if (message.length == 0) {
			return true;
		}
		else {
			showError(message);
			return false;
		}
	}

	function validateEmail(emailAddress) {
		var at = emailAddress.lastIndexOf("@");

		// Make sure the at (@) sybmol exists and  
		// it is not the first or last character
		if (at < 1 || (at + 1) === emailAddress.length)
			return false;

		// Make sure there aren't multiple periods together
		if (/(\.{2,})/.test(emailAddress))
			return false;

		// Break up the local and domain portions
		var local = emailAddress.substring(0, at);
		var domain = emailAddress.substring(at + 1);

		// Check lengths
		if (local.length < 1 || local.length > 64 || domain.length < 4 || domain.length > 255)
			return false;


		// Make sure local and domain don't start with or end with a period
		if (/(^\.|\.$)/.test(local) || /(^\.|\.$)/.test(domain))
			return false;

		// Check for quoted-string addresses
		// Since almost anything is allowed in a quoted-string address,
		// we're just going to let them go through
		if (!/^"(.+)"$/.test(local)) {
			// It's a dot-string address...check for valid characters
			if (!/^[-a-zA-Z0-9!#$%*\/?|^{}`~&'+=_\.]*$/.test(local))
				return false;
		}

		// Make sure domain contains only valid characters and at least one period
		if (!/^[-a-zA-Z0-9\.]*$/.test(domain) || domain.indexOf(".") === -1)
			return false;

		return true;
	}
		
	function showError(msg){
		jQuery('#liveChatFields .email-errormessage')
			.html(msg);
	}
});