// JavaScript Document
var IEDOM = document.all;
var W3CDOM = document.getElementById;

function countVisitor(){
	var referrer = new c_url(document.referrer);
	var url = new c_url(location.href);

	document.writeln("Domain: " + url.domain + "<br>");
	document.writeln("Filepath: " + url.filepath + "<br>");
	document.writeln("Filename: " + url.filename + "<br>");
}

function dateValue(d){
	var dateArray = new Array();
	
	if (!isDate(d)) return (0);
	
	dateArray = d.split("-");
	if (dateArray.length != 3){
		dateArray = d.split("/");
	}
	
	//convert two-digit year to four digit year
	dateArray[2] = parseInt(dateArray[2]);
	if (dateArray[2] < 100) dateArray[2] += 2000;
	
	return ((dateArray[2] * 10000) + (dateArray[0] * 100) + (dateArray[1] * 1));
}

function c_url(url){
	//Define defualt domain start page
	var startPage = "index.htm";
	
	//Strip parameter list from url
	var url_minus_params = url.split("?")[0];

	//Break url into components
	var urlArray = url_minus_params.split("/");

	//Extract domain
	var domainArray = urlArray[2].split(".")
	if (domainArray.length == 2){
		this.domain = urlArray[2];
	} else {
		this.domain = "";
		for(i=1;i<domainArray.length;i++){
			this.domain+=domainArray[i];
			if (i < (domainArray.length-1)) this.domain+=".";
		}
	}

	//initialize filepath
	this.filepath = "";

	//set filename and 
	if (urlArray.length > 3){
		this.filename = urlArray[urlArray.length-1];
		
		for(i=3; i<=urlArray.length-2;i++){
			this.filepath+=urlArray[i];
		}
	} else {
		this.filename = startPage;
	}
}

function isDate(d){
	var month, day, year;
	var dateArray = new Array();
	
	if ((d.length < 6) || (d.length > 10)) return false;
	
	dateArray = d.split("-");
	if (dateArray.length != 3){
		dateArray = d.split("/");
		if (dateArray.length != 3) return false;
	}
	
//	alert(dateArray[0] + "-" + dateArray[1] + "-" + dateArray[2]);

	month = parseInt(dateArray[0], 10);
	day = parseInt(dateArray[1], 10);
	year = parseInt(dateArray[2], 10);
	
//	alert(month + "-" + day + "-" + year);
	
	if ((month < 1) || (month > 12)) return false;
	if (day < 1) return false;
	
	switch (month){
		case 2:
			if ((year % 4) == 0){
				return (day <= 29);
			} else {
				return (day <= 28);
			}
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			return (day <= 30);
			break;
		default:
			return (day <= 31);
	}
}

function isEmail(E){
	var domainSplit = new Array();
	var tldSplit = new Array();
	
	if (E.length < 6) return false;
	
	domainSplit = E.split("@");
	if (domainSplit.length != 2) return false;
	if (domainSplit[0].length < 1) return false;
	
	tldSplit = domainSplit[1].split(".");
	if (tldSplit[tldSplit.length - 1].length < 2) return false;
	
	return true;
}

function isEmpty(S){
	return ((S.length == 0) || (S == null));
}

function isPhone(P){
//determines if submitted value is a valid phone number: XXX-XXX-XXXX
	var phoneArray = new Array();
	
	//a valid phone number will have 12 chars
	if (P.length != 12) return false;
	
	//break phone number into its segments
	phoneArray = P.split("-");
	
	//a valid phone number will have three segments
	if (phoneArray.length != 3) return false;
	
	//verify that each segment is correct length
	if (phoneArray[0].length != 3) return false;
	if (phoneArray[1].length != 3) return false;
	if (phoneArray[2].length != 4) return false;
	
	//area code and exchange cannot start with 0 or 1
	if ((phoneArray[0].substr(0,1) == "0") || (phoneArray[0].substr(0,1) == "1")) return false;
	if ((phoneArray[1].substr(0,1) == "0") || (phoneArray[0].substr(0,1) == "1")) return false;
	
	// '555' is not a correct area code or exchange
	if (phoneArray[0] == "555" || phoneArray[1] == "555") return false;
	
	//if all other tests passed, phone number is in correct form
	return true;
}

function loadObject(id){
	if (IEDOM) return(eval("document.all." + id));
	if (W3CDOM) return(document.getElementById(id));
	return ("Browser not supported.");
}

/* Client-side access to querystring name=value pairs
	Version 1.3
	28 May 2008
	
	License (Simplified BSD):
	http://adamv.com/dev/javascript/qslicense.txt
*/
function Querystring(qs) { // optionally pass a querystring to parse
	this.params = {};
	
	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&'); // parse out name/value pairs separated via &
	
// split out each name=value pair
	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split('=');
		var name = decodeURIComponent(pair[0]);
		
		var value = (pair.length==2)
			? decodeURIComponent(pair[1])
			: name;
		
		this.params[name] = value;
	}
}

Querystring.prototype.get = function(key, default_) {
	var value = this.params[key];
	return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key) {
	var value = this.params[key];
	return (value != null);
}

