/*
================================================================================================
                         Copyright © 2008, Agate Software, Inc.
================================================================================================
 File: MenuMain_Consultant.asp

 Description: Contains useful javascript functions that can be used by all scripts.

------------------------------------------------------------------------------------------------
 History                                                        By               Date
------------------------------------------------------------------------------------------------
 Created                                                        Steven Christopher    10/20/2008
 Modified - Added print view link and functionality             Steven Christopher    08/10/2009
 Modified - Added validation function                           Steven Christopher    09/21/2009
================================================================================================
*/

var arrLoadFunctionList = new Array(0);
var printStylesheet;
var printStylesheetLink;
var inputs;
var textareas;
var selectboxes;
window.onload = runOnLoadFunctions;

// Simulates window.onload = functionName
// Syntax requies use of quotes and parens): addOnLoad('functionName()')
function addOnLoad(functionName)
{
  arrLoadFunctionList[arrLoadFunctionList.length] = functionName;
}

// Runs all the functions from addOnLoad() in the order they were added
function runOnLoadFunctions()
{
  if(typeof arrLoadFunctionList[0] != "undefined")
  {
    for (var i = 0;arrLoadFunctionList.length > i; i++)
    {
      eval(arrLoadFunctionList[i]);
    } 
  }

  setupPrintableVersionLink();

}

// Get elements with a specific attribute
// Only strAttribute and strValue are required
// Passing in a value for strTagname will make this run faster - optional
// Passing an ELEMENT for parentElement will make this run faster - optional, strValue must be filled out or = ""
function getElementsByAttributeValue(strAttribute,strValue,strTagname,parentElement)
{

  // See if strTagname was set
  if(typeof strTagname == "undefined" || strTagname == "")
  {
    strTagname = "*";
  }

  // See if a parentElement was passed in
  if(typeof parentElement == "undefined")
  {
    parentElement = document;
  }

  // Build array of desired elements
  var arrElements = parentElement.getElementsByTagName(strTagname);

  var arrReturn = new Array();

  for(var i = arrElements.length - 1; i >= 0; i--)
  {
    if(arrElements[i].getAttribute(strAttribute) == strValue)
    {
      arrReturn[arrReturn.length] = arrElements[i]
    }
  }

  return arrReturn;
}

function setupPrintableVersionLink()
{
  printStylesheet = document.getElementById("mainPrintStylesheet");

  printStylesheetLink = document.getElementById("printview");

  if (printStylesheetLink != null)
  {
    //printStylesheetLink.onclick = togglePrintView;   //Disable to prevent instant toggling.
    printStylesheetLink.target = "printPreview";   //Disable to allow instant toggling.

    inputs = document.getElementsByTagName("input")
    textareas = document.getElementsByTagName("textarea")
    selectboxes = document.getElementsByTagName("select");
    // Don't run this on a page that doesn't have a print view link.  Probably won't work out.
    if (window.location.toString().indexOf("printview") > -1)
    {
      togglePrintView()
      document.getElementById("finalPrintStylesheet").setAttribute("media","all");
      document.getElementById("finalPrintStylesheet").disabled = false;
    }
  }

}

function togglePrintView()
{

  if (printStylesheet.disabled == true)
  {
    printStylesheet.disabled = false;
    printStylesheetLink.innerHTML = "View Web Version"
    printStylesheetLink.href = printStylesheetLink.href.replace("#printview","");
  }
  else
  {
    printStylesheet.disabled = true;
    printStylesheetLink.innerHTML = "View Printable Version"
  }

  toggleInputs();

  //return false;  //Disable to prevent instant toggling.
}

function toggleInputs()
{
  for(var i = inputs.length - 1; i >= 0; i--)
  {
    if(inputs[i].readOnly == false)
    {
      inputs[i].setAttribute("printed","true")
      inputs[i].readOnly = true;

      if (inputs[i].type == "checkbox")
      {
        inputs[i].onclick = function() {return false};
      }
    }
    else if (inputs[i].getAttribute("printed") == "true" && inputs[i].readOnly == true)
    {
      inputs[i].readOnly = false;

      if (inputs[i].type == "checkbox")
      {
        inputs[i].onclick = function() {return true};
      }
    }
  }

  for(var i = selectboxes.length - 1; i >= 0; i--)
  {
    if(selectboxes[i].disabled == false)
    {
      selectboxes[i].setAttribute("printed","true")
      selectboxes[i].disabled = true;
    }
    else if (selectboxes[i].getAttribute("printed") == "true" && selectboxes[i].disabled == true)
    {
      selectboxes[i].disabled = false;
    }
  }
  
}

function getQuerystring(key, default_)
{
  if (default_==null) default_="";
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
} 

function validateWithRegex (regex, message,element)
{
  element.value = element.value.replace(/\s/g,"");

  regex = regex.replace(/\\/g,"\\");

  regex = new RegExp(regex)

  if (element.value != "")
  {
    if(element.value.match(regex) == null)
    {
      /*element.setAttribute("class",element.getAttribute("class") + " invalid");*/
      alert(message);
      element.focus();
    }
    else
    {
      if(element.getAttribute("class") != null)
      {
        /*element.setAttribute("class",element.getAttribute("class").replace(/invalid/g,""));*/
      }
    }
  }
}