VOX = YAHOO.namespace('YAHOO.VOX');

function newMediaCallBack (obj) {
	this.divs = obj;
	
	this.failure = function( o ) {
		alert("An error occured.  Please try again later. (1)");
	};
	
	this.success = function ( o ) {
		var items = [];
		var pager = "";
		var resp = null;
		var list = "";
		var type = "video";
		var itmType = "video";
		var click = "";
		var css = "";
		var anchor = "";
		var flickrItems = [];
		
        // Use the JSON Utility to parse the data returned from the server
        try {
			resp = YAHOO.lang.JSON.parse(o.responseText);
			items = resp.items;
        }
        catch (x) {
			this.divs.bd.innerHTML = "<p>Sorry, no results found.  Please tray again later.</p>";
            //alert("JSON Parse failed! (1)");
            return;
        }
		
		if ( items.length > 0) {
		
			pager = resp.pager;
			
			// clear event listeners before removing the previous pager
			var links = this.divs.ft.getElementsByTagName('a');
			
			for ( var i=0; i < links.length; i++) {
				YAHOO.util.Event.removeListener( links[i], "click" );
			}
			this.divs.ft.innerHTML = pager;

			// create the new item list
			for (var i=0; i < items.length; i++) {
				var iTitle = items[i].title + "";
				var iExcerpt = items[i].excerpt + "";
				
				type = ( items[i].type == "event" || items[i].type == "slideshows" || items[i].type == "slideshow")
					 ? "slideshow"
					 : "video";
				click = "onclick='return loadNewMedia({"
					  + "id: " + '"' + items[i].id + '"' + ", "
					  + "title: " + '"' + iTitle + '"' + ", "
					  + "excerpt: " + '"' + iExcerpt + '"' + ", "
					  + ( ( resp.type != "related") ? "showRelated: true," : "" )
					  + type + ": "+ '"' + items[i].media + '"' + "})'";
				css = "video_slideshow ";
				if ( type == "slideshow") {
					css += "swap_event " + ( ( i % 2 == 0 ) ? "odd": "even" );
					flickrItems.push(items[i].media);
					anchor = "<a class='tnFlickr' href='/?p=event&id=" + items[i].id + "' " + click + ">"
						   + "<span id='ps" + items[i].media + "'></span>";
				} else { 
					css += "swap_video ";
					anchor = "<a style='margin-bottom: 10px; display: block; background: url(" + items[i].thumb + ") center 3px no-repeat' "
						   + "href='/?p=" + type + "&id=" + items[i].id + "' " + click + ">"
						   + "<img src='/images/play.png' /><br />";
				}
				list += "<li class='" + css  + ( (i==0) ? " first": (i==items.length-1) ? " last": '' ) + "'>"
					  + anchor 
					  + unescapeAsciiQuotes(items[i].title) + "</a></li>";
			}
			if ( list != "") {
				list = "<ul class='nolist'>" + list + "</ul>";
			} else {
				list = "<p>Sorry, no results found.  Please tray again later.</p>";
			}
			this.divs.bd.innerHTML = list;
			
			if ( flickrItems.length > 0) {
				if (resp.type != "related")
					setAllFlickrPhotosetImages(flickrItems, false);
				else
					setAllFlickrPhotosetImages(flickrItems, true);
			}
			// add new event listeners
			new ajaxPager(this.divs);
		}
	};
};

function legislationCallBack (obj) {
	this.divs = obj;
	
	this.failure = function( o ) {
		alert("An error occured.  Please try again later. (2)");
	};
	
	this.success = function ( o ) {
		var items = [];
		var pager = "";
		var resp = null;
		var list = "";
		var click = "";
		var css = "";
		var anchor = "";
		
		var type = ""; // sponsored || cosponsored || "" <- both
		var legSession = "";
		var errMsg = "<p style='margin: 10px 0'>Sorry no results found for your criteria. Please try again later.</p>";
		
        // Use the JSON Utility to parse the data returned from the server
        try {
			resp = YAHOO.lang.JSON.parse(o.responseText);
			items = resp.items;
        }
        catch (x) {
            //alert("JSON Parse failed! (2)");
			this.divs.bd.innerHTML = errMsg;
            return;
        }
		if ( items.length > 0 ) {
			pager = resp.pager;

			// clear event listeners before removing the previous pager
			if (this.divs.ft.innerHTML != "") {
				var links = this.divs.ft.getElementsByTagName('a');
				for ( var i=0; i < links.length; i++) {
					YAHOO.util.Event.removeListener( links[i], "click" );
				}
			}
			this.divs.ft.innerHTML = pager;
			
			// create the new item list
			for (var i=0; i < items.length; i++) {
				list += "<tr id='list-item-"+i+"' class='list-item sponsored-bill"
					  + ( (i == 0) ? ' first': '' ) + ( ( i == items.length-1) ? ' last': '') + "'>"
					  + "<td><a target='_blank' href='" + EXIT_URL + escape(items[i].url) + "'>" + items[i].title + "</a></td>"
					  + "<td>" + ( (items[i].sponsorship == "sponsored") ? "Sponsor": "Co-Sponsor") + "</td>"
					  + "<td>" + items[i].description + "</td></tr>";
			}
			if ( list != "" ){
				this.divs.bd.innerHTML = "<table id='legislationBills' class='list-legislation'>"
							+ "<tr><th>Bill Number</th><th>Sponsorship</th><th>Bill Description</th></tr>"
							+ list
							+ "</table>"
			}
			// add new event listeners
			new ajaxPager(this.divs);
		} else {
			this.divs.bd.innerHTML = errMsg;
		}

	};
};

function ajaxPager ( obj ) {
	this.divs = obj;

	this.page = function ( _ev, _obj ) {
		var hrf = this.href.toString();
		var gUrl = hrf.replace("/?p", _obj.ajaxPage);
		// related items
		if ( "related" in _obj ) {
			if ( _obj.related )
				gUrl = hrf.replace("/?id", _obj.ajaxPage);
		}
		// Legislation
		if ( document.getElementById("legislation") ) {
			var legPars = getLegislationParams();
			var lUrl = "sponsorship="+legPars.sponsorship+"&session="+legPars.session+"&resultPerPage="+legPars.max;
			if ( gUrl.indexOf("#") > -1 ) {
				gUrl = gUrl.replace("#", lUrl + "&#");
			} else {
				gUrl = gUrl + "&" + lUrl;
			}
		}
		// display preloader
		_obj.bd.innerHTML = "<p style='margin-top: 20px; text-align: center;'><img style='border: 0 !important;' src='/images/preloader.gif' /></p>";

		// json request
		var trans = YAHOO.util.Connect.asyncRequest('GET', gUrl, _obj.callbacks, null);
	};
	if ( obj.ft ) {
		var links = obj.ft.getElementsByTagName('a');
		for ( var i=0; i < links.length; i++) {
			// set link to do nothing
			links[i].onclick = function() { return false };
			// add click event
			YAHOO.util.Event.addListener( links[i], "click", this.page, obj );
		}
	}
};

function getRelatedNewMedia( id ) {	
	this.callBacks = {
		visual_id: id,
		success: function ( _o ) {
			var resp = null;
			var items = [];
			var tarId = "nmRelatedVideosSlideshows";
			var sibId = "new_media_stage";
			var flickr = [];
			var d = null;
			var dHd = null;
			var dBd = null;
			var dFt = null;
			var isFound = false;
			
			try {
				resp = YAHOO.lang.JSON.parse(_o.responseText);
				items = resp.items;
			}
			catch (x) {
				return;
			}
			
			if ( items.length > 0 ) {
				// get already existing elements
				if ( document.getElementById( tarId ) ) {
					var divs = getHdBdFtDivs( document.getElementById( tarId ) );
					d = divs.root;
					dHd = divs.hd;
					dBd = divs.bd;
					dFt = divs.ft;
					
					isFound = true;
					
				// create element if needed
				} else {
					var d = document.createElement("div");
					d.id = tarId;
					d.className = "videos_slideshows";
					
					dHd = document.createElement("div");
					dBd = document.createElement("div");
					dFt = document.createElement("div");
					
					// Set Head
					dHd.className = "hd";
					dHd.innerHTML = "<h2 class='fancy_font'>R<span>ELATED</span> V<span>IDEOS</span> &amp; S<span>LIDESHOWS</span></h2>";

					// set Body
					dBd.className = "bd";
					
					// set Footer
					dFt.className = "ft";
				}
				
				// create list of media items
				var ul = document.createElement("ul");
				ul.className = "nolist";
				for ( var i = 0; i < items.length; i++) {
					var li = document.createElement("li");
					var a = document.createElement("a");
					var br = document.createElement("br");
					var liClass = ( ( (i % 2) == 0 ) ? "odd": "even") + " " 
								+ ( ( i == 0 ) ? "first": ( i+1 == items.length ) ? "last": "" );
					var img = null;
					var type = ( items[i].type == "event" || items[i].type == "slideshows" || items[i].type == "slideshow")
							 ? "slideshow"
							 : "video";
					
					if ( type == "slideshow") {
						img = document.createElement("span");
						img.id = "psr" + items[i].media;
						flickr.push(items[i].media);
						a.className = "tnFlickr";
					} else {
						img = document.createElement("img");						
						img.src = "/images/play.png";
						
						a.style.backgroundImage = "url(" + items[i].thumb + ")";
						a.style.backgroundRepeat = "no-repeat";
						a.style.backgroundPosition = "center 3px";
						a.style.marginBottom = "10px";
						a.style.display = "block";
					}
					
					a.appendChild( img );
					a.appendChild( br );
					a.appendChild( document.createTextNode( unescapeAsciiQuotes(items[i].title) ) );
					a.href = "#new_media_stage";
					a.setAttribute("onClick", "return false;");
					var evObj = { 
						id: items[i].id, 
						title: items[i].title, 
						excerpt: items[i].excerpt
					};
					evObj[type] = items[i].media;
					YAHOO.util.Event.addListener( a, "click", loadNewMedia, evObj);

					li.className = "video_slideshow swap_video " + liClass;
					li.appendChild( a )
					ul.appendChild( li );
				}
					
				// previous related items?
				if ( isFound ) {
					deleteChildNodes ( dBd );
					deleteChildNodes ( dFt );
				} else {
					d.appendChild(dHd);
					d.appendChild(dBd);
					d.appendChild(dFt);
					
					// add to DOM
					YAHOO.util.Dom.insertAfter( d, document.getElementById(sibId) );
				}
				
				// set content for body and footer
				dBd.appendChild( ul );
				if ( resp.pager && resp.pager != "") {
					dFt.innerHTML = resp.pager;
				}
				
				var rObj = {
					root: d, hd: dHd, bd: dBd, ft: dFt, 
					id: this.visual_id,
					related: true,
					ajaxPage: "/templates/newMediaAjax.cfm?id"
				};
				rObj["callbacks"] = new newMediaCallBack( rObj );
				
				new ajaxPager(rObj);
				if ( flickr.length > 0 ) {
					setAllFlickrPhotosetImages(flickr, true);
				}
			} else {
				if ( document.getElementById( tarId ) ) {
					var rem = document.getElementById( tarId );
					// delete children and events
					deleteChildNodes ( rem );
					// delete node
					rem.parentNode.removeChild( rem );
				}
			}
		},
		failure: function ( _o ) {
			// DO NOTHING
		},
		timeout: 3000
	};
	
	var trans = YAHOO.util.Connect.asyncRequest(
		"GET", 
		"/templates/newMediaAjax.cfm?type=related&offset=0&resultPerPage=4&id=" + id, 
		this.callBacks, 
		null
	);
}
/*
 * required:  id | title | Excerpt
 * optional:  video | slideshow 
 */
var IS_FIRST = true;
var CLIPBOARD = new ZeroClipboard.Client();
CLIPBOARD.setText (''); // set later
CLIPBOARD.setHandCursor(true);
CLIPBOARD.setCSSEffects(true);

function renderUtilityBox ( obj ) {
	if ( obj.topId != "" && document.getElementById(obj.topId) ) {
		var d = document.getElementById(obj.topId);
		var ul = document.createElement("ul");
		
		var ttl = obj.title;
		var longUrl = obj.longUrl;
		var str = obj.summary;

		// add social media
		var stShare = getShareThisButton({
			title: ttl,
			url: longUrl,
			summary: unescapeAsciiQuotes(str)
		});
		if ( stShare ) {
			var li = document.createElement("li");
			li.className = "first";
			li.appendChild(stShare);
			ul.appendChild(li);
		}
		
		var tTweet = getTwitterButton({
			title: ttl,
			url: longUrl
		});
		if ( tTweet ) {
			var li = document.createElement("li");
			li.appendChild(tTweet);
			ul.appendChild(li);
		}
		
		var fbLike = getFacebookButton({
			title: ttl,
			type: "like",
			url: longUrl
		});
		if ( fbLike ) {
			var li = document.createElement("li");
			li.className = "last";
			li.appendChild(fbLike);
			ul.appendChild(li);
		}
		ul.className = "nolist";
		d.appendChild(ul);
	}
		
	// Shortener urls
	setShortener(longUrl, "setShortenerLinks");
	attachShareThisEvent({
		title: ttl,
		url: longUrl,
		summary: unescapeAsciiQuotes(str)
	});
}
function loadNewMedia( obj ) {
	var Y = YAHOO.util;
	var hd, bd, stScript;
	var o = ( arguments.length == 1 ) ? obj: arguments[1];
	var wid = 680;
	var hei = 400;

	if ( obj.isDefault && IS_FIRST ) {
		IS_FIRST = false;
	} else if ( obj.isDefault && !IS_FIRST ) {
		return;
	}

	if ( document.getElementById("new_media_stage") ) {
		var stage = Y.Dom.get("new_media_stage");
		var hdArr = YAHOO.util.Dom.getElementsByClassName('hd', 'div', stage);
		var bdArr = YAHOO.util.Dom.getElementsByClassName('bd', 'div', stage); 
		
		// delete old content
		if ( hdArr.length > 0 && bdArr.length > 0) {
			hd = hdArr[0]; deleteChildNodes( hd );
			bd = bdArr[0]; deleteChildNodes( bd );
		} else {
			return true;
		}
		
		if(CLIPBOARD != undefined) {
			CLIPBOARD.destroy();
			CLIPBOARD.clearEventListeners("mouseDown");
		}
		// add new content
		var ttl = unescapeAsciiQuotes(o.title);
		var h2 = createTextNode("h2", ttl); 
		var ul = document.createElement("ul");
		var longUrl = getBaseURL() + "?p=new_media&type=" + ( (o.video) ? "videos": "slideshows") + "&id=" + o.id + "&#new_media_stage";
		
		var str = o.excerpt;
		// clean up the string
		str = str.replace("<p>","");
		str = str.replace("</p>","");
			
		hd.appendChild(h2);
		
		
		// add social media
		var stShare = getShareThisButton({
			title: ttl,
			url: longUrl,
			summary: unescapeAsciiQuotes(str)
		});
		if ( stShare ) {
			var li = document.createElement("li");
			li.className = "first";
			li.appendChild(stShare);
			ul.appendChild(li);
		}
	
		// add copy to clipboard
		var cbButtonId = "addToClipboardBtn";
		var bClipboard = getAddToClipboardButton({
			title: "Copy URL",
			url: longUrl,
			id: cbButtonId
		});
		if (bClipboard) {
			var li = document.createElement("li");
			li.appendChild(bClipboard);
			ul.appendChild(li);
		}
		
		var tTweet = getTwitterButton({
			title: ttl,
			url: longUrl
		});
		if ( tTweet ) {
			var li = document.createElement("li");
			li.appendChild(tTweet);
			ul.appendChild(li);
		}
		
		var fbShare = getFacebookButton({
			title: ttl,
			type: "share",
			url: longUrl
		});
		if ( fbShare ) {
			var li = document.createElement("li");
			li.appendChild(fbShare);
			ul.appendChild(li);
		}
		
		var fbLike = getFacebookButton({
			title: ttl,
			type: "like",
			url: longUrl
		});
		if ( fbLike ) {
			var li = document.createElement("li");
			li.className = "last";
			li.appendChild(fbLike);
			ul.appendChild(li);
		}
		ul.className = "nolist";
		hd.appendChild(ul);
		
		
		// add video 
		if ( o.video || o.videos ) {
			var divId = "videoPlayer" + o.id;
			var videoId = o.video.substring(25, o.video.indexOf("&"));
			var div = document.createElement("div");
			div.id = divId;
			div.className = "videoPlayer loading";
			
			bd.appendChild(div);
			
			
			if ( isIE() ) {
				swfobject.embedSWF(
					o.video + "&enablejsapi=1&playerapiid=" + divId, 
					divId, wid, hei, "8", null, null, 
					{ allowfullscreen: "true", allowscriptaccess: "always", quality: "high", wmode: "transparent" }, 
					{ id: divId }
				);
			} else {
				swfobject.embedSWF(
					o.video + "&enablejsapi=1&playerapiid=" + divId, 
					divId, wid, hei, "8", null, null, 
					{ allowfullscreen: "true", allowscriptaccess: "always", quality: "high", wmode: "transparent" }, 
					{ id: divId },
					function() { 
						var dId = divId;
						var vId = videoId;
						var el=document.getElementById(dId); 
						if (el) {
							var t = "Watch on YouTube - Adobe Flash plug-in is required to view this video";
							var tn = document.createTextNode(t);
							var anc = document.createElement("a");
							anc.href = "http://www.youtube.com/watch?v="+vId;
							anc.className = "btn youtube_mobile";
							anc.alt = t;
							anc.appendChild(tn);
							el.appendChild(anc);
						}
					}
				);
			}
		// add slideshow
		} else {
			var setId = (o.slideshow) ? o.slideshow: o.slideshows;
			var flashSrc = "http://www.flickr.com/apps/slideshow/show.swf?v=104087";
			var flashVars = "offsite=true&lang=en-us"
						  + "&page_show_url=%2Fphotos%2F" + FLICKR.userId + "%2Fsets%2F" + setId
						  + "%2Fshow%2F&page_show_back_url=%2Fphotos%2F" + FLICKR.userId + "%2Fsets%2F" + setId
						  + "%2F&set_id=" + setId + "&jump_to=";
			var flashDiv = document.createElement("div");
			flashDiv.id = "slideshowPlayer" + o.id;
			
			flashDiv.innerHTML = '<object width="' + wid + '" height="' + hei + '"><param name="flashvars" value="' + flashVars + '"></param> <param name="movie" value="' + flashSrc + '"></param> <param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="' + flashSrc + '" allowFullScreen="true" flashvars="' + flashVars + '" width="' + wid + '" height="' + hei + '"></embed></object>';
			
			bd.appendChild(flashDiv);
		}
		
		if ( o.excerpt != "" ) {
			var p = document.createElement("p");
			p.innerHTML = unescapeAsciiQuotes(str);
			hd.appendChild(p);
		}
		
		if ( "showRelated" in o) {
			if (o.showRelated) 
				var rel = new getRelatedNewMedia(o.id);
		}

		// Shortener urls
		YAHOO.util.Event.onDOMReady( function () { 
			setShortener(longUrl, "setShortenerLinks");
			attachShareThisEvent({
				title: ttl,
				url: longUrl,
				summary: unescapeAsciiQuotes(str)
			});
		});
		
		stage.scrollIntoView(true);
	}

	// remove old JSONP scripts before adding new ones
	var old = YAHOO.util.Dom.getElementsByClassName('jsonp');
	for (var i=0; i < old.length; i++) {
		old[i].parentNode.removeChild( old[i] );
	}
	
	return false;
}

function 
setClipboardButton ( a ) {
	var fn = function(client) {
		CLIPBOARD.setText( a.url );
		alert("Copied to your clipboard:\n\n" + a.url);
	};
	CLIPBOARD.addEventListener( 'mousedown', fn);
	CLIPBOARD.glue(a.id, a.id + '-container');

	return true;
}

function
getLegislationParams() {
	var spon = (document.getElementById("legSpon").checked) ? "sponsored": "";
	if (document.getElementById("legCosp").checked) {
		spon = (spon == "") ? "cosponsored": ""; // set to "" if both are selected
	}
	var sess = document.getElementById("legSession");
	var max = document.getElementById("legMax").value;
	var selSponCosp = (document.getElementById("legSpon").checked || document.getElementById("legCosp").checked) ? 1: 0;
	
	return { sponsorship: spon, session: sess[sess.selectedIndex].value,  max: max, selSponCosp: selSponCosp };
}

function
loadLegislation () {
	var legPars = getLegislationParams();
	if (!legPars.selSponCosp) {
		alert("please select if the bill should be Sponsored and/or Copponsored");
		return;
	}
	var pObj = getHdBdFtDivs( YAHOO.util.Dom.get("legislation") );
	pObj["ajaxPage"] = "/templates/legislationAjax.cfm?p";
	pObj["callbacks"] = new legislationCallBack( pObj );
	pObj.bd.innerHTML = "<p style='margin-top: 20px; text-align: center;'><img style='border: 0 !important;' src='/images/preloader.gif' /></p>";
	// json request
	var trans = YAHOO.util.Connect.asyncRequest('GET', pObj.ajaxPage+"&offset=0&sponsorship="+legPars.sponsorship+"&session="+legPars.session+"&max="+legPars.max, pObj.callbacks, null);
	
	var ajLegislation = new ajaxPager( pObj );
}

function getHdBdFtDivs( root ) {
	var hdArr = YAHOO.util.Dom.getElementsByClassName('hd', 'div', root);
	var bdArr = YAHOO.util.Dom.getElementsByClassName('bd', 'div', root);
	var ftArr = YAHOO.util.Dom.getElementsByClassName('ft', 'div', root);

	var hd = ( hdArr.length > 0)? YAHOO.util.Dom.get(hdArr[0]): null;
	var bd = ( bdArr.length > 0)? YAHOO.util.Dom.get(bdArr[0]): null; 
	var ft = ( ftArr.length > 0)? YAHOO.util.Dom.get(ftArr[0]): null;
	
	return { root: root, hd: hd, bd: bd, ft: ft };
}

function initSelectedTab( obj, str ) {
	var url = location.href.toString();
	if ( url.indexOf(str) > 0 ) {
		var at = url.indexOf(str) + str.length;
		obj.set("activeIndex", parseInt(url.substr(at, url.length))-1 );
	}
	
	var el = document.getElementById("hd");
	el.scrollIntoView(true);
}

function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;

    var temp = obj.constructor(); // changed

    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}

function showSponsorship(a) {
	var els = YAHOO.util.Dom.getElementsByClassName( a.value + "-bill" );
	for (var i=0; i < els.length; i++) {
		if  (a.checked) {
			YAHOO.util.Dom.removeClass(els[i], 'hide'); 
		} else {
			YAHOO.util.Dom.addClass(els[i], 'hide'); 
		}
		//els[i].style.display = ( a.checked ) ? "": "none";
	}
}
function getBaseURL() {
    var url = location.href;  // entire url including querystring - also: window.location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));

    if (baseURL.indexOf('http://localhost') != -1) {
        // Base Url for localhost
        var url = location.href;  // window.location.href;
        var pathname = location.pathname;  // window.location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);

        return baseLocalUrl + "/";
    }
    else {
        // Root Url for domain name
        return baseURL + "/";
    }
}
function unescapeAsciiQuotes( a ) {
	var s = a.replace(/\[sngl\]/g, "'");
	s = s.replace(/\[dbl\]/g, '"' );
	return s.replace(/&amp;/g, '&' );
}
/**/
function deleteChildNodes ( el ) {
	// remove any event listeners
	YAHOO.util.Event.purgeElement(el, true);
	while ( el.hasChildNodes() ) 
		el.removeChild( el.lastChild );     
}
function createTextNode ( type, str ) {
	var el = document.createElement(type);
	var txt = document.createTextNode(str);
	el.appendChild(txt);
	
	return el;
}
function isIE () {
	var r = 0; 
	if ( navigator.appVersion.indexOf("MSIE") != -1 ) {
		r = parseFloat(navigator.appVersion.split("MSIE")[1]);
	} 
	return r;
}
function isClipboardAble () {
	var bd = document.getElementById("body").className.toString();
	var sk = ["ie6","ie-mac","ch-mac","sf-win"];

	for (var i=0; i < sk.length; i++ ) {
		if ( bd.indexOf( sk[i] ) > -1) {
			return false;
		}
	}
	return true;
}

/*
 * required in params for o:  url | title | type = { share || like }
 */
function getFacebookButton ( o ) {
	if ( o.type == "like" ) {
		var iFr = document.createElement("IFRAME");
		var hei = ( isIE() >= 8) ? 22: 20;
		var wid = (document.getElementById("new_media_stage") ) ? 300: 225;

		iFr.src = "http://www.facebook.com/plugins/like.php?href=" + encodeURIComponent(o.url) + "&layout=button_count&show_faces=false&width="+wid+"&action=like&font=arial&colorscheme=light&height="+hei;

		iFr.scrolling = "no";
		iFr.frameBorder = 0;
		iFr.allowTransparency = "true";
		iFr.style.border = "0";
		iFr.style.margin = "0";
		iFr.style.overflow = "hidden";
		iFr.style.width = wid+"px";
		iFr.style.height = hei+"px";
		
		return iFr;
	} else {
	
		var a = createTextNode("a", "Share on Facebook");
		a.href = "http://www.facebook.com/share.php?u=" + encodeURIComponent(o.url) + "&t=" + encodeURIComponent(o.title);
		a.target = "_blank";
		a.title = "share on Facebook";
		a.click = "return false;";
		a.className = "fbShareBtn2";
		
		var callback = function () {
			var u = o.url;
			var t = o.title;
			window.open('http://www.facebook.com/sharer.php?u=' + encodeURIComponent(u) + '&t=' + encodeURIComponent(t), 'sharer','toolbar=0,status=0');

			return false;
		}
		
		YAHOO.util.Event.addListener(a, "click", callback);	
		return a;
	}
	return false;
}

/*
 * required in params for o:  id | title
 */

function 
getAddToClipboardButton ( o ) {
	var a = null;
	var nm = o.id;
	var wd = ( isClipboardAble() ) ? "300px": "590px"; 
	a = createTextNode("a", o.title);
	a.src = "#";
	a.title = "Copy the URL to your Clipboard";
	a.onClick = "return false;";
	a.title = o.title;
	a.className = nm;
	a.id = nm+"_panel";
		
	var modBd = ( isClipboardAble() ) 
			  ? "<strong>A short link that's easy to share:</strong><br /><br />" + o.url
				+ "<br /><br /><div id='" + nm + "-container' style='text-align: center; position: relative'><div id='" + nm + "'>Click here to copy it to your clipboard.</div></div>"
			  : "<strong>Share this link with friends:</strong><br /><br />" + o.url;

	if ( VOX.CLIPBOARD == undefined) {
		YAHOO.util.Dom.addClass("body", "yui-skin-sam");
		VOX.CLIPBOARD = new YAHOO.widget.Panel("clipboard", { 
							fixedcenter: true, modal: true,
							width: wd, visible: false, draggable: false, 
							constraintoviewport: true
						});	
		VOX.CLIPBOARD.setHeader("Get Link");
		VOX.CLIPBOARD.setBody(modBd);
		VOX.CLIPBOARD.render("body");
	} else {
		VOX.CLIPBOARD.setBody(modBd);
	}
	
	YAHOO.util.Event.addListener(nm+"_panel", "click", VOX.CLIPBOARD.show, VOX.CLIPBOARD, true);
	
	return a;
}
/*
 * required in params for o:  url
 */
function getTwitterButton ( o ) {
	var a = null;
	a = createTextNode("a", "Share on Twitter");
	a.href = "http://twitter.com/share?url=" + encodeURIComponent(o.url);
	a.target = "_blank";
	a.title = "share on Twitter";
	a.className = "twShareBtn";
	a.id = "twShareBtn";

	return a;
}
/*
 * required in params for o:  url
 */
function getDirectLinkButton ( o ) {
	var a = null;
	a = createTextNode("a", "Get Link");
	a.href = o.url;
	a.target = "_blank";
	a.title = "Get Link";
	a.className = "glBtn";
	a.id = "glBtn";

	return a;
}
/*
 * required in params for o:  url && title
 */
function getShareThisButton ( o ) {
	var div = document.createElement("div");
	var span = document.createElement("span");
		span.className = "stShareBtn";
		span.title = "Email this to a friend";
		span.innerHTML = "Email It";
	
/*
	if ( document.getElementById("new_media_stage") ) {
	} else {
	}
		span.setAttribute("st_url", o.url);
		span.setAttribute("st_title", unescape(o.title.replace(/"/g, "&quot;")));
		span.setAttribute("displayText", "Email It");
		span.className="st_email";
*/

	span.id = "stShareBtn";
	
	div.appendChild(span);

	return div;
}
function attachShareThisEvent( o ) {
	// apply mouseover and mail event
	var el = document.getElementById("stShareBtn");
	if (el) {
		var stObj = SHARETHIS.addEntry( {
				title: unescape(o.title.replace(/"/g, "&quot;")),
				url: o.url,
				summary: unescape(o.summary.replace(/"/g, "&quot;")),	
				publisher: SHARE_THIS.publisher
			}, {button: false, onmouseover:false} );
		stObj.attachButton(el);
		stObj.attachChicklet("email", el);
	}
}
/* Calendar Script */
function resetHandler() {
	// Reset the current calendar page to the select date, or 
	// to today if nothing is selected.
	var selDates = calendar.getSelectedDates();
	var resetDate;

	if (selDates.length > 0) {
		resetDate = selDates[0];
	} else {
		resetDate = calendar.today;
	}

	calendar.cfg.setProperty("pagedate", resetDate);
	calendar.render();
}
function setStatus(str) {
	window.status = str;
	return true;
}
function emailCheck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	
	if (str.indexOf(at)==-1){
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	}

	 if (str.indexOf(at,(lat+1))!=-1){
		return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
		return false
	 }
	
	 if (str.indexOf(" ")!=-1){
		return false
	 }

	 return true					
}


function nlQuick (f) {
	var msg = "";
	if ( f.firstName.value == "First Name" || f.firstName.value == "") {
		msg += "\n- Enter your First Name";
	}
	if ( f.lastName.value == "Last Name" || f.lastName.value == "") {
		msg += "\n- Enter your Last Name";
	}
	if ( f.email.value == "Email" || f.email.value == "" && emailCheck(f.email.value) ) {
		msg += "\n- Enter a valid Email";
	}
	if ( f.zip.value == "ZIP" || f.zip.value == "") {
		msg += "\n- Enter your Zip";
	}
	
	if ( msg != "" ) {
		alert("Please correct the following to receive the Udall Update:\n" + msg);
		return false;
	} else {
		return true;
	}
}

function setShortener ( url, callback ){
	var headID = document.getElementsByTagName("head")[0]; 
	var fUrl = "http://api.bit.ly/v3/shorten?login=" + BITLY.login
			 + "&apiKey=" + BITLY.apiKey
			 + "&longUrl=" + escape(url)
			 + "&format=json&callback=" + callback;

	// Add new JSONP scripts
	var newScript = document.createElement('script');
	newScript.type = 'text/javascript';
	newScript.src = fUrl;
	newScript.className = "jsonp";
	headID.appendChild(newScript);
}

function setShortenerLinks ( obj ) {
	var u = obj.data.url;

	// set tweet button
	var twBtn = document.getElementById("twShareBtn");
	twBtn.href = "http://twitter.com/share?url=" + escape(u);
	
	// set get link 
	// apply to clipboard
	if (isClipboardAble () && VOX.CLIPBOARD != undefined) {
		var cbButtonId = "addToClipboardBtn";
		var modBd = "<strong>A short link that's easy to share:</strong><br /><br />" + u
				  + "<br /><br /><div id='" + cbButtonId 
				  + "-container' style='text-align: center; position: relative'><div id='" 
				  + cbButtonId + "'>Click here to copy it to your clipboard.</div></div>";

		// must dsectroy previous link
		CLIPBOARD.destroy();
		CLIPBOARD.clearEventListeners("mouseDown");
		
		VOX.CLIPBOARD.setBody(modBd);
		
		setClipboardButton({id: cbButtonId, url: u});
	}
}

function setAllFlickrPhotosetImages( arr, isRelated ){
	var headID = document.getElementsByTagName("head")[0]; 
	var base = "http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos"
			 + "&per_page=1&format=json&jsoncallback=setFlickrPhotosetImage";
	var u = base 
		  + "&api_key=" + FLICKR_API_KEY
		  + "&photoset_id=";
	
	// Add new JSONP scripts
	for (var i=0; i < arr.length; i++) {
		var el = getFlickrContainer( arr[i]);
		if ( el ) {
			var fUrl = u + arr[i];
			var newScript = document.createElement('script');
			newScript.type = 'text/javascript';
			newScript.src = fUrl;
			newScript.className = "jsonp";
			headID.appendChild(newScript);
		}
	}
}

function setFlickrPhotosetImage( obj ){
	var el = getFlickrContainer(obj.photoset.id);
	var p = obj.photoset.photo[0];
	var url = "http://farm" + p.farm
			+ ".static.flickr.com/" + p.server
			+ "/" + p.id 
			+ "_" + p.secret
			+ "_t.jpg";
			
	
	if (el != null && !el.hasChildNodes() ) {
		var img = document.createElement("img");
		img.src = url;	
		el.appendChild(img);
	}
}

function getFlickrContainer ( a ) {
	var el = null;
	
	if ( document.getElementById("ps" + a) ) {
		el = document.getElementById("ps" + a);
	}
	// due to related items there may be multiple copies of the same item
	if ( el == null || el.hasChildNodes() ) {
		if ( document.getElementById("psr" + a) ) {
			el = document.getElementById("psr" + a);
		}
	}
	return el;
}

function closeHandler() {
	dialog.hide();
}

/* Load scripts found in AJAX */
function runScripts(e) {
	if (e.nodeType != 1) return; //if it's not an element node, return

	if (e.tagName.toLowerCase() == 'script') {
		eval(e.text); //run the script
	}
	else {
		var n = e.firstChild;
		while ( n ) {
			if ( n.nodeType == 1 ) runScripts( n ); //if it's an element node, recurse
			n = n.nextSibling;
		}
	}
}
(function() {
	var D = YAHOO.util.Dom,
		E = YAHOO.util.Event,
		L = YAHOO.lang;

/*		
	E.on(window,"load",function() {
		E.on(document.body,"click",function(e) {
			VOX.handleExitCancel(e);
			var a = E.getTarget(e),
				dest, pos, title,
				exit = 'senate.gov/cgi-bin/exitmsg?url=',
				re = /^http:\/\/(.*\.)?senate\.gov(.*)/;
							
			if (a.tagName.toLowerCase() == 'a' && typeof a['href'] != 'undefined') {
				pos = a.href.toLowerCase().indexOf(exit);				
				if (pos != -1) {
					pos = pos + exit.length;
					E.preventDefault(e);
					dest = a.href.substr(pos);
					VOX.showExitPanel(dest);
				} else if (a.href.indexOf('http') == 0 && a.href.search(re) != 0 && a.href.indexOf('http://mccaskill') != 0 && a.href.indexOf('mailto:') != 0 && a.href.indexOf('javascript:') != 0) {
					VOX.showExitPanel(a.href);
				}
			}
		});
	});		
	
	
	VOX.exitPanel = new YAHOO.widget.Panel("lightbox", { modal: true, visible: false, fixedcenter: true, zIndex: 99999, close: true, focusable: true, width: "375px" });
	VOX.exitPanel.setHeader("<span class='exit-esc'>ESC to cancel</span>Exiting Senate Web Site");	
	VOX.exitPanel.cfg.setProperty("keylisteners", [
		new YAHOO.util.KeyListener(document, { keys:[27] },
            function(types, args, obj) { VOX.exitPanel.hide();
		})
	]); 
	VOX.exitPanel.showEvent.subscribe(function() {
		D.addClass(VOX.exitPanel.element, "exit-panel");
		VOX.handleExitCancel = VOX.exitCancel;
		VOX.exitPanel.setAttribute("role","alert");
		VOX.exitPanel.element.tabIndex = 0;
		VOX.exitPanel.element.focus();
	});
	VOX.exitPanel.beforeHideEvent.subscribe(function() {
		VOX.exitTimeout = clearTimeout(VOX.exitTimeout);
		VOX.handleExitCancel = VOX.exitCancelStub;
	});
	VOX.exitPanel.hideEvent.subscribe(function() {
		VOX.handleExitCancel = VOX.exitCancelStub;
	});
	

	VOX.exitPanel.renderEvent.subscribe(function() {
		VOX.exitPanel.close.appendChild(document.createTextNode(' ESC'));
	});
			
	VOX.exitTimeout = null;

	VOX.exitCancel = function(e) {
		// hide panel and cancel forwarding
		var t = E.getTarget(e);
		if (D.getAncestorByClassName(t, "exit-panel") == null) {
			VOX.exitTimeout = clearTimeout(VOX.exitTimeout);
			VOX.exitPanel.hide();
		}
	};
	VOX.exitCancelStub = function(e) { 
		// do nothing
	};
	VOX.handleExitCancel = VOX.exitCancelStub;
	
	
	
	VOX.exitPanelTemplate = "<div class='exitmsg'>" + 
						"<h1>You are exiting the Senate Web Server</h1>" + 
						"<p><em>Thank you for visiting our site.</em></p>" +
						"<div class='exitdest'><p><strong>You will now access:</strong></p>" + 
						"<a href='{dest}' title='Exit now to {dest}'>{dest}</a>" +							
						"</div></div>";
											
	VOX.showExitPanel = function(dest) {
		clearTimeout(VOX.exitTimeout);
		VOX.exitTimeout = setTimeout(function() { self.location.href = dest; }, 5000);
		VOX.exitPanel.setBody(YAHOO.lang.substitute(VOX.exitPanelTemplate, { dest: dest }));
		VOX.exitPanel.render(document.body);
		VOX.exitPanel.show();			
	};

	*/
	
	E.onDOMReady(function (ev) {			

		// IE6 always wins :(
		navRoot = document.getElementById("nav");
		for (i=0; i<navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName=="LI") {
				node.onmouseover=function() {
					this.className+=" over";
				}
				node.onmouseout=function() {
					this.className=this.className.replace(" over", "");
				}
			}
		}	
		// resize fonts
		setDefaultFontSize();
		
		var Y = YAHOO.util;
		
		// definition hiding
		els = Y.Dom.getElementsByClassName('definition');
		for (var i=0; i < els.length; i++) { 
			var spans = els[i].getElementsByTagName('span');
			for (var j=0; j < spans.length; j++) {
				if ( !Y.Dom.hasClass( spans[j], "hide" ) ) Y.Dom.addClass( spans[j], 'hide');
			}
			
			Y.Event.addListener(els[i], 'click', function(ev, o) {
					var _el = YAHOO.util.Dom.get(o);
					var _spans = _el.getElementsByTagName('span');
					for (var i=0; i < _spans.length; i++) {
						if ( YAHOO.util.Dom.hasClass( _spans[i], "hide" ) )
							YAHOO.util.Dom.removeClass( _spans[i], 'hide');
						else
							YAHOO.util.Dom.addClass( _spans[i], 'hide');
					}
				}, els[i]);
		}
		
		// AJAX tabs
		var els = Y.Dom.getElementsByClassName('ajax-nav', 'ul');
		if (els && els.length) {
			for (var i =0; i < els.length; i++) {
				var ul = els[i];
				for(var j=0; j < ul.childNodes.length; j++){
					if ( ul.childNodes[j].tagName &&  ul.childNodes[j].tagName == "LI") {
						var li = ul.childNodes[j];
						var a = li.firstChild;
						var pound = a.href.split("#");
						var div = pound[1];
						
						var url = "/templates/ajax.cfm?id=" + a.rel;
						var callback = {
								success: function(o) {
									document.getElementById(o.argument.div_id).innerHTML =  o.responseText;
									runScripts(document.getElementById(o.argument.div_id));
								},
								failure: function(o) {
									alert("AJAX doesn't work"); //FAILURE
								},
								argument: { 
									div_id: div
								}
							};

						var transaction = Y.Connect.asyncRequest('GET', url, callback);
					}
				}
			}
		}
		
		// Swaps input text
		var els = Y.Dom.getElementsByClassName('swap_value', 'input');
		if (els && els.length) {
			for (var i =0; i < els.length; i++) {
				var _obj = {el: els[i], value: els[i].value};
				
				// add onFocus event
				Y.Event.addFocusListener(els[i], function (ev, o) { 
					if (o.el.value == o.value){
						o.el.value = "";
					}
				}, _obj );
				
				// add onBlur event
				Y.Event.addBlurListener(els[i], function (ev, o) { 
					if (YAHOO.lang.trim(o.el.value) == ""){
						o.el.value = o.value;
					}
				}, _obj );
			}
		}
		
		// add exit message to external links
		var ndls = [EXIT_URL, "", "http://tomudall", "http://www.tomudall", "javascript:", "mailto:", ".pdf", "http://www.senate.gov/cgi-bin/exitmsg?url="];
		
		els = document.getElementsByTagName("a");
		if (els && els.length) {
			for (var i =0; i < els.length; i++) {
				var isFound = false;
				for ( var j = 0; j < ndls.length; j++) {
					if ( els[i].href.indexOf( ndls[j] ) > -1 ) {
						isFound = true;
						break;
					}
				}
				if ( !isFound ) {
					els[i].onmouseover = setStatus(els[i].href);
					els[i].onmouseout = setStatus(' ');
					els[i].href = EXIT_URL + els[i].href;
					//els[i].target = "_blank"; 
				}
			}
		}
		
		
		// init hot topics news ticker
		if ( document.getElementById("hot_tops-box") ) {
			var infobox = new BEBOP.Infobox("hot_tops-box", true, 1000);
			infobox.run();
		}
		// set ajax paging for videos
		if ( document.getElementById("nmVideos") ) {
			var pObj = getHdBdFtDivs( YAHOO.util.Dom.get("nmVideos") );
			pObj["ajaxPage"] = "/templates/newMediaAjax.cfm?p";
			pObj["callbacks"] = new newMediaCallBack( pObj );
			var ajVids = new ajaxPager( pObj );
		}
		// set ajax paging for slideshows
		if ( document.getElementById("nmSlideshows") ) {
			var pObj = getHdBdFtDivs( YAHOO.util.Dom.get("nmSlideshows") );
			pObj["ajaxPage"] = "/templates/newMediaAjax.cfm?p";
			pObj["callbacks"] = new newMediaCallBack( pObj );
			var ajSlides = new ajaxPager( pObj );
		}
		// set ajax paging for legislation
		if ( document.getElementById("legislation") ) {
			var pObj = getHdBdFtDivs( YAHOO.util.Dom.get("legislation") );
			pObj["ajaxPage"] = "/templates/legislationAjax.cfm?p";
			pObj["callbacks"] = new legislationCallBack( pObj );
			var ajLegislation = new ajaxPager( pObj );
		}
	
		//Nifty("blockquote", "transparent");
			
		
		// Zebra Striping
		els = Y.Dom.getElementsByClassName('zebra');
		for (var i=0; i < els.length; i++) {
			var p = els[i]; // parent
			var c;
			
			// get children
			if ( p.tagName.toUpperCase() == "UL") {
				c = p.getElementsByTagName("li"); 
			} else {
				c = p.getElementsByTagName("tr"); // children
			}
			
			if (c) {
				for (var j = 0; j < c.length; j++) {
					// add 'alt' class to odd numbered tags
					if (j % 2 == 0) Y.Dom.addClass( c[j], 'alt');

					var _obj = {el: c[j]};
					Y.Event.addListener(c[j], 'mouseover', function(ev, o) {
							Y.Dom.addClass(o.el,'over');
						}, _obj);
						
					Y.Event.addListener(c[j], 'mouseout', function(ev, o) {
							Y.Dom.removeClass(o.el,'over');
						}, _obj);
						
				}
			}
		}
	});

	
		
})();


// Custom subscribable event for youtube video state changes	
VOX.youTubePlayerReady = new YAHOO.util.CustomEvent('youTubePlayerReady',window);

// Pass through to a subscribable event
function onYouTubePlayerReady(playerId) {
	VOX.youTubePlayerReady.fire(playerId);
}

