﻿// JScript File
var countmax = 10;

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
String.prototype.contains = function(t) { 
  return this.indexOf(t) >= 0 ? true : false 
}


function CallwithGet(getParameters,getURL) {
  var fullURL = getURL;
  var addedparam = false;
  var hasid = false;
  if (getURL.contains("?")) 
    hasid = true;
    
  for (var i=0; i < getParameters.length; i++) {
    var param = "";
    var elements = document.getElementsByClassName(getParameters[i]);
    if (elements.length > 0) {
      var element = elements[0];      
      if (element.tagName.toLowerCase() == "select"){
        if (element.selectedIndex == 0) {
          if (element.SelectObject.DefaultContent == 'Select Airframer') {
            alert('You must select an airframer');
            return false;
          }
        }
        else
          param = getParameters[i] + "=" + element.options[element.selectedIndex].value;
      }
      if (param != "") {
        if (!hasid && !addedparam) {
          fullURL += "?" + param;
          addedparam = true;
        } // if (!addedparam) {
        else
          fullURL += "&" + param;
      } // if (param != "") {
    } // if (elements.length > 0) {
  } // for (var i=0; i < getParameters.length; i++) {
//  alert(fullURL);
  document.location.href = fullURL;
}


function SelectObject(mySelect, WebService, NextObject, DependentFields, DefaultContent, Status) {
  // initialize member variables
  this.mySelect = mySelect; // the text box
  this.WebService = WebService;
  this.NextObject = NextObject;
  this.DependentFields = DependentFields;
  this.DefaultContent = DefaultContent;

  // attach handlers to the text-box 
  if (mySelect) {
    mySelect.SelectObject = this;
    mySelect.onchange = SelectObject.prototype.onOptionChange;
//    mySelect.onfocus = SelectObject.prototype.onOptionFocus;
    try {
      mySelect.add(new Option(DefaultContent, DefaultContent), null)  
    }
    catch(e) {
      mySelect.add(new Option(DefaultContent, DefaultContent))  
    }  
    if (Status == "disabled") {
      mySelect.disabled = true;
    }
    else {
      FillOptions(this.mySelect, this.WebService, this.DependentFields);
    }
  }
  else {
    return false;
  }
} 


SelectObject.prototype.assign = function(index, count) {    
  var thismySelect =  this.mySelect;
  var thisSelectObject = this;
  var myindex = index;
  var mycount = count;
  
  function doAssignment() {
    if (thismySelect.length > 1) {
      for (var i=1; i < thismySelect.length; i++) {
        if (thismySelect.options[i].value == myindex) {
          thismySelect.selectedIndex = i;
          break;
        }
      }
      if (thismySelect.selectedIndex > 0) {
        thisSelectObject.OptionChange();
      }
    }
    else {
      if (mycount < countmax) {
        mycount++;
        setTimeout(doAssignment, 1000);
      }
    }
  }
  
  if (thismySelect.length > 1) {
    for (var i=1; i < thismySelect.length; i++) {
      if (thismySelect.options[i].value == myindex) {
        thismySelect.selectedIndex = i;
        break;
      }
    }
    if (thismySelect.selectedIndex > 0) {
      this.OptionChange();
    }
  }
  else {
    if (count < countmax) {
      mycount++;
      setTimeout(doAssignment, 500);
    }
  }
}


SelectObject.prototype.reset = function() { 
  var mySelectObject = this.mySelect;
  mySelectObject.disabled = true;
  
  for(i=mySelectObject.options.length-1;i>=0;i--) {
    mySelectObject.remove(i);
  }
  
  try {
    mySelectObject.add(new Option(mySelectObject.SelectObject.DefaultContent, mySelectObject.SelectObject.DefaultContent), null)  
  }
  catch(e) {
    mySelectObject.add(new Option(mySelectObject.SelectObject.DefaultContent, mySelectObject.SelectObject.DefaultContent))  
  }  
}


SelectObject.prototype.onOptionChange = function() { this.SelectObject.OptionChange(); }
SelectObject.prototype.OptionChange = function() { 
  if (this.NextObject == null)
    return;
  var mySelectObject = this.NextObject;
  var mywebservice = mySelectObject.SelectObject.WebService;
  var myFieldObject = mySelectObject.SelectObject.DependentFields;
  
  for(i=mySelectObject.options.length-1;i>=0;i--) {
    mySelectObject.remove(i);
  }
  
  try {
    mySelectObject.add(new Option(mySelectObject.SelectObject.DefaultContent, mySelectObject.SelectObject.DefaultContent), null)  
  }
  catch(e) {
    mySelectObject.add(new Option(mySelectObject.SelectObject.DefaultContent, mySelectObject.SelectObject.DefaultContent))  
  }  
  mySelectObject.disabled = true;
  if (mySelectObject.SelectObject.NextObject != null) {
    mySelectObject.SelectObject.NextObject.SelectObject.reset();
  }
  
  var XMLHttpRequestObject = false; 

  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  var webserviceurl = createWebsericeURL(mywebservice, myFieldObject);
  if(XMLHttpRequestObject) { 
    XMLHttpRequestObject.open('GET', webserviceurl, true);
    XMLHttpRequestObject.onreadystatechange = function() { 
      if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) && 
          XMLHttpRequestObject.status == 200) {
        var AJAXresponse = XMLHttpRequestObject.responseText; 
        var myParsedString = "";
        var aStr = new Array();
        try { //Internet Explorer
          var xmlobject=new ActiveXObject("Microsoft.XMLDOM");
          xmlobject.async="false";
          xmlobject.loadXML(AJAXresponse);
          myParsedString = xmlobject.childNodes(1).text;
        } // try { Internet Explorer
        catch(e) {
          try { //Firefox, Mozilla, Opera, etc.
            parser=new DOMParser();
            xmlobject=parser.parseFromString(AJAXresponse,"text/xml");
            myParsedString = xmlobject.firstChild.textContent;
          } // try { Firefox, Mozilla, Opera, etc.
          catch(e) {
            xmlobject = null;
          } // catch(e) { -- try { Firefox, Mozilla, Opera, etc.
        } // catch(e) { -- try { //Internet Explorer
        aStr = myParsedString.split("~");
        if (aStr.length > 0) {
        // clear the popup div.
          var i, n = aStr.length;
          for ( i = 0; i < n; i++ ) {
            if (aStr[i].trim().length > 0) {
              mySelectObject.disabled = false;
              try {
                mySelectObject.add(new Option(aStr[i].trim(), aStr[i].trim()), null)    
              }
              catch(e) {
                mySelectObject.add(new Option(aStr[i].trim(), aStr[i].trim()))    
              }  
            } // if (aStr[i].trim().length > 0) {
          } // for ( i = 0; i < n; i++ ) {
        } // if (aStr.length > 0) {
      } // if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) && 
    } // XMLHttpRequestObject.onreadystatechange = function() {
    XMLHttpRequestObject.send(null); 
  } // if(XMLHttpRequestObject) {      
} // DivConditionalSelect.prototype.onchange = function() {

function FillOptions(mySelect, WebService, FieldObject) {
  var mywebservice = WebService;
  var mySelectObject = mySelect;
  var myFieldObject = FieldObject;
  
  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  var webserviceurl = createWebsericeURL(mywebservice, myFieldObject);
  if(XMLHttpRequestObject) { 
    XMLHttpRequestObject.open('GET', webserviceurl, true);
    XMLHttpRequestObject.onreadystatechange = function() { 
      if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) && 
            XMLHttpRequestObject.status == 200) {
        var AJAXresponse = XMLHttpRequestObject.responseText; 
        var myParsedString = "";
        var aStr = new Array();
        try { //Internet Explorer
          var xmlobject=new ActiveXObject("Microsoft.XMLDOM");
          xmlobject.async="false";
          xmlobject.loadXML(AJAXresponse);
          myParsedString = xmlobject.childNodes(1).text;
        } // try { Internet Explorer
        catch(e) {
          try { //Firefox, Mozilla, Opera, etc.
            parser=new DOMParser();
            xmlobject=parser.parseFromString(AJAXresponse,"text/xml");
            myParsedString = xmlobject.firstChild.textContent;
          } // try { Firefox, Mozilla, Opera, etc.
          catch(e) {
            xmlobject = null;
          } // catch(e) { -- try { Firefox, Mozilla, Opera, etc.
        } // catch(e) { -- try { Internet Explorer
        aStr = myParsedString.split("~");
        if (aStr.length > 0) {
        // clear the popup div.
          var i, n = aStr.length;
          for ( i = 0; i < n; i++ ) {
            if (aStr[i].trim().length > 0) {
              try {
                mySelectObject.add(new Option(aStr[i].trim(), aStr[i].trim()), null)    
              }
              catch(e) {
                mySelectObject.add(new Option(aStr[i].trim(), aStr[i].trim()))    
              }  
            } // if (aStr[i].trim().length > 0) {
          } // for ( i = 0; i < n; i++ ) {
        } // if (aStr.length > 0) {
      } // if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) && 
    } // XMLHttpRequestObject.onreadystatechange = function() { 
    XMLHttpRequestObject.send(null); 
  }
}


document.getElementsByClassName = function( clsName, nodeName, startnodeID ) {    
  var tag = nodeName||'*';
  var starttagID = startnodeID||'';
  var retVal = new Array();   
  var starttag;
  var elements;
 
  if (starttagID) {
    starttag = document.getElementById(starttagID);   
    if (starttag)
      elements = starttag.getElementsByTagName(tag); 
    else
      elements = document.getElementsByTagName(tag); 
  }
  else
    elements = document.getElementsByTagName(tag); 
  
  for(var i = 0;i < elements.length;i++) {  
   if(elements[i].className.indexOf(" ") >= 0) {            
      var classes = elements[i].className.split(" ");            
      for(var j = 0;j < classes.length;j++) {                
        if(elements[i].className.contains(clsName)) {                   
          retVal.push(elements[i]);
          break;
        }            
      }        
    }        
    else if(elements[i].className.contains(clsName)) {          
      retVal.push(elements[i]);    
    }
  }    
  return retVal;
};


function createWebsericeURL(starturl, parameters) {
  var returnstring = starturl + "?";
  
  for (var i in parameters) {
    try {
      if (parameters[i].selectedIndex != 0) {
        returnstring += i + "=" + parameters[i].options[parameters[i].selectedIndex].value + "&";
      }
      else
        returnstring += i + "=" + "&";
    }
    catch(e) {
    }
  }
  
  if (returnstring[(returnstring.length)-1] == "&") {
    returnstring = returnstring.substr(0,(returnstring.length)-1);
  }
  return returnstring;
}
