//var raw_content_tables = new Aray();       // Initialized as an array of offscreen table nodes
var viewer;                  // Initialized as the viewer div node
var mytable = new Array();                 // Initialized as the viewer table nodes
var mytablebody = new Array();             // Initialized as the viewer table body nodes
var allrows = new Array();								 // Initialized as raw_content_table rows array
var after_date;							 // Initialized as filter_form['date_2'] object
var before_date;             // Initialized as filter_form['date_1'] object
var with_clip;							 // Initialized as filter_form['w_clip'] object
var with_transcript;         // Initialized as filter_form['w_transcript'] object
var in_range;                // Initialized as array and each element set to bool: true 
var has_clip;                // Initialized as array and each element set to bool: accordingly;
var has_trans;               // Initialized as array and each element set to bool: accordingly;
var row_date;                // Initialized as array; element values assigned by include_in_range()

var ops = new Array();

function list_page_init(page_type) {
	after_date = document.getElementById('date_2');
	before_date = document.getElementById('date_1');
	with_clip = document.getElementById('w_clip');
	//with_clip.onclick = function() {
	//	alert(this.checked);
	//}
	with_transcript = document.getElementById('w_transcript');
	viewer = document.getElementById('content_pane');
// Turning raw content table into an array of tables:
	//raw_content_table = document.getElementById('raw_data').getElementsByTagName('table')[0];
	raw_content_tables = document.getElementById('raw_data').getElementsByTagName('table');
	// ********************
	// if (raw_content_table) {
	// ********************
	for(var t_count = 0; t_count < raw_content_tables.length; t_count++) {
		mytable[t_count] = raw_content_tables[t_count].cloneNode(false);
		mytable[t_count].className = "sortable";
		mytable[t_count].id = "filtered_content_table_" + t_count;
		mytablebody[t_count] = raw_content_tables[t_count].getElementsByTagName('tbody')[0].cloneNode(false);
		allrows[t_count] = raw_content_tables[t_count].getElementsByTagName('tr');
		in_range = new Array(allrows.length);
		row_date = new Array(allrows.length);
		has_clip = new Array(allrows.length);
		has_trans = new Array(allrows.length);
		for (var c=0; c<allrows[t_count].length; c++) {
			myrow = allrows[t_count][c].cloneNode(true);
				in_range[c] = true;
			if (c > 0 && myrow.getElementsByTagName('td')[3]) {
				row_date[c] = include_in_date_range(myrow.getElementsByTagName('td')[3].innerHTML);
			}
	//		alert (row_date[c] + ' b: ' + before_date.value + ' a: ' + after_date.value);
	//		mytablebody.appendChild(myrow);
		}
		viewer.appendChild(mytable[t_count]);
		mytable[t_count].appendChild(mytablebody[t_count]);
	} // End raw_content_tables loop
	
//	filter_by_date();
	after_date.onchange = function() {apply_filters(page_type);};
	before_date.onchange = function() {apply_filters(page_type);};
	with_clip.onchange = function() {apply_filters(page_type);};
	with_transcript.onchange = function() {apply_filters(page_type);};
	apply_filters(page_type);
	
	//alert(document.getElementById('filtered_content_table').className);
	//ts_makeSortable(document.getElementById('filtered_content_table'));
	the_tables = document.getElementsByClassName('sortable');
	for (vt = 0; vt < the_tables.length; vt++) {
		//alert(the_tables[0].getElementsByTagName('tr').length);
		top_row_cells = the_tables[vt].getElementsByTagName('tr')[0].getElementsByTagName('td');
		for (cc=0; cc < top_row_cells.length; cc++) {
			top_row_cells[cc].style.borderBottom = 'double 3px #cac7c2';
			top_row_cells[cc].style.position = 'relative';
			top_row_cells[cc].style.height = '15px';
			top_row_cells[cc].style.verticalAlign = 'bottom';
			top_row_cells[cc].style.textAlign = 'left';
			
		}
	}
	
	// ********************
//	} // end if raw_content_table
	// ********************
}

function apply_filters(page_type) {
	var v = document.getElementById('w_clip').checked;
	var t = document.getElementById('w_transcript').checked;
	// alert ("t = " + t + " v = " + v);
	// IE choked here;  try pure DOM instead.  -JGB
	//mytablebody.innerHTML = '';
	
// Make apply_filters loop through tables in viewer	
	visible_tables = viewer.getElementsByTagName('table');
	for (var v_count = 0; v_count < visible_tables.length; v_count++) {
		
		while (mytablebody[v_count].firstChild) {
			mytablebody[v_count].removeChild(mytablebody[v_count].firstChild);
		}
		filter_by_date();
		filter_by_clip();
		filter_by_trans();
		// alert(v_count);
		for (var i=0; i<allrows[v_count].length; i++) {
			var showme = in_range[i];
	//		alert ('in range: ' + showme);
			if (v == true) {
				showme = showme && has_clip[i];
	//			alert ('has_clip: ' + has_clip[i] + ', showme: ' + showme);
			}
			if (t == true) {
				showme = showme && has_trans[i];
	//			alert ('has_clip: ' + has_trans[i] + ', showme: ' + showme);
			}
			if (showme == true) {
				myrow = allrows[v_count][i].cloneNode(true);
				mytablebody[v_count].appendChild(myrow);
			}
		}
		if (page_type == 'people') {
			// don't make column #1 sortable:
			ts_makeSortable(document.getElementById('filtered_content_table_' + v_count), [1]);
		} else {
			ts_makeSortable(document.getElementById('filtered_content_table_' + v_count));
		}
	}
}

function filter_by_date() {
	visible_tables = viewer.getElementsByTagName('table');
	for (var count = 0; count < visible_tables.length; count++) {
		for (var c=0; c<allrows[count].length; c++) {
			//alert(allrows[c].getElementsByTagName('td')[3].innerHTML);
			in_range[c] = true;
			if (row_date[c] !='' && row_date[c] < before_date.value) {
				in_range[c] = false;
			}
			if (row_date[c] !='' && row_date[c] > after_date.value) {
				in_range[c] = false;
			}
		}
	}
}

function filter_by_clip() {
	visible_tables = viewer.getElementsByTagName('table');
	has_clip[0] = true;
	for (var count = 0; count < visible_tables.length; count++) {
		//alert(allrows[count].length);
		for (var c = 1; c < allrows[count].length; c++) {
			//alert(allrows[count][c].getElementsByTagName('td')[2].innerHTML);
			has_clip[c] = true;
			if (with_clip.checked == true && allrows[count][c].getElementsByTagName('td')[2].innerHTML.match('i_clip') != 'i_clip') {
				has_clip[c] = false;
			}
			//apply_filters();
		}
	}
}

function filter_by_trans() {
	visible_tables = viewer.getElementsByTagName('table');
	has_trans[0] = true;
	for (var count = 0; count < visible_tables.length; count++) {
		for (var c=1; c<allrows[count].length; c++) {
			//alert(allrows[c].getElementsByTagName('td')[3].innerHTML);
			has_trans[c] = true;
			if (with_transcript.checked == true && allrows[count][c].getElementsByTagName('td')[2].innerHTML.match('i_trans') != 'i_trans') {
				has_trans[c] = false;
			}
			//apply_filters();
		}
	}
}

function include_in_date_range(raw_date) {
	//var year = raw_date.replace(/-.*/,'');
	var result = raw_date.match(/\d+/);
	if (result == null) {
		// couldn't find any digits; report an empty string
		return '';
	}
	var year = result[0];
	//if (year != '' && (!before_date.value || year < before_date.value)) {
	if (!before_date.value || year < before_date.value) {
		before_date.value = year;
	}
	if (!after_date.value || year > after_date.value) {
		after_date.value = year;
	}
	return year;
}

/*
function list_page_init() {
	var b = document.getElementsByTagName('body')[0];
	var d = b.getElementsByTagName('div');
	var raw_content_table = document.getElementById('raw_data').getElementsByTagName('table')[0];
	
	var viewer = document.getElementById('content_pane');
	var mytable     = raw_content_table.cloneNode(false);
	var mytablebody = raw_content_table.getElementsByTagName('tbody')[0].cloneNode(false);
	var myrows = raw_content_table.childNodes; 
	alert(myrows[1].childNodes.length);
	for (c = 0; c<myrows.length; c++)
	{
		mycurrent_row=myrows[c].cloneNode(true);
		//var re = new RegExp("(<td class=\"thumb\">)([^\>]*)(<\/td)", "m");
		//var replacement = "\1<img src=\"images\/\2\" alt=\"\2\"\3";
		//mycurrent_row = mycurrent_row.innerHTML.value.replace(re, replacement);
		mytable.appendChild(mycurrent_row);
	}
	//mytable.appendChild(mytablebody);
	viewer.appendChild(mytable);
}
*/
function error_box_init(validated, form) {
	if (!validated) {
		var ebox = document.getElementById('validation_messages');
		ebox.style.display = 'block';
	}
}

function bstates_init() {
	var b = document.getElementsByClassName('column_filter')[0].getElementsByTagName('a');
	bstates = new Array (b.length);
	for (i = 0; i < b.length; i++) {
		bstates[b[i].id] = new button_state(document.getElementById(b[i]), 13);
	}
}

function button_state(button, offset) {
	this.button = button;
	this.offset = offset;
	this.state = 0;
	this.bg_pos = 0;
	this.new_state = function() {this.state = (this.state + 1) % 2; this.bg_pos = (this.offset * this.state) * -1; return this.bg_pos;};
}

function toggle_columns(tab) {
	var tabs = new Array('description', 'transcript', 'notes');
	//document.getElementById(tab).style.display = '';
	document.getElementById(tab).style.display = 'block';
	//document.getElementById(tab).style.visibility = 'visible';
	document.getElementById(tab+'_tab').className = 'active_tab';
	for (var i = 0; i < tabs.length; i++) {
		if (tabs[i] != tab) {
			document.getElementById(tabs[i] + '_tab').className = '';
			//document.getElementById(tabs[i]).style.visibility = 'hidden';
			document.getElementById(tabs[i]).style.display = 'none';
		}
	}
	//document.getElementById('description').style.display = 'none';
	//document.getElementById('description').style.visibility = 'hidden';
}

function toggle_columns_OLD(tab) {
	document.getElementById('description').style.display = 'none';
	document.getElementById('description_tab').className = '';
	document.getElementById('transcript').style.display = 'none';
	document.getElementById('transcript_tab').className = '';
	document.getElementById('notes').style.display = 'none';
	document.getElementById('notes_tab').className = '';
	document.getElementById(tab).style.display = 'block';
	document.getElementById(tab+'_tab').className = 'active_tab';
}

function toggle_columns2(colname) {
	//var parentElement = document.getElementById('raw_data');
	var parentElement = document.getElementById('content_pane');
	//use Prototype to get all cells of given class (column) inside parentElement
	var cells = document.getElementsByClassName(colname + '_cell', parentElement);
	for (var i = 0; i< cells.length; i++) {
		//use Prototype to toggle column display
		window.Element.toggle(cells[i]);
		//window.Element.hide(cells[i]);
	}
}

/*
function add_op(opperator) {
	//alert(opperator);
	previous_clause = document.getElementsByClassName('search_clause')[(document.getElementsByClassName('search_clause').length - 1)];
	ops.push(opperator);
	new_clause = previous_clause.cloneNode(true);
	new_clause.getElementsByTagName('td')[0].innerHTML = '<input type="hidden" name="op_'+ops.length+'" value="'+opperator+'" />'+opperator;

	new_clause.getElementsByTagName('input')[1].name = 'keywords_'+ops.length;	
	new_clause.getElementsByTagName('input')[1].value = '';
	new_clause.getElementsByTagName('select')[0].name = 'keyword_type_'+ops.length;
	new_clause.getElementsByTagName('select')[0].value = 'all';
	new_clause.getElementsByTagName('select')[1].name = 'field_name_'+ops.length;
	new_clause.getElementsByTagName('select')[1].value = 'tag_set';
	document.getElementsByClassName('search_form_a')[0].getElementsByTagName('table')[0].appendChild(new_clause);
	document.getElementById('next_op').value = '';
}
*/

function add_op(opperator) {
	//alert(opperator);
	previous_clause = document.getElementsByClassName('search_clause')[(document.getElementsByClassName('search_clause').length - 1)];
	ops.push(opperator);
	new_clause = previous_clause.cloneNode(true);
	opvalues = Array(3);
	opvalues['AND'] = '';
	opvalues['OR'] = '';
	opvalues['NOT'] = '';
	opvalues[opperator] = 'selected="selected"';
	previous_clause = document.getElementsByClassName('search_clause')[(document.getElementsByClassName('search_clause').length - 1)];
	
	new_clause.getElementsByTagName('td')[0].innerHTML = '<select name="op_'+ops.length+'"><option value="AND"'+opvalues['AND']+'>AND</option><option value="OR"'+opvalues['OR']+'>OR</option><option value="NOT"'+opvalues['NOT']+'>AND NOT</option></select>';

	new_clause.getElementsByTagName('input')[0].name = 'keywords_'+ops.length;	
	new_clause.getElementsByTagName('input')[0].value = '';
	new_clause.getElementsByTagName('select')[1].name = 'keyword_type_'+ops.length;
	new_clause.getElementsByTagName('select')[1].value = 'all';
	new_clause.getElementsByTagName('select')[2].name = 'field_name_'+ops.length;
	new_clause.getElementsByTagName('select')[2].value = 'tag_set';
	document.getElementsByClassName('search_form_a')[0].getElementsByTagName('table')[0].getElementsByTagName('tbody')[0].appendChild(new_clause);
	document.getElementById('next_op').value = '';
}



/* YourList Page Stuff */

function re_sequence(item) {
	//alert(item_list.length);
	
	fixed = document.getElementById(item).value;
	for(i = 0; i < item_list.length; i++) {
		if (item_list[i].id != item && item_list[i].value == fixed ) {
			item_list[i].value++;
			re_sequence(item_list[i].id);
		}
	}
	document.getElementById('item_sequence').value = '';
	for(i = 0; i < item_list.length; i++) {
		document.getElementById('item_sequence').value += '' + item_list[i].id + ':' + item_list[i].value + ',';
	}
	document.getElementById('item_sequence').value.replace('/(.*),$/', "$1");
}

function sequence_form_init() {
	item_list = document.getElementsByClassName('counter_box');
	for(i = 0; i < item_list.length; i++) {
		//alert (item_list[i].id + ': ' + item_list[i].value);
		item_list[i].onchange = function () {
			re_sequence(this.id);
		}
	}
}

function confirm_remove_from_list(baseurl, item) {
	
	var answer = confirm("Removing this item from your list will cause any notes you have made to be deleted. Remove it anyway?");
	if (answer){
		var delete_request = baseurl + '?remove_item=' + item;
		window.location = delete_request;
	}
	else{
		//window.location = baseurl;
	}
}

function confirm_add_to_list(baseurl, item) {
	
	var answer = confirm("Add this record to your list?");
	if (answer){
		var add_request = baseurl + '?resource_id=' + item;
		window.location = add_request;
	}
}

function confirm_sign_up(baseurl) {
	
	var answer = confirm("In order to add this record to your list, you must first sign in. Continue to the registration and sign-in page?");
	if (answer){
		window.location = baseurl;
	}
}



/* Resouce Page Stuff: */

// for new material (having chunked transcripts) hide chunks; then reveal only
// the chunck corresponding to the clip:

function clip_transcript(clip_id) {
	var chunks = document.getElementsByClassName('chunk');
	for (var i = 0; i < chunks.length; i++) {
		if (chunks[i].id != clip_id) {
			chunks[i].style.display = 'none';
		}
	}
}

function toggle_full_transcript() {
	var chunks = document.getElementsByClassName('chunk');
	for (var i = 0; i < chunks.length; i++) {
		if (chunks[i].id != mla_id) {
			//use Prototype to toggle column display
			window.Element.toggle(chunks[i]);
		}
	}
	// toggle clip/full flag
	ftv = (ftv + 1) % 2;
}

function show_hide_chunks_init() {
	document.getElementById('show_chunks').onclick = function() {
		toggle_full_transcript();
		if (ftv == 1) {
			this.innerHTML = "Show Clip Transcript Only";
		} else {
			this.innerHTML = "Show Full Transcript";
		}
		return false;
	}
}

function resource_page_init() {
	//document.getElementById.('description_tab').onclick = function() {toggle_columns('description');};
	//document.getElementById.('transcript_tab').onclick = function() {toggle_columns('transcript');};
	//document.getElementById.('notes_tab').onclick = function() {toggle_columns('notes');};
	
	// hide all but the transcript chunck that goes with the clip
	clip_transcript(mla_id);
	// initialize the show hide link
	show_hide_chunks_init();
	hide_btt_link();
}

function setActivePrintStyleSheet(title) {
   var i, a;
   for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
     if(a.getAttribute("rel").indexOf("style") != -1
        && a.getAttribute("title")
        && a.getAttribute("media") == "print") {
       a.disabled = true;
       if(a.getAttribute("title") == title) a.disabled = false;
     }
   }
}

function printWithStyle(stylesheet) {
	setActivePrintStyleSheet('print-' + stylesheet);
	//window.alert("about to print");
	window.print();
	//window.alert("returned from print");
	setActivePrintStyleSheet('print-default');
	return false;
}


function hide_btt_link() {
	content_height = document.getElementsByClassName('main_content')[0].offsetHeight;
	if (content_height < 880) {
		document.getElementById('btt_link').style.display='none';
	}
}

function send_to_friend() {
	window.open('/send_to_friend.php', 'send_to_friend', 'width=420, height=460 status=no, resizable=yes');
}

function send_password(baseurl,sendto) {
	if (sendto != '') {
		var answer = confirm("Your password will be sent to the following address: "+sendto);
		if (answer){
			document.getElementById('login_form').forgotten.value = sendto;
			document.getElementById('login_form').submit();
		}
		else{
			//window.location = baseurl;
		}
	} else {
		alert('Please enter your e-email address.');
	}
}