﻿// JScript File

function e(el) { return document.getElementById(el); }

function Validation() {};

Validation.ERROR_DIV = "validationErrorDiv";
Validation.fields = [];
Validation.errors = [];

/**
 * Adds an element to the list of elements to be validated when the form is submitted
 * 
 * @param elemId id of form element
 * @param description of form element e.g. Password
 */
Validation.addField = function(elemId, elemDescription) {
  Validation.fields.push({id : elemId, description: elemDescription});
};

/**
 * Adds an array of elements to the list of elements to be validated when the form is submitted
 * Each element in the array should be an object with id and description fields
 * @see Validation.addField for more
 */
Validation.addFields = function(array) {
  for (var i = 0, length = array.length; i < length; i++) {
    var element = array[i];  
    Validation.addField(element.id, element.description);
  }
};

/**
 * Function added to the onsubmit handler of a form and validates the fields that have been added through
 * Validation.addField 
 * If all elements are filled, it allows the form to be submitted
 * Otherwise, it prevents submission of the form and forces form elements to be filled
 */
Validation.onsubmit = function() {
  for (var i = 0, length = Validation.fields.length; i < length; i++) {
    var el = Validation.fields[i];
    var element = document.getElementById(el.id);
    if (!element) { 
      continue;
    }
    if (element.tagName == "INPUT") { //input elements
      switch (element.type) {
        case "text":
        case "password":
          if (element.value) { // no error
            continue; 
            element.className = ""; 
          }
          break;
        case "checkbox":
          if (element.checked) { //no error
            continue; 
            element.className = "";
          }
          break;       
      } 
    } else { // no other element type supported yet
      continue; 
    }
    // background stuff doesn't work on checkboxes in Firefox
    element.className = "fieldError"; //change this to addClass 
    Validation.errors.push(el.description + " is required");
  }
  
  if (Validation.errors.length > 0) {
    var errorDiv = document.getElementById(Validation.ERROR_DIV);
    if (errorDiv) {
      errorDiv.innerHTML = Validation.errors.join("<br />");
    }
    Validation.errors.length = 0; //clear errors for next time...
    return false;
  }
  return true; //no errors submit form
};

function isNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function pageLoad() 
{
}

window.onload = function() 
{ 
    pageLoad(); 
};

function getObjectValue(sObject, sNode)
{
    var sTemp=null;
    var sTempNode;
    
    sTempNode = '- '+sNode+': ';
    
    if(sObject.indexOf(sTempNode)>-1)
    {
        sTemp = sObject.substring(sObject.indexOf(sTempNode)+sTempNode.length);
        sTemp = sTemp.substring(0,sTemp.indexOf('\n')-1);
    }
    return sTemp;
}

function grayOut(vis, options) 
    {
        // Pass true to gray out screen, false to ungray
        // options are optional.  This is a JSON object with the following (optional) properties
        // opacity:0-100         // Lower number = less grayout higher = more of a blackout 
        // zindex: #             // HTML elements with a higher zindex appear on top of the gray out
        // bgcolor: (#xxxxxx)    // Standard RGB Hex color code
        // grayOut(true, {'zindex':'50', 'bgcolor':'#0000FF', 'opacity':'70'});
        // Because options is JSON opacity/zindex/bgcolor are all optional and can appear
        // in any order.  Pass only the properties you need to set.
        var options = options || {}; 
        var zindex = options.zindex || 50;
        var opacity = options.opacity || 70;
        var opaque = (opacity / 100);
        var bgcolor = options.bgcolor || '#000000';
        var dark=document.getElementById('darkenScreenObject');
        if (!dark)
        {
            // The dark layer doesn't exist, it's never been created.  So we'll
            // create it here and apply some basic styles.
            // If you are getting errors in IE see: http://support.microsoft.com/default.aspx/kb/927917
            var tbody = document.getElementsByTagName("body")[0];
            var tnode = document.createElement('div');           // Create the layer.
            tnode.style.position='absolute';                 // Position absolutely
            tnode.style.top='0px';                           // In the top
            tnode.style.left='0px';                          // Left corner of the page
            tnode.style.overflow='hidden';                   // Try to avoid making scroll bars            
            tnode.style.display='none';                      // Start out Hidden
            tnode.id='darkenScreenObject';                   // Name it so we can find it later
            tbody.appendChild(tnode);                            // Add it to the web page
            dark=document.getElementById('darkenScreenObject');  // Get the object.
        }
        if (vis) 
        {
            // Calculate the page width and height 
            if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) ) 
            {
                var pageWidth = document.body.scrollWidth+'px';
                var pageHeight = document.body.scrollHeight+'px';
            } 
            else if( document.body.offsetWidth ) 
            {
                var pageWidth = document.body.offsetWidth+'px';
                var pageHeight = document.body.offsetHeight+'px';
            } 
            else 
            {
                var pageWidth='100%';
                var pageHeight='100%';
            }   
            //set the shader to cover the entire page and make it visible.
            dark.style.opacity=opaque;                      
            dark.style.MozOpacity=opaque;                   
            dark.style.filter='alpha(opacity='+opacity+')'; 
            dark.style.zIndex=zindex;        
            dark.style.backgroundColor=bgcolor;  
            dark.style.width= pageWidth;
            dark.style.height= pageHeight;
            dark.style.display='block';                          
        } 
        else 
        {
            dark.style.display='none';
        }
    }