function CheckEmail(x)
// This function checks if  object.value  is a domainname, a subdomainname or an emailaddress
{
	if (check_email(x)) {
  		return(true);
	} else {
		return(false);
  	}
}

function check_domain(x)
// This function checks if  x  is a domainname
{
  if (!(single_domain(x))) return double_check(x);

  return true;
}

function check_subdomain(x)
{
  var b = /[\.\-]{2}/;		 // a domainname may not contain two of these next to eachother
  var c = /^[\.\-]/;		 // a domainname may not start with these
  var d = /^([A-Za-z0-9\-.]+)$/; // a domainname may only contain these

  if ((b.test(x))||(c.test(x))||(!(x.match(d)))) return false;

  var m = /([A-Za-z0-9\-]+)\.([A-Za-z0-9\-]{2,})\.([A-Za-z]{2,6})$/;
  var p = x.match(m);

  if (p!=null)
  {
    if (p.length==3) return check_domain(p[p.length-2]+"."+p[p.length-1]);
    if (p.length==4) return check_domain(p[p.length-3]+"."+p[p.length-2]+"."+p[p.length-1]);
  }

  return false;
}


function single_domain(x)
// This function checks if  x  is a domainname with a single TLD extention
{
    var b = /[\.\-]{2}/;	 // a domainname may not contain two of these next to eachother
    var c = /^[\.\-]/;	 // a domainname may not start with these

    if ((b.test(x))||(c.test(x))) return false;

    var n = /(^[A-Za-z0-9\-]{2,})\.([A-Za-z]{2,6})$/;	// Single TLD extention
    var p = x.match(n);

    if ((!(p==null)) && (p.length==3))    // Single TLD
    {
      var q=p[2];

      var Name2 = /ac|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|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|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|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|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/i;
          // 242 differend Name2
      var Name3 = /biz|com|edu|gov|int|mil|net|org|pro/i;
          // 9 differend Name3
      var Name4 = /info|name|coop|aero/i;
          // 4 differend Name4
      var Name6 = /museum/i;
          // 1 Name6

      if (((q.length==2) && (Name2.test(q))) ||
          ((q.length==3) && (Name3.test(q))) ||
          ((q.length==4) && (Name4.test(q))) ||
          ((q.length==6) && (Name6.test(q))) )  {return true;}

    }

	n = /(^[A-Za-z0-9\-]{2,})\.([A-Za-z0-9\-]{2,})\.([A-Za-z]{2,6})$/;	// Double TLD extention
    p = x.match(n);

    if ((!(p==null)) && (p.length==4))    // Single TLD
    {
      var q=p[3];

      var Name2 = /ac|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|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|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|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|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/i;
          // 242 differend Name2
      var Name3 = /biz|com|edu|gov|int|mil|net|org|pro/i;
          // 9 differend Name3
      var Name4 = /info|name|coop|aero/i;
          // 4 differend Name4
      var Name6 = /museum/i;
          // 1 Name6

      if (((q.length==2) && (Name2.test(q))) ||
          ((q.length==3) && (Name3.test(q))) ||
          ((q.length==4) && (Name4.test(q))) ||
          ((q.length==6) && (Name6.test(q))) )  {return true;}
	}
  return false;
}


function double_check(x)
// This function checks if  x  is a domainname with a double TLD extention
{
  var b = /[\.\-]{2}/;	 // a domainname may not contain two of these next to eachother
  var c = /^[\.\-]/;	 // a domainname may not start with these

  if ((b.test(x))||(c.test(x))) return false;

  var m = /(^[A-Za-z0-9\-]{2,})\.([A-Za-z0-9\-]{2,})\.([A-Za-z]{2,6})$/;	// Double TLD extention
  var p = x.match(m);

  if ((p!=null) && (p.length==4))    // Double TLD
  {
    var q=p[2]+"."+p[3];
	
    var NameAc2  = /^(ac)\.(ae|at|by|cn|cy|id|il|in|kr|ma|nz|pa|ru|th|tz|uk|uz|zw)/i
        // 18 differend NameAc2
    var NameCo2  = /^(co)\.(at|id|il|in|kr|ma|mz|nz|om|th|tz|uk|uz|ve|yu|za|zw)/i
        // 17 differend NameCo2
    var NameCom2 = /^(com)\.(ai|ar|au|ba|bb|bh|bm|bn|cn|cy|ec|eg|er|ge|gh|gi|gr|gu|jo|kh|kz|la|lb|ly|mm|mo|mt|mv|mx|my|na|nf|ng|ni|np|om|pa|pl|pr|py|qa|ro|sa|sb|sc|sg|tj|tr|tv|tw|ua|uy|uz|ve|vn|ye)/i
        // 56 differend NameCom2
    var NameEdu2 = /^(edu)\.(ag|al|ar|au|ba|bb|bh|bm|bn|bs|cn|ec|ee|eg|er|ge|gh|gi|gr|gu|jo|kh|kn|lb|lc|mo|mt|mv|mx|my|na|ng|pa|ph|pl|pr|py|qa|ru|sa|sg|tm|tr|tw|ua|uy|uz|ve|ye)/i
        // 49 differend NameEdu2
    var NameGov2 = /^(gov)\.(al|ar|au|bb|bh|bm|bn|cy|ec|eg|er|ge|gg|gh|gi|gu|gy|il|in|je|jo|kh|lb|lc|lv|ma|mo|mt|mv|my|na|nf|ng|np|ph|pl|pr|py|qa|sa|sg|tm|tr|ua|uk|ve|ye|zw)/i
        // 48 differend NameGov2
    var NameNet2 = /^(net)\.(ai|ar|au|ba|bb|bh|bm|bn|cn|ec|eg|er|ge|gr|gu|id|il|in|kh|la|lb|ly|ma|mo|mt|mv|mx|my|nf|ng|np|nz|pa|pl|pr|py|qa|sa|sg|sy|th|tr|ua|uk|uy|ve|ye)/i
        // 47 differend NameNet2
    var NameOrg2 = /^(org)\.(ai|al|ar|au|ba|bb|bh|bm|bn|by|cn|cy|ec|eg|er|ge|gh|gi|gr|gu|gy|il|in|jo|kh|la|lb|lc|ly|ma|mo|mt|mx|my|na|nf|ng|ni|np|nz|pa|pl|pr|py|qa|ro|sa|sg|tr|uk|uy|ve|ye|za|zw)/i
        // 55 differend NameOrg2

    if ((q.match(NameAc2))  ||
        (q.match(NameCo2))  ||
        (q.match(NameCom2)) ||
        (q.match(NameEdu2)) ||
        (q.match(NameGov2)) ||
        (q.match(NameNet2)) ||
        (q.match(NameOrg2)) )  {return true;}

	  var Rest=/^(alt.na|arts.ro|arts.ve|asn.au|aus.nf|bbs.tr|bib.ve|cri.nz|csiro.au|eun.eg|fin.ec|firm.ro|firm.ve|gen.nz|go.id|go.kr|go.th|go.tz|gob.mx|gob.ni|gob.pa|gomel.by|govt.nz|grodno.by|gub.uy|gv.at|hk.cn|id.au|id.lv|info.au|info.ro|info.ve|int.ar|int.ru|int.ve|iwi.nz|k.ec|k.il|k.tr|ltd.gi|ltd.uk|med.ec|mil.ar|mil.ec|mil.nz|mil.tr|mil.ve|mo.cn|mogilev.by|muni.il|ne.kr|ne.tz|nhs.uk|nom.ro|nom.ve|nt.ro|off.ai|or.id|or.kr|or.th|or.tz|oz.au|oz.nf|pe.kr|plc.uk|pp.se|press.ma|priv.no|priv.pl|re.kr|rec.ro|rec.ve|res.in|sch.gg|sch.uk|school.nz|sci.eg|sld.cu|sld.pa|sport.hu|store.ro|store.ve|tec.ve|telememo.au|tm.mt|tm.ro|tm.za|tw.cn|uk.co|uk.com|una.py|us.com|uu.mt|vitebsk.by|web.id|web.ve|www.ro)/i
        // 97 other dubble TLD's with not ordened.
  
    if (q.match(Rest))
      return true;
  }

  return false;
}


function check_IP(x)
// This function checks if  x  is an IPnumber
{
  var s = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;  
  var t = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
  
  var k=x.match(s);
  if (k==null) k=x.match(t);

  if (k!=null) return ((k[1]<256) && (k[2]<256) && (k[3]<256) && (k[4]<256));
    
  return false;
}

function check_email(x)
// This function checks if  x  is an emailaddress
{
  var b = /[\._\-@&]{2}/;	// an emailadress may not contain two of these next to eachother
  var c = /^[\._\-&]/;		// an emailadress may not start with these

  var m = /(^[A-Za-z0-9_\.\-&]{1,})@([A-Za-z0-9\.\-\[\]]{5,})$/;
  var p = x.match(m);

  var n = /(^\"[A-Za-z0-9_ \.\-&]{1,})\"@([A-Za-z0-9\.\-\[\]]{5,})$/;
  var q = x.match(n);

  var o = /(^[A-Za-z]{1,}) \<(([A-Za-z0-9_ \.\-&]{1,})@([A-Za-z0-9\.\-\[\]]{5,}))\>$/;
  var r = x.match(o);

  var s = /(^\"[A-Za-z0-9_ \.\-&,:]{1,})\" \<(([A-Za-z0-9_ \.\-&]{1,})@([A-Za-z0-9\.\-\[\]]{5,}))\>$/;
  var t = x.match(s);


 if (p!=null) return  ((!(b.test(x))) && (!(c.test(x))) &&
			(check_subdomain(p[2]) || check_domain(p[2]) || check_IP(p[2])));
  else if (q!=null) return    ((!(b.test(x))) && (!(c.test(x))) &&
		 	       (check_subdomain(q[2]) || check_domain(q[2]) || check_IP(q[2])));
  
  if (r!=null) return check_email(r[2]);
  else if (t!=null) return check_email(t[2]);

  return false;
}


function checkDomain(emailAddy)
{
	var domainMatch=/^[a-zA-Z]*[0-9]*[\-]*[\.]*$/ //regular expression defining a 5 digit number
	if (emailAddy.indexOf("@") == -1)
		return -1;
	else if (emailAddy.split("@").length > 2 )
		return -1;
	else
	{
		var splitResult = emailAddy.split("@");
		var emailDomain = splitResult[1];
		if (emailDomain.search(domainMatch)==-1)
			return -1;		
		else
			return true;
	}
}
function validateForm(frmname) 
{
	this.formobj=document.forms[frmname];
	if (this.formobj.first_name.value.length == 0)
	{
		alert("Please enter your first name.");
    	this.formobj.first_name.focus();
	}
	else if (this.formobj.last_name.value.length == 0)
	{
		alert("Please enter your last name.");
    	this.formobj.last_name.focus();
	}
	else if (this.formobj.email.value.length == 0)
	{
		alert("Please enter your email address.");
    	this.formobj.email.focus();
	}
	else
	{
		document.forms[frmname].value = "scripts/formmail2.asp";
    	document.forms[frmname].submit();
	}
}

function controlHeight()
{
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("msie") != -1) 
	{
		if (document.body.id != "homepage") {
			if (document.body.id != "white_papers") {	
				if (document.body.id != "approach") {	
				var divHeight = 0;
				var d = document.getElementById("content_container");
				if(d.offsetHeight)
					divHeight=d.offsetHeight;
				else if(d.style.pixelHeight)
					divHeight=d.style.pixelHeight;
				if (divHeight < 470)
					document.getElementById("content_container").style.height = 470 + "px";
				}
			}	
		}
	}
}