/**
 * @author dharris
 */

	var domain = "vmware.com"; var at = "@";
	var containers;
	var iwouldlike = "";
	/*
	 * Department Values: department - prod_request Request a Product Feature
	 * feature-request@vmware.com - prod_purchase Purchase a Product
	 * sales@vmware.com - support_contract_purchase Purchase a Support Contract
	 * partnerrenewals@vmware.com - feedback_kb Provide Feedback on the
	 * Knowledge Base kcs-core@vmware.com - desktop_services Ask a question
	 * about Workstation/Fusion desktop-services@vmware.com - feedback_website
	 * Provide Feedback on the Website customer_service@vmware.com -
	 * tap_alliance Become part of the Technology Alliance Program (TAP)
	 * tapalliance@vmware.com - help_licensing Get Help on a Licensing Issue
	 * qmanflex@vmware.com - help_product Get Product Help
	 * customer_service@vmware.com - mydata_update Update My Data in your
	 * Systems customer_service@vmware.com - login_assistance Get Assistance
	 * Logging In customer_service@vmware.com - inquire_training_class Inquire
	 * About a Training Class education@vmware.com - inquire_tech_certifications
	 * Inquire About VMware Technical Certification certification@vmware.com
	 */
			
	jQuery(document).ready(function(){
		var departments = Array('prod_request', 'prod_purchase', 'support_contract_purchase', 'feedback_kb', 'desktop_services', 'feedback_website', 
			'tap_alliance', 'help_licensing', 'help_product', 'mydata_update', 'login_assistance', 'inquire_training_class', 'inquire_tech_certifications');
		containers = jQuery('div#dyn_section div');
		var currSelected = jQuery('select#wouldliketo').val();
		var domainvar = getvar("domain", geturl())
		var departmentvar = '';
		departmentvar = getvar('department', geturl());
		var labelvar = getvar('label', geturl());
		
		if(departmentvar == '') {
			// window.location = '/company/contact.html';
		}
		
		if(departmentvar == 'vi-hotline') {
			window.location = '/support/contacts/';
		}
		
		if(labelvar != '') {
			if(domainvar == "") {
				domainvar = domain;
			}
			
			var rec = '';
			
			
			if(in_array(departmentvar, departments)) {
				iwouldlike = departmentvar;
								
				var em = '<div>'
					+ '<div class="content-item">'
					+ showTextRow('Recipient:', labelvar, 1)
					+ '</div>'					
					+ '</div>';

				jQuery('#cat_selection').html(em);
				showProductRequest(departmentvar);
			} else {
				jQuery('#cat_selection').html(rec);
				jQuery('#cat_selection').css("border-bottom", "none");
				if (isValidEmail(departmentvar)) {
					iwouldlike = departmentvar;
				} else {
					departmentvar = iwouldlike = departmentvar + at + domainvar;
				}
				rec += showHiddenEmail(departmentvar);				
				rec += showTextRow('Recipient:', departmentvar);
				rec += showSummaryMessage('Summary', 'input_subject', 'Details', 'respondents_comments');
					// + showSummaryInput('Summary', 'input_subject')
					// + showDetailsTextArea('Details', 'input_message');
				jQuery('#dyn_section').html(rec);
				
				/*
				 * rec += '<table id="product_table">'; rec += '<tr>' +
				 * showTextRow('Recipient:', labelvar, 1) + '</tr>'; rec += '</table>';
				 * jQuery('#dyn_section').html(rec);
				 */
			}
								
			
		} else if(departmentvar != '') {
			var inDepartments = false;
			if(in_array(departmentvar, departments)) {
				inDepartments = true;		
			}			
			
			if(inDepartments == true) {
				currSelected = iwouldlike = departmentvar;				
				jQuery('select#wouldliketo #' + departmentvar).attr('selected', 'selected');
				var requestn = getRequestName(currSelected);
				var hiddent = showHiddenField('wouldliketo', requestn);
				var em = showTextRow('I would like to', requestn);
				em += hiddent;
				jQuery('#cat_selection').html(em);
				
				/*
				 * var em = '<table id="product_table">' em += '<tr>' +
				 * showTextRow('I would like to', requestn) + '</tr>'; em += '</table>';
				 * em += hiddent;
				 */
				jQuery('#cat_selection').html(em);
				showProductRequest(currSelected);
			} else {
				if(domainvar == "") {
					domainvar = domain;
				}
				if (isValidEmail(departmentvar)) {
					iwouldlike = departmentvar;
				} else {
					departmentvar = iwouldlike = departmentvar + at + domainvar;
				}
				
				var em = '';
				jQuery('#cat_selection').html(em);
				jQuery('#cat_selection').css("border-bottom", "none");
				em = showHiddenEmail(departmentvar)
				em += showTextRow('Recipient:', departmentvar);
					
				jQuery('#dyn_section').html(em);
			}			
		} else {			
			jQuery('#cat_selection').css("display", "none");
			showProductRequest(currSelected);
					
		}
		showSummaryMessage('Summary', 'input_subject', 'Details', 'respondents_comments');				
	});
		
	function checkFields(form) {
		var required = Array('firstName','lastName','company','email','country');
		var alertsay = new Array();
/*
		if (readCookie("contact_submit") == "1") {
			alert("We're sorry, you have already submitted a message and it has been delivered. To prevent abuse, we have implemented rate limiting on this contact form. Please try again later. Thank you");
			return false;
		}
	*/	
		jQuery('.content-container div').removeClass("box-selected");
	    jQuery('.content-container .form-item-error').hide();

	    if (form.firstName.value == "" || form.firstName.value == null) {
	        alertsay.push('firstName');
	    }
	    
	    if (form.lastName.value == "" || form.lastName.value == null) {
	        alertsay.push('lastName');
	    }
	    
	    if (form.businessPhone.value == "" || form.businessPhone.value == null) {
	        alertsay.push('businessPhone');
	    }
	    
	    if (checkInternationalPhone(form.businessPhone.value) == false) {
	        alertsay.push('businessPhone');
	    }
	    
	    if (form.email.value == "") {
	        alertsay.push('email');
	    }
	    	    
	    if(!isValidEmail(form.email.value)) {
	    	alertsay.push('email');
	    }
	    
	    if (form.company.value == "") {
	        alertsay.push('company');
	    }
	    
	    if (form.country.value == "" || form.country.value == "Select One") {
	        alertsay.push('country');
	    }
	    
	    switch(iwouldlike) {
		case 'prod_request':
		case 'prod_purchase':
		case 'support_contract_purchase':
		case 'help_licensing':
		case 'help_product':
			var product = jQuery('#input_product option:selected').val();					
			if(checkValue(product) == false) {
				alertsay.push('input_product');
				//jQuery('#input_product').focus();
				//return false;
			}					
			break;
		case 'feedback_kb':
			var articleid = jQuery('#input_articleid').attr('value');
			if(checkValue(articleid) == false) {
				alertsay.push('input_articleid');
				//jQuery('#input_articleid').focus();
				//return false;
			}
			break;
		case 'feedback_website':
			var inputurl = jQuery('#input_url').attr('value');
			if(checkValue(inputurl)== false) {
				alertsay.push('input_url');
				//jQuery('#input_url').focus();
				//return false;
			}
			break;
	}
		
	var inputsummary = jQuery('#input_subject').attr('value');			
	if(checkValue(inputsummary) == false) {
		alertsay.push('input_subject');
		//jQuery('#input_subject').focus();
		//return false;
	}
		
	var inputdetails = jQuery('#respondents_comments').attr('value');						
	if(checkValue(inputdetails, '')== false) {
		alertsay.push('respondents_comments');
		//jQuery('#input_message').focus();
		//return false;
	}
	    
	 	
		if(checkValue(iwouldlike, 'No destination has been set.')== false) {
			return false;
		}
		
		if (alertsay.length > 0) {
	        jQuery.each(alertsay, function(){
	            myName = this;
	            myPick = ".content-container #con_" + this;
	            myError = ".content-container .form-item-error#error_" + this;
	            jQuery(myPick).addClass("box-selected");
	            jQuery(myError).html(getErrorMessage(myName));
	            jQuery(myError).show();
	        });
	        
	        return false;
	    }
		
		
		
		/*
		 * for(i=0;i<required.length;i++) { if (eval('form.' + required[i] +
		 * '.value')=='' || eval('form.' + required[i] + '.value')==' ') {
		 * alert("Please complete all required fields."); eval('form.' +
		 * required[i] + '.focus()'); return false; } }
		 * 
		 * var re = /(<([^>]+)>)/gi; for (i=0; i<form.length; i++) {
		 * form[i].value = form[i].value.replace(re, ""); }
		 * 
		 * if (!isValidEmail(form.input_email.value)) { alert("Please supply a
		 * valid email address."); form.input_email.focus(); return false; }
		 */
						
		
			
		createCookie("contact_submit", "1", 1/24/60*5);
		// 1 day / 24 hours / 60 minutes * 5 minutes = 5 minutes

		return true;
	}
		
	function checkValue(cValue) {
		var valueChecked = true;
		if(cValue == '' || cValue == ' ' || cValue == null) {			
			valueChecked = false;
		}
		return valueChecked;
	}

	function in_array(needle, haystack, argStrict) {
    
    	var key = '', strict = !!argStrict;
 
    	if (strict) {
        	for (key in haystack) {
            	if (haystack[key] === needle) {
                	return true;
            	}
        	}
    	} else {
        	for (key in haystack) {
            	if (haystack[key] == needle) {
                	return true;
            	}
        	}
    	}
 
    	return false;
	}
	
	function isValidEmail(str) {
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1) return false;
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) return false;
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) return false;
		if (str.indexOf(at,(lat+1))!=-1) return false;
		if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) return false;
		if (str.indexOf(dot,(lat+2))==-1) return false;
		if (str.indexOf(" ")!=-1) return false;
		return true
	}
		
	function scriptonload() {
		var messagevar = getvar("message", geturl());
		if(messagevar != "")
		document.contactUsForm.respondents_comments.value = messagevar;
	}
		
	function geturl()
	{
		var is_input = document.URL.indexOf('?');
		if (is_input > 0)
		{
			return unescape(document.URL.substring(is_input+1, document.URL.length));
		}
		else
			return false;
	}

	function getvar(variablename, variables)
	{
		if(variables)
		{
			var varvalue = false;
			var allvardata = variables.split('&');
			for(i = 0; i < allvardata.length; i++)
			{
				var thisvar = allvardata[i].split('=');
				if(thisvar[0] == variablename)
					varvalue = thisvar[1];
			}
			if(varvalue)
				return varvalue;
			else
				return "";
		}
		else
			return "";
	}
		
	function generatesubject() {
		var subjectvar = getvar("subject", geturl())
		if (subjectvar != "") {
			document.contactUsForm.input_subject.value = subjectvar;
		}
		else {
			// document.write("<label
			// for=\"input_subject\">Subject:</label><input type=\"text\"
			// name=\"input_subject\" style=\"width: 300px;\" size=\"24\" />");
		}
	}

	function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
			var expires = "; expires=" + date.toGMTString();
		}
		else {
			var expires = "";
		}
		document.cookie = name+"="+value+expires+"; path=/";
	}

	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	function isInteger(s){
	    var i;
	    for (i = 0; i < s.length; i++) {
	        // Check that current character is number.
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) 
	            return false;
	    }
	    // All characters are numbers.
	    return true;
	}

	function trim(s){
	    var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not a whitespace, append to returnString.
	    for (i = 0; i < s.length; i++) {
	        // Check that current character isn't whitespace.
	        var c = s.charAt(i);
	        if (c != " ") 
	            returnString += c;
	    }
	    return returnString;
	}

	function stripCharsInBag(s, bag){
	    var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not in bag, append to returnString.
	    for (i = 0; i < s.length; i++) {
	        // Check that current character isn't whitespace.
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) 
	            returnString += c;
	    }
	    return returnString;
	}

	function checkInternationalPhone(strPhone){
	    var bracket = 3
	    strPhone = trim(strPhone)
	    if (strPhone.indexOf("+") > 1) 
	        return false
	    if (strPhone.indexOf("-") != -1) 
	        bracket = bracket + 1
	    if (strPhone.indexOf("(") != -1 && strPhone.indexOf("(") > bracket) 
	        return false
	    var brchr = strPhone.indexOf("(")
	    if (strPhone.indexOf("(") != -1 && strPhone.charAt(brchr + 2) != ")") 
	        return false
	    if (strPhone.indexOf("(") == -1 && strPhone.indexOf(")") != -1) 
	        return false
	    s = stripCharsInBag(strPhone, validWorldPhoneChars);
	    return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
	}
	
	function stripHTML(theString) {
		theString = String("<div>" + theString + "</div>");
		var newString = jQuery(theString).text();
		return newString;
	}
	
	function getRequestName(request) {

		switch(request) {
			case 'prod_request':
				request = 'Request a Product Feature';
				break;
			case 'prod_purchase':
				request = 'Purchase a Product';
				break;
			case 'support_contract_purchase':
				request = 'Purchase a Support Contract';
				break;
			case 'feedback_kb':
				request = 'Provide Feedback on the Knowledge Base';
				break;
			case 'desktop_services':
				request = 'Ask a question about Workstation/Fusion';
				break;
			case 'feedback_website':
				request = 'Provide Feedback on the Website';
				break;
			case 'tap_alliance':
				request = 'Become part of the Technology Alliance Program (TAP)';
				break;
			case 'help_licensing':
				request = 'Get Help on a Licensing Issue';
				break;
			case 'help_product':
				request = 'Get Product Help';
				break;
			case 'mydata_update':
				request = 'Update My Data in your Systems';
				break;
			case 'login_assistance':
				request = 'Get Assistance Logging In';
				break;
			case 'inquire_training_class':
				request = 'Inquire About a Training Class';
				break;
			case 'inquire_tech_certifications':
				request = 'Inquire About VMware Technical Certification';
				break;
		}
		
		return request;		
	}
		
	function showProductRequest(selectVal) {
		var table = '';
		var eName = '';
		var label = '';
		switch(selectVal) {
			case "prod_request":
				eName = 'input_product';
				label = 'Product';
				table += showHiddenEmail('feature-request@vmware.com');				
				table += '<div class="content-container">'
					+ '<div>'
						+ '<div class="content-item" id="con_' + eName + '">'			
							+ '<div class="label">' + label + '</div>'
							+ '<div class="form-item">' + showProductSelect() + '</div>'						
						+ '</div>'					
						+ '<div class="form-item-error" id="error_' + eName + '"></div>'	
					+ '</div>'
				+ '</div>';
				jQuery('#dyn_section').html(table);					
				break;
			case "prod_purchase":
				eName = 'input_product';
				label = 'Product';
				table += showHiddenEmail('sales@vmware.com');				
				table += '<div class="content-container">'
					+ '<div>'
						+ '<div class="content-item" id="con_' + eName + '">'			
							+ '<div class="label">' + label + '</div>'
							+ '<div class="form-item">' + showProductSelect() + '</div>'						
						+ '</div>'					
						+ '<div class="form-item-error" id="error_' + eName + '"></div>'	
					+ '</div>'
				+ '</div>';
				jQuery('#dyn_section').html(table);			
				break;
			case "support_request":
				window.location = "http://support.vmware.com/selfsupport/ ";			
				break;
			case "feedback_kb":			
				eName = 'input_articleid';
				label = 'Article ID';
				table += showHiddenEmail('kcs-core@vmware.com');				
				table += showTextInput(label, eName);					
				jQuery('#dyn_section').html(table);				
				break;
			case "feedback_website":
				eName = 'input_url';
				label = 'URL';
				table += showHiddenEmail('customer_service@vmware.com');				
				table += showTextInput(label, eName);					
				jQuery('#dyn_section').html(table);				
				break;
			case "help_licensing":
				eName = 'input_product';
				label = 'Product';
				table += showHiddenEmail('VI-Hotline@vmware.com');				
				table += showTextInput('Contract #', 'input_contractnum');
				table += showTextInput('Order #', 'input_ordernum');
				table += showTextInput('License #', 'input_licensenum');
				table += '<div class="content-container">'
					+ '<div>'
						+ '<div class="content-item" id="con_' + eName + '">'			
							+ '<div class="label">' + label + '</div>'
							+ '<div class="form-item">' + showProductSelect() + '</div>'						
						+ '</div>'					
						+ '<div class="form-item-error" id="error_' + eName + '"></div>'	
					+ '</div>'
				+ '</div>';
				jQuery('#dyn_section').html(table);					
				break; 
			case "tap_alliance":
				table += showHiddenEmail('tapalliance@vmware.com');
				jQuery('#dyn_section').html(table);					
				break;
			case "inquire_training_class":
				table += showHiddenEmail('education@vmware.com');
				table += showTextInput('Student Registration #', 'input_studentregnum');
				table += showTextInput('PSO Credits Account ID #', 'input_psoaccountid');
				table += showTextInput('VCP ID<br/>Candidate #', 'input_vcpidnum');
				jQuery('#dyn_section').html(table);		
				break;
			case "inquire_tech_certifications":
				table += showHiddenEmail('certification@vmware.com');
				table += showTextInput('Student Registration #', 'input_studentregnum');
				table += showTextInput('Contract ID #', 'input_contractnum');
				jQuery('#dyn_section').html(table);
				break;
			default:
				jQuery('#dyn_section').html(table);
				break;	
		}			
	}
		
		
				
	function showHiddenEmail(semail) {
		return '<input type="hidden" id="input_department" name="input_department" value="' + semail + '"/>';
	}
				
	function showProductSelect() {
		var product = '<select id="input_product" name="input_product" size=1>';
			product += '<option value="">Select Product</option>';
			product += '<option value="VMware vSphere">VMware vSphere</option>';
			product += '<option value="VMware vCenter Server">VMware vCenter Server</option>';
			product += '<option value="VMware ESXi">VMware ESXi</option>';
			product += '<option value="VMware Server">VMware Server</option>';
			product += '<option value="VMware vCenter Site Recovery Manager">VMware vCenter Site Recovery Manager</option>';
			product += '<option value="VMware vCenter Lab Manager">VMware vCenter Lab Manager</option>';
			product += '<option value="VMware Capacity Planner">VMware Capacity Planner</option>';
			product += '<option value="VMware vCenter Lifecycle Manager">VMware vCenter Lifecycle Manager</option>';
			product += '<option value="VMware vCenter Stage Manager">VMware vCenter Stage Manager</option>';
			product += '<option value="VMware vCenter Server Heartbeat">VMware vCenter Server Heartbeat</option>';
			product += '<option value="VMware vCenter AppSpeed">VMware vCenter AppSpeed</option>';
			product += '<option value="VMware vCenter Converter">VMware vCenter Converter</option>';
			product += '<option value="VMware Data Recovery">VMware Data Recovery</option>';
			product += '<option value="VMware vCenter Orchestrator">VMware vCenter Orchestrator</option>';
			product += '<option value="VMware View">VMware View</option>';
			product += '<option value="VMware Workstation">VMware Workstation</option>';
			product += '<option value="VMware vShield Zones">VMware vShield Zones</option>';
			product += '<option value="VMware Fusion">VMware Fusion</option>';
			product += '<option value="VMware ThinApp">VMware ThinApp</option>';
			product += '<option value="VMware ACE">VMware ACE</option>';
			product += '<option value="VMware VMmark">VMware VMmark</option>';
			product += '</select>';
				
		return product;				
	}
		
	function showSummaryMessage(sLabel, sName, tLabel, tName) {
		var table = '';
			table += '<div id="summary_table">';
			table += '<div>' + showSummaryInput(sLabel, sName) + '</div>';
			table += '<div>' + showDetailsTextArea(tLabel, tName) + '</div>';
			table += '</div>';
			jQuery('#submess_section').html(table);
			scriptonload();
			generatesubject();			
	}
	
	// Use showTextInput
	function showSummaryInput(label, name) {
		var summary = '<div class="content-container">'
						+ '<div>'
							+ '<div class="content-item" id="con_' + name + '">'			
								+ '<div class="label">' + label + '</div>'
								+ '<div class="form-item"><input type="text" name="' + name + '" id="' + name + '" size="30" /></div>'						
							+ '</div>'					
							+ '<div class="form-item-error" id="error_' + name + '"></div>'	
						+ '</div>'
					+ '</div>';
		return summary;
	}
		
	function showDetailsTextArea(label, name) {
		var details = '<div class="content-container">'
							+ '<div>'
								+ '<div class="content-item" id="con_' + name + '">'
									+ '<div class="label">' + label + '</div>'
									+ '<div class="form-item"><textarea name="' + name + '" class="box-picker" id="' + name + '" rows="4" cols="45"></textarea></div>'						
								+ '</div>'					
								+ '<div class="form-item-error" id="error_' + name + '"></div>'
							+ '</div>'
						+ '</div>';
		return details;		
	}
		
	function showTextInput(label, name) {
		var textinput = '<div class="content-container">'
							+ '<div>'
								+ '<div class="content-item" id="con_' + name + '">'			
									+ '<div class="label">' + label + '</div>'
									+ '<div class="form-item"><input class="box-picker" type="text" name="' + name + '" id="' + name + '" size="30" /></div>'						
								+ '</div>'					
								+ '<div class="form-item-error" id="error_' + name + '"></div>'
							+ '</div>'
						+ '</div>';
		return textinput;
	}
	
	function showTextRow(label, name) {
		var textinput = '<div class="content-container">'
							+ '<div>'
								+ '<div class="content-item">'			
									+ '<div class="label">' + label + '</div>'
									+ '<div class="form-item">' + name + '</div>'						
								+ '</div>'
							+ '</div>'
						+ '</div>';
		return textinput;
	}
	
	function showHiddenField(name, value) {
		var hiddenfield = '<input type="hidden" name="' + name + '" id="' + name + '" value="' + value + '" />';
		return hiddenfield;
	}
