	function writeStateOptions() {
		var str='<option value="AL">Alabama</option>';
		str+='<option value="AK">Alaska</option>';
		str+='<option value="AZ">Arizona</option>';
		str+='<option value="AR">Arkansas</option>';
		str+='<option value="CA">California</option>';
		str+='<option value="CO">Colorado</option>';
		str+='<option value="CT">Connecticut</option>';
		str+='<option value="DE">Delaware</option>';
		str+='<option value="DC">District of Columbia</option>';
		str+='<option value="FL">Florida</option>';
		str+='<option value="GA">Georgia</option>';
		str+='<option value="HI">Hawaii</option>';
		str+='<option value="ID">Idaho</option>';
		str+='<option value="IL">Illinois</option>';
		str+='<option value="IN">Indiana</option>';
		str+='<option value="IA">Iowa</option>';
		str+='<option value="KS">Kansas</option>';
		str+='<option value="KY">Kentucky</option>';
		str+='<option value="LA">Louisiana</option>';
		str+='<option value="ME">Maine</option>';
		str+='<option value="MD">Maryland</option>';
		str+='<option value="MA">Massachusetts</option>';
		str+='<option value="MI">Michigan</option>';
		str+='<option value="MN">Minnesota</option>';
		str+='<option value="MS">Mississippi</option>';
		str+='<option value="MO">Missouri</option>';
		str+='<option value="MT">Montana</option>';
		str+='<option value="NE">Nebraska</option>';
		str+='<option value="NV">Nevada</option>';
		str+='<option value="NH">New Hampshire</option>';
		str+='<option value="NJ">New Jersey</option>';
		str+='<option value="NM">New Mexico</option>';
		str+='<option value="NY">New York</option>';
		str+='<option value="NC">North Carolina</option>';
		str+='<option value="ND">North Dakota</option>';
		str+='<option value="OH">Ohio</option>';
		str+='<option value="OK">Oklahoma</option>';
		str+='<option value="OR">Oregon</option>';
		str+='<option value="PA">Pennsylvania</option>';
		str+='<option value="RI">Rhode Island</option>';
		str+='<option value="SC">South Carolina</option>';
		str+='<option value="SD">South Dakota</option>';
		str+='<option value="TN">Tennessee</option>';
		str+='<option value="TX">Texas</option>';
		str+='<option value="UT">Utah</option>';
		str+='<option value="VT">Vermont</option>';
		str+='<option value="VA">Virginia</option>';
		str+='<option value="WA">Washington</option>';
		str+='<option value="WV">West Virginia</option>';
		str+='<option value="WI">Wisconsin</option>';
		str+='<option value="WY">Wyoming</option>';
		document.write(str);
	}
	
	function makeDate(month, date) {
		return new Date(2008, month-1, date);
	}
	
	//statedata: format is:  StateName, tier, margin, bush, kerry, ElectoralVotes, deadline(month, day, RegistrationNote)
	var stateData = [];
	stateData['AL'] = ["Alabama", 5, "25.80", "1,176,394", "693,933", 9, makeDate(10, 24)];
	stateData['AK'] = ["Alaska", 5, "26.45", "190,889", "111,025", 3, makeDate(10, 5), "(postmark by Sat, Oct. 4)"];
	stateData['AZ'] = ["Arizona", 5, "10.55", "1,104,294", "893,524", 10, makeDate(10, 6)];
	stateData['AR'] = ["Arkansas", 4, "9.87", "573,182", "470,230", 6, makeDate(10, 6)];
	stateData['CA'] = ["California", 5, "10.08", "5,509,826", "6,745,485", 55, makeDate(10, 20)];
	stateData['CO'] = ["Colorado", 1, "4.73", "1,101,255", "1,001,732", 9, makeDate(10, 6)];
	stateData['CT'] = ["Connecticut", 5, "10.55", "693,826", "857,488", 7, makeDate(10, 21)];
	stateData['DE'] = ["Delaware", 4, "7.66", "171,660", "200,152", 3, makeDate(10, 11)];
	stateData['FL'] = ["Florida", 1, "5.05", "3,964,522", "3,583,544", 27, makeDate(10, 6)];
	stateData['GA'] = ["Georgia", 5, "16.71", "1,914,254", "1,366,149", 15, makeDate(10, 6)];
	stateData['HI'] = ["Hawaii", 4, "8.81", "194,191", "231,708", 4, makeDate(10, 6)];
	stateData['ID'] = ["Idaho", 5, "38.65", "409,235", "181,098", 4, makeDate(11, 4), "Register at Polls"];
	stateData['IL'] = ["Illinois", 5, "10.41", "2,346,608", "2,891,989", 21, makeDate(10, 7)];
	stateData['IN'] = ["Indiana", 3, "20.85", "1,479,438", "969,011", 11, makeDate(10, 6)];
	stateData['IA'] = ["Iowa", 3, "0.67", "751,957", "741,898", 7, makeDate(10, 24), "Or Same Day Registration at Polling Place<span>, including early voting starting Sept. 25th (at county auditor offices)</span>"];
	stateData['KS'] = ["Kansas", 5, "25.73", "736,456", "434,993", 6, makeDate(10, 20)];
	stateData['KY'] = ["Kentucky", 5, "20.02", "1,069,439", "712,733", 8, makeDate(10, 6)];
	stateData['LA'] = ["Louisiana", 4, "14.66", "1,102,169", "820,299", 9, makeDate(10, 6)];
	stateData['ME'] = ["Maine", 4, "9.17", "330,201", "396,842", 4, makeDate(10, 21)];
	stateData['MD'] = ["Maryland", 5, "13.13", "1,024,703", "1,334,493", 10, makeDate(10, 14)];
	stateData['MA'] = ["Massachusetts", 5, "25.49", "1,071,109", "1,803,800", 12, makeDate(10, 15)];
	stateData['MI'] = ["Michigan", 1, "3.45", "2,313,746", "2,479,183", 17, makeDate(10, 6)];
	stateData['MN'] = ["Minnesota", 3, "3.52", "1,346,695", "1,445,014", 10, makeDate(11, 4), "Same Day Registration at Polling Place"];
	stateData['MS'] = ["Mississippi", 5, "19.01", "672,660", "457,766", 6, makeDate(10, 6)];
	stateData['MO'] = ["Missouri", 4, "7.24", "1,455,713", "1,259,171", 11, makeDate(10, 8)];
	stateData['MT'] = ["Montana", 3, "21.00", "266,063", "173,710", 3, makeDate(10, 6), "(or same day at elections office)"];
	stateData['NE'] = ["Nebraska", 5, "33.69", "512,814", "254,328", 5, makeDate(10, 24), "(mail by Fri, Oct. 17)"];
	stateData['NV'] = ["Nevada", 3, "2.64", "418,690", "397,190", 5, makeDate(10, 14)];
	stateData['NH'] = ["New Hampshire", 3, "1.38", "331,237", "340,511", 4, makeDate(11, 4), "Same Day"];
	stateData['NJ'] = ["New Jersey", 4, "6.74", "1,670,003", "1,911,430", 15, makeDate(10, 14)];
	stateData['NM'] = ["New Mexico", 3, "0.80", "376,930", "370,942", 5, makeDate(10, 7)];
	stateData['NY'] = ["New York", 5, "18.58", "2,962,567", "4,314,280", 31, makeDate(10, 10)];
	stateData['NC'] = ["North Carolina", 4, "12.48", "1,961,166", "1,525,849", 15, makeDate(10, 10)];
	stateData['ND'] = ["North Dakota", 4, "27.82", "196,651", "111,052", 3, makeDate(11, 4)];	
	stateData['OH'] = ["Ohio", 1, "2.12", "2,858,727", "2,739,952", 20, makeDate(10, 6), "Early voting starts sept. 30, <span>can register+vote all at once until Oct. 6.</span>"];
	stateData['OK'] = ["Oklahoma", 5, "31.14", "959,792", "503,966", 7, makeDate(10, 10)];
	stateData['OR'] = ["Oregon", 3, "4.22", "866,831", "943,163", 7, makeDate(10, 14)];
	stateData['PA'] = ["Pennsylvania", 1, "2.52", "2,793,847", "2,938,095", 21, makeDate(10, 6)];
	stateData['RI'] = ["Rhode Island", 5, "21.16", "169,046", "259,760", 4, makeDate(10, 4)];
	stateData['SC'] = ["South Carolina", 5, "17.27", "937,974", "661,699", 8, makeDate(10, 4)];
	stateData['SD'] = ["South Dakota", 5, "21.83", "232,584", "149,244", 3, makeDate(10, 20)];
	stateData['TN'] = ["Tennessee", 5, "14.37", "1,384,375", "1,036,477", 11, makeDate(10, 6)];
	stateData['TX'] = ["Texas", 5, "23.02", "4,526,917", "2,832,704", 34, makeDate(10, 6)];
	stateData['UT'] = ["Utah", 5, "46.69", "663,742", "241,199", 5, makeDate(10, 6), "(or Tues, Oct. 28 in person)"];
	stateData['VT'] = ["Vermont", 5, "20.60", "121,180", "184,067", 3, makeDate(10, 29)];
	stateData['VA'] = ["Virginia", 1, "8.27", "1,716,959", "1,454,742", 13, makeDate(10, 6)];
	stateData['WA'] = ["Washington", 4, "7.29", "1,304,894", "1,510,201", 11, makeDate(10, 4), "(or Mon, Oct. 20 in person)"];
	stateData['WV'] = ["West Virginia", 3, "12.96", "423,778", "326,541", 5, makeDate(10, 15)];
	stateData['WI'] = ["Wisconsin", 3, "0.38", "1,478,120", "1,489,504", 10, makeDate(10, 15), "(or on Election Day at polling place)"];
	stateData['WY'] = ["Wyoming", 5, "40.63", "167,629", "70,776", 3, makeDate(11, 4), "Can Register at Polls"];
	stateData['DC'] = ["District of Columbia", 5, "81.04", "21,256", "202,970", 3, makeDate(10, 6)];
	
	function registerNow(){
		if(typeof(WAReg)=='object')return false;if(!/WebKit\/[4-7]|MSIE [6-9]|Gecko\/200(51[12]|[6-9])|Opera\/9/.test(navigator.userAgent))return true;WAReg={launcherHtml:this.innerHTML,isStandalone:0};var d=document;var s=d.createElement('script');s.src='http://www.registrationbyworkingassets.com/client/wareg.js?popin=1&api_key=o6rp3k4nq9JvtRZRfimoG_5H4hw&lang=&%72eg_id=&r='+Math.random();d.body.appendChild(s);return false;
	}
	
	var monthName=new Array("Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sept.","Oct.","Nov.","Dec.");
	var homeState = "";
	var schoolState = "";
	
	function formatDate(date) {
		return monthName[date.getMonth()] + " " + date.getDate();
	}
	
	function createStateHTML(state) {
		var data = stateData[state];
		if (data == null || data == "undefined") return "data unavailable";
		if (data.length < 7) return "data is incomplete";
		var str = "<h3>2004 " + data[0] + " Election Results</h3>";
		str += "<p>Margin of victory: " + data[2] + "%<br />";
		str += "Bush: " + data[3] + "<br />";
		str += "Kerry: " + data[4] + "<br />";
		str += "Electoral Votes: " + data[5] + "<br />";
		str += "<em>Registration Deadline: " + formatDate(data[6]);
		if(data.length > 7) str+= "<br />" + data[7];
		str += "</em></p>";
		return str;
	}
	
	function setHomeState(state) {	
		homeState = state;
		document.getElementById("home-info").innerHTML = createStateHTML(state);
		UpdateComparison();
	}
	function setSchoolState(state) {
		schoolState = state;
		document.getElementById("school-info").innerHTML = createStateHTML(state);
		UpdateComparison();
	}
	
	function UpdateComparison() {
		if(homeState == "" || schoolState == "")
			return;

		homeTier = stateData[homeState][1];
		schoolTier = stateData[schoolState][1];
		
		if (homeTier < schoolTier) {
			setArrow("vote-at-home.png");
			highlightSelect("home-select-wrap");
			document.getElementById("scholarship-message").style.display="block";
			showRecommendation( stateData[homeState] );
		}
		else if (homeTier > schoolTier){
			setArrow("vote-at-school.png");
			highlightSelect("school-select-wrap");
			document.getElementById("scholarship-message").style.display="none";
			showRecommendation( stateData[schoolState] );
		}
		else {
			setArrow("toss-up.png");
			document.getElementById("scholarship-message").style.display="block";
			showTossUp();
		}
		
		//if school state is tier 5, show the dorm voter reg campaign
		var dormRegMessage = document.getElementById("dorm-reg-message");
		if( schoolTier == 5 )
			dormRegMessage.style.display="block";
		else
			dormRegMessage.style.display="none";
		
	}
	
	function setArrow(imgSrc){
		var elem = document.getElementById("arrow");
		elem.innerHTML = '<img src="images/' + imgSrc + '" />';
	}

	//highlight the target select box
	function highlightSelect(elemName){
		var elem = document.getElementById("arrow");
		elem.style.borderColor = "#ffcb42";
	}
	
	function showRecommendation(data){
		var state = data[0];
		var deadline = formatDate(data[6]);
		var deadlineDay = data[6];
		var today = new Date();
		var newDate = makeDate(10,6);
		var seconds = deadlineDay - today;
		var numDays = Math.ceil(seconds/1000/60/60/24);
		
		var str = '<h2>Your vote counts more in ' + state + '</h2>';
		document.getElementById("results-title").innerHTML = str;
		
		var str2="";
		if (numDays > 0) {
			str = 'Register now in ' + state + ' -&nbsp;';
			str2 = '<em>Deadline ' + deadline + '! &mdash; only ' + numDays + ' days away!</em>';
			if(data.length > 7) str2 += "<br /><em>" + data[7] + '</em>';
		}
		else if (numDays == 0) {
			str = 'Register now in ' + state + ' -&nbsp;';
			str2 = '<em>Deadline ' + deadline + '! &mdash; The deadline is today!';
			if(data.length > 7) str2 += "<br /><em>" + data[7] + '</em>';
		}
		else {
			str = '<em>The deadline has passed! &mdash; The Deadline was ' + deadline + '</em>';
		}
		
		document.getElementById("register-now1").innerHTML = str;
		document.getElementById("register-now2").innerHTML = str2;
		
		elem = document.getElementById("result-actions");
		elem.style.display = "block";
	}
	
	function showTossUp(){
		var str = '<h2>Toss Up!</h2>';
		str += '<p>Your school state and home state are equally important for the presidential election.</p>';
		document.getElementById("results-title").innerHTML = str;
		document.getElementById("register-now1").innerHTML = 'Register now!';
		document.getElementById("register-now2").innerHTML = '';
		elem = document.getElementById("result-actions");
		elem.style.display = "block";
	}
	
/************ PAGEVARS *************/
var cookieDuration = 3; //3 hours
var debugging = false;


	
	function initPage(){
		var campaignParam = getUrlParam("utm_campaign");
		
		if ( campaignParam == "clearcookie" ) {
			deleteCookie( "campaignName" );
		}
		else if ( campaignParam != "" ) {
			var campaignName = getCookie('campaignName');
			//make sure there's not an existing cookie
			if ( !campaignName || campaignName == "" ) {
				//store the url param for later
				setCookie("campaignName", campaignParam, cookieDuration);
			}
		}
	}
	
	function logAction(type, action) {
		campaignName = getCookie('campaignName');
		
		if ( !campaignName || campaignName == "" ) {
			campaignName = "organic";
		}
		dbug("log action: " + '/' + type + '/' + action + '/' + campaignName);
		//log the action at analytics
		pageTracker._trackPageview('/' + type + '/' + action + '/' + campaignName)
	}
	
	/****************** util ********************/
	Date.prototype.addHours = function (n) {this.setHours (this.getHours () + n)}
	
	function dbug(str) {
		if (debugging)
			alert(str)
	}
	
	function getUrlParam( name) {  
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
		var regexS = "[\\?&]"+name+"=([^&#]*)";  
		var regex = new RegExp( regexS );  
		var results = regex.exec( window.location.href );  
		if( results == null ) {   
			return "";  
		}
		else {
			var ret = results[1];
			return ret;
		}
	}

	function getCookie(c_name) {
		if (document.cookie.length>0)
			{
			c_start=document.cookie.indexOf(c_name + "=");
			if (c_start!=-1)
				{ 
				c_start=c_start + c_name.length+1; 
				c_end=document.cookie.indexOf(";",c_start);
				if (c_end==-1) c_end=document.cookie.length;
				dbug("Got Cookie: " + c_name + ", " + document.cookie.substring(c_start,c_end) );
				return unescape(document.cookie.substring(c_start,c_end));
				} 
			}
		return "";
	}
	
	function setCookie(c_name,value,expireHours) {
		if(typeof(expireHours)=='undefined')expireHours=1;
		var exdate=new Date();
		exdate.addHours(expireHours);
		document.cookie=c_name + "=" + escape(value) + ((expireHours==null) ? "" : ";expires=" + exdate.toGMTString());
		dbug("SetCookie: " + c_name + ", " + value + ", " + exdate.toGMTString() );
	}
	
	function deleteCookie( name ) {
		var exdate = new Date();
		exdate.setTime(exdate.getTime() - 1); 
		if ( getCookie( name ) != "" ) 
			document.cookie = name + "=;expires=" + exdate.toGMTString();
		var deleted = getCookie(name);
		dbug("cleared " + name + " cookie: [" + deleted + "] (brackets should be empty)");
	}