/* Change Edit Links At Load 
Has to be after the entire element has loaded*/
function activate_edit_links() {
 var is_ie = navigator.userAgent.indexOf('MSIE');
 /*if (document.getElementById && document.createElement && createAJAXRequest && (is_ie == -1)) {*/
 if (document.getElementById && document.createElement && createAJAXRequest) {
 	debug("Start Opening");
   var main_area = document.getElementById("main_area");
   for (var i=0; i<main_area.childNodes.length; i++) {
       var activeChild = main_area.childNodes[i];
       var id = activeChild.id;
			 debug(id);
		 if (activeChild.id) { 
     		if (activeChild.className == "editable") {
					if (activeChild.lastChild) {
		  	  	 activeChildChild = activeChild.lastChild;
		  	  	 activeChildChild.href = 'javascript:open_edit("' + id + '");';
						 debug("Opening: " + id);
						 /* whitespace to appease ie7 */
						 if (is_ie != -1) {
						 		var whitespace = document.createTextNode(" ");
						 		activeChild.appendChild(whitespace);
						}
					}
     	 }
		 } 
   }
 }
}


function open_edit(id) {
	var element = document.getElementById(id);
	 element.style.backgroundColor = "#dde7e7";
	 element.style.border = "1px solid #adadad";
	 element.style.paddingLeft = "5px";
	 var content = getText(element.childNodes[2]);
	 debug(content);
	 debugalert(element.childNodes.length);
	 var t= 2;
	 for (var i=0; i<=t; i++) {
			var activeChild = element.childNodes[2];
			debugalert(i + " out of " + t);
			debugalert(activeChild);
			element.removeChild(activeChild);
	}
  var input_box = document.createElement("input");
 			input_box.type = "text";
			input_box.id = "input_" + id;
			input_box.value = content;
			/*if (id == 'bio') {
				 debug("Make it longer");
				 /* Do it
				 input_box.style = 'style="width: 100px"';
			}
			*/
			element.appendChild(input_box);
	var submit_button = document.createElement("input");
			submit_button.id = "submit_edit";
			submit_button.type = "button";
			submit_button.value = "Submit";
			add_event(submit_button, "click", submit_edit);
			element.appendChild(submit_button); 
	var whitespace = document.createTextNode(" ");
			element.appendChild(whitespace);
	var cancel_button = document.createElement("A");
	  	cancel_button.id = "cancle_edit";
	var cancel_txt = document.createTextNode("Cancel");
			cancel_button.appendChild(cancel_txt);
		  cancel_button.href = "javascript:close_edit(\"" + id + "\", \"" + content + "\", \"" + 'cancel' + "\")";
			element.appendChild(cancel_button); 
}

function close_edit(id, content, action) {
	clear_wait();
	clear_error();
	/*abort_request();*/
  var element = document.getElementById(id);
	 debug("Close: " + id);
	 element.style.backgroundColor = "";
	 element.style.border = "";
	 element.style.paddingLeft = "";
	 var t=3;
	 for (var i=0; i<=t; i++) {
			var activeChild = element.childNodes[2];
			debugalert(i + " out of " + t);
			debugalert(activeChild);
			clearText(activeChild);
			element.removeChild(activeChild);
		}
	debug("Adding Stuff Back");
	var content_msg = document.createElement("span");
			var content_txt = document.createTextNode(content);
			content_msg.appendChild(content_txt);
			element.appendChild(content_msg);
	var whitespace = document.createTextNode(" ");
			element.appendChild(whitespace);
	var edit_link = document.createElement("a");
	var edit_txt = document.createTextNode("Edit");
			edit_link.appendChild(edit_txt);
			edit_link.className = "edit";
		  edit_link.href = 'javascript:open_edit("' + id + '");';
			element.appendChild(edit_link);
}


function submit_edit(evt) {
		if (evt.target) {
			 target = evt.target; /* FF*/
		} else {
			target = evt.srcElement; /* IE */
		}
		debug(target.id + " hit");
		element = target.parentNode;
		debugalert("Submitting " + element.id);
		/* Get box value */
		content = element.childNodes[2].value;
		if (content == 'undefined') {
			 trigger_error("Error getting changes", "error");
		}
		var user_el = document.getElementById("user");
		var user_id = getText(user_el);
		debug(user_id);
		debug("The content is " + content);
		/* Make text box grey */
		element.childNodes[2].readOnly = true;
		/*Drop Submit and cancle link" */
		t=2;
	 for (var i=0; i<=t; i++) {
			var activeChild = element.childNodes[3];
			debug(i + " out of " + t);
			debug(activeChild);
			clearText(activeChild);
			element.removeChild(activeChild);
		}
		start_wait(element);
		/*Add back cancle */
		var whitespace = document.createTextNode(" ");
			element.appendChild(whitespace);
		var cancel_button = document.createElement("A");
	  	cancel_button.id = "cancle_edit";
	  var cancel_txt = document.createTextNode("Close");
			cancel_button.appendChild(cancel_txt);
		  cancel_button.href = "javascript:close_edit(\"" + element.id + "\", \"" + content + "\", \"" + 'close' + "\")";
			element.appendChild(cancel_button); 
		/*Extra white space in case of cancle */
		var whitespace = document.createTextNode(" ");
			element.appendChild(whitespace);		
		/* Submit! */
		createAJAXRequest();
		var url = "/ajax/user.php?user_id=" + user_id + "&" + element.id + "=" + content;
		var session = readCookie("PHPSESSID");
		debug(session);
		url = url + "&session_name=" + session;
		url = url + "&dummy=" + new Date().getTime();
		debugalert("URL: " + url);
		debug(request);
		request.open("GET", url, true);
    request.onreadystatechange = update_edit;
		debug(request);
    request.send(null);
		debugalert("Request Sent!");
}

function update_edit() {
  if (request.readyState == 4){  // 4 is "complete" 
     if (request.status == 200){
		 		if (request.responseXML) {
		 			 var xmlDoc = request.responseXML;
					 debug(xmlDoc);
					 if (xmlDoc.getElementsByTagName("success")) {
					 		debugalert(xmlDoc.getElementsByTagName("success"));
							if (xmlDoc.getElementsByTagName("success")[0]) {
								 var success_el = xmlDoc.getElementsByTagName("success")[0];
								 var success = success_el.firstChild.nodeValue;
							} else { /* IE7 */
								var success_el = xmlDoc.getElementsByTagName("success");
								var success = success_el.nodeValue;
							}
							debugalert("Success: " + success);
							if (success == "1") {
								 if (xmlDoc.getElementsByTagName("field")[0]) {
										var field_el = xmlDoc.getElementsByTagName("field")[0];
										var field = field_el.firstChild.nodeValue;
										var text_el = xmlDoc.getElementsByTagName("text")[0];
										var text = text_el.firstChild.nodeValue;
								 } else { /* IE7 */
								 	 	 var field_el = xmlDoc.getElementsByTagName("field");
										 var field = field_el.nodeValue;
										 var text_el = xmlDoc.getElementsByTagName("text");
										 var text = text_el.nodeValue;
								 }
									debugalert(field);
									debugalert(text);
								 close_edit(field, text, 'submit');
       			  	 trigger_error("Your changes have been saved", "check");
							} else {
								debugalert("Recieved error");
								clear_wait();
								if (xmlDoc.getElementsByTagName("error")[0]) {
									var error_el = xmlDoc.getElementsByTagName("error")[0];
								 	var error = error_el.firstChild.nodeValue;
								} else { /* IE7 */
									var error_el = xmlDoc.getElementsByTagName("error");
									var error = error_el.nodeValue;
								}
								trigger_error("Something went wrong: " + error, "error");
							}
					 } else {
							trigger_error("Something went wrong; bad xml","error");
					 }
				} else { //no xml structure
					response = request.responseText;
					trigger_error("Something went wrong: " + response, "error");
					debug(response);
				}
     } else {
        // http status not 200
        error("Something went wrong! HTTP "+request.status+".  An error was encountered: "+ request.statusText, "error");
		    if (request.status == 404) {
			     error("Your changes have not been saved!", "tip");
		 }
 }
}
}

