// =======================================================================================================
// This function provides several string operations.
// Parameter:	a - function (swap, add, remove, check)
//			o - string
//			c1, c2 - class names
// =======================================================================================================

function stringTool(a, o, c1, c2) {
    switch (a) {
		case'swap':
			o.className =! this.css('check',o,c1) ? o.className.replace(c2,c1) : o.className.replace(c1,c2);
			break;
		case 'add':
			if (!this.css('check',o,c1)) { o.className += o.className ? ' ' + c1 : c1; }
			break;
		case 'remove':
			var rep = o.className.match(' ' + c1) ? ' ' + c1 : c1;
			o.className = o.className.replace(rep,'');
			break;
		case 'check':
			return new RegExp('\\b'+c1+'\\b').test(o.className);
			break;
	}
}


// =======================================================================================================
// This function sets the focus (cursor).
// =======================================================================================================

function setFocus () {	
    try {
        if (document.forms['request']) {
            if (document.forms['request'].netUsername && document.forms['request'].netUsername.value == '') 
                document.forms['request'].netUsername.focus();
            else if (document.forms['request'].ppPersonFirstName)
                document.forms['request'].ppPersonFirstName.focus();
            else if (document.forms['request'].ppPTConfigurationSenderInfo)
                document.forms['request'].ppPTConfigurationSenderInfo.focus();
            else if (document.forms['request'].ppPTConfigurationPreSelectionName)
                document.forms['request'].ppPTConfigurationPreSelectionName.focus();
            else if (document.forms['request'].name_origin && (document.forms['request'].name_origin.value == '' || document.forms['request'].name_origin.className == 'odvInputList') && document.forms['request'].name_origin.type != 'hidden')
                document.forms['request'].name_origin.focus();
            else if (document.forms['request'].name_destination && (document.forms['request'].name_destination.value == '' || document.forms['request'].name_destination.className == 'odvInputList') && document.forms['request'].name_destination.type != 'hidden')
                document.forms['request'].name_destination.focus();
            else if (document.forms['request'].name_via && (document.forms['request'].name_via.value == '' || document.forms['request'].name_via.className == 'odvInputList') && document.forms['request'].name_via.type != 'hidden')
                document.forms['request'].name_via.focus();
            else if (document.forms['request'].assignedStop_dm_1)
                document.forms['request'].assignedStop_dm_1.focus();
            else if (document.forms['request'].dmLineSelection && document.forms['request'].dmLineSelection.value=='') 
                document.forms['request'].dmLineSelection.focus();
            else if (document.forms['request'].name_dm && document.forms['request'].name_dm.type != 'hidden')
                document.forms['request'].name_dm.focus();
            else if (document.forms['request'].name_ttb && document.forms['request'].name_ttb.type != 'hidden')
                document.forms['request'].name_ttb.focus();
            else if (document.forms['request'].lineSelIndex) 
                document.forms['request'].lineSelIndex.focus();
            else if (document.forms['request'].name_stt  && document.forms['request'].name_stt.type != 'hidden')
                document.forms['request'].name_stt.focus();
            else if (document.forms['request'].name_pp && (document.forms['request'].name_pp.value == '' || document.forms['request'].name_pp.className == 'odvInputList') && document.forms['request'].name_pp.type != 'hidden')
                document.forms['request'].name_pp.focus();
            else if (document.forms['request'].ppOdvIdentifier)
                document.forms['request'].ppOdvIdentifier.focus();
            else if (document.forms['request'].phoneNumber)
                document.forms['request'].phoneNumber.focus();
            else if (document.getElementById('stopSelection'))
                document.getElementById('stopSelection').focus();
            else if(document.forms['myJourneyPlannerFunctionality']) {
                if (document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_journey && document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_journey.type != 'hidden')
                    document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_journey.focus();
                else if (document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_origin && document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_origin.type != 'hidden')
                    document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_origin.focus();
                else if (document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_destination && document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_destination.type != 'hidden')
                    document.forms['myJourneyPlannerFunctionality'].nameForPersonalProfile_destination.focus();
            }
        }
        else if (document.forms['ppLogin']) {
            if (document.forms['ppLogin'].netUsername && document.forms['ppLogin'].netUsername.value == '') 
                document.forms['ppLogin'].netUsername.focus();
        }
    }
    catch (e) {}
}


// =======================================================================================================
// This function causes submit if the focus is e.g. on a list and the enter key is pressed.
// =======================================================================================================

function checkReturnKey(event) {
	if(!event) event = window.event;
	var keycode = event.which || event.keyCode;
	if (event && event.keyCode==13) {
		document.forms['request'].submit();
	}
}


// =======================================================================================================
// This function clears in input field.
// =======================================================================================================

function clearInput (input, value) {
	if (input.value == value) 
		input.value = '';
} 


// =======================================================================================================
// This function sets the value of an input field.
// =======================================================================================================

function setInput (input, value) {
	if (input.value == '')
		input.value = value;
}

// =======================================================================================================
// This function checkes the validity of an e-mail address.
// =======================================================================================================

function checkEMailAddressValidity (email) {
	var mail = email;
	var expression = /^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{1,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$/;
	var success = false;
	// test email-address
	if (expression.exec(mail))
		success = true;
	return success;
}


// =======================================================================================================
// This function checkes if a string is a number.
// =======================================================================================================

function checkNumberValidity (number) {
	var no = number;
	var expression = /^\d+$/;
	var success = false;
	// test email-address
	if (expression.exec(no))
		success = true;
	return success;
}


// =======================================================================================================
// This function sets the correct parameters if on option of the my location/recent location list is sent.  
// =======================================================================================================

function submitPPLocations () {
	var usages = new Array('origin', 'destination', 'dm', 'stt', 'ttb');
	if (document['request'].name_via)
		usages[usages.length+1] = 'via';
	for (var i=0; i<usages.length; i++) {
		// submit my location
		if (document.getElementById('myLocationsList_' + usages[i]) && document.getElementById('myLocationsList_' + usages[i]).style.display == 'block') {
			document.getElementById('type_' + usages[i]).value = 'pp';
			document.getElementById('inputField_' + usages[i]).value = document.getElementById('myLocationsList_' + usages[i]).options[document.getElementById('myLocationsList_' + usages[i]).selectedIndex].value;
		}
		// submit recent location
		else if (document.getElementById('recentLocationsList_' + usages[i]) && document.getElementById('recentLocationsList_' + usages[i]).style.display == 'block') {
			document.getElementById('type_' + usages[i]).value = 'pp';
			document.getElementById('inputField_' + usages[i]).value = document.getElementById('recentLocationsList_' + usages[i]).options[document.getElementById('recentLocationsList_' + usages[i]).selectedIndex].value;
		}
	}
}



// =======================================================================================================
// This function sets the monomodal car option for My Journey Planner. 
// =======================================================================================================

function setPPMonomodalCar (state) {
	if (document.getElementById('pp_itdLPxx_0')) {
		if (state)
			document.getElementById('pp_itdLPxx_0').value = 'monomodalCar:true';
		else
			document.getElementById('pp_itdLPxx_0').value = 'monomodalCar:false';
	}
}


// =======================================================================================================
// This function displays/hides the login box.
// =======================================================================================================

function toggleLoginBox (state) {
	if (state) {
		// hide login button
		if(document.getElementById('loginLink'))
			document.getElementById('loginLink').style.display = 'none';
		// show logoff button 
		if(document.getElementById('closeLoginLink'))
			document.getElementById('closeLoginLink').style.display = 'inline';
		// show login box
		if(document.getElementById('loginBox'))
			document.getElementById('loginBox').style.display = 'block';
		// set layout parameter to prevent closing the menu
		if(document.getElementById('itdLPxx_showLoginBox'))
			document.getElementById('itdLPxx_showLoginBox').value = 'true';
	}
	else {
		//show login button
		if(document.getElementById('loginLink'))
			document.getElementById('loginLink').style.display = 'inline';
		// hide logoff button 
		if(document.getElementById('closeLoginLink'))
			document.getElementById('closeLoginLink').style.display = 'none';
		// hide login box
		if(document.getElementById('loginBox'))
			document.getElementById('loginBox').style.display = 'none';
		// set layout parameter to prevent opening the menu
		if(document.getElementById('itdLPxx_showLoginBox'))
			document.getElementById('itdLPxx_showLoginBox').value = 'false';
	}
}


// =======================================================================================================
// This function toggles the map help.
// =======================================================================================================

function toggleMapHelp (state, usage) {
	if (document.getElementById('mdvMapHelp_' + usage) && document.getElementById('openMapHelp_' + usage)) {
		// open map help
		if (state) {
			document.getElementById('mdvMapHelp_' + usage).style.display = 'block';
			document.getElementById('openMapHelp_' + usage).style.display = 'none';
		}
		// close map help
		else {
			document.getElementById('mdvMapHelp_' + usage).style.display = 'none';
			document.getElementById('openMapHelp_' + usage).style.display = 'block';
		}
	}
}


// =======================================================================================================
// This function sends an ajax request for external RTA elements.
// =======================================================================================================

function loadRTAElements (language) {
	loadRTAHeader(language);
	loadRTAFooter(language);
}


// =======================================================================================================
// This function sends sends an ajax request for the external RTA head.
// =======================================================================================================

function loadRTAHeader (language) {
	var _url = _url = '/dub/eheader.html'; //'http://www.rta.ae/wpsv5/links/Design/eheader.html';
	if (language == 'ar')
		_url = '/dub/aheader.html'; //'http://www.rta.ae/wpsv5/links/Design/aheader.html';
		
	var _params = { };
		_params = $H(_params);
		_params = _params.toQueryString();
		
	var ajax = new Ajax.Updater('includeRTAHeader',_url, { method: 'get', parameters: _params, onComplete: loadHeaderComplete, evalScripts: true});
}

function loadHeaderComplete (result) {
	if (document && document.getElementById('includeRTAHeader')) 
		document.getElementById('includeRTAHeader').innerHTML = '<div class="clear">&nbsp;</div>' + result.responseText;
}


// =======================================================================================================
// This function sends sends an ajax request for the external RTA footer.
// =======================================================================================================

function loadRTAFooter (language) {
	var _url = '/dub/efooter.html'; //'http://www.rta.ae/wpsv5/links/Design/efooter.html'; 
	if (language == 'ar')
		_url = '/dub/afooter.html'; //'http://www.rta.ae/wpsv5/links/Design/afooter.html';
		
	var _params = { };
		_params = $H(_params);
		_params = _params.toQueryString();

	var ajax = new Ajax.Updater('includeRTAFooter',_url, { method: 'get', parameters: _params, onComplete: loadFooterComplete, evalScripts: true});

}

function loadFooterComplete (result) {
	if (document && document.getElementById('includeRTAFooter')) 
		document.getElementById('includeRTAFooter').innerHTML = '<div class="clear">&nbsp;</div>' + result.responseText;
}


