/******************************************
* Edit in place
******************************************/
var ClickEditTip = typeof ClickEditTip == 'undefined' || ClickEditTip=='' ? 'Click here to edit!' : ClickEditTip;
var url='ajax.php';
function makeEditable(id){
    if($(id).innerHTML=='')
    {
        $(id).innerHTML = ClickEditTip;
        $(id).defaultHTML = '';
    }
    else
    {
        $(id).innerHTML = $(id).defaultHTML;
    }
	Event.observe(id, 'click', function(){edit($(id))}, false);
	Event.observe(id, 'mouseover', function(){showAsEditable($(id))}, false);
	Event.observe(id, 'mouseout', function(){showAsEditable($(id), true)}, false);
}

function edit(obj){
	Element.hide(obj);

	var textarea = '<div id="'+obj.id+'_editor"><textarea id="'+obj.id+'_edit" name="'+obj.id+'" rows="2" cols="30">'+(trim(obj.defaultHTML))+'</textarea>';
	var button	 = '<div style="align:center;"><input id="'+obj.id+'_save" type="button" class=button value="SAVE" /> OR <input id="'+obj.id+'_cancel" type="button" class=button value="CANCEL" /></div></div>';

	new Insertion.After(obj, textarea+button);

	Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj)}, false);
	Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false);
}

function showAsEditable(obj, clear){
	if (!clear){
		Element.removeClassName(obj, 'editable');
	}else{
		Element.addClassName(obj, 'editable');
	}
}
function saveChanges(obj){

	var new_content	=  escape($F(obj.id+'_edit'));

	obj.innerHTML	= "Saving...";
	cleanUp(obj, true);

	var success	= function(t){editComplete(t, obj);}
	var failure	= function(t){editFailed(t, obj);}


	var pars = 'id='+obj.id+'&mode=split&content='+new_content;
	var myAjax = new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});

}

function cleanUp(obj, keepEditable){
	Element.remove(obj.id+'_editor');
	Element.show(obj);
	if (!keepEditable) showAsEditable(obj, true);
}

function editComplete(t, obj){
	obj.innerHTML	= obj.defaultHTML	= t.responseText;
    obj.innerHTML=obj.innerHTML?obj.innerHTML:ClickEditTip;
	showAsEditable(obj, true);
}

function editFailed(t, obj){
	alert('Sorry, the update failed.');
    obj.innerHTML   =  obj.defaultHTML;
	cleanUp(obj,0);
}
function trim(inputString) {

   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);

   while (ch == " ") {
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);

   while (ch == " ") {
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }

   while (retValue.indexOf("  ") != -1) {
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
   }
   return retValue;
}

/******************************************
* Edit in place
******************************************/
function populateValue(act,id,formname,hasval)
{
    overlay($(act+'_'+id), formname+'_div')
    
    $(formname).id.value = id;
    $(formname).act.value = act;

    if(act+'_'+id)
    {
        $(formname).edits.value = hasval==0 ? '' : unhtmlspecialchars($(act+'_'+id).innerHTML);
    }
}
function clickEditValue(act,id,formname)
{
    var hasval = $(act+'_'+id).innerHTML!='';
    if($(act+'_'+id).innerHTML=='')
    {
        $(act+'_'+id).innerHTML=ClickEditTip;
    }
    Element.addClassName(act+'_'+id, 'editable');
    
    Event.observe(act+'_'+id, 'click', function(){ return populateValue(act,id,formname,hasval)}, false);
    Event.observe(act+'_'+id, 'mouseover', function(){showAsEditable($(act+'_'+id))}, false);
	Event.observe(act+'_'+id, 'mouseout', function(){showAsEditable($(act+'_'+id), true)}, false);
}
function clickEditValues()
{
    for (var i=2; i<arguments.length; i++)
    {
        clickEditValue(arguments[i],arguments[0],arguments[1])
    }
}
function submitComplete(res, formname)
{
    var act = $(formname).act.value;
    var id = $(formname).id.value;
    $(act+'_'+id).innerHTML	= res.responseText=='' ? ClickEditTip : res.responseText;
    overlayclose('clickeditform_div');
    return false;
}
function submitFailed(res, obj){
	alert('Sorry, the update failed.');
}
function overlay(curobj, subobjstr, opt_position){
    var tmp = document.createElement("DIV");
    tmp.innerHTML = curobj.innerHTML;

    overlaywindow=dhtmlmodal.open('overlaywindow', 'div', subobjstr, tmp.textContent||tmp.innerText, 'width=450px,height=250px,center=1,resize=1,scrolling=0')
    overlaywindow.onclose=function(){
       document.getElementById(subobjstr).innerHTML = document.getElementById(subobjstr).defaultHTML;
       return true;
    }
    return false
}
function overlayclose(subobj){
    dhtmlmodal.close(overlaywindow,1)
    //document.getElementById(subobj).style.display="none"
}
