/**
 * XMS standard functions
 */

var XMS = {
	
	init: function() {
	},
	
	/**
	 * Saves calendar preferences
	 * @todo Should be in XMS.XMSCalendar namespace
	 */
	savePreferences: function (block_id, categories, appointment_types, country) {
		Slik.HTTP.callHandler('setUserPreferences', {'class': 'XMSCalendarBlock', 'id':block_id, 'appointment_types':appointment_types, 'categories':categories, 'country':country}, Slik.HTTP.writeElement, 'savePreferences');
	},
	
	/**
	 * Goes to a website, logging the visit locally
	 * @todo Should be in XMS.XMSCalendar namespace
	 */
	goToWebsite: function(block_class, block_id, record_class, record_id) {
		Slik.HTTP.callHandler('goToWebsite', {'class': block_class, 'id':block_id, 'record_class':record_class, 'record_id':record_id});
	}
	
}

var XMSSurveyNavigation = {
	switchActivePage : function (newPageNumber) {
		var surveyPages = XMSSurveyNavigation.getSurveyPages();
		
		for (var i = 0; i < surveyPages.length; i++ ) {
			var page = surveyPages[i];
			page.style.display = 'none';
		}
		
		// hide the submit button unless it is the last page of the survey part
		var submitButton = document.getElementById("surveyPartSubmitButton");

		if (newPageNumber == surveyPages.length || surveyPages.length == 0) {
			submitButton.style.display='';
		}
		else {
			submitButton.style.display='none';
		}

		var newPage = document.getElementById("xmsSurveyPage_" + newPageNumber);
		if(newPage) {
			newPage.style.display = '';
		
			XMSSurveyController.currentStep = newPageNumber - 1;
			XMSSurveyController.updateProgressBar();	
		}
		
		// go to the top of the new page
		scroll(0,0);
	},
	getSurveyPages: function () {
		var pages = new Array();
		
		// find all divs
		var divs = document.getElementsByTagName("div");
		for (var i = 0; i < divs.length; i++) {
			if (divs[i].className.indexOf('xmsSurveyPage') > -1) {
				pages.push(divs[i]);
			}
		}
		return pages;
	}
}

var XMSSurveyController = {
		
		currentStep : 0,
		
		// number of steps is set in XMSSurveyPartBlock.tpl
		numberOfSteps : 0,
		
		// hide the progress when not needed
		hide : function() {
			var progressBar = document.getElementById('surveyProgress');
			progressBar.style.display='none';
		},
		updateProgressBar : function() {
			var current_step = XMSSurveyController.currentStep;
			var steps = XMSSurveyController.numberOfSteps;
			
			// fill the percentages array with the right intervals
			var percentages = new Array();
			
			// (steps + 1) entries in total, starting with 0
			for (var i = 0; i < steps; i++) {
				percentages[i] = i * (100/steps);
			}
			
			// last position is always 100%
			percentages[steps] = 100;
			
			if(document.getElementById('surveyProgress').style.display != 'none') {
				
				var element_width = document.getElementById('progressBar').offsetWidth-10; // 220

				var current_prog = document.getElementById('currentProgress');
				if( current_prog && current_prog.style.display != 'none' && element_width > 0) {
					current_prog.style.width = Math.round((element_width/100)*percentages[current_step])+'px'; 
				}
				
				var potential_prog = document.getElementById('extraProgress');
				if( potential_prog && potential_prog.style.display != 'none' && element_width > 0) {	
					potential_prog.style.width = Math.round((element_width/100)*percentages[current_step+1])+'px'; 
				}
			}
			return false;
		}	
	}

var XMSUtil = {
		
	addClass : function(element, className) {
		var currentClasses = element.className;
		if (currentClasses.indexOf(className) == -1) {
			element.className += ' ' + className;
		}
	},
	removeClass : function(element, className) {
		var currentClasses = element.className;
		if (currentClasses.indexOf(className) > -1) {
			element.className = currentClasses.replace(className, '');
		}
	},
	toggle : function(element) {
		if(typeof(element) != 'object') {
			element = document.getElementById(element);
		}
		
		if(element.style.display == 'none') {
			element.style.display = 'block';
		} else {
			element.style.display = 'none';
		}
	}
}

var XMSAntiSpamElement = {
	
	autoFill: function(element_id) {
		
		var parent_el = document.getElementById(element_id);
		
		// Temporary test: assuming bots have no javascript yet, just set the answer to 'js_enabled'
		var inputs = parent_el.getElementsByTagName('input');
		
		parent_el.style.display = "none";
		
		for(var x in inputs) {
			if(inputs[x].name && inputs[x].name == "captcha_answer") {
				inputs[x].value = "js_enabled";
				// Good to know: setting type property throws an error in IE; display: none does the job
				// inputs[x].type = "hidden";
				inputs[x].style.display = "none";
			}
		}
		
		
	}
}

var XMSContactFormBlock = {
	
	checkMessage: function(form) {
		var result = Slik.Util.checkRequiredFields(form, false);
		return result;
	}
	
}
