/***********************************************************************
*	RPC.JS
*  
*	(c) 2005 Walker Art Center - Brent Gustafson
***********************************************************************/

var rpc_req;	// rpc_request and XML document objects
var rpc_fadeSem = 1;  // fade semaphore
var rpc_fadeSpeed = 20;	// fade speed
var rpc_fadeCur = 0; // current fade opacity
var rpc_pageTotal; // total pages
var rpc_pageCur; // current page
var rpc_pageSort = ""; // sort-by column
var rpc_pageOrder = ""; // sort order, asc or desc
var rpc_pageTerm = ""; // search term
var rpc_pageTimer = null; // page timer
var rpc_pageURL = "aoc_list.wac"; // page url
var rpc_qtPrev = 1; // previous Quicktime played
var rpc_url = ""; // requested page w/ query

// Get and Object reference
function rpc_getObj(id) {
	obj = document.getElementById(id);
	return obj;
}

// Expand meta view
function rpc_expand(num) {
	rpc_getObj("rpc_play_" + rpc_qtPrev).style.display = "none";
	rpc_getObj("rpc_play_" + num).style.display = "block";
	rpc_qtPrev = num;
}


/*
// Stop QT clip
function rpc_stopClip() {
	var qtObjPrev = eval("document.qt_" + rpc_qtPrev);
	if (qtObjPrev) qtObjPrev.Stop(); // stop previous clip
}




// Write out QT HTML
function rpc_qtPlay(num,url) {
	rpc_getObj("rpc_qt_" + num).innerHTML = "<object classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" width=\"270\" height=\"16\" codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\" id=\"qt_" + num + "\"><param name=\"src\" value=\"" + url + "\"/><param name=\"autoplay\" value=\"true\"/><embed src=\"" + url + "\" width=\"270\"  height=\"16\" autoplay=\"true\" id=\"qt_" + num + "\" enablejavascript=\"true\" type=\"video/quicktime\" pluginspage=\"http://www.apple.com/quicktime/download/\"/></object>";
}


// Show and Play MP3 in Quicktime
function rpc_qtShow(url, num, title) {
	//rpc_expand(num);
	
	rpc_getObj("rpc_play_" + rpc_qtPrev).style.display = "none";
	rpc_getObj("rpc_play_" + num).style.display = "block";
	
	var qt_content = "";
	qt_content = "<b>Now Playing:</b> <i>" + title + "</i><br/>";
	qt_content += "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"150\" height=\"20\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab\"><param name=\"movie\" value=\"singlemp3player.swfautoStart=true&backColor=000000&frontColor=ffffff&songVolume=60&file=" + url + "\" /><param name=\"wmode\" value=\"transparent\" /><embed wmode=\"transparent\" width=\"150\" height=\"20\" src=\"singlemp3player.swf?autoStart=true&backColor=000000&frontColor=ffffff&songVolume=60&file=" + url + "\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /></object>";
	
	rpc_getObj("rpc_qt_" + num).innerHTML = qt_content;
	

	
	rpc_getObj("qt_title_" + num).innerHTML = "<b>Now Playing:</b> <i>" + title + "</i>";
	rpc_getObj("qt_download_" + num).innerHTML = "<img src=\"images/dl.gif\" height=\"10\" width=\"13\" border=\"0\"/><a href=\"" + url + "\">Download</a>";
	
	var qtObj = eval("document.qt_" + num);
	if (qtObj) qtObj.SetURL(url); // set new clip and write out
	else setTimeout("rpc_qtPlay(" + num + ",'" + url + "')", 0);
	

rpc_qtPrev = num;
}
*/

// Build URL Query and execute
function rpc_buildQuery() {
	var pageURL = rpc_pageURL + "?i=0";
	if (rpc_pageCur) pageURL += "&page=" + rpc_pageCur;
	if (rpc_pageTerm) pageURL += "&term=" + rpc_pageTerm;
	if (rpc_pageSort) pageURL += "&sort_by=" + rpc_pageSort;
	if (rpc_pageOrder) pageURL += "&sort_order=" + rpc_pageOrder;
	return pageURL;
}


// Handle paging
function rpc_pageChange(dir) {
	rpc_pageCur = rpc_pageCur + dir;
	rpc_getObj("rpc_pageNum").innerHTML = "Page " + rpc_pageCur + " of " + rpc_pageTotal;
	rpc_getObj("rpc_pageNum2").innerHTML = "Page " + rpc_pageCur + " of " + rpc_pageTotal;
	
	if (rpc_pageCur <= 1) {
		rpc_getObj("rpc_pageBack").style.display = "none";
		rpc_getObj("rpc_pageBack2").style.display = "none";
	}
	else {
		rpc_getObj("rpc_pageBack").style.display = "block";
		rpc_getObj("rpc_pageBack2").style.display = "block";
	}
	
	if (rpc_pageCur >= rpc_pageTotal) {
		rpc_getObj("rpc_pageForward").style.display = "none";
		rpc_getObj("rpc_pageForward2").style.display = "none";
	}
	else {
		rpc_getObj("rpc_pageForward").style.display = "block";
		rpc_getObj("rpc_pageForward2").style.display = "block";
	}
	
	if (rpc_pageTimer) clearTimeout(rpc_pageTimer);
	if (dir != 0) rpc_pageTimer = setTimeout("rpc_loadDoc('Loading page ' + rpc_pageCur + '...')",500);
}


// handle sorting
function rpc_sort(sort) {
	if (sort == rpc_pageSort) {
		if (rpc_pageOrder == "asc") {
			rpc_pageOrder = "desc";
			rpc_getObj(rpc_pageSort).src = "images/desc.gif";
		}
		else {
			rpc_pageOrder = "asc";
			rpc_getObj(rpc_pageSort).src = "images/asc.gif";
		}
	}
	else {
		rpc_pageSort = sort;
		rpc_pageOrder = "asc";
		rpc_getObj("artwork").src = rpc_getObj("code").src = rpc_getObj("artist").src = rpc_getObj("loc").src = "images/pix.gif";
		rpc_getObj(rpc_pageSort).src = "images/asc.gif";
	}

	rpc_loadDoc("Sorting Data...");
}


// Handle search
function rpc_search() {
	var term = "";
	rpc_pageTerm = rpc_getObj("rpc_searchText").value;
	rpc_pageCur = 1;
	if (rpc_pageTerm) term = "Loading Search Results for \"" + rpc_pageTerm  + "\"...";
	else term = "Loading Data...";
	rpc_loadDoc(term);
}


// Show/hide any meta data when page loads
function rpc_showMeta() {
	if (rpc_pageTerm) rpc_getObj("rpc_sResults").innerHTML = "Search Results for \"" + rpc_pageTerm + "\"";
	else rpc_getObj("rpc_sResults").innerHTML = "";
	if (rpc_pageTotal) {
		rpc_getObj("rpc_pageTable1").style.display = "block";
		rpc_getObj("rpc_pageTable2").style.display = "block";
	}
	else {
		rpc_getObj("rpc_pageTable1").style.display = "none";
		rpc_getObj("rpc_pageTable2").style.display = "none";
	}
	rpc_pageChange(0);
	
	if (rpc_pageOrder == "asc") rpc_getObj(rpc_pageSort).src = "images/asc.gif";
	else rpc_getObj(rpc_pageSort).src = "images/desc.gif";
}


// Show loading screen with content
function rpc_showLoad(content) {
	var html = "<table cellpadding='0' cellspacing='0' border='0' class='load'><tr class='stopcols'><td height='45' align='center'><img src='images/loading.gif' align='absmiddle'/>";
	html += content;
	html += "</td></tr></table>";
	return html;
}


// Run any Javascript in resulting page RepsonseText
function rpc_runJS(responseText) {
	var ScriptFragment = "(?:<script.*?>)((\n|.)*?)(?:</script>)";
	var match = new RegExp(ScriptFragment, "img");
	var scripts = responseText.match(match);
	
	if (scripts) {
		var js = "";
		for(var s = 0; s < scripts.length; s++) {
			var match = new RegExp(ScriptFragment, "im");
			js += scripts[s].match(match)[1];
		}
		eval(js);
	}
}


// Handle onreadystatechange event of rpc_req object
function rpc_procReq() {
    if (rpc_req.readyState == 4) {
		rpc_showDetail(rpc_req.responseText); //If "loaded" state
		pageTracker._trackPageview("/aoc/" + rpc_url);
	}
}


// Retrieve XML document; source must be from same domain as HTML file
function rpc_loadDoc(content) {
	rpc_url = rpc_buildQuery(); // build url query string
	rpc_showDetail(rpc_showLoad(content)); // show loading info
	
    if (window.XMLHttpRequest) {
        rpc_req = new XMLHttpRequest();
        rpc_req.onreadystatechange = rpc_procReq;
        rpc_req.open("GET", rpc_url, true);
        rpc_req.send(null);
    } else if (window.ActiveXObject) {	// IE/Windows ActiveX version
        rpc_req = new ActiveXObject("Microsoft.XMLHTTP");
        if (rpc_req) {
            rpc_req.onreadystatechange = rpc_procReq;
            rpc_req.open("GET", rpc_url, true);
            rpc_req.send();
        }
    }
}


// Display data  from document
function rpc_showDetail(content) {
    rpc_runJS(content);
	rpc_getObj("rpc_details").innerHTML = content;
}
