/*-------------------------------------------------
Title:		CNX JavaScript functions
Updated:	April 14 2010
------------------------------------------------- */




// add load event function
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}




// prepares links based on XML "rel" attribute
function prepareLinks() {
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		
		// prepare external links
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
			anchor.target = "_blank";
		}

		// prepare close window links
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "close") {
			anchor.onclick = function() {
				window.close();
			}
		}
	}
}




function validate(formid) {
	if(document.getElementById(formid)) {
		var theForm = document.getElementById(formid);
		
		theForm.onsubmit = function() {
			if(theForm.firstname.value=='') {
				alert('Your first name is required.');
				theForm.firstname.focus();
				return false;
			}
			
			if(theForm.lastname.value=='') {
				alert('Your last name is required.');
				theForm.lastname.focus();
				return false;
			}
			
			if (theForm.userEmail.value.indexOf("@") == -1 || theForm.userEmail.value == "") {
				alert('A valid email address is required.');
				theForm.userEmail.focus();
				return false;
			}
			
			if(theForm.id == 'submitfaq') {
				if(theForm.question.value=='') {
					alert('Please enter a question.');
					theForm.question.focus();
					return false;
				}
			}
			return true;
		}
	}
}




function verify(formid) {
	if(document.getElementById(formid)) {
		var theForm = document.getElementById(formid);
		var error = 0;
		
		for (x = 0; x < theForm.elements.length; x++) {
			if (theForm.elements[x].className == "required") {
				if (theForm.elements[x].type == "text" || theForm.elements[x].type == "select-one") {
					if (theForm.elements[x].value == "") {
						theForm.elements[x].parentNode.className = 'error';
						error = 1;
					} else {
						theForm.elements[x].parentNode.className = '';
					}
				}
			}
		}
		
		if(get('email')) {
			// email validation
			var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
			var address = get('email').value;
			
			if(reg.test(address) == false) {
				alert('You have entered an invalid email address. Please try again.');
				error = 1;
				get('email').focus();
				return false;
			}
		}
		
		if (error == 1) {
			alert("You must fill out all required fields before you can submit the form.");
			return false;
		}
	}
}



// simple function to generate a random number
function rand(n) {
	return (Math.floor(Math.random() * n + 1));
}



// simple function to return an element's id
function get(id) {
	return document.getElementById(id);
}




// simple show
function show(id) {
	if (!document.getElementById) return;
		
	var element = document.getElementById(id);
	
	if(navigator.appName.indexOf("Microsoft") > -1) {
		element.style.display = 'block';
	}

	else {
		if(element.nodeName == 'TABLE') {
			element.style.display = 'table';
		}
		
		else if(element.nodeName == 'TR') {
			element.style.display = 'table-row';
		}

		else if(element.nodeName == 'TBODY') {
			element.style.display = 'table-row-group';
		}
		
		else {
			element.style.display = 'block';
		}
	}
}




// simple hide
function hide(id) {
	if (!document.getElementById) return;
		
	var element = document.getElementById(id);
	
	element.style.display = 'none';
}




// calculate times
function calcage(secs, num1, num2) {
	s = ((Math.floor(secs/num1))%num2).toString();
	if (s.length < 2)
		s = "0" + s;
	return s;
}





// countdown function
function countdown(eventDate) {
	if(!document.getElementById) return false;
			
	// initialize variables
	var now = new Date();
	var theEvent = new Date(eventDate);
	
		// get the local time
		var localTime = now.getTime();
		
		// obtain local UTC offset and convert to msec
		var localOffset = now.getTimezoneOffset() * 60000;
		
		// obtain UTC time in msec
		var utc = localTime + localOffset;
		
		// obtain and add destination's UTC time offset
		var offset = -5;   
		var nyTime = utc + (3600000*offset);
		
		var timeDiff = nyTime - localTime;
		var timeDiff = 0;
		
	// make the time adjustment
	theEvent = theEvent - timeDiff;
	
	
	var ms = (theEvent - now);
	
	if(ms>0) {
		var secs = ms / 1000;
		var frac = secs / 10;
		frac = frac.toString();
		frac = frac.substring(frac.indexOf(".") + 2);
		frac = frac.substring(0,2);
		
		document.getElementById('days').innerHTML = calcage(secs,86400,100000);
		document.getElementById('hrs').innerHTML = calcage(secs,3600,24);
		document.getElementById('mins').innerHTML = calcage(secs,60,60);
/*
		document.getElementById('secs').innerHTML = calcage(secs,1,60);
		document.getElementById('frac').innerHTML = frac;
*/
	} else {
/* 		document.getElementById('h4').style.display = 'none'; */
		document.getElementById('countdown').style.display = 'none';
	}
}



// quote cycler
function cycleQuotes(n) {
	if(!document.getElementById) return;
	
	var delay = 12000;
	
	var n = n;
	
	switch(n) {
		case 1:
			$('c1').appear({ duration: 1.0 });
			$('c2').fade({ duration: 1.0 });
			setTimeout("cycleQuotes(2);",delay);
		break;
		
		case 2:
			$('c2').appear({ duration: 1.0 });
			$('c1').fade({ duration: 1.0 });
			setTimeout("cycleQuotes(1);",delay);
		break;
		
		default:
			n = 1;
	}
}



// initializer for quote cycler
function initialize() {
	var n = rand(2);
	
	switch(n) {
		case 1:
			$('c1').appear({ duration: 1.0 });
			setTimeout("cycleQuotes(1);",8000);
		break;
		
		case 2:
			$('c2').appear({ duration: 1.0 });
			setTimeout("cycleQuotes(2);",12000);
		break;
	}
}


// load events
addLoadEvent(prepareLinks);





