	var lastEditHtml = null;
	var lastEditChange = null;
	var lastEditObject = null;
	var lastEditMsg = -1;
	var lastEditAttr = '';
	var isSaving = false;
	var ajaxCallback = '';

	var defaultMsgs = new Array('Click here to add some photo description.');
	
	var isFirefox = (navigator.userAgent.indexOf('Firefox')>0);
	

   var http_request = false;
   function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
           if(lastEditObject!=null) lastEditObject.innerHTML = lastEditChange;
//alert(http_request.responseText);
           eval(http_request.responseText);
			lastEditObject = null;
			lastEditHtml = null;
			lastEditObject = null;
			isSaving = false;
			try { eval(ajaxCallback); }
			catch(e) {}
         } else {
            alert('There was a problem with the request.');
            editCancel();
			isSaving = false;
         }
         ajaxCallback = null;
      }
   }
   
   function get(obj) {
      var poststr = "mytextarea1=" + encodeURI( document.getElementById("mytextarea1").value ) +
                    "&mytextarea2=" + encodeURI( document.getElementById("mytextarea2").value );
      makePOSTRequest('ajax_save.php', poststr);
   }
   
function removeHTMLblock(aSourceString, aMode){
	var vStrippedHTML = aSourceString;
	if(aMode==1) {
		regexp= new RegExp ("\n", "gi");
		vStrippedHTML = vStrippedHTML.replace(regexp,"");
		regexp= new RegExp ("<br>", "gi");
		vStrippedHTML = vStrippedHTML.replace(regexp,"\n");
	}
	regexp= new RegExp ("<[^.]*>", "gi");
	vStrippedHTML = vStrippedHTML.replace(regexp,"");
	if (aMode==2) {
		regexp= new RegExp ("\r", "gi");
		vStrippedHTML = vStrippedHTML.replace(regexp,"\n<br>");
	}
	return vStrippedHTML;
}   
   
   
	function EditRow(obj, attr, css, typ) {
		if(obj==lastEditObject) return false;
		if(isSaving) {
			alert("You can change only one text at a time.\nPlease wait until recent changes are saved and try it again.");
			return false;
		}
		editCancel();
		var str = obj.innerHTML;
		lastEditHtml = str;
		lastEditObject = obj;
		str = removeHTMLblock(str,1);
		if(typ==2) var html = '<textarea rows="4" name="editRow" id="editRow" class="edit_row '+ css +'">'+ str +'</textarea><br />';
		else var html = '<input type="text" name="editRow" id="editRow" value="'+ str +'" class="edit_row '+ css +'" maxlength="45"><br />';
		html += EditGetControls();
		obj.innerHTML = html;
		lastEditAttr = attr;
	}
	
	
	function EditGetControls() {
		return '<span class="edit_controls" id="edit_controls"><input type="button" class="button_blue" value="Save" onclick="editSave();"> changes or <input type="button" class="button_grey" value="Cancel" onclick="editCancel();"> edit.</span>';
	}
	
	function editSave() {
		var edit = document.getElementById('editRow');
		if(edit!=null) {
			isSaving = true;
			var str = edit.value;
			str = removeHTMLblock(str, 2);
			lastEditChange = str;
			str += '<div id="edit_saving" class="edit_saving"><blink>Saving changes, please wait...</blink></div>';
			lastEditObject.innerHTML = str;
			makePOSTRequest('ajax_save.php', lastEditAttr +'&text='+ encodeURI( lastEditChange ) );
		}
		else {
			lastEditObject.innerHTML = lastEditHtml;
			lastEditObject = null;
			lastEditHtml = null;
		}
			
		return false;		
	}
	
	function editCancel() {
		if(lastEditObject!=null) {
			lastEditObject.innerHTML = lastEditHtml;
			lastEditObject = null;
			lastEditHtml = null;			
		}
	}
	
	function show_layer(lr) {
	    try {
	        if(isFirefox) document.getElementById(lr).style.display = 'inline';
	    }
	    catch(e){}
	}
	
	function hide_layer(lr) {
	    try {
	        if(isFirefox) document.getElementById(lr).style.display = 'none';
	    }
	    catch(e){}
	}