
function turn_radio() {
	var d = document;
	var b = navigator.userAgent.toLowerCase();
	var safari = (b.indexOf('safari') != -1 || b.indexOf('webkit') != -1);
	if (this.className == 'label_radio r_off' || this.getElementsByTagName('input')[0].checked) {
        var ls = d.getElementsByTagName('label');
        for (var i = 0; i < ls.length; i++) 
        {
            if (ls[i].className.indexOf('label_radio') != -1) 
            {
                ls[i].className = 'label_radio r_off';
            }
        };
        this.className = 'label_radio r_on';
		this.getElementsByTagName('input')[0].checked = true;
    } else {
        this.className = 'label_radio r_off';
		this.getElementsByTagName('input')[0].checked = false;
    };
};

function initFancyForm() {
	var d = document;
	var b = navigator.userAgent.toLowerCase();
	var safari = (b.indexOf('safari') != -1 || b.indexOf('webkit') != -1);
    if(!d.getElementById || !d.createTextNode) return;
    var l = d.getElementsByTagName('label');
    for (var i = 0; i < l.length; i++) {
/*
if (l[i].className == 'label_check') {alert("test");
            l[i].className = (safari) ? (l[i].getElementsByTagName('input')[0].checked == true) ? 'label_check c_on' : 'label_check c_off' : (l[i].getElementsByTagName('input')[0].checked) ? 'label_check c_on' : 'label_check c_off';
            l[i].onmousedown = check_it;
        }
       */
        if (l[i].className == 'label_radio') 
        {
 			l[i].className = 'label_radio r_off';
            l[i].onmousedown = turn_radio;
        };
    };
};

function isNumeric(strText)
{
	var ValidChars = "0123456789";  // valid characters
	var IsNumber = true;
	var Char;

	for (i = 0; i < strText.length && IsNumber == true; i++) { 
		Char = strText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
			}
	}
	return IsNumber;
}

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) 
{
	/* ALL FORMS : Specific form editing is handled in else if blocks below */
	this.formobj=document.forms[frmname];
	var domainMatch=/^[a-zA-Z]*[0-9]*[\-]*[\.]*$/ //regular expression defining a 5 digit number
	if (this.formobj.first_name.value.length == 0)
		alert("Please enter your first name.");
	else if (this.formobj.last_name.value.length == 0)
		alert("Please enter your last name.");
	else if ((frmname != "contact_form") && (this.formobj.company.value.length == 0))
		alert("Please enter your company name.");
	else if (this.formobj.phone_number.value.length == 0)
		alert("Please enter your phone number.");
	else if (this.formobj.email.value.length == 0)
		alert("Please enter an email address.");
	else if (!CheckEmail(this.formobj.email.value)) 
	{
    		alert("Please enter a valid email address.");
    		this.formobj.email.focus();
  	} 
	/* CONTACT_FORM */
	else if (frmname == "contact_form")
	{
		if (this.formobj.organization.value.length == 0)
			alert("Please enter your organization.");
		else
	  		document.forms[frmname].submit();
	 }
	/* WEBINAR_REQUEST_FORM */
	else if (frmname == "webinar_request_form")
	{
		/* Street */	
		if (this.formobj.street.value.length == 0)
			alert("Please enter your address.");
		/* City */
		else if (this.formobj.city.value.length == 0)
			alert("Please enter your city.");
		/* State */
		else if (this.formobj.state.value.length == 0)
			alert("Please enter your state.");
		/* ZIP */
		else if (this.formobj.zip.value.length == 0)
			alert("Please enter your ZIP code.");			
		else if (this.formobj.job_title.value.length == 0)
			alert("Please enter your job title.");		
		else
	  		document.forms[frmname].submit();	
	}
	/* WEBINAR_LIBRARY_REQUEST_FORM */
	else if (frmname == "webinar_library_request_form")
	{
		if (this.formobj.job_title.value.length == 0)
			alert("Please enter your job title.");		
		else if (this.formobj.area_responsibility.value.length == 0)
			alert("Please enter your area of responsibility.");		
		else if (this.formobj.media_type[1].checked == true)
		{
			if (this.formobj.address1.value.length == 0)
				alert("Please enter your address.");
			else if (this.formobj.city.value.length == 0)
				alert("Please enter your city.");		
			else if (this.formobj.state.value.length == 0)
				alert("Please enter your state.");		
			else if (this.formobj.zip_code.value.length == 0)
				alert("Please enter your ZIP code.");	
			else
				document.forms[frmname].submit();	
		}
		else
			document.forms[frmname].submit();
	}	
	/* INFO_FORM */
	else if (frmname == "info_form")
	{
	  document.forms[frmname].submit();
	}
}