﻿/***************************************************************************************************/
/***** File        : scripts/default.js                                                        *****/
/***** Author      : Jan Bratli                                                                *****/
/***** Copyright   : CroBoCom AS, 2011                                                         *****/
/***** Date        : 2011-10-11                                                                *****/
/***** Last update : 2011-10-11                                                                *****/
/***** Description : Initial (default) javascript for all pages                                *****/
/***************************************************************************************************/
/***** Define all global variables                                                             *****/
/***************************************************************************************************/
var xmlhttp = null;
var debug = "false";
/***************************************************************************************************/
/***** Check and create XmlHttpObject                                                          *****/
/***************************************************************************************************/
xmlhttp = GetXmlHttpObject();
if (xmlhttp == null) { alert("Browser does not support XMLHTTP!"); }
/***************************************************************************************************/
function GetXmlHttpObject() {
  var var_xmlhttp = null;
  if (window.XMLHttpRequest) { var_xmlhttp = new XMLHttpRequest(); }
  else if (window.ActiveXObject) { var_xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); }
  return var_xmlhttp;
}
/***************************************************************************************************/
/***** Trims a string for leading and trailing spaces                                          *****/
/***************************************************************************************************/
String.prototype.trim = function () { return this.replace(/^\s*/, "").replace(/\s*$/, ""); }
/***************************************************************************************************/
/***** Returning actual document name                                                          *****/
/***************************************************************************************************/
function DocName() { var arr = document.location.href.split("/"); return arr[arr.length - 1]; }
/***************************************************************************************************/
/***** Initializing start page                                                                 *****/
/***************************************************************************************************/
function Initialize() {
  SendAjaxRequest({ "id": "initialize" });
}
/***************************************************************************************************/
/***** Sending Ajax Request to server                                                          *****/
/***************************************************************************************************/
function SendAjaxRequest(obj) {
  var xmlstring = "";
  document.body.style.cursor = "wait";
  if (obj != null) { for (key in obj) { if (xmlstring != "") { xmlstring += "&" } xmlstring += key + "=" + escape(obj[key]); } }
  xmlhttp.open("POST", "../scripts/ajax.php", true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
  xmlhttp.setRequestHeader("Content-length", xmlstring.length);
  xmlhttp.setRequestHeader("Connection", "close");
  xmlhttp.onreadystatechange = CheckInput;
  xmlhttp.send(xmlstring);
}
/***************************************************************************************************/
/***** Checking and responding to Ajax Response from server                                    *****/
/***************************************************************************************************/
function CheckInput() {
  switch (xmlhttp.readyState) {
    case 0: // Request is not initialize
    case 1: // Request is created, but not sent
    case 2: // Request is sent
    case 3: // Request is in progress
      break;
    case 4: // Request is complete.
      document.body.style.cursor = "default";
      switch (xmlhttp.status) {
        case 0:
          // When using Firefox and input comes from a scanner
          break;
        case 200:  // OK
          if (xmlhttp.responseText != null) {
            /**********************************************************/
            /*****  Main response check. Response is valid        *****/
            /**********************************************************/
            if (debug == "true") {
              alert(unescape(xmlhttp.responseText));
            }
            xmlDoc = xmlhttp.responseXML;
            xmlId = xmlDoc.getElementsByTagName("id");
            if (xmlId.length == 1) {
              var xmlTag = xmlId[0].childNodes[0].nodeValue;
              switch (xmlTag) {
                case "initialize":
                  break;
                default:
              }
            }
            CheckForAlerts(xmlDoc);
            CheckForChecked(xmlDoc);
            CheckForFocus(xmlDoc);
            CheckForLanguages(xmlDoc);
            CheckForLeftMenu(xmlDoc);
            CheckForUpdates(xmlDoc);
            CheckForValue(xmlDoc);
          }
          break;
        case 401:
          // Access denied
          alert(xmlhttp.responseText);
        case 404:
          // Not found
          break;
        case 500:
          // Server error
          alert(xmlhttp.responseText);
        default:
      }
      break;
    default:
      // other readystates
  }
}
function CheckForValue(obj) {
  var xmlObjectValue = obj.getElementsByTagName("object_value");
  for (i = 0; i < xmlObjectValue.length; i++) {
    xmlValue = xmlObjectValue[i].getElementsByTagName("object");
    if (xmlValue[0].childNodes.length == 0) { val_obj = ""; } else { val_obj = xmlValue[0].childNodes[0].nodeValue; }
    xmlValue = xmlObjectValue[i].getElementsByTagName("value");
    if (xmlValue[0].childNodes.length == 0) { obj_value = ""; } else { obj_value = xmlValue[0].childNodes[0].nodeValue; }
    document.getElementById(val_obj).value = obj_value;
  }
}
function CheckForChecked(obj) {
  var xmlChecked = obj.getElementsByTagName("checked");
  for (i = 0; i < xmlChecked.length; i++) {
    xmlValue = xmlChecked[i].getElementsByTagName("object");
    if (xmlValue[0].childNodes.length == 0) { ob = ""; } else { ob = xmlValue[0].childNodes[0].nodeValue; }
    xmlValue = xmlChecked[i].getElementsByTagName("params");
    if (xmlValue[0].childNodes.length == 0) { is_checked = ""; } else { is_checked = xmlValue[0].childNodes[0].nodeValue; }
    setTimeout(function () { document.getElementById(ob).checked = is_checked; }, 1);
  }
}
function CheckForAlerts(obj) {
  var xmlAlert = obj.getElementsByTagName("alert");
  for (i = 0; i < xmlAlert.length; i++) {
    xmlValue = xmlAlert[i].getElementsByTagName("content");
    if (xmlValue[0].childNodes.length == 0) { xmlValue = ""; } else { xmlValue = xmlValue[0].childNodes[0].nodeValue; }
    alert("Alert: " + xmlValue);
  }
}
function CheckForUpdates(obj) {
  var xmlUpdate = obj.getElementsByTagName('update');
  for (j = 0; j < xmlUpdate.length; j++) {
    var alt = "";
    var content = "";
    var element_type = "";
    var href = "";
    var id = "";
    var rel = "";
    var src = "";
    var style = "";
    var target = "";
    var type = "";
    var update_type = "";
    var value = "";
    for (i = 0; i < xmlUpdate[j].childNodes.length; i++) {
      switch (xmlUpdate[j].childNodes[i].nodeName) {
        case "alt":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { alt = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "content":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { content = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "element_type":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { element_type = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "href":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { href = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "id":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { id = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "rel":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { rel = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "src":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { src = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "style":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { style = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "target":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { target = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "type":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { type = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "update_type":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { update_type = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        case "value":
          if (xmlUpdate[j].childNodes[i].childNodes.length > 0) { value = xmlUpdate[j].childNodes[i].childNodes[0].nodeValue; }
          break;
        default:
      }
    }
    switch (update_type) {
      case "element":
        addElement(target, element_type, id, alt, src, style, value, href, rel, type);
        break;
      case "inner_html":
        var data = unescape(content);
        document.getElementById(target).innerHTML = data;
        break;
      default:
    }
  }
}
function CheckForFocus(obj) {
  try {
    var xmlFocus = obj.getElementsByTagName('focus');
    if (xmlFocus.length == 1) {
      xmlFocus = xmlFocus[0].getElementsByTagName('field');
      if (xmlFocus.length == 1) {
        xmlFocus = xmlFocus[0].childNodes[0].nodeValue;
        document.getElementById(xmlFocus).focus();
      }
    }
  }
  catch (e) {
  }
}
function CheckForLanguages(obj) {
  var innerHTML = "";
  var xmlLanguages = obj.getElementsByTagName('languages');
  for (j = 0; j < xmlLanguages.length; j++) {
    var alt = "";
    for (i = 0; i < xmlLanguages[j].childNodes.length; i++) {
      switch (xmlLanguages[j].childNodes[i].nodeName) {
        case "language":
          var alt = "";
          var path = "";
          var code = "";
          var selected = "";
          var style = "";
          for (k = 0; k < xmlLanguages[j].childNodes[i].childNodes.length; k++) {
            switch (xmlLanguages[j].childNodes[i].childNodes[k].nodeName) {
              case "alt":
                alt = xmlLanguages[j].childNodes[i].childNodes[k].childNodes[0].nodeValue;
                break;
              case "path":
                path = xmlLanguages[j].childNodes[i].childNodes[k].childNodes[0].nodeValue;
                break;
              case "code":
                code = xmlLanguages[j].childNodes[i].childNodes[k].childNodes[0].nodeValue;
                break;
              case "selected":
                selected = xmlLanguages[j].childNodes[i].childNodes[k].childNodes[0].nodeValue;
                switch (selected) {
                  case "true":
                    style = "border:2px solid #888";
                    break;
                  default:
                    style = "border:1px solid #000";
                }
                break;
              default:
            }
          }
          break;
        default:
      }
      innerHTML += "<img class='Flag' alt='" + alt + "' src='" + path + "' style='" + style + "' onclick=\"SelectLanguage('" + code + "');\" />";
    }
  }
  if (innerHTML != "") {
    document.getElementById("HeadingInline").innerHTML = innerHTML;
  }
}
function addElement(element, element_type, id, alt, src, style, value, href, rel, type) {
  switch (element_type) {
    case "img":
      var to_element = document.getElementById(element);
      break;
    case "link":
      var to_element = document.getElementsByTagName(element);
      to_element = to_element[0];
      break;
    default:
  }
  var new_element = document.createElement(element_type);
  if (alt != '') { new_element.setAttribute('alt', alt); }
  if (href != '') { new_element.setAttribute('href', href); }
  if (id != '') { new_element.setAttribute('id', id); }
  if (rel != '') { new_element.setAttribute('rel', rel); }
  if (src != '') { new_element.setAttribute('src', src); }
  if (style != '') {
    switch (navigator.appName) {
      case "Microsoft Internet Explorer":
        new_element.setAttribute('style');
        styles = style.split(";");
        for (i = 0; i < styles.length; i++) {
          if (styles[i] != "") {
            this_style = styles[i].split(":");
            new_element.style.setAttribute(trim(this_style[0]), trim(this_style[1]));
          }
        }
        break;
      default:
        new_element.setAttribute('style', style);
    }
  }
  if (type != '') { new_element.setAttribute('type', type); }
  if (value != '') { new_element.setAttribute('value', value); }
  to_element.appendChild(new_element);
}
function trim(sString) {
  if (sString == '') { return sString; }
  while (sString.substring(0, 1) == ' ') {
    sString = sString.substring(1, sString.length);
  }
  while (sString.substring(sString.length - 1, sString.length) == ' ') {
    sString = sString.substring(0, sString.length - 1);
  }
  return sString;
}
function SelectLanguage(language) {
  var page = "";
  var arr = new Array("pgAboutUs", "pgContactUs", "pgHome", "pgProducts", "pgUnderDevelopment", "login");
  for (var i = 0; i < arr.length; i++) {
    if (document.getElementById(arr[i])) {
      page = arr[i];
      break;
    }
  }
  SendAjaxRequest({ "id": "select_language", "language": language, "page": page });
}
