// this will be taken care of in the namespace method in BODOG.js
if (!BODOG) { var BODOG = {}; }
if (!BODOG.components) { BODOG.components = {}; }

/*

*/

BODOG.components.contactUs = function() {
	
    /** These are all private */
	
	//char count for #talk-to-us textarea
	var _maxLength = 1055;
	
	/* Private vars for subject list */
	var _jsonSubjectsData = '';
	var _defaultConcernDesc = '';
	var _subjectControl = '';
	var _concernControl = '';
	
	/* text area default text for multi language */
	var _defaultTextArea = '';
	
	/* set in hidden field */
	var _currentSubject = '';
	var _currentConcern = '';
		
	return {
	
		/** public */
		
		settings: {
			talkToUsTextareaID: "#talk-to-us",
			captchaRefreshID: "#captcha-refresh",
			captchaHelpID: "#captcha-help",
			captchaHelpBoxID: "#captcha-help-box",
			subjectControlID: "#subjectControl",
			concernControlID: "#concernControl",
			charCountID: "#charCount",
			captchaImageID: "#captchaImg",
			contactUsFieldsetID: "#contact-us-fieldset"
		},

				
		init: function(options) {
		
			//set focus on first element
			$(this.settings.contactUsFieldsetID+" select:first").focus();

			var that = this;
		  
			 $(this.settings.talkToUsTextareaID).focus(function() {
			 	if (_defaultTextArea == $(this).text()){
					$(this).empty();
				}
					
				that.textAreaCounter(this);
            
        	}).blur(function(){
		
            	if (!$(this).text().length){
                	// if content is empty, put default message back
                	$(this).append(_defaultTextArea);
				}   
				
				that.textAreaCounter(this);
				
        	}).keyup(function(){
				that.textAreaCounter(this);
			});
			
			$(this.settings.captchaRefreshID).click(function(){
				that.refreshCaptcha();
			});
			
			$(this.settings.captchaHelpID).click(function(){
				that.helpCaptcha();
			});
			
			$(this.settings.subjectControlID).change(function(){
				that.subjectChange();
			});
			
		},
		
		textAreaCounter: function(textArea) {
			
			if (textArea.value.length > _maxLength) {
				textArea.value = textArea.value.substring(0, _maxLength);
			}
				
			$(this.settings.charCountID).text(textArea.value.length  + " ");
			
		},
		
		refreshCaptcha: function () {
			var imageSrc = $(this.settings.captchaImageID).attr('src')+'?';
			$(this.settings.captchaImageID).attr("src",imageSrc);
		},
		
		helpCaptcha: function () {
			$(this.settings.captchaHelpBoxID).slideToggle();
		},
		
		initializeSubject: function() {
			 
			 /*find initial value to set dropdown if it exists */
			 _currentSubject = $("#currentSubject").attr("value");
			 /*setup dropdown lists*/
			_subjectControl = $(this.settings.subjectControlID);
			_concernControl = $(this.settings.concernControlID);
			
	
			var value;
			var desc;
			var optionsForList = '';
						
			var selectedOption = 0;
				
			for(i = 0; i < _jsonSubjectsData.length; i++) {
				value = _jsonSubjectsData[i]["@value"];
				desc = _jsonSubjectsData[i]["@description"];
		
				if (value == _currentSubject){
					//set selected option to make selected state if variable exists
					selectedOption = i + 1;//default option is 0 and desc starts at 1
				}
				optionsForList += '<option value="' + value + '">' + desc + '</option>';

			}
						
				
			$(_subjectControl).append(optionsForList);
			
			//select the option where selectedOption is the contents
		var replacement = $("option:eq("+selectedOption+")", _subjectControl);
		replacement.replaceWith('<option value="' + replacement.val() + '" selected = "selected">' + replacement.text() + '</option>');
		
		if (selectedOption > 0){
				//update the 'be more specific' options if a subject is pre set
				this.subjectChange(_currentConcern);
				
				
			}
			
		},
		
		subjectChange: function() {

			//find initial value to set dropdown if it exists 
			 _currentConcern = $("#currentConcern").attr("value");
			
			if ($(_concernControl).attr("value","select_option")){
				$(_concernControl).empty();
			}
			     
			var value;
			var desc;
			var optionsForList = '';
			
			var selectedOption = 0;
			
			//if you've selected an option below -- Select Subject --, set no concerns
			if ($(_subjectControl)[0].selectedIndex > 0){
				var concerns = _jsonSubjectsData[$(_subjectControl)[0].selectedIndex-1].concerns;
				$(_concernControl).append('<option value="select_option" selected="selected">---' + _defaultConcernDesc + '---</option>');
			}else{
				var concerns = 0;
			}
			
			for(i = 0; i < concerns.length; i++) {
				value = concerns[i]["@value"];
				desc = concerns[i]["@description"];
				
				if (value == _currentConcern){
					//set selected option to make selected state if variable exists
					selectedOption = i + 1;//default option is 0 and desc starts at 1
				}
				
				optionsForList += '<option value="' + value + '">' + desc + '</option>';
			}
			$(_concernControl).append(optionsForList);
			
			//select the option where selectedOption is the contents
			//$("option:eq("+selectedOption+")", _concernControl).attr("selected","selected");
			
		
		},

		
		/* Setters */
		setJsonSubjectsData: function(jsonData, defaultConcernDesc){
		
			_jsonSubjectsData = jsonData;
			_defaultConcernDesc = defaultConcernDesc;

			/*init select list after json data is set*/
			this.initializeSubject();
	
		},
		setDefaultTextArea: function(value){
			_defaultTextArea = value;
		}

	}// end return object
}();


$(function(){
	BODOG.components.contactUs.init();
});