
pic_top_left = new Image(3, 3);
pic_bottom_left = new Image(3, 3);
pic_top_left_hover = new Image(3, 3);
pic_bottom_left_hover = new Image(3, 3);

pic_top_right = new Image(3, 3);
pic_bottom_right = new Image(3, 3);
pic_top_right_hover = new Image(3, 3);
pic_bottom_right_hover = new Image(3, 3);

pic_top_left.src = "images/angle_top_left.gif";
pic_bottom_left.src = "images/angle_bottom_left.gif";
pic_top_left_hover.src = "images/angle_hover_top_left.gif";
pic_bottom_left_hover.src = "images/angle_hover_bottom_left.gif";

pic_top_right.src = "images/angle_top_right.gif";
pic_bottom_right.src = "images/angle_bottom_right.gif";
pic_top_right_hover.src = "images/angle_hover_top_right.gif";
pic_bottom_right_hover.src = "images/angle_hover_bottom_right.gif";

/*
Makes a preload of the rollover images
*/
function preload(firstmenu, lastmenu)
{
  if (document.images)
  {
    img1 = document.getElementById('topleftimg');
    img2 = document.getElementById('bottomleftimg');
    img3 = document.getElementById('toprightimg');
    img4 = document.getElementById('bottomrightimg');

    if (img1 && img2)
    {
      img1.src = (firstmenu) ? pic_top_left_hover.src : pic_top_left.src;
      img2.src = (firstmenu) ? pic_bottom_left_hover.src : pic_bottom_left.src;
    }
    if (img3 && img4)
    {
      img3.src = (lastmenu) ? pic_top_right_hover.src : pic_top_right.src;
      img4.src = (lastmenu) ? pic_bottom_right_hover.src : pic_bottom_right.src;
    }
  }
}

/*
Initiates the style of the selected menu
*/
function initMenuStyle(side, num)
{
  if (side != "")
  {
    midelem = document.getElementById("middle"+side+"m");

    if (midelem)
    {
      midelem.className = 'middlerectangle_hover';
    }
  }

  menu = document.getElementById('menu'+num);
  if (menu)
  {
    menu.className = 'menu_hover';
  }
}

/*
Changes the style of the hovered menu
*/
function hoverMenu(id, firstmenu, lastmenu)
{
  if (!id)
  {
    return;
  }

  var elem = document.getElementById(id);
  if (!elem)
  {
    return;
  }

  elem.className = 'menu_hover';

  if (firstmenu)
  {
    img1 = document.getElementById('topleftimg');
    img2 = document.getElementById('bottomleftimg');
    if (img1 && img2)
    {
      img1.src = pic_top_left_hover.src;
      img2.src = pic_bottom_left_hover.src;
    }

    midleft = document.getElementById('middleleftm');
    if (midleft)
    {
      midleft.className = 'middlerectangle_hover';
    }
  }
  else if (lastmenu)
  {
    img3 = document.getElementById('toprightimg');
    img4 = document.getElementById('bottomrightimg');
    if (img3 && img4)
    {
      img3.src = pic_top_right_hover.src;
      img4.src = pic_bottom_right_hover.src;
    }

    midright = document.getElementById('middlerightm');
    if (midright)
    {
      midright.className = 'middlerectangle_hover';
    }
  }
}

/*
Changes the style of the unhovered menu
*/
function unhoverMenu(id, firstmenu, lastmenu)
{
  if (!id)
  {
    return;
  }

  var elem = document.getElementById(id);
  if (!elem)
  {
    return;
  }

  elem.className = 'menu';

  if (firstmenu)
  {
    img1 = document.getElementById('topleftimg');
    img2 = document.getElementById('bottomleftimg');
    if (img1 && img2)
    {
      img1.src = pic_top_left.src;
      img2.src = pic_bottom_left.src;
    }

    midleft = document.getElementById('middleleftm');
    if (midleft)
    {
      midleft.className = 'middlerectangle';
    }
  }
  else if (lastmenu)
  {
    img3 = document.getElementById('toprightimg');
    img4 = document.getElementById('bottomrightimg');
    if (img3 && img4)
    {
      img3.src = pic_top_right.src;
      img4.src = pic_bottom_right.src;
    }

    midright = document.getElementById('middlerightm');
    if (midright)
    {
      midright.className = 'middlerectangle';
    }
  }
}

/*
Validates a form
*/
function validate(formName, errorCell)
{
  form = document.forms[formName];
  total_elems = form.elements.length;

  var j = 0;
  var errorMsg1 = "";
  var errorMsg2 = "";

  for (j = 0; j < total_elems; ++j)
  {
    if (form.elements[j].attributes['obligatory'])
    {
      if (form.elements[j].attributes['obligatory'].value == 1 && form.elements[j].value == "")
      {
        errorMsg1 += form.elements[j].attributes['label'].value + "<br/>";
        errorMsg2 += form.elements[j].attributes['label'].value + "<br/>";
      }
      else if (form.elements[j].attributes['name'].value == 'email' && !emailCheck('email'))
      {
        errorMsg1 += form.elements[j].attributes['label'].value + "<br/>";
        errorMsg2 += form.elements[j].attributes['label'].value + "<br/>";
      }
    }
    else if (form.elements[j].attributes['name'].value == 'email' && !emailCheck('email'))
    {
      errorMsg1 += form.elements[j].attributes['label'].value + "<br/>";
      errorMsg2 += form.elements[j].attributes['label'].value + "<br/>";
    }
  }

  if (errorMsg1 != "")
  {
    var cell = document.getElementById(errorCell);
    if (cell)
    {
      cell.innerHTML = "<font color='red'>"+errorMsg1+"</font><br/><br/>";
    }
    else
    {
      alert(errorMsg2);
    }
    return false;
  }

  return true;
}

/*
Validates an email text input
*/
function emailCheck (elem)
{
  var emailStr = document.getElementById(elem).value;

  var checkTLD = 1;

  var knownDomsPat=/^(com|net|org|edu|gov|mil|int|arpa|aero|biz|coop|info|pro|museum|name|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cd|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zr|zw)$/;

  //var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

  var emailPat=/^(.+)@(.+)$/;

  var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

  var validChars="\[^\\s" + specialChars + "\]";

  var quotedUser="(\"[^\"]*\")";

  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

  var atom=validChars + '+';

  var word="(" + atom + "|" + quotedUser + ")";

  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray=emailStr.match(emailPat);

  if (matchArray==null)
      return false;

  var user=matchArray[1];
  var domain=matchArray[2];

// check domain
  var pos = domain.indexOf(".") ;
  if (pos == -1) {
      return false ;
  }

  var subdom = domain.substr(pos+1, domain.length);
  subdom = subdom.toLowerCase() ;

  if (subdom != "com" && subdom != "info" && subdom != "biz" && subdom != "net" && subdom != "org" && subdom != "name" &&
      subdom != "us" && subdom != "de" && subdom != "tv" && subdom != "cc" && subdom != "co.uk" && subdom != "me.uk" &&
      subdom != "org.uk" && subdom != "ca" && subdom != "cn" && subdom != "ch" && subdom != "fr" && subdom != "nl" &&
      subdom != "bg" && subdom != "ru")
      return false ;

// Start by checking that only basic ASCII characters are in the strings (0-127).

  for (i=0; i<user.length; i++) {
       if (user.charCodeAt(i)>127)
           return false;
  }
  for (i=0; i<domain.length; i++) {
       if (domain.charCodeAt(i)>127)
           return false;
  }

// See if "user" is valid

  if (user.match(userPat)==null)
      return false;

  var IPArray = domain.match(ipDomainPat);
  if (IPArray!=null) {

      for (var i=1;i<=4;i++) {
           if (IPArray[i]>255)
               return false;
      }
      return true;
  }

// Domain is symbolic name.  Check if it's valid.

  var atomPat=new RegExp("^" + atom + "$");
  var domArr=domain.split(".");
  var len=domArr.length;
  for (i=0;i<len;i++) {
       if (domArr[i].search(atomPat)==-1)
           return false;
  }

  if (checkTLD && domArr[domArr.length-1].length!=2 &&
      domArr[domArr.length-1].search(knownDomsPat)==-1)
      return false;

  if (len<2)
      return false;

  return true;
}

