
function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}
		

function validateForm(someForm){
	var someElements = someForm.elements;
	var re_empty = /\w+/;
	var re_email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	var radioList = new Array();
	for(i=0; i < someElements.length; i++){
		switch(someElements[i].type){
		case "hidden":
			break;
		case "text":
			var alertName = getLabel(someElements[i].id);
			if(alertName.indexOf("*") > -1){
				if(alertName.indexOf("Email") > -1){
					if(!re_email.test(someElements[i].value)){
						someElements[i].focus();
						alert("\"" + someElements[i].value + "\" is not a valid email address!");
						return false;
					}
				}else{
					if(!re_empty.test(someElements[i].value)){
						someElements[i].focus();
						alert(alertName + " is a required field!");
						return false;
					}
				}
			}
			break;
		case "select-one":
			var alertName = getLabel(someElements[i].id);
			if(alertName.indexOf("*") > -1){
				if(someElements[i].selectedIndex == 0){
					someElements[i].focus();
					alert(alertName + " is a required field!");
					return false;
				}
			}
			break;
		case "radio":
			var stringList = radioList.toString();
			if(stringList.indexOf(someElements[i].name) == -1){
				radioList.push(someElements[i].name);
			}
			break;
		case "textarea":
			if(someElements[i].value == ""){
				var alertName = getLabel(someElements[i].id);
				someElements[i].focus();
				alert(alertName + " is a required field!");
				return false;
			}
			break;
		case "password":
			var alertName = getLabel(someElements[i].id);
			if(alertName.indexOf("*") > -1){
				if(!re_empty.test(someElements[i].value)){
					someElements[i].focus();
					alert(alertName + " is a required field!");
					return false;
				}
			}
			break;
		case "checkbox":
			if(!someElements[i].checked && someElements[i].name == "termsandconditions"){
				alert("You must accept the Terms and Conditions.");
				return false;
			}
			break;
		}
	}
	if(radioList.length > 0){
		for(k=0; k < radioList.length; k++){
			var radioCollection = eval("document.forms." + someForm.name + "." + radioList[0]);
			var isChecked = false;
			for(x=0; x < radioCollection.length; x++){
				if(radioCollection[x].checked){
					isChecked = true;
				}else{
					if(radioCollection[x].disabled){
						isChecked = true;
					}
				}
			}
			if(!isChecked){
				switch(radioCollection[0].name){
				case "subscription_type":
					alert("Please Choose A Subscription");
					break;
				case "card_type":
					alert("Please Choose A Type of Credit Card");
					break;
				}
				return false;
			}
		}
	}
	return true;
}

function submitForm(someForm){
	if(validBrowser()){
		if(validateForm(someForm)){
			someForm.submit();
		}
	}else{
		someForm.submit();
	}
}

function getLabel(someValue){
	var labelList = getElementsByTagNames('label');
	for(j=0; j < labelList.length; j++){
		var targetInput = labelList[j].attributes.getNamedItem('for').value;
		if(targetInput == someValue){
			return(labelList[j].innerHTML);
		}
	}
	return false;
}

function validBrowser(){
	var versionString = navigator.userAgent;
	var startPos = versionString.indexOf("MSIE");
	if( startPos > 0){
		var intVersion = versionString.substr(startPos + 5, 3);
		if(intVersion < 6.0 ){
			alert("You should really upgrade to Internet Explorer 7\nPlease visit http://update.microsoft.com");
			return false;
		}
	}
	return true;
}

