﻿function GetElementById(elementId) {
  var element = document.getElementById(elementId);
  if (element != null) {
    return element;
  } else {
    alert('GetElementById: Requested element <' + elementId + '> could not be found!');
    return null;
  }
}
function DisplayPopupPanel(anchorPoint) {
    var popupPanel = GetElementById(anchorPoint.id + 'Popup');
    var popupIframe = document.getElementById(anchorPoint.id + 'PopupIframe');
    if (popupPanel != null) 
    {        
        var elementDetails = GetElementDetails(anchorPoint);    
        var parentElementDetails = GetElementDetails(popupPanel.offsetParent);
        // Fly out to the left if possible, otherwise fly out to the right.
        if (elementDetails.left - popupPanel.offsetWidth > 0)
        {
            popupPanel.style.left = elementDetails.left - popupPanel.offsetWidth - parentElementDetails.left + 'px';
        }
        else 
        {
            popupPanel.style.left = elementDetails.left + anchorPoint.offsetWidth - parentElementDetails.left + 'px';
        }
        popupPanel.style.zIndex = 100;
        popupPanel.style.top = elementDetails.top + Math.floor(anchorPoint.offsetHeight / 2) - parentElementDetails.top + 'px';
        popupPanel.style.visibility = 'visible';
        if (popupIframe == null) 
        {
            popupIframe = document.createElement('iframe');
            popupIframe.id = anchorPoint.id + 'PopupIframe'
            popupPanel.parentNode.appendChild(popupIframe);
        }
        popupIframe.style.zIndex = popupPanel.style.zIndex - 1;
        popupIframe.style.top = popupPanel.style.top;
        popupIframe.style.left = popupPanel.style.left;
        popupIframe.style.position = popupPanel.style.position;
        popupIframe.style.width = popupPanel.offsetWidth + 'px';
        popupIframe.style.height = popupPanel.offsetHeight + 'px';
        popupIframe.width = parseInt(popupPanel.offsetWidth);
        popupIframe.height = parseInt(popupPanel.offsetHeight);
        popupIframe.style.display = popupPanel.style.display;
        popupIframe.style.visibility = popupPanel.style.visibility;         
    }  
}
function HidePopupPanel(anchorPoint) {
  var popupPanel = GetElementById(anchorPoint.id + 'Popup');
  var popupIframe = GetElementById(anchorPoint.id + 'PopupIframe');
  if (popupPanel != null) 
  {        
    popupPanel.style.visibility = 'hidden';
  }
  if (popupIframe != null) 
  {
      popupIframe.style.visibility = 'hidden';
  }
}
function FindElementsPosition(element) {

 var curLeft = 0;
 var curTop = 0;
	if (element.offsetParent) {
		curLeft = element.offsetLeft
		curTop = element.offsetTop
		while (element = element.offsetParent) {
			curLeft += element.offsetLeft
			curTop += element.offsetTop
		}
	}
	return [curLeft,curTop];
}
function HtmlEncode(str) {
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}
function InitialiseNumericDropdown(elementId, minValue, maxValue, defaultValue, textOverides, paddingValue) {
  var innerHTML = null;
  var value = null;
  var text = null;
  var dropdown = GetElementById(elementId)
  if (dropdown != null) {
    if (textOverides != null) {
        innerHTML = innerHTML + '<option selected value="0">?</option>';
    }
    for (var i = minValue; i <= maxValue; i ++) {
      value = '' + i;
      if (textOverides == null || textOverides[i] == null) {
        text = '' + i;
      }
       else
       {
        text = textOverides[i];
      }
      text = HtmlEncode(text);
      if (paddingValue && (paddingValue > 0)){
        
        while(text.length < paddingValue){
          text = '0' + text;          
        }
        while(value.length < paddingValue){
          value = '0' + value;          
        }
      }
      if (i != defaultValue) {
        innerHTML = innerHTML + '<option value="' + value + '">' + text + '</option>';
      } else {
        innerHTML = innerHTML + '<option selected value="' + value + '">' + text + '</option>';
      }
    }
    if (browserType.indexOf('IE') >= 0) {
      dropdown.innerHTML = '<option value="">dummy</option>' + innerHTML;
      dropdown.outerHTML = dropdown.outerHTML;
    } else {
      dropdown.innerHTML = innerHTML;
    }    
  } else {
    alert('InitialisePassengerDropdown: Requested element <' + elementId + '> could not be found!');
    return null;    
  }
}
// added temporarily from framwork js

var debugEnabled;

debugEnabled = false;

function DebugMessage(messageText) {

  if (debugEnabled == true) {
    alert(messageText);
  }
}
function $(elementId) {

  var element;

  element = null;

  element = document.getElementById(elementId);
  if (element != null) {
    return element;
  } else {
    DebugMessage('$: Requested element <' + elementId + '> could not be found!');
    return null;
  }
}
function ElementDetails() {
this.left = 0;
  this.top = 0;
  this.width = 0;
  this.height = 0;
  this.marginRight = 0;
  this.marginLeft = 0;
  this.marginTop = 0;
  this.marginBottom = 0;
  this.offsetLeft = 0;
  this.offsetTop = 0;
}
function GetElementDetails(element) {
  var elementDetails;
  var elementLeft;
  var elementTop;
  var position;
  if (element == null) {
      return null;
  } else {
//elementDetails is now an object as we are instanitating our object function called 
//ElementDetails above
    elementDetails = new ElementDetails();
    elementLeft = 0;
    elementTop = 0;
    position = '';
    elementDetails.width = element.offsetWidth;
    elementDetails.height = element.offsetHeight;
    if(document.all) { // IE
      elementDetails.marginRight = parseInt(element.currentStyle.marginRight);
      elementDetails.marginLeft = parseInt(element.currentStyle.marginLeft);
      elementDetails.marginTop = parseInt(element.currentStyle.marginTop);
      elementDetails.marginBottom = parseInt(element.currentStyle.marginBottom);
    } else {          // Mozilla
      elementDetails.marginRight = parseInt(document.defaultView.getComputedStyle(element, '').getPropertyValue('margin-right'));
      elementDetails.marginLeft = parseInt(document.defaultView.getComputedStyle(element, '').getPropertyValue('margin-left'));
      elementDetails.marginTop = parseInt(document.defaultView.getComputedStyle(element, '').getPropertyValue('margin-top'));
      elementDetails.marginBottom = parseInt(document.defaultView.getComputedStyle(element, '').getPropertyValue('margin-bottom'));         
    }
    elementDetails.offsetLeft = element.offsetLeft;
    elementDetails.offsetTop = element.offsetTop;
	  elementLeft = element.offsetLeft
	  elementTop = element.offsetTop
	  while (element = element.offsetParent) {
      if (document.all) {
        position = element.currentStyle.position;
      } else {
        position = document.defaultView.getComputedStyle(element, '').getPropertyValue('position');
      }
      if (position != 'absolute') {    
		    elementLeft += element.offsetLeft
		    elementTop += element.offsetTop
      } else {
        break;
      }
	  }
    elementDetails.left = elementLeft;
    elementDetails.top = elementTop;
    DebugMessage(
      'Comtec.Framework10.JavaScript.GetElementDetails()\n' +
      'Left : ' + elementDetails.left + '\n' + 
      'Top : ' + elementDetails.top + '\n' + 
      'Width : ' + elementDetails.width + '\n' + 
      'Height : ' + elementDetails.height + '\n' +
      'Margin Right : ' +elementDetails.marginRight + '\n' +
      'Margin Left : ' + elementDetails.marginLeft + '\n' +
      'Margin Top : ' + elementDetails.marginTop + '\n' +
      'Margin Bottom : ' + elementDetails.marginBottom
    );
    return elementDetails;
  }
}