// Global Javascript

var no_click = false;

var NORM   = 1;
var DATE   = 2;
var URL    = 3;
var EMAIL  = 4;
var NUM    = 5;
var DEC    = 6;
var POSTAL = 7;
var TEL    = 8;

var CINE  = 0; //Check If Not Empty
var AC    = 1; //Always Check

function formError (elem, checkType, checkCon)
{
  var no_error   = true;
  var changeElem = elem;

  while ((changeElem.parentNode != undefined) &&
         !(changeElem.tagName == "TR" && changeElem.className == "edit"))
  {
    changeElem = changeElem.parentNode;
  }

  if ((checkCon == AC) || (checkCon == CINE && !checkNorm(elem)))
  {
    no_error = !((checkType == NORM   && checkNorm(elem))      ||
                 (checkType == DATE   && checkDate(elem))      ||
                 (checkType == NUM    && checkNum(elem))       ||
                 (checkType == DEC    && checkDec(elem))       ||
                 (checkType == URL    && checkUrl(elem))       ||
                 (checkType == POSTAL && checkPostal(elem))    ||
                 (checkType == TEL    && checkTelephone(elem)) ||
                 (checkType == EMAIL  && checkEmail(elem)))
  }

  if ((!no_error) && (changeElem.style != undefined))
  {
    changeElem.style.backgroundColor = "#FF9B9B";
  }
  else
  {
    changeElem.style.backgroundColor = getStyleClass(changeElem.className).backgroundColor;
  }

  return no_error;
}

function getStyleClass (className)
{
  var r,s;
  var re = new RegExp("\\." + className + "$", "gi");

  if (document.all)
  {
    for (s = 0; s < document.styleSheets.length; s++)
    {
      for (r = 0; r < document.styleSheets[s].rules.length; r++)
      {
        if (document.styleSheets[s].rules[r].selectorText.search(re) != -1)
        {
          return document.styleSheets[s].rules[r].style;
        }
      }
    }
  }
  else if (document.getElementById)
  {
    for (s = 0; s < document.styleSheets.length; s++)
    {
      for (r = 0; r < document.styleSheets[s].cssRules.length; r++)
      {
        if (document.styleSheets[s].cssRules[r].selectorText.search(re) != -1)
        {
          document.styleSheets[s].cssRules[r].sheetIndex = s;
          document.styleSheets[s].cssRules[r].ruleIndex = s;

          return document.styleSheets[s].cssRules[r].style;
        }
      }
    }
  }
  else if (document.layers)
  {
    return document.classes[className].all;
  }

  return document;
}

function checkNorm (elem)
{
  // returns true if error
  if ((((elem.tagName == "INPUT") || (elem.tagName == "TEXTAREA")) && (elem.value == "")) ||
      ((elem.tagName == "SELECT") && (elem.selectedIndex == -1)))
  {
    return true;
  }
  else
  {
    return false;
  }
}

function checkDate (elem)
{
  if (elem.tagName != "INPUT")
  {
    return true;
  }

  return !elem.value.match(/^(((0{0,1}[1-9])|([12][0-9])|(3[01]))-((0{0,1}[1-9])|(1[0-2]))-(((19)|(20))([0-9][0-9])))|(00-00-0000)$/);
}

function checkNum (elem)
{
  if (elem.tagName != "INPUT")
  {
    return true;
  }

  return !elem.value.match(/^[0-9]{1,}$/);
}

function checkDec (elem)
{
  if (elem.tagName != "INPUT")
  {
    return true;
  }

  return !elem.value.match(/^[0-9]{1,}([,\.][0-9]{1,}){0,1}$/);
}

function checkUrl (elem)
{
  if (elem.tagName != "INPUT")
  {
    return true;
  }

  return !elem.value.match(/^(ftp:\/\/|http:\/\/){0,1}([a-zA-Z0-9\._-]+)(\/.*){0,1}$/);
}
function checkPostal (elem)
{
  if (elem.tagName != "INPUT")
  {
    return true;
  }

  return !elem.value.match(/^[0-9]{4} {0,1}[A-Za-z]{2}$/);
}

function checkTelephone (elem)
{
  if (elem.tagName != "INPUT")
  {
    return true;
  }

  /* matches :
   * 12-34567890
   * 12 34567890
   * 123-4567890
   * 123 4567890
   * 1234-567890
   * 1234 567890
   * 1234567890
   */

  return !elem.value.match(/^([0-9]{2}[- ][0-9]{8})|([0-9]{3}[- ][0-9]{7})|([0-9]{4}[- ][0-9]{6})|([0-9]{10})$/);
}

function checkEmail (elem)
{
  if (elem.tagName != "INPUT")
  {
    return true;
  }

  return !elem.value.match(/^([a-zA-Z0-9_][-\.]{0,1})+@([a-zA-Z0-9_][-\.]{0,1})+\.[a-zA-Z0-9]{2,3}$/);
}

function tableOnClick(url)
{
  if (no_click == true)
  {
    no_click = false;
  }
  else
  {
    this.location = url;
  }
}

function buttonOnClick(url)
{
  no_click = true;

  this.location=url;
}

function buttonOnClickAsk(url)
{
  no_click = true;
  if (confirm("Are you sure?"))
  {
    this.location = url;
  }
}

function totalOffsetLeft(item)
{
  var r = 0;
  while (item)
  {
    r += item.offsetLeft;
    item = item.offsetParent
  }

  return r;
}

function totalOffsetTop(item)
{
  var r = 0;
  while (item)
  {
    r += item.offsetTop;
    item = item.offsetParent
  }

  return r;
}


function setSameLocationAlignLeft(elementSet, elementLoc)
{
  elementSet.style.left = totalOffsetLeft(elementLoc) + elementLoc.offsetWidth - elementSet.offsetWidth;
  elementSet.style.top = totalOffsetTop(elementLoc);
}

function setSameLocationAndSize(elementSet, elementLoc)
{
  elementSet.style.left = totalOffsetLeft(elementLoc);
  elementSet.style.top = totalOffsetTop(elementLoc);
  elementSet.style.width = elementLoc.offsetWidth;
}

function changeParentStyleClass(object, newClassName)
{
  object.parentNode.className = newClassName;
}

function changeStyleClass(object, newClassName)
{
  object.className = newClassName;
}

function changeStyle(object, newClassName)
{
  changeStyleClass(object, newClassName);
}

function popupRightBottom(classname, extravars, width, height)
{
  try
  {
    document.popper.close();
  } catch (error)
  {
  }

  var x = screen.width-width-30;
  var y = screen.height-height-100;

  var options = "width="+width+",height="+height+",left="+x+",top="+y+",screenx="+x+",screeny="+y;

  document.popper = open("./popup.php?class="+classname+"&"+extravars, 'popup', options);
  document.popper.focus();
}

function insertAfter(parent, node, referenceNode)
{
	parent.insertBefore(node, referenceNode.nextSibling);
}

function hover(elem, nextClass)
{
  elem.className = nextClass;
}

function hoverExclude(elem, nextClass, exclClass)
{
  if (elem.className != exclClass)
  {
    elem.className = nextClass;
  }
}
