var add_favorite_response = function(t) {
	if (t.responseText == 'true') {
		//document.getElementById('fav'+fav_case_id).innerHTML = remove_favorite_link_pre + fav_case_id + remove_favorite_link_post + document.getElementById('case_admin'+fav_case_id).innerHTML ;
		document.getElementById('fav'+fav_case_id).innerHTML = remove_favorite_link_pre + fav_case_id + remove_favorite_link_post;
		alert('Case has been marked as a favorite');
	} else {
		alert('There was an error marking the case as a favorite . Please try again later');

	}
}

var remove_favorite_response = function(t) {
	if (t.responseText == 'true') {
		//document.getElementById('fav'+fav_case_id).innerHTML = add_favorite_link_pre + fav_case_id + add_favorite_link_post + document.getElementById('case_admin'+fav_case_id).innerHTML ;
		document.getElementById('fav'+fav_case_id).innerHTML = add_favorite_link_pre + fav_case_id + add_favorite_link_post;
		alert('Case has been removed as a favorite');
	} else {
		alert('There was an error remvoing the case as a favorite . Please try again later');
	}
}

var add_rating_response = function(t) {
	if (t.responseText == 'true') {
		document.getElementById('votebutton'+last_rated_case).disabled = true;
		document.getElementById('rating'+last_rated_case).disabled = true;
		document.getElementById('member_rating_text'+last_rated_case).innerHTML = "Your rating: "+ rating;

		alert('Your vote is recorded');
	} else {
		alert('There was an error marking the case as a favorite . Please try again later');
	}
}

var add_comment = function(t) {
	if (t.responseText.indexOf('<div class="comment_title">') != -1) {
		document.getElementById('new_comment').value = '';
		document.getElementById('commentblock').innerHTML = t.responseText + document.getElementById('commentblock').innerHTML;
		alert('Comment Added');
	} else {
		//alert(t.responseText);
		alert('There was an error adding this comment. Please try again later');
	}
}

var update_comment = function(t) {
	if (t.responseText == 'true') {
		if (document.getElementById('commenttext'+edited_comment_id) && document.getElementById('edit_comment')) {
			if (document.getElementById('edit_text')) {
				document.getElementById('commenttext'+edited_comment_id).innerHTML = document.getElementById('edit_text').value.replace(/</,"&lt;");
				document.getElementById('commenttext'+edited_comment_id).innerHTML = document.getElementById('commenttext'+edited_comment_id).innerHTML.replace (/\n/g, "<br />");
				//escape all < characters to prevent script injection
				//document.getElementById('commenttext'+edited_comment_id).innerHTML = document.getElementById('commenttext'+edited_comment_id).innerHTML.replace(/</,"&lt;");
			}
			document.getElementById('edit_comment').parentNode.removeChild(document.getElementById('edit_comment'));
			alert('Comment Updated');
		}
	} else {
		//alert(t.responseText);
		alert('There was an error updating this comment. Please try again later');
	}
}

var del_comment = function(t) {
	if (t.responseText == 'true') {
		alert('Comment deleted');
	} else {
		alert(t.responseText);
		alert('There was an error deleting the comment. Please try again later');
	}
}


var errFunc = function(t) {
	alert('Error ' + t.status + ' -- ' + t.statusText);
}


fav_case_id = '';
function add_favorite(case_id) {
	fav_case_id = case_id;
	new Ajax.Request(url+'gallery_ajax_actions.php', {parameters:'act=addfav&case_id='+case_id, onSuccess:add_favorite_response, onFailure:errFunc});
	return false;
}

function remove_favorite(case_id) {
	fav_case_id = case_id;
	new Ajax.Request(url+'gallery_ajax_actions.php', {parameters:'act=delfav&case_id='+case_id, onSuccess:remove_favorite_response, onFailure:errFunc});
	return false;
}

last_rated_case ='';
function rate_case(case_id) {

	last_rated_case = case_id;
	index = document.getElementById('rating'+case_id).selectedIndex;

	if (document.getElementById('rating'+case_id).options[index].value.length > 0) {
		new Ajax.Request(url+'gallery_ajax_actions.php', {parameters:'act=vote&case_id='+case_id+'&rating='+document.getElementById('rating'+case_id).options[index].value, onSuccess:add_rating_response, onFailure:errFunc});
	}
	return false;
}


function addcomment(case_id) {
	comment = encodeURI(document.getElementById('new_comment').value);
	new Ajax.Request(url+'gallery_ajax_actions.php', {parameters:'act=addcomment&case_id='+case_id+'&comment='+comment, onSuccess:add_comment, onFailure:errFunc});
}

edited_comment_id = ''
function edit_comment(comment_id) {
	edited_comment_id = comment_id;
	if (document.getElementById('comment'+comment_id)) {
		if (document.getElementById('commentadmin'+comment_id)) {
			document.getElementById('commentadmin'+comment_id).style.display = 'none';
		}
		comment_el = document.getElementById('comment'+comment_id);
		comment_text = '';
		if (document.getElementById('commenttext'+comment_id)) {
			comment_text = document.getElementById('commenttext'+comment_id).innerHTML;
			comment_text = comment_text.replace (/\<br ?\/?\>/g, "");
		}

		div_element = document.createElement('div');
		div_element.id = 'edit_comment';
		div_element.innerHTML = '<textarea id="edit_text" cols="50">'+comment_text+'</textarea><br />';
		div_element.innerHTML += '<input type="button" class="button" value="Update" onclick="updatecomment('+comment_id+');" /><br /<br />';
		comment_el.appendChild(div_element);
	}
}

function updatecomment(comment_id) {
	if (document.getElementById('edit_comment')) {
		comment = encodeURI(document.getElementById('edit_text').value);
		new Ajax.Request(url+'gallery_ajax_actions.php', {parameters:'act=updatecomment&comment_id='+comment_id+'&comment='+comment, onSuccess:update_comment, onFailure:errFunc});
	}
	if (document.getElementById('commentadmin'+comment_id)) {
		document.getElementById('commentadmin'+comment_id).style.display = '';
	}
}
function delete_comment(comment_id) {
	if (document.getElementById('comment'+comment_id)) {
		document.getElementById('comment'+comment_id).parentNode.removeChild(document.getElementById('comment'+comment_id));
	}
	new Ajax.Request(url+'gallery_ajax_actions.php', {parameters:'act=delcomment&comment_id='+comment_id, onSuccess:del_comment, onFailure:errFunc});
}

function change_image(element_index) {
	document.getElementById('change'+element_index).className='hidden';
	document.getElementById('case_image'+element_index).className='';
	//document.getElementById('image_file'+element_index).className='';
	//document.getElementById(element_id+'_text').className='';
}

/*called from edit case page to delete an image and refresh page*/
function delete_image(caseid,image, position) {
	  if (confirm("Warning: This will delete the image from the server and cannot be undone")) {
		document.location = url+'index.php?case='+caseid+'&image='+image+'&act=delimage&position='+(parseInt(position) + 1);
	  }
}

/*called from edit image page to delete an image and refresh page*/
function del_image(image_id) {
	  if (confirm("Warning: This will delete the image from the server and cannot be undone")) {
		document.location = url+'index.php?act=delimageid&image_id='+image_id;
	  }
}


function remove_image(e) {
	var targ;
	if (!e) var e = window.event; //required for IE

	/*cross-browser get target element*/
	targ = e.srcElement || e.currentTarget || e.target;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;

	targ = targ.parentNode.parentNode; //this should be the tr tag

	table_el = document.getElementById('images');

	 tableElements = table_el;
	 if (table_el.tBodies && table_el.tBodies.length)
	   tableElements = table_el.tBodies[table_el.tBodies.length - 1];

	 /*remove the element*/
	removed_el = '';
	for(i=0;i<tableElements.childNodes.length;i++) {
		if (tableElements.childNodes[i].id == targ.id) {
			removed_el = tableElements.childNodes[i];
		}
	}
	tableElements.removeChild(removed_el);
	reorder_table(tableElements);
}

function reorder_table(tableElements) {
	/*now renumber everything
	looks complicated but loops through trs/td's to accomodate #text nodes
	loop for each tr; then get the td's needed; occasionally getting an element inside the td
	*/
	id_number = 0;
	for(rowcount=0;rowcount<tableElements.childNodes.length;rowcount++) {
	//specs say nodeName may be upper case, so just convert to lower to be safe
		if (tableElements.childNodes[rowcount].nodeName.toLowerCase() == 'tr' && tableElements.childNodes[rowcount].id.indexOf('image') == 0) {
			tableElements.childNodes[rowcount].setAttribute("id", "image"+id_number); //set the id of the row
			tr = tableElements.childNodes[rowcount];	//rename for legibility
			for(cellcount=0;cellcount<tr.childNodes.length;cellcount++) {
				/*now loop through the rows children, picking up td nodes*/
				if (tr.childNodes[cellcount].nodeName.toLowerCase() == 'td') {
					td = tr.childNodes[cellcount]; //rename for legibility
					if (td.id.indexOf('label') != -1) {
						td.setAttribute("id", "label" + rowcount);
						td.innerHTML = "Photo #" + (parseInt(id_number + 1)) + ":";
					} else if (td.id.indexOf('file') != -1) {
						td.setAttribute("name", "file" + id_number);
						for(innercount=0;innercount<td.childNodes.length;innercount++) {
							if (td.childNodes[innercount].nodeName.toLowerCase() == 'input') {
								//td.childNodes[innercount].setAttribute("name", "image" + id_number);
							}
						}
					} else  if (td.id.indexOf('comment') != -1) {
						td.setAttribute("name", "comment" + rowcount);
					}
				}
			}
			id_number++; //did one id set; move to next
		}

	}
}

/*function add an additional button*/
function addimage() {
	table_el = document.getElementById('images');
	table_rows = table_el.getElementsByTagName("tr");

	 var tableElements = table_el;
	 if (table_el.tBodies && table_el.tBodies.length)
	   tableElements = table_el.tBodies[table_el.tBodies.length - 1];

	 image_number = 0;
	 /*get the highest image #*/
	table_cells = table_el.getElementsByTagName("td");
	for(cell_count=0;cell_count<table_cells.length;cell_count++) {
		if (table_cells[cell_count].id.indexOf("label") == 0) {
			num = parseInt(table_cells[cell_count].innerHTML.replace(/Photo #/, ""));
			if (num > image_number) {
				image_number = parseInt(num);
			}
		}
	}
	//image_number++;
	//image_number = parseInt(table_rows.length) - 2;
	tr_element = document.createElement('tr');
	tr_element.setAttribute("id", "image"+image_number);

	td_element = document.createElement('td');
	td_element.setAttribute("id", "label"+image_number);
	td_element.innerHTML = "Photo #" + (parseInt(image_number + 1)) + ":";
	tr_element.appendChild(td_element);

	td_element = document.createElement('td');
	td_element.setAttribute("id", "file"+image_number);
	td_element.innerHTML = "<input name=\"image[]\" type=\"file\" />";
	tr_element.appendChild(td_element);

	td_element = document.createElement('td');
	td_element.setAttribute("id", "comment"+image_number);
	td_element.innerHTML = "Comment: <input type=\"text\" name=\"comments[]\" maxlength=\"280\" size=\"30\" />";
	tr_element.appendChild(td_element);

	td_element = document.createElement('td');
	td_element.setAttribute("id", "remove"+image_number);
	td_element.innerHTML = "<input type=\"button\" id=\"remove_button" + image_number + "\" value=\"Remove\" class=\"button\"  onclick=\"remove_image(event)\"/>";
	tr_element.appendChild(td_element);


	add_tr =  document.createElement('tr');
	td_element = document.createElement('td');
	add_tr.setAttribute("id", "add");
	td_element.innerHTML = "<div><input type=\"button\" value=\"Add another\" class=\"button\" onclick=\"addimage()\" />&nbsp;&nbsp;&nbsp;";
	add_tr.appendChild(td_element);

	old_add_el = document.getElementById('add');

	for(i=0;i<tableElements.childNodes.length;i++) {
		if (tableElements.childNodes[i].id == 'add') {
			//old_add_el = tableElements.childNodes[i];
			tableElements.removeChild(tableElements.childNodes[i]);
		}
	}
		//var newRow   = table_rows.insertRow(last_tr - 1);
	//n//ewRow = insertedElement;
	tableElements.appendChild(tr_element);
	tableElements.appendChild(add_tr);


	//alert(tableElements.innerHTML);
}

