//	---------------------------------------------------------------------------
//	FUNCTION:	addRating()
//	AUTHOR:		Ryan J. Salva, http://www.capitolmedia.com
//	REVISED:	August 2005
//
//	Creates star rating for website feedback
//	
//	TESTED ON:
//	Windows Firefox 1, IE 6, Opera 8, Netscape 6
//	Mac Safari 1, IE 5.2
//
//	REQUIRED ASSETS:
//	1.) HTML with <SPAN ID="Stars" STARS="5"></SPAN> and <INPUT TYPE="hidden" ID="Rating" />
//	2.) files/site/star_gray.gif, star_blue.gif, star_gold.gif
//
//	IMPLEMENTATION:
//	include this file in the header with utility.js and stylesheet

function addRating() {
	if (document.getElementById("Stars") && document.getElementById("Stars").innerHTML == '') { // check for modern browser and Opera reloads the page with each loop, so only execute function when the page is fresh
		info('id=Stars exists and innerHTML = null');
		for(i=1;i<=document.getElementById("Stars").getAttribute("stars");i++) {
			myStar = document.createElement("IMG");
			myStar.id = "Star" + i;
			myStar.name = "Star" + i;
			myStar.src = "files/site/star_gray.gif";
			info('create id=Star'+i);
			if (document.all) { 
				myStar.onclick = function ieClick() {
					starClick(event.srcElement);
					info('IE onclick=starClick('+event.srcElement+')');
				}
				myStar.onmouseover = function ieOver() {
					starOver(event.srcElement);
					info('IE onmouseover=starOver('+event.srcElement+')');
				}
				myStar.onmouseout = function ieOut() {
					starOut(event.srcElement);
					info('IE onmouseout=starOut('+event.srcElement+')');
				}
			}
			else {
				myStar.onclick = function mozClick(event) {
					starClick(event.target);
					info('mozilla onclick=starClick('+event.target+')');
				}
				myStar.onmouseover = function mozOver(event) {
					starOver(event.target);
					info('mozilla onmouseover=starOver('+event.target+')');
				}
				myStar.onmouseout = function mozOut(event) {
					starOut(event.target);
					info('mozilla onmouseout=starOut('+event.target+')');
				}
			}
			document.getElementById("Stars").appendChild(myStar);
			info(document.getElementById("Stars").innerHTML);
		}
	}
}

function starOver(myStar) {
	info('starOver('+myStar+')');
	var stars = document.getElementById("Stars").getElementsByTagName("IMG");
	var x = myStar.id.replace("Star","");
	for (i=0;i<stars.length;i++) {
		if (i < x) {
			document.images['Star' + (i + 1)].src = 'files/site/star_blue.gif';
		}
		else {
			document.images['Star' + (i + 1)].src = 'files/site/star_gray.gif';
		}
	}
	return true;
}

function starOut(myStar) {
	info('starOut('+myStar+')');
	var stars = document.getElementById("Stars").getElementsByTagName("IMG");
	for (i=0;i<stars.length;i++) {
		if (document.getElementById("Rating").value <= i) {
			document.images[stars[i].name].src = 'files/site/star_gray.gif';
		}
		else {
			document.images[stars[i].name].src = 'files/site/star_gold.gif';
		}
	}
	return true;
}

function starClick(myStar) {
	info('starClick('+myStar+')');
	var x = myStar.id;
	document.getElementById("Rating").value = x.replace("Star","");
	info('change value: <input type=hidden id=Rating value='+x.replace("Star",""));
	var s = document.getElementById("Stars");
	var stars = document.getElementsByTagName("IMG");
	return true;
}



//	---------------------------------------------------------------------------
//	FUNCTION:	count(i)
//	AUTHOR:		Ryan J. Salva, http://www.capitolmedia.com
//	REVISED:	August 2005
//
//	Places a counter on the page displaying the number of remaining characters 
//	in a form element
//	
//	TESTED ON:
//	Windows Firefox 1, IE 6, Opera 8, Netscape 6
//	Mac Safari 1, IE 5.2
//
//	REQUIRED ASSETS:
//	HTML with <TEXTAREA ID="TextArea1" COUNTER="target" MAXLENGTH="650"></TEXTAREA> and <SPAN ID="target"></SPAN>
//
//	IMPLEMENTATION:
//	include this file in the header

function count(i) {
	info('count('+i+')');
	var v = i.value;
	var m = i.getAttribute("maxlength");
	document.getElementById(i.getAttribute("counter")).innerHTML = m - v.length;
	if (v.length >= m) {
		i.value = v.substring(0,m - 1);
		if (i.createTextRange) {
			var range = i.createTextRange();
			range.collapse(false);
			range.select();
		}
		i.scrollTop = i.scrollHeight;
	}
	return true;
}

function addCounter() {
	info('addCounter()');
  	t = document.getElementsByTagName("TEXTAREA")
  	for(i=0;i<t.length;i++) {
		c = document.getElementById(t[i].id);
		if ((c.getAttribute("maxlength") > 0) && (c.getAttribute("counter") != "")) {
			document.getElementById(c.getAttribute("counter")).innerHTML = c.getAttribute("maxlength") - c.value.length;
			if (document.all) { 
				c.onkeyup = function ieCount() {
					count(event.srcElement);
					info('ieCount() assigned to '+c.id+'.onkeyup');
				}
			}
			else {
				c.onkeyup = function mozCount(event) {
					count(event.target);
					info('mozCount() assigned to '+c.id+'.onkeyup');
				}
			}
		}
  	}
	return true;
}
addLoadEvent(function(){addRating();});
addLoadEvent(function(){addCounter();});


