File: /home/httpd/html/leosalubayba.com/public_html/pics/zen/ajax.js
// Get the element's style (computed) for the attribute given.
function getStyle(element, attribute) {
if (element.currentStyle) {
// Internet Explorer:
if (attribute == "font-family") attribute = "fontFamily";
else if (attribute == "font-size") attribute = "fontSize";
else if (attribute == "font-weight") attribute = "fontWeight";
return element.currentStyle[attribute];
} else if (document.defaultView.getComputedStyle) {
// Mozilla or other dignified browser:
return document.defaultView.getComputedStyle(element, '').getPropertyValue(attribute);
} else {
return false;
}
}
function convertLineBreaks(text) {
return text.replace(/\n/g, '<br />\n');
}
function unconvertLineBreaks(text) {
return text.replace(/(<br \/>)|(<br\/>)|(<br>)/gi, '\n');
}
function addBlankLine(text) {
return text+" ";
}
function stripSlashes(text) {
text = text.replace(/\\\\/g, '%%%%%');
text = text.replace(/\\/g, '');
return text.replace(/%%%%%/g, '\\');
}
///////////////////////////////////////////////////////////////////////////////
// Makes a DIV into an editable Title field.
function initEditableTitle(divID) {
var div = document.getElementById(divID);
div.blankMessage = "Click to add a title...";
div.editMessage = "Click to edit title...";
div.saveChanges = function(form) {
var formDiv = form.parentNode;
document.callbackdiv = this;
this.innerHTML = "Saving...";
x_saveTitle(form.content.value, this.saveChangesCB);
return this.stopEditing();
}
div.getInputField = function () {
return '<input type="text" name="content" value="'+this.innerHTML
+'" style="font-size: '+this.style_fontSize
+'; font-family: '+this.style_fontFamily
+'; font-weight: '+this.style_fontWeight
+'; font-style: '+this.style_fontStyle
+';" size="'+(this.innerHTML.length)+'"/>';
}
initEditableDiv(divID);
}
///////////////////////////////////////////////////////////////////////////////
// Makes a DIV into an editable Description field.
function initEditableDesc(divID) {
var div = document.getElementById(divID);
div.blankMessage = "Click to add a description...";
div.editMessage = "Click to edit description...";
div.saveChanges = function(form) {
var formDiv = form.parentNode;
document.callbackdiv = this;
this.innerHTML = "Saving...";
x_saveDesc(form.content.value, this.saveChangesCB);
document.getElementById("zenphototempdiv").style.display = "none";
return this.stopEditing();
}
div.getInputField = function () {
var tempDiv = document.getElementById("zenphototempdiv");
if (!tempDiv) {
tempDiv = document.createElement('div');
tempDiv.style.position = "absolute";
tempDiv.style.width = this.style_width;
tempDiv.style.top = "-5000px";
tempDiv.id = "zenphototempdiv";
this.parentNode.insertBefore(tempDiv, this);
} else {
tempDiv.style.display = this.style_display;
}
return '<textarea name="content" style="font-size: '+this.style_fontSize
+'; font-family: '+this.style_fontFamily
+'; font-weight: '+this.style_fontWeight
+'; font-style: '+this.style_fontStyle
+'; width: '+this.style_width+'; height: '+this.style_height
+'; margin: 0px;" rows="5" cols="50"></textarea><br />';
}
// NOTE: in this function, *this* refers to an input field.
div.contentOnKeyUp = function () {
var tempdiv = document.getElementById("zenphototempdiv");
tempdiv.innerHTML = addBlankLine(convertLineBreaks(this.value));
this.style.height = getStyle(tempdiv, 'height');
}
initEditableDiv(divID);
}
///////////////////////////////////////////////////////////////////////////////
// Makes any DIV editable, but not by itself: it needs several variables
// defined before it will work (see examples above).
function initEditableDiv(divID) {
var div = document.getElementById(divID);
div.title = div.editMessage;
div.style_display = getStyle(div, "display");
div.style_fontFamily = getStyle(div, "font-family");
div.style_fontSize = getStyle(div, "font-size");
div.style_fontWeight = getStyle(div, "font-weight");
div.style_fontStyle = getStyle(div, "font-style");
div.style_width = getStyle(div, "width");
div.style_height = getStyle(div, "height");
if (div.innerHTML) {
div.textValue = div.innerHTML;
} else {
div.textValue = div.textContent;
}
if (trim(div.innerHTML) == '' || trim(div.textValue) == "") {
div.innerHTML = div.blankMessage;
}
div.startEditing = function () {
if (document.currentlyEditing && document.currentlyEditing != this) return;
document.currentlyEditing = this;
this.isEditing = true;
this.unhilight();
var formDiv = this.getFormDiv();
formDiv.form.content.value = unconvertLineBreaks(this.textValue);
formDiv.style.display = this.style_display;
this.style.display = "none";
var form = formDiv.firstChild;
// form.content.focus();
form.content.select();
}
div.onclick = div.startEditing;
div.getFormDiv = function () {
if (!this.formDiv) {
this.formDiv = document.createElement('div');
this.parentNode.insertBefore(this.formDiv, this);
this.formDiv.displayDiv = this;
}
// Refresh the dimensions.
this.style_width = getStyle(div, "width");
this.style_height = getStyle(div, "height");
var formHTML = '<form onsubmit="this.content.blur(); this.parentNode.displayDiv.saveChanges(this); return false;">';
formHTML += this.getInputField();
formHTML += ' <input type="submit" value="save" \/> <input type="button" value="cancel" onclick="this.form.parentNode.displayDiv.stopEditing(); return false;" \/><\/form>';
this.formDiv.innerHTML = formHTML;
this.formDiv.form = this.formDiv.firstChild;
this.formDiv.form.style.display = this.style_display;
if (this.contentOnKeyUp) {
this.formDiv.form.content.onkeyup = this.contentOnKeyUp;
}
return this.formDiv;
}
div.saveChangesCB = function(savedText) {
displayDiv = document.callbackdiv;
if (savedText == "") {
displayDiv.innerHTML = displayDiv.blankMessage;
displayDiv.textValue = "";
} else {
displayDiv.innerHTML = convertLineBreaks(savedText);
displayDiv.textValue = savedText;
}
}
div.stopEditing = function() {
var formDiv = this.getFormDiv();
formDiv.displayDiv.style.display = this.style_display;
formDiv.style.display = "none";
document.currentlyEditing = false;
return false;
}
div.onmouseover = function() {
if (!document.currentlyEditing) {
this.hilight();
} else {
this.title = "Currently editing something else, save or cancel to edit this.";
}
}
div.onmouseout = function() {
this.unhilight();
this.title = this.editMessage;
}
div.hilight = function () { this.style.backgroundColor = "#FFFFD3"; }
div.unhilight = function () { this.style.backgroundColor = ""; }
}
// Simple string-trimming function
function trim(s) {
var t = s.substring(0,s.length);
while (t.substring(0,1) == ' ') {
t = t.substring(1,t.length);
}
while (t.substring(t.length-1,t.length) == ' ') {
t = t.substring(0,t.length-1);
}
return t;
}