/*
 *  Vysym Corporation javascript
 */

//
//  Menu handler. Convert an unordered list into a menu.
//
var menu = function() {
    var t=15,z=50,s=6,a;
    
    function dd(n) {this.n=n; this.h=[]; this.c=[];}
    
    dd.prototype.init = function(p,c) {
        a=c; var w=document.getElementById(p), s=w.getElementsByTagName('ul'), l=s.length, i=0;
        for (i;i<l;i++) {
            var h=s[i].parentNode; this.h[i]=h; this.c[i]=s[i];
            h.onmouseover=new Function(this.n+'.st('+i+',true)');
            h.onmouseout=new Function(this.n+'.st('+i+')');
        }
    }
    
    dd.prototype.st = function(x,f) {
        var c=this.c[x], h=this.h[x], p=h.getElementsByTagName('a')[0];
        clearInterval(c.t); c.style.overflow='hidden';
        if (f) {
            p.className+=' '+a;
            if (!c.mh) {c.style.display='block'; c.style.height=''; c.mh=c.offsetHeight; c.style.height=0;}
            if (c.mh==c.offsetHeight) {c.style.overflow='visible';}
            else {c.style.zIndex=z; z++; c.t=setInterval(function(){sl(c,1)},t);}
        } else {p.className=p.className.replace(a,''); c.t=setInterval(function(){sl(c,-1)},t);}
    }
    
    function sl(c,f) {
        var h=c.offsetHeight;
        if ((h<=0&&f!=1)||(h>=c.mh&&f==1)){
            if(f==1){c.style.filter=''; c.style.opacity=1; c.style.overflow='visible';}
            clearInterval(c.t); return;
        }
        var d=(f==1) ? Math.ceil((c.mh-h)/s) : Math.ceil(h/s), o=h/c.mh;
        c.style.opacity=o; c.style.filter='alpha(opacity='+(o*100)+')';
        c.style.height=h+(d*f)+'px';
    }
    
    return {dd:dd}
}();

//
//  Swap Bios
//
function swapBio(n) 
{
    var names = ['pm','cd'];
    
    if (n<0 || n>names.length) return;
    if (n===0) {
        var q = location.search.substring(1);
        var a = q.split("=");
        if (a[0]==='bio') {
            who=a[1];
            for (i=0;i<names.length;i++) {
                if (names[i]===who) { n=i; break; }
            }
        }
    } else {
        n--;
        for (i=0;i<names.length;i++) { 
            document.getElementById(names[i]+'_bio').style.display='none'; 
            document.getElementById(names[i]+'_li').className='';
        }
    }
    document.getElementById(names[n]+'_bio').style.display='block';
    document.getElementById(names[n]+'_li').className='current';
}

//////////  Form Validation  //////////
//
//  Numeric validation
//  Use /[-]?^\d*\.?\d*$/ for negative and/or decimal numbers
//
function isNumeric (val) 
{
    if (val == null || !val.toString().match(/^\d+$/)) return false; 
    return true;
}
//
//  Validate an email address
//
function validateEmail (addr) {
    var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return addr.match(re);
}
//
//  Validate a US phone number formatted as:
//   (000)000-0000, (000) 000-0000, 000-000-0000, 000.000.0000, 000 000 0000, 0000000000
//
function validatePhone (ph) {
    var re = /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/;
    return re.test(ph);
}

function ValidateContactForm()
{
	var name = document.contact.name;
	if (!name.value.length > 0) {
		alert("Please enter your name"); name.focus(); return false;
	}
	var comp = document.contact.company;
	if (!comp.value.length > 0) {
		alert("Please enter your company name"); comp.focus(); return false;
	}
	var email = document.contact.email;
	if (email.value.length > 0) {
		if (!validateEmail(email.value))
			{ alert("Please enter a valid Email address"); email.focus(); return false; }
	} else {
		alert("Please enter your Email address"); email.focus(); return false;
	}
	return true;
}

function ValidateDemoForm() 
{
	var name = document.demo.name;
	if (!name.value.length > 0) {
		alert("Please enter your name"); name.focus(); return false;
	}
	var title = document.demo.title;
	if (!title.value.length > 0) {
		alert("Please enter your title"); title.focus(); return false;
	}
	var comp = document.demo.company;
	if (!comp.value.length > 0) {
		alert("Please enter your company name"); comp.focus(); return false;
	}
	var ph = document.demo.phone;
	if (ph.value.length<10) {
		alert("Please enter your 10-digit phone number"); ph.focus(); return false;
	} else if (!validatePhone(ph.value)) {
		alert("Please enter a valid 10-digit phone number."); ph.focus(); return false;
	}
	var email = document.demo.email;
	if (email.value.length<5) {
		alert("Please enter your Email address"); email.focus(); return false;
	} else if (!validateEmail(email.value)) {
		alert("Please enter a valid Email address"); email.focus(); return false;
	}
	var cmts = document.demo.comments;
	if (!cmts.value.length > 0) {
		alert("Please enter comments regarding your demo request"); cmts.focus(); return false;
	}
	return true;
}

