/**
* Global Variables
**/
//HTML-elements
var _defaultMessageElement = "#default_message"; //Default-message to user. Hidden by default
var _formElement = "#formContainer"; //surrounding html-div that contains the form. Hidden by default
var _selfHelpTexts = "#helptextContainer"; //html-div next to drop menus that contains the help texts
var _formId = "#webform"; //id of the form
var _feedbackMessageField = "#feedback_message"; //html-div containing the general error / success message at the top of the page
var _cssErrorClass = "invalid_form_highlight"; // css-class for error messages
var _cssInvalidFieldClass = "invalid_form_message";
//For dev / localhost, use absolute url
var _rootFolder = "/NOKIA_COM_1/Web_Applications/nokiaa/WebForm";
var _webform_selection_value = ""; // Selection value
var _rand = "?r="+new Date().getTime()+Math.round(Math.random()*1000);
//Content strings
//General
var _emptyString = "";
// For dev-purposes, use absolute url
var _submitUrl = "/ra1web/public_pageflows/WebForm/WebFormValidationController.jpf"+_rand;


// Error messages
//var _errorUnexpected = "An error occured. Please try again later.";
//var _errorSubmitFailed = "There was an error contacting the server. Please come back later!";


// Array for showing and hiding dynamics fields
var _webform_topicValueAndRelatedFields = new Array(); //Array used in script
//Hard coded value
_webform_topicValueAndRelatedFields["webform_topic_nokia_online_shop"]= new Array("webform_onlineshop");
_webform_topicValueAndRelatedFields["webform_subtopic_order"]= new Array("webform_onlineshop");
_webform_topicValueAndRelatedFields["webform_subtopic_delivery"]= new Array("webform_onlineshop");
_webform_topicValueAndRelatedFields["webform_subtopic_payment"]= new Array("webform_onlineshop");
_webform_topicValueAndRelatedFields["webform_subtopic_return"]= new Array("webform_onlineshop");
_webform_topicValueAndRelatedFields["webform_subtopic_refund"]= new Array("webform_onlineshop");

_webform_topicValueAndRelatedFields["webform_topic_nokia_devices_and_accessories"]= new Array("webform_device");
_webform_topicValueAndRelatedFields["webform_subtopic_availability"]= new Array("webform_device");
_webform_topicValueAndRelatedFields["webform_subtopic_support"]= new Array("webform_device", "webform_productcode", "webform_serialnr", "webform_softwareversion", "webform_operator");
_webform_topicValueAndRelatedFields["webform_subtopic_service_points_and_repair"]= new Array("webform_device", "webform_productcode", "webform_serialnr");
_webform_topicValueAndRelatedFields["webform_subtopic_other"]= new Array("webform_device", "webform_productcode", "webform_serialnr", "webform_softwareversion");

//Topic Nokia services
_webform_topicValueAndRelatedFields["webform_subtopic_nokia_maps"]= new Array("webform_device", "webform_serialnr", "webform_os", "webform_mapsversion", "webform_navlicense", "webform_navregion" , "webform_navduration");
_webform_topicValueAndRelatedFields["webform_subtopic_n-gage"]= new Array("webform_device", "webform_serialnr", "webform_gameactivationcode", "webform_ngagearenausername");
_webform_topicValueAndRelatedFields["webform_subtopic_nokia_music_store"]= new Array("webform_device", "webform_os");
//Subtopic OVI

//Topic Nokia Software
_webform_topicValueAndRelatedFields["webform_subtopic_pc_suite"]= new Array("webform_os");
_webform_topicValueAndRelatedFields["webform_subtopic_nokia_software_updater"]= new Array("webform_os", "webform_softwareversion", "webform_operator", "webform_productcode");
_webform_topicValueAndRelatedFields["webform_subtopic_other_software_and_applications"]= new Array("webform_os", "webform_operator", "webform_productcode");

//Topic My Nokia

//_webform_topicValueAndRelatedFields["webform_topic_other"]= new Array();


// Array for mandatory dynamics fields
var _webform_MandatoryDynamicFields = new Array(); //Array used in script
//Hard coded value

_webform_MandatoryDynamicFields["webform_subtopic_pc_suite"]= new Array("webform_os");
_webform_MandatoryDynamicFields["webform_subtopic_nokia_software_updater"]= new Array("webform_os", "webform_productcode");
//_webform_MandatoryDynamicFields["webform_topic_other"]= new Array();
_webform_MandatoryDynamicFields["webform_subtopic_nokia_maps"]= new Array("webform_mapsversion", "webform_device", "webform_serialnr");
//Removed Maps version Field - Defect 6982
_webform_MandatoryDynamicFields["webform_subtopic_n-gage"]= new Array("webform_device", "webform_serialnr");
_webform_MandatoryDynamicFields["webform_subtopic_nokia_music_store"]= new Array("webform_device", "webform_os");
_webform_MandatoryDynamicFields["webform_subtopic_other_software_and_applications"]= new Array("webform_productcode");
_webform_MandatoryDynamicFields["webform_topic_nokia_devices_and_accessories"]= new Array("webform_device");
_webform_MandatoryDynamicFields["webform_subtopic_availability"]= new Array("webform_device");
_webform_MandatoryDynamicFields["webform_subtopic_support"]= new Array("webform_device");
_webform_MandatoryDynamicFields["webform_subtopic_service_points_and_repair"]= new Array("webform_device");
_webform_MandatoryDynamicFields["webform_subtopic_other"]= new Array("webform_device");



/**
* Functions
**/
        
function validate() {
	//Form won't be submitted if submit-button is disabled
	if(document.getElementById('webform_submit_button').disabled) return;
	
	//Client validation, dynamic fields
	if(!validateDynamicFields()) return;
	
	//Disabled submit until validation is done
	disableSubmit('webform_submit_button');
	
	//Increased default timout value 1000ms as 9000ms - Defect 6846
	var _formValues = $(_formId).formToArray();
	$.ajax({
		async: true,
		cache: true,
		timeout: 9000,
		url: _submitUrl,
		type: 'POST',
		dataType: 'xml',
		data: _formValues,
		error: function(XMLHttpRequest, textStatus, errorThrown){
			//$(_feedbackMessageField).html(_errorSubmitFailed);
			//$(_feedbackMessageField).show();
			//$(_feedbackMessageField).addClass(_cssErrorClass);
			processMessages(xml, _cssInvalidFieldClass);
		},		
		success: function(data, textStatus){
			processXML(data);
		}
	});
	
}

function processXML(xml) {
	
	//As a default, set no errors and error messages hidden
	setFormDefaults();
	//If there are validation errors                          
	if($("validationstatus", xml).text() == "2") 
	{
		// Check dynamic mandatory fields
		//Note! This has to be done before server validation error parsing, because this adds and removes error style
		checkDynamicWebformMandatoryValidations();
		//Show error messages to the user. Adds error style to the labels
		processMessages(xml, _cssInvalidFieldClass);
		
		
	}
	//If there are email-sending errors
	else if($("validationstatus", xml).text() == "0")
	{
		// Check dynamic mandatory fields
		//Note! This has to be done before server validation error parsing, because this adds and removes error style
		checkDynamicWebformMandatoryValidations();
		//Show error messages to the user. Adds error style to the labels
		processMessages(xml, _cssInvalidFieldClass);
		
	}
		
	//Everything is fine, email was sent, the Thank you -page is shown
	else if($("validationstatus", xml).text() == "1")
	{
		
		$('form').clearForm();
		window.location = _redirectUrl;
	} else {
		//Unexpected error occured (status 3)
		//$(_feedbackMessageField).html(_errorUnexpected);
		//$(_feedbackMessageField).show();
		//$(_feedbackMessageField).addClass(_cssErrorClass);
		processMessages(xml, _cssInvalidFieldClass);
	}
	
	enableSubmit('webform_submit_button');
	
}  

//Set default-values and hide error messages
function setFormDefaults() {
	//Default message o user is visible if javascript is on
	$(_defaultMessageElement).show();
	//The form is visible if javascript is on
	$(_formElement).show();
	
	//Feedback-field doesn't have contents and it isn't visible
	$(_feedbackMessageField).html(_emptyString);
	$(_feedbackMessageField).hide();
				
	//Error-classes are removed from the fieldLabels within the form
	$("." + _cssErrorClass ).removeClass(_cssErrorClass );
	
}

function processMessages(xml, cssClass) {

	// get message from the response, error or success

	if($("validationstatus", xml).text() == "2") 	
	{
		if (document.getElementById("form_error_message")) 
		{
			$(_feedbackMessageField).html($("#form_error_message").text());
		} 
		else 
		{
			$(_feedbackMessageField).html("Please check the highlighted field(s)");
		}
	}
	
	else
	{
		var msg = $("message", xml).text(); 
		$(_feedbackMessageField).html(msg);
	}
	
	$(_feedbackMessageField).show();
	$(_feedbackMessageField).removeClass();
	$(_feedbackMessageField).addClass(_cssErrorClass);
	  
	//highlighting error-fields
	var formElements = $("field", xml);
	
	for (var i = 0; i < formElements.length; i++) {
		// show labels of invalid fields in red
		var inputElement = $("name",formElements[i]).text();
		$('label[for="' + inputElement + '"]').addClass(_cssErrorClass ); 
		
	}
}

function loadDropmenuContents(inputElement, folder, value) {
	$(inputElement).load(_rootFolder + folder + value + ".html");
}

//New functions, used with xsl+xml
// Showing / hiding  helpboxes
function helpboxChanges() {
	$(_formId+" .help_button").click( function() {
		$("body >div.helpbox_container").hide();
		$("body >iframe").hide();
		var baseId = $(this).attr("rel"); // topic|subtopic|model|...
		var helpBox = $( _formId+" #"+baseId+"_helpbox" );
		if( helpBox.length ) { // first time, prepend to body for absolute positioning
			$("body").prepend( helpBox );
		} else { // helpbox has been opened atleast once
			helpBox = $( "#"+baseId+"_helpbox" );
		}
		// do positioning and show
		helpBox.css("left", $(this).offset().left - helpBox.width() + $(this).width() )
			.css("top", $(this).offset().top )
			.show();
		/*
			ie needs an iframe to make it possible to 
			show absolutely positioned divs on top of form elements
		*/
		if( $.browser.msie ) {
			var helperIframe = $("#"+baseId+"_iframe");
			if( helperIframe.length ) {
				$("#"+baseId+"_iframe").show();
			} else {
				$("body").prepend( "<iframe id='"+baseId+"_iframe'  scrolling='no' frameborder='0'></iframe>" );
				helperIframe = $("#"+baseId+"_iframe");
			}
			helperIframe.css("position", "absolute")
				.css("z-index", helpBox.css("z-index")-1)
				.css("left", $(this).offset().left - helpBox.width() + $(this).width() )
				.css("top", $(this).offset().top )
				.css("width", helpBox.width() )
				.css("height", helpBox.height() );
		}
		return false;
	});
	// helpboxes, close functionalities
	$(_formId+" .helpbox_container").each( function(i) {
		$(this).show().hide(); // make sure boxes topbar is visible
		$(this).find(".close_button").click( function() {
			var containerId = "#"+$(this).attr("rel")+"_helpbox";
			$(containerId).hide();
			if( $.browser.msie ) {
				$("#"+$(this).attr("rel")+"_iframe").hide();
			}
			return false;
		});
	});
}
//Show/hide correct selfhelp, used for topic and subtopic
function selfHelpChanges($targetDiv, $selectedValue, $level) {
			// selfhelp
			//First, hide all selfhelps if we are on the higher level. If we're on the 2nd level, hide third level
			if($level == 1) {
				$("#default_selfhelp_topic").hide();
				$("#default_selfhelp_subtopic").hide();
				$("#default_selfhelp_subsubtopic").hide();
			} else if ($level == 2) {
				$("#default_selfhelp_subtopic").hide();
				$("#default_selfhelp_subsubtopic").hide();
			} else if ($level == 3) {
				$("#default_selfhelp_subsubtopic").hide();
			}
			
			//Set correct value to the selfhelp-div, if it is existing
			if(document.getElementById($selectedValue) && document.getElementById($selectedValue).innerHTML != null) {
				document.getElementById($targetDiv).innerHTML=document.getElementById($selectedValue).innerHTML;
				$("#" + $targetDiv).show();
			}
}

//Show correct subtopic after topic has been chosen
function loadSubMenu($toptopic, $midtopic, $bottomtopic, $parentkey, $level, $parentArray, $keyArray, $textArray, $valueArray) {
//function loadSubSubMenu($subtopic, $parentkey, $level, $upperlevelmenu) {
	//First, hide subtopic container / containers
	//Choose correct level
	if($level == 1) {
		//Call came from topic, target is subtopic and subsubtopic
		//Hide and empty menus
		if (document.getElementById($midtopic)) {
			$("#" + $midtopic + "_container").hide();
			document.getElementById($midtopic).length=0;
		}
		if (document.getElementById($bottomtopic)) {
			$("#" + $bottomtopic + "_container").hide();
			document.getElementById($bottomtopic).length=0;
		}
	} else if ($level == 2) {
		//Call came from subtopic, target is subsubtopic
		//Hide and empty menus
		if (document.getElementById($bottomtopic)) {
			$("#" + $bottomtopic + "_container").hide();
			document.getElementById($bottomtopic).length=0;
		}
	} 
	
	//1. Condition: If there's been value selected in the upper level menu
	if($parentkey != '') {
		var _topic_exists = false;
		for ( var i in $keyArray )
		{
			//if the parentkey in the array is the same the key of the chosen topic element or the parentkey is empty (e.g. Please select -value)
			if($parentArray[i] == '' || $parentArray[i] == $parentkey) {
				var newOpt = new Option($textArray[i], $valueArray[i]);
				newOpt.id = $keyArray[i];
				if($level == 1) {
					if (document.getElementById($midtopic)) document.getElementById($midtopic).options[document.getElementById($midtopic).length] = newOpt;
				} else if ($level == 2) {
					if (document.getElementById($bottomtopic)) document.getElementById($bottomtopic).options[document.getElementById($bottomtopic).length] = newOpt;
				}
				_topic_exists = true;
				
			}
		} 
		
		//Show the correct suboption menu
		if($level == 1) {
			//There should be more than 1 value. Assumption: first value is always "Please select", so it itsn't an actual value in the list
			if(document.getElementById($midtopic) && document.getElementById($midtopic).length < 2) _topic_exists = false;
			if (_topic_exists) $("#" + $midtopic + "_container").show();
		} else if ($level == 2) {
			//There should be more than 1 value. Assumption: first value is always "Please select", so it itsn't an actual value in the list
			if(document.getElementById($bottomtopic) && document.getElementById($bottomtopic).length < 2) _topic_exists = false;
			if (_topic_exists) $("#" + $bottomtopic + "_container").show();
		}
		
	}
}

// Showing / hiding  helpboxes
function formSettings() {
			// helpbox fix: prevents the next fieldset from going on top of a helpbox
			// help buttons
			$(_formId+" .help_button").click( function() {
				var baseId = $(this).attr("rel"); // topic|subtopic|model|...
				var helpBox = $( _formId+" #"+baseId+"_helpbox" );
				if( helpBox.length ) { // first time, prepend to body for absolute positioning
					$("body").prepend( helpBox );
				} else { // helpbox has been opened atleast once
					helpBox = $( "#"+baseId+"_helpbox" );
				}
				// do positioning and show
				helpBox.css("left", $(this).offset().left - helpBox.width() + $(this).width() )
					.css("top", $(this).offset().top )
					.show();
				/*
					ie needs an iframe to make it possible to 
					show absolutely positioned divs on top of form elements
				*/
				if( $.browser.msie ) {
					var helperIframe = $("#"+baseId+"_iframe");
					if( helperIframe.length ) {
						$("#"+baseId+"_iframe").show();
					} else {
						$("body").prepend( "<iframe id='"+baseId+"_iframe'  scrolling='no' frameborder='0'></iframe>" );
						helperIframe = $("#"+baseId+"_iframe");
					}
					helperIframe.css("position", "absolute")
						.css("z-index", helpBox.css("z-index")-1)
						.css("left", $(this).offset().left - helpBox.width() + $(this).width() )
						.css("top", $(this).offset().top )
						.css("width", helpBox.width() )
						.css("height", helpBox.height() );
				}
				return false;
			});
			// helpboxes, close functionalities
			$(_formId+" .helpbox_container").each( function(i) {
				$(this).show().hide(); // make sure boxes topbar is visible
				$(this).find(".close_button").click( function() {
					var containerId = "#"+$(this).attr("rel")+"_helpbox";
					$(containerId).hide();
					if( $.browser.msie ) {
						$("#"+$(this).attr("rel")+"_iframe").hide();
					}
					return false;
				});
			});
}


function disableMe(elem)
{
	document.getElementById(elem).disabled = true;
}

function enableMe(elem)
{
	document.getElementById(elem).disabled = false;
}

function disableSubmit(elem)
{
	
	document.getElementById(elem).disabled = true;
	
}

function enableSubmit(elem)
{
	
	document.getElementById(elem).disabled = false;
	
}

$.fn.clearForm = function() {
	return this.each(function() {
		var type = this.type, tag = this.tagName.toLowerCase();
		if (tag == 'form')
			return $(':input',this).clearForm();
		if (type == 'text' || type == 'password' || tag == 'textarea')
			this.value = '';
		else if (type == 'checkbox' || type == 'radio')
			this.checked = false;
		else if (tag == 'select')
			this.selectedIndex = -1;
	});
};

//Dynamic fields functions

function hideDynamicFields($dynamicArray) {
	for ( var i in $dynamicArray )
	{
		$("#" + $dynamicArray[i] + "_container").hide();
	}
}



// Set array to go throw showing and hiding fields
function setTopicValueRelatedDynamicFieldsArray(formArray)
{
	_webform_topicValueAndRelatedFields = formArray;
}

// Set array to show mandatory fields
function setMandatoryDynamicFieldsArray(formArray)
{
	_webform_MandatoryDynamicFields = formArray;
}



//Show or Hide elements based on HTML selection		
function displayRelatedFields(elementId) {
	var _webform_selection_value_temp="";
	_webform_selection_value = spacesToUnderscore($("#"+elementId).children(":selected").attr("id"));
	
	if(_webform_selection_value != "") {
		if(_webform_topicValueAndRelatedFields[_webform_selection_value]!=undefined && _webform_topicValueAndRelatedFields[_webform_selection_value]!=null)
		{
			parseArrayToHideElements("ROOT", _webform_topicValueAndRelatedFields, elementId);		
		}
		else
		{
			hideAllDynamicsFields();
		}
		parseArrayToShowElements("ROOT", _webform_topicValueAndRelatedFields);
		_webform_selection_value_temp=_webform_selection_value;
	}
	
	if(_webform_selection_value!="webform_pleaseselect")
	{
		showMandatoryFields();
	}
	
	if(elementId=="webform_subtopic")
	{
		elementId="webform_topic";
		_webform_selection_value = spacesToUnderscore($("#"+elementId).children(":selected").attr("id"));
		if(_webform_selection_value != "") 
		{
			parseArrayToShowElements("ROOT", _webform_topicValueAndRelatedFields);
		}
		
		if(_webform_selection_value_temp=="webform_pleaseselect")
		{
			showMandatoryFields();
		}
	}
	
	if(_webform_selection_value!="webform_topic_nokia_devices_and_accessories" && _webform_selection_value_temp!="webform_pleaseselect")
	{
		_webform_selection_value=_webform_selection_value_temp;
	}
}


// Check mandatory validations
function checkDynamicWebformMandatoryValidations()
{
	var m_item = _webform_MandatoryDynamicFields[ _webform_selection_value ];	
	
	for (var strKey in _webform_MandatoryDynamicFields) {		
		var topic_value = _webform_MandatoryDynamicFields[ strKey ];
			
		// topic is selected
		if(strKey == _webform_selection_value){
				
			for (var strField in topic_value) {
				var filled_value = $('input[id="' + topic_value[strField] + '"]').attr("value");
				
				if( filled_value == null)
				{
					// this field is not input field, try selection field selection
					filled_value = $("#"+topic_value[strField]).children(":selected").attr("value");					
				}
				
				// check is value empty
				if(filled_value == ""){
					//window.alert(topic_value[strField]);
					// set mandatory validation error
					$('label[id="' + topic_value[strField] + '_label' + '"]').addClass(_cssErrorClass);	
				} 
				else {
					// change style to normal, because it is ok
					$('label[id="' + topic_value[strField] + '_label' + '"]').removeClass(_cssErrorClass);
				}
			}
		}
	}
}

//mark dynamic mandatory fields
function showMandatoryFields()
{
	hideNonMandatoryFields();
	for (var strKey in _webform_MandatoryDynamicFields) {	
		if (_webform_selection_value == strKey)
		{
		// TODO:write * mark to label
		var field_object = _webform_MandatoryDynamicFields[ strKey ];
			for (var strField in field_object) {	
			// write * mark to label
				field_item = field_object[strField];
				var old_value = $('label[id="' + field_item + '_label' + '"]').text();
				// check that mandatory is not already marked
				if (!old_value.match('\\*'))
				{
					$('label[id="' + field_item + '_label' + '"]').html(" * " + old_value);
				}
					
			}
		
		}
	}
}

//THis hide already marked Mandatory fields
function hideNonMandatoryFields()
{
	for (var strKey in _webform_MandatoryDynamicFields) {	
		
			var field_object = _webform_MandatoryDynamicFields[ strKey ];
			for (var strField in field_object) {	
				field_item = field_object[strField];
				var old_value = $('label[id="' + field_item + '_label' + '"]').text();
				// check that mandatory is not already marked
				if (old_value.match('\\*'))
				{
					// Remove * mark to label
					var old_value_array = old_value.split("*");
					var new_old_value = old_value_array[1];
					$('label[id="' + field_item + '_label' + '"]').html(new_old_value);
					// change style to normal, because it is ok
					$('label[id="' + field_item + '_label' + '"]').removeClass(_cssErrorClass);
				}
			}
					
	}
}

// this used when html loaded first time in end of the HTML body.
function hideAllDynamicsFields()
{
					
	for (var strKey in _webform_topicValueAndRelatedFields) {				
		var item = "";
		item = _webform_topicValueAndRelatedFields[ strKey ];
		for (var strField in item) {	
			var field_item = item[strField];
				$("#"+field_item+"_container").hide();				
		}		 				
	}
	$("body >div.helpbox_container").hide();
	$("body >iframe").hide();
}

//Parse array to hide elements	
function parseArrayToHideElements(strUniqueKey, aArrayToParse, elementId) {
	if(aArrayToParse == null) {	return;	}
	if(aArrayToParse.length == undefined){	return;	}
				
	var selection_name = "";
		selection_name = spacesToUnderscore($("#"+elementId).attr("name"));
		
	if(aArrayToParse[_webform_selection_value]!=undefined && aArrayToParse[_webform_selection_value]!=null)
	{
		for (var strKey in aArrayToParse) 
		{				
			var item = "";
			item = aArrayToParse[ strKey ];
			if((strUniqueKey + " / " + strKey) != (strUniqueKey + " / " + _webform_selection_value))
			{
				parseSubArrayToHideElements(strUniqueKey + " / " + strKey, item, selection_name);
			}		 				
		}
	}
}
	
//Parse array to show elements		
function parseArrayToShowElements(strUniqueKey, aArrayToParse) {
	if(aArrayToParse == null) {	return;	}
	if(aArrayToParse.length == undefined){	return;	}
				
	if(aArrayToParse[_webform_selection_value]!=undefined && aArrayToParse[_webform_selection_value]!=null)
	{
		for (var strKey in aArrayToParse) 
		{					
			var item = aArrayToParse[ strKey ];
			if((strUniqueKey + " / " + strKey) == (strUniqueKey + " / " + _webform_selection_value)) 
			{
				parseSubArrayToShowElements(strUniqueKey + " / " + strKey, item);						
				break;
			}
		
			if((typeof item == "object") && (item != null)) 
			{			
				parseArrayToShowElements(strUniqueKey + " / " + strKey, item);							
			} 
		}
	}
}

//Parse sub array to show elements
function parseSubArrayToShowElements(strUniqueKey, aArrayToParse) {
	if(aArrayToParse == null) {	return;	}
	if(aArrayToParse.length == undefined){	return;	}			
	for (var strKey in aArrayToParse) {		
		var item = aArrayToParse[ strKey ];
		// DISPLAY FIELDS		
		if((typeof item == "object") && (item != null)) {						
			$("#"+strKey+"_container").show();
			
		} else {
			$("#"+item+"_container").show();
			
		}
	}
}
			
//Parse sub array to hiding elements
function parseSubArrayToHideElements(strUniqueKey, aArrayToParse, selection_name) {
				if(aArrayToParse == null) {	return;	}
				if(aArrayToParse.length == undefined){	return;	}
				
				for (var strKey in aArrayToParse) {
					var item = aArrayToParse[ strKey ];
					// HIDE FIELDS
					if((typeof item == "object") && (item != null) && (selection_name != strKey)) {
					
						$("#"+strKey+"_container").hide();
						
					} else {
						$("body >div.helpbox_container").hide();
						$("body >iframe").hide();
						$("#"+item+"_container").hide();
						
					}
				}
}	

function trim(stringToTrim) 
{
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
	
// Changes " " marks to "_"			
function spacesToUnderscore(str) {
	var ret = trim(str);
	while(ret.indexOf(" ") > -1 && ret != "") {
		ret = ret.replace(" ", "_");
	}
	return ret;
}		

function validateDynamicFields() {
	//First, make exactly sam validation as in checkDynamicWebformMandatoryValidations
	var noErrors = true;
	var m_item = _webform_MandatoryDynamicFields[ _webform_selection_value ];	
	
	for (var strKey in _webform_MandatoryDynamicFields) {		
		var topic_value = _webform_MandatoryDynamicFields[ strKey ];
			
		// topic is selected
		if(strKey == _webform_selection_value){
				
			for (var strField in topic_value) {
				var filled_value = $('input[id="' + topic_value[strField] + '"]').attr("value");
				
				if( filled_value == null)
				{
					// this field is not input field, try selection field selection
					filled_value = $("#"+topic_value[strField]).children(":selected").attr("value");					
				}
				
				// check is value empty
				if(filled_value == ""){
					//window.alert(topic_value[strField]);
					// set mandatory validation error
					$('label[id="' + topic_value[strField] + '_label' + '"]').addClass(_cssErrorClass);	
					noErrors = false;
				} 
				else {
				// change style to normal, because it is ok
				$('label[id="' + topic_value[strField] + '_label' + '"]').removeClass(_cssErrorClass);
				}
			}
		}
	}
	
	//Error message is on the server, so temporarily we need to have it locally
	if(!noErrors) {
		if (document.getElementById("form_error_message")) {
			$(_feedbackMessageField).html($("#form_error_message").text());
		} else {
			$(_feedbackMessageField).html("Please check the highlighted field(s)");
		}
		$(_feedbackMessageField).show();
		$(_feedbackMessageField).addClass(_cssErrorClass);
	}
	//Let's highlight woth red all fields, that are mandatory and which are not validated on the client
	if (_webform_mandatoryfields.length > 0) {
			for (var i in _webform_mandatoryfields) {
			$('label[id="' + _webform_mandatoryfields[i] + '_label' + '"]').removeClass(_cssErrorClass);
					if (document.getElementById(_webform_mandatoryfields[i]) && document.getElementById(_webform_mandatoryfields[i]).value == "") {
						$('label[id="' + _webform_mandatoryfields[i] + '_label' + '"]').addClass(_cssErrorClass);	
					}
			}
	}
	return noErrors;
}