/*************************************************************************************************************************** Lib: iApps (interactive Applications) JS Library Type: uif - User interface functions. Version: 1.2 IMP DATE: 13/11/2007 LAST MODIFIED: 08/11/2007 AUTHOR: OLIVER AMMANN ***************************************************************************************************************************/ /************************************************************************************** UI BEHAVIOUR FUNCTIONS **************************************************************************************/ // Begins showhide function for booking module function showHide(showId,bHide) { if (document.getElementById) { // DOM3 = IE5, NS6 if (!bHide && document.getElementById(showId).style.visibility == "hidden") { document.getElementById(showId).style.visibility = 'visible'; } else if(bHide) { document.getElementById(showId).style.visibility = 'hidden'; } } else { if (document.layers) { if (bHide && document.showId.visibility == "hidden") { document.showId.visibility = 'visible'; } else if(!bHide) { document.showId.visibility = 'hidden'; } } else { if (bHide && document.all.showId.style.visibility == "hidden") { document.all.showId.style.visibility = 'visible'; } else if(!bHide) { document.all.showId.style.visibility = 'hidden'; } } } } function closeUiElement(formName, elName) { formName.value = ""; showHide(elName,true); } // Determines UI state and displays previous selection on page load function detectUiState(getTripType, getPromoCdeState) { if (getTripType != null) { // Check trip type selection if (getTripType[1].checked) { showHideReturnDate(true); } } if (getPromoCdeState != null) { // Check promo code value and restore if applicable if (getPromoCdeState != "") { showHide('discountCode',false); } } } // This functions disables or enables the form field specified. // Whether the field is enabled or disbaled depends on if the variable disableEl is set to true or false function disableEnable(getEl, disableEl) { if (disableEl) { getEl.disabled=true; } else if (!disableEl) { getEl.disabled=false; } } // Function allows you to toggle enable/disable between two input fields function toggleFields(disableId, enableId, disableEl, enableEl) { disableEnable(enableEl, false); document.getElementById(enableId).style.backgroundColor = ''; disableEnable(disableEl, true); document.getElementById(disableId).style.backgroundColor = '#EBEBEB'; } // Function allows you to toggle enable/disable between two image icons function disableEnableGraphic(disableImgId, enableImgId, disableImg, enableImg) { document.getElementById(disableImgId).src = disableImg; document.getElementById(enableImgId).src = enableImg; } /************************************************************************************** Dynamic error message functions **************************************************************************************/ // Create, output and clear error messages // Author O.Ammann // V1.0 function errorCall() { var errorCallObj = new Object(); function setMessageHeader(divName, msgTitle, classAttr, iconSrc) { var errContainer = document.getElementById(divName); var image = document.createElement("img"); var errImgSpan = document.createElement("span"); var errTitleSpan = document.createElement("span"); var lineBreak = document.createElement("br"); var msgTitle = document.createTextNode(msgTitle); errImgSpan.setAttribute('name', 'es'); errTitleSpan.setAttribute('name', 'es'); errContainer.className = classAttr; errTitleSpan.appendChild(msgTitle); errTitleSpan.appendChild(lineBreak); errTitleSpan.style.fontWeight = "bold"; errTitleSpan.className = "SFErrHead"; image.src = iconSrc; errImgSpan.appendChild(image); errContainer.appendChild(errImgSpan); errContainer.appendChild(errTitleSpan); } function setMessage(divName, SFError) { var errContainer = document.getElementById(divName); var lineBreak = document.createElement("br"); var errorSpan = document.createElement("span"); var errorMessage = document.createTextNode(SFError); errorSpan.setAttribute('name', 'es'); errorSpan.className = "SFErrMsg"; errorSpan.appendChild(errorMessage); errorSpan.appendChild(lineBreak); errContainer.appendChild(errorSpan); } function clearError(elId, elType) { var errContainer = document.getElementById(elId); var els = document.getElementsByTagName(elType); for (var i=els.length-1; i >= 0; i--) { /** Fix for span tag bug added 02/07/2007 **/ if (elType == 'span') { curEl = els.item(i); attr = curEl.getAttribute('name'); if (attr == 'es') { els[i].parentNode.removeChild(els[i]); } } else { els[i].parentNode.removeChild(els[i]); } } if (errContainer.className != "") { errContainer.className=""; } } function setAlert(getId, iconSrc) { var elId = document.getElementById(getId); var image = document.createElement("img"); var imgLabel = document.createElement("label"); image.src = iconSrc; imgLabel.className = "iconAlert"; imgLabel.appendChild(image); var parent = elId.parentNode; parent.insertBefore(imgLabel, elId); } errorCallObj.setMessageHeader = setMessageHeader; errorCallObj.setMessage = setMessage; errorCallObj.clearError = clearError; errorCallObj.setAlert = setAlert; return errorCallObj; } fsError = new errorCall(); /************************************************************************************** AJAX Functions **************************************************************************************/ function doAjaxCall(filePath, targetDiv, styleClass, strSendRequest, strLoadingData, strDataLoaded, strPreparingDisplay, strError404, strErrorRetRequest) { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { //alert("Your browser does not support AJAX!"); return false; } } } xmlHttp.onreadystatechange=function() { // Check if IE and set target div height to 0 this is required to fix the excess white space at // the bottom of the div container if (navigator.userAgent.indexOf("MSIE") != -1) { document.getElementById(targetDiv).style.height = '0px'; } if(xmlHttp.readyState == 0) { document.getElementById(targetDiv).innerHTML = '