// data.js

var jsonScriptId=0;

function getGoogleData(jq)
{

  jsonScriptId++;
  if (typeof jq.type == UNDEF) jq.type = 'spreadsheet';
  if (typeof jq.callback == UNDEF) jq.callback = 'handleGoogleData'; 

  var id = 'jsonScript' + jsonScriptId;

  if (jq.type == 'spreadsheet'){

    if (typeof jq.wsid == UNDEF) jq.wsid = 'od6';	 // worksheet id

    var url = 'http://spreadsheets.google.com/feeds/list'
		+ '/' + jq.ssid + '/' + jq.wsid +  '/public/values'
                + '?alt=json-in-script&callback=' + jq.callback;

    if (typeof jq.orderby != UNDEF) { 
		url += '&orderby=column:' + jq.orderby;

		var dir = jq.direction;
    		if (typeof dir != UNDEF) {
			if (dir == 'za') dir = 'true'; else dir = 'false';
			url += '&reverse=' + dir;
		}

    		if (typeof jq.reverse != UNDEF) 
			url += '&reverse=' + jq.reverse;
    }
	
    if (typeof jq.sq != UNDEF){      
		// have not been able to get this to work ??
		url += '&sq=' + jq.sq;
   }
  }
  else if (jq.type == 'calendar'){

	var url = jq.url
		+ '?alt=json-in-script'
		+ '&callback=' + jq.callback
		+ '&futureevents=true'
		+ '&orderby=starttime'
		+ '&sortorder=ascending'
		+ '&max-results=999';
  }
  else { 
	alert('unrecognized GoogleData type ['+jq.type + ']');
	return;
  }

  var script = document.createElement('script');
  script.setAttribute('src', url);
  script.setAttribute('id', id);
  script.setAttribute('type', 'text/javascript');

  // in Safari (Mac and Win) the doc.docEl.firstChild
  //   fails (even after 20 second timeout) on wsu template pages
  //   where the firstChild is a comment 
  // for cases like that, pick up app provided scriptDock element

  var el = document.getElementById('scriptDock');
  if (el) el.appendChild(script);
  else document.documentElement.firstChild.appendChild(script);


}




// -- functions to handle retrieved data items

var gdata;	// global to help w/firebug debugging

function handleNewsItems(root){ handleNewsItems_reRx(root,/./,'NewsItems'); } 
function handleSeiningNewsItems(root){ handleNewsItems_reRx(root,/seining/i,'SeiningNewsItems'); }


function handleNewsItems_reRx(root,rx,divId)
{
	gdata = root;
	var arr = root.feed.entry;
	var htm = new Array();
	htm.push('<ul>');
	for (var i=0; i<arr.length; i++){
		var obj = arr[i];
		var title =   obj.gsx$title.$t;
		if (!title.match(rx)) continue;

		var date =    obj.gsx$date.$t;
		var author =  obj.gsx$author.$t;
		var desc =    obj.gsx$desc.$t;

		var url = ''+ obj.gsx$url.$t;
		if (url.indexOf('http')!=0) url = '../'+url; 

		htm.push('<li><a class="title" href="',url,'">', title,'</a>');
		//htm.push('<br>');
		htm.push('<span class="date">',  date,   '</span>'); 
		//htm.push('&nbsp;&nbsp;&nbsp;');
		htm.push('<span class="author">',author, '</span>'); 
		htm.push('<span class="desc">',  desc,   '</span>'); 
		htm.push('</li>');
	}
	htm.push('</ul>');

	var el = document.getElementById(divId);
	if (el) el.innerHTML = htm.join('');
}


function handleProjectList(root)
{
	gdata = root;
	var arr = root.feed.entry;
	var htm = new Array();
	htm.push('<ul>');
	for (var i=0; i<arr.length; i++){
		var obj = arr[i];
		var url = ''+ obj.gsx$url.$t;
		var title =   obj.gsx$name.$t;
		var keys =    obj.gsx$keywords.$t;
		var desc =    obj.gsx$desc.$t;
		var status =    obj.gsx$status.$t;

		htm.push('\n<li><a class="title" href="',url,'">', title,'</a>');
		htm.push('\n  <span class="desc">',  desc,   '</span>'); 
		htm.push('</li>');
	}
	htm.push('</ul>');

	var el = document.getElementById('ProjectList');
	if (el) el.innerHTML = htm.join('');
}


function handleOrgList(root)
{
	gdata = root;
	var el = document.getElementById('OrgList');

	var htm = new Array();
	htm.push('<dl>');

	var arr = root.feed.entry;
	for (var i=0; i<arr.length; i++){

		var obj = arr[i];
		var type = obj.gsx$type.$t;

		//if (! type.match(/^org/)) continue;

		var title = obj.gsx$title.$t;
		var desc = obj.gsx$desc.$t;
		var url = obj.gsx$addr.$t;


		htm.push('\n<dt><a href="', url,'" target="_blank">',
			title,'</a></dt>', '<dd>', desc,'</dd>'
			);
	}
	htm.push('</dl>');

	el.innerHTML = htm.join('');

}



function handlePhoneList(root)
{
	gdata = root;
	var el = document.getElementById('PhoneList');

	var inf = new Array();
	var rpt = new Array();
	inf.push('<table cellpadding=4 border=1 cellspacing=0>',
		'<tr><td><em>Call</em><td><em>for information on ...</em></td>');
	rpt.push('<table cellpadding=4 border=1 cellspacing=0>',
		'<tr><td><em>Call</em><td><em>to report ...</em></td>');

	var arr = root.feed.entry;
	for (var i=0; i<arr.length; i++){

		var type = arr[i].gsx$type.$t;
		var phone = arr[i].gsx$phone.$t;
		var title = arr[i].gsx$title.$t;

		if (type.match('info'))
		   inf.push('\n<tr><td class="telephone" valign=top>',phone,
			'<td valign=top>',title,'</td></tr>');

		if (type.match('report'))
		   rpt.push('\n<tr><td class="telephone" valign=top>',phone,
			'<td valign=top>',title,'</td></tr>');
	}
	inf.push('</table><p>&nbsp;</p>');
	rpt.push('</table><p>&nbsp;</p>');

	el.innerHTML = rpt.join('') + inf.join('');

}


var photoViewer;

var photoArr = new Array();
function handlePhotoList(root)
{
	gdata = root;

	var el = document.getElementById('PhotoList');

	var htm = new Array();
	var dat = new Array();

	var arr = root.feed.entry;
	for (var i=0; i<arr.length; i++){

		var obj = new slide();
		obj.src =    arr[i].gsx$img.$t;
		obj.title =  arr[i].gsx$title.$t;
		obj.legend = arr[i].gsx$legend.$t;
		obj.copyright = 'Copyright &copy; ' +     arr[i].gsx$copyright.$t;
		obj.href =   arr[i].gsx$href.$t;
		obj.alt =    arr[i].gsx$alt.$t;
		photoArr.push(obj);

		if (i==0){
			htm.push('\n<a id=ss_href href="',obj.href,'">');
			htm.push('<span id="ss_title">',obj.title,'</span>');
			htm.push('<img width=300 id=ss_img src="',obj.src,'" alt="',obj.alt,'">');

			htm.push('<span id="ss_legend">',obj.legend,'</span>');
			htm.push('<span id="ss_copyright">', obj.copyright,'</span>');
			htm.push('\n</a>');
		}

		var d = ';';

		dat.push(obj.href,d,obj.title,d,obj.src,d,obj.legend,d,obj.copyright,d,obj.alt,'NEWLINE');

	}

	el.innerHTML = htm.join('');

	var el=document.getElementById('PhotoListData');
	if(el) el.innerHTML = dat.join('');
	else alert('cannot locate PhotoListData element');


	photoViewer = new Slideshow();
	photoViewer.imgEl = document.getElementById('ss_img'); 
	photoViewer.hrefEl = document.getElementById('ss_href'); 
	photoViewer.titleEl = document.getElementById('ss_title'); 
	photoViewer.legendEl = document.getElementById('ss_legend'); 
	photoViewer.copyrightEl = document.getElementById('ss_copyright'); 

	var arr = photoArr;
	for (var i=0; i<arr.length; i++){
		photoViewer.add_slide(arr[i]);
	}
	photoViewer.start();

}

