YAHOO.widget.Logger.enableBrowserConsole();
var spoon_pre_selected;
function preSelect(element) {
  if(spoon_pre_selected != element) {
    element.select();
    spoon_pre_selected = element;
  } else {
    spoon_pre_selected = null;
  }
}
function preDeSelect() {
  spoon_pre_selected = null;
}


var bodyClick = function(e) {
  //hideEditor();
}
var bodyOver = function(e) {
  YAHOO.log("f");
}

var shrinkToParentHeight = function(elm) {
  var height = elm.getAttribute('height');
  var width = elm.getAttribute('width');  
  var parentRegion = YAHOO.util.Dom.getRegion(elm.parentNode);
  var parentHeight = parentRegion.bottom - parentRegion.top; 
  var parentWidth = parentRegion.right - parentRegion.left;  
  if (height > parentHeight) {
    var scaleFactor = parentHeight / height;
    height = parentHeight;
    width = parseInt(width * scaleFactor);
  }/*
  if (width > parentWidth) {
    var scaleFactor = parentWidth / width;
    width = parentWidth;    
    height = parseInt(height * scaleFactor);
  }  */  
  YAHOO.util.Dom.setStyle(elm, 'width', width + 'px');  
  YAHOO.util.Dom.setStyle(elm, 'height', height + 'px');  
}

var hideEditor = function() {
  var hover = document.getElementById('hover');
  hideHover(hover);
  document.editForm.removeChild(document.editForm.firstChild);
  activeHoverListener(hover);  
  YAHOO.util.Event.removeListener(document.getElementsByTagName('body')[0], 'click', bodyClick); 
}


var showEditor = function(e) {
  var hover = this; 
  deactiveHoverListener(hover);   	
	YAHOO.util.Dom.setStyle(hover, 'border', '0');
	loadEditor(hover.elementId);
  YAHOO.util.Event.addListener(document.getElementsByTagName('body')[0], 'click', bodyClick);  
  var xy = YAHOO.util.Dom.getXY('title');
  YAHOO.util.Dom.setXY('title', [xy.x + 1, xy.y + 2]); 
  YAHOO.util.Event.stopPropagation(e);
}

var cancelClick = function(e) {
  hideEditor();
}

// alle Elemente für die ein Editor existieren könnte
var hasEditor = function(element) { return element.getAttribute('editor');}

// alle Elemente für die ein Editor existiert
//var hasEditor = function(element) { return element.getAttribute('editor') != null;}

var hasFocus = function(element) { return element.getAttribute('hasfocus');}


var editableOver = function(e) {	
  var editable = this;
  showHover(editable);
	hideHover(document.getElementById('hover'));
	showHover(editable);
	YAHOO.util.Event.stopPropagation(e);
}
var showHover = function(editable) {
	var hover = document.getElementById('hover');
	hover.editor = editable.getAttribute('editor');
	hover.elementId = editable.getAttribute('id');
	var region = YAHOO.util.Dom.getRegion(editable);
	YAHOO.util.Dom.setXY(hover, [region.left - 1, region.top - 1]);
	YAHOO.util.Dom.setStyle(hover, 'width', region.right - region.left);
	YAHOO.util.Dom.setStyle(hover, 'height', region.bottom - region.top);
	YAHOO.util.Dom.setStyle(hover, 'border', '1px #7f9db9 solid'); 
	YAHOO.util.Dom.setStyle(hover, 'visibility', 'visible');
	var title = document.getElementById('title');
	var elementTitle = editable.getAttribute('name');
	title.innerHTML = elementTitle;
	YAHOO.util.Dom.setXY(title, [region.left - 1, region.top - 16]); 
	YAHOO.util.Dom.setStyle(title, 'visibility', 'visible');
  var toolbar = document.getElementById('toolbar');
  toolbar.elementTitle = editable.getAttribute('name');
	toolbar.elementId = editable.getAttribute('id');
	//var elementTitle = editable.getAttribute('name');
	//title.innerHTML = elementTitle;
	//YAHOO.util.Dom.setXY(toolbar, [region.right - 19, region.bottom - 16]); 
	YAHOO.util.Dom.setXY(toolbar, [region.left , region.top]); 
	YAHOO.util.Dom.setStyle(toolbar, 'visibility', 'visible');
	
}

var hoverOut = function(e) {
  var hover = this;
  hideHover(hover);
  YAHOO.util.Event.stopPropagation(e);
}
var hideHover = function(hover) {
	YAHOO.util.Dom.setStyle(hover, 'visibility', 'hidden'); 
  YAHOO.util.Dom.setStyle(document.getElementById('title'), 'visibility', 'hidden');
  YAHOO.util.Dom.setStyle(document.getElementById('toolbar'), 'visibility', 'hidden');
}

var activeHoverListener = function(hover) {
  var editables = YAHOO.util.Dom.getElementsBy(hasEditor);
	var result = YAHOO.util.Event.addListener(editables, 'mouseover', editableOver);
	var result = YAHOO.util.Event.addListener(hover, 'mouseout', hoverOut); 
	var result = YAHOO.util.Event.addListener(hover, 'click', showEditor);  
	
}

var deactiveHoverListener = function(hover) {
	YAHOO.util.Event.removeListener(YAHOO.util.Dom.getElementsBy(hasEditor), 'mouseover', editableOver);
	YAHOO.util.Event.removeListener(hover, 'mouseout', hoverOut); 
	YAHOO.util.Event.removeListener(hover, 'click', showEditor);
}

var init = function() {
  if (SPOON_ADMIN) {
	 activeHoverListener(document.getElementById('hover'));
	}
}

YAHOO.util.Event.onAvailable('footer', init);

var initEditor = function() {
  var toShrink = YAHOO.util.Dom.getElementsByClassName('shrinkToParentHeight');
  for (var i = 0; i < toShrink.length; i++) {
    shrinkToParentHeight(toShrink[i]);
  }
}

// Editor laden ////////////////////////
var loadEditorCallback = {
  success: function(o) {  	
    document.editForm.innerHTML = o.responseText; 
    YAHOO.util.Dom.getElementsBy(hasFocus)[0].focus();
    initEditor();
  },
  failure: function(o) {
    alert(o.responseText);
  }
}
var loadEditor = function(id) {
	YAHOO.util.Connect.asyncRequest('GET', 'editor.php?page=' + SPOON_PAGE + '&id=' + id + '&path=' + SPOON_PATH + '&headline=' + SPOON_HEADLINE, loadEditorCallback);
}

// Eingaben speichern ////////////////////////
var saveDataCallback = {
  success: function(o) {
    hideEditor();
    var hover = document.getElementById('hover');
    var alt = document.getElementById(hover.elementId);
    alt.removeChild(alt.firstChild);
  	alt.innerHTML = o.responseText; 
  },
  failure: function(o) {
    alert(o.responseText);
  },
  upload: function(o) {
    this.success(o);
  }
}
var saveData = function() {
	YAHOO.util.Connect.setForm('editForm', true);
	YAHOO.util.Connect.asyncRequest('POST', 'editor.php', saveDataCallback);
}
// append Clone ////////////////////////
var appendElementCallback = {
  success: function(o) {  	
    alert(o.responseText);
  },
  failure: function(o) {
    alert(o.responseText);
  }
}
var appendElement = function(e) {
  var toolbar = document.getElementById('toolbar');
  var title = toolbar.elementTitle;
	var id = toolbar.elementId;
  var newTitle = prompt('Neuer Titel:', 'copy_of.' + title);
  if (newTitle) {
    YAHOO.util.Connect.asyncRequest('GET', 'append.php?id=' + id + '&page=' + SPOON_PAGE + '&title=' + newTitle, appendElementCallback);
  }
}
YAHOO.util.Event.onAvailable('toolbar', function(e){YAHOO.util.Event.addListener('toolbar', 'click', appendElement)});



		                                                        
 

