// copyright 2008, 2009 Bruce Kaskubar and Bar Consulting

var quotes =new Array();	// master list of quotes
var quotesQ =new Array();	// quotes not yet shown in current series
var qItem;					// content object

function showRandomItem() {
	var i, t, x;
	var transitionCnt =11; // number of steps to complete a fade-out and -in
	var transitionTm =1.6;	// number of seconds for completion of swap
	if (quotesQ.length <1) quotesQ =quotes.slice(); // start a new series
	x =Math.floor(Math.random() *quotesQ.length); // find random quotation not yet shown in current series
	for(i =0; i <=transitionCnt; i++) {	// fade out the current content
		t = setTimeout("setOpacity(100 *(1 -" +i +"/" +transitionCnt +"))",Math.ceil(i *500 *transitionTm/transitionCnt));
	}
	t = setTimeout('qItem.innerHTML ="' +quotesQ[x] +'";',transitionTm *500);
	for(i =0; i <=transitionCnt; i++) {	// fade in the new content
		t = setTimeout("setOpacity(100 *" +i +"/" +transitionCnt +")",Math.ceil(200 +transitionTm *500 +i *500 *transitionTm/transitionCnt));
	}
	t = setTimeout("showRandomItem()",quotesQ[x].length *100); // schedule the transition to next item; the longer the current item, the more time is given (for reading it)
	quotesQ.splice(x, 1);
}

function startQuotes() { // start quotation sequence
	qItem = document.getElementById("quotation");
	setTimeout("showRandomItem()",0); // start the slide show
} 

function setOpacity(v) {
//	set opacity to v percent (from 0 to 100)
	qItem.style.filter ="alpha(opacity=" +v +")";
	qItem.style.opacity =v /100;
}

function goodAL(s) {
//	Does string s look like address lines?
	if (s >'') return true;
	alert("Please provide an address.");
	return false;
}

function goodCN(s) {
//	Does string s look like a city name?
	if (/^[A-Z]/.test(s)) return true;
	if (s <='') alert("Please provide a city name.");
	else alert("Please check the city; it doesn't look right.");
	return false;
}

function goodDA(s) {
//	Does string s look like a dollar amount?
	if (/^((\$\d+)|(\$\d+\.\d{2})|(\d+)|(\d+\.\d{2}))$/.test(s)) return true;
	if (s <='') alert("Please provide a dollar amount.");
	else alert("Please check the dollar amount; it doesn't look right.");
	return false;
}

function goodDR(s1, s2) {
//	Do strings s1 and s2 look like a good date range?
	if (goodDT(s1) &&goodDT(s2)) return true;
	else alert("Please check the date range; it doesn't look right.");
	return false;
}

function goodDT(s) {
//	Does string s look like a date formatted as m/d/y?
	if (/^([1-9]|0[1-9]|1[012])([- \/.])([1-9]|0[1-9]|[12][0-9]|3[01])(\2)((19|20){0,1}[0-9]{2})$/.test(s)) return true;
	if (s <='') alert("Please provide a date.");
	else alert("Please check the date; it doesn't look right.");
	return false;
}

function goodEA(s) {
//	Does string s look like an email address?
	if (/^\w+([\.\-_]?\w+)*@\w+([\.\-_]?\w+)*\.\w{2,6}$/.test(s)) return true;
	if (s <='') alert("Please provide an email address.");
	else alert("Please check the email address; it doesn't look right.");
	return false;
}

function goodFL(s) {
//	Does string s look like a name (combined first and last)?
	if (/^[A-Z]([a-z\-\.])*\s[a-zA-Z\-\.]+$/.test(s)) return true;
	if (s <='') alert("Please provide a name.");
	else alert("Please check the name; it doesn't look right.");
	return false;
}

function goodPN(s) {
//	Does string s look like a phone number?
	if (/^\({0,1}(\d{3})?([.\-\s\)])?\d{3}([.\-\s])?\d{4}$/.test(s)) return true;
	if (s <='') alert("Please provide a phone number.");
	else alert("Please check the phone number; it doesn't look right.");
	return false;
}

function goodSC(s) {
//	Does string s look like a state code?
	if (/^(AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY)$/.test(s)) return true;
	if (s <='') alert("Please provide a state code.");
	else alert("Please check the state code; it doesn't look right.");
	return false;
}

function goodURL(s) {
//	Does string s look like a URL?
	if (/^(http:\/\/){0,1}\w+([\.\-_]?\w+)*\.\w{2,6}$/.test(s)) return true;
	if (s <='') alert("Please provide a URL.");
	else alert("Please check the URL; it doesn't look right.");
	return false;
}

function goodZC(s) {
//	Does string s look like a ZIP code?
	if (/^\d{5}(-\d{4}){0,1}$/.test(s)) return true;
	if (s <='') alert("Please provide a ZIP code.");
	else alert("Please check the ZIP code; it doesn't look right.");
	return false;
}

function goodTextFields(f) {
//	Does form f's text fields lack spammer content?
	var c =0;
	for (var i =0; i <f.elements.length; i++) if (f.elements[i].type.substr(0,4) =="text") if (/(:\/\/|www)/.test(f.elements[i].value)) return false;
	return true;
}
