   /*
   
   Scripts used in editing online content
   
   */

   
	/*
   * Command called to start editing the page
   */

   function editPage() {
   	if (loaded==true) {
         if (user.id=='') login();
         else showeditor();
         //location="#top";
      } else {
      	alert("Please wait until page has finished loading");
      }
   }
	var loaded = false;
  window.onload = new function() {loaded=true}
  /*
  window.onerror = "handleErrors";
  
  function handleErrors() {
  	alert("HERE");
  }
   */
	/*
   * Show the login form
   */

   function login() {
      if (document.getElementById("loginContainer")) return false;

      var c = document.createElement('div');
      c.id = 'loginContainer';
      c.style.position = 'absolute';
      c.style.left = '50%';
      c.style.top = '30%';
      c.style.width = '0px';
      c.style.height = '0px';
      document.body.appendChild(c);

      var f = document.createElement('div');
      f.id = 'loginForm';
      f.style.textAlign = 'left';
      f.style.position = 'absolute';
      f.style.marginLeft = '-125';
      f.style.marginTop = '-50px';
      f.style.width = '280px';
      f.style.height = '124px';
      f.className = 'cms-box';
      f.innerHTML = '\
         <h2>lucid edit : Login</h2>\n\
         <div class="content">\n\
            <form name="login" id="login" action="" onsubmit="return false">\n\
            <div style="padding-left: 18px; display: block;">Password: <input style="width: 155px; position: relative; top: 2px;" type="password" name="password" id="password" onkeypress="if(window.event.keyCode==13)validateLogin(document.forms[\'login\'].elements.password.value);" /></div>\n\
               <div style="padding-left: 76px; padding-top: 12px; display: block;">\n\
                  <a class="cms-button" style="display: inline;" href="#login" onclick="validateLogin(document.forms[\'login\'].elements.password.value);"><input class="cms-button" type="button" value="Login" \></a>\
                  <a class="cms-button" style="display: inline;" href="#cancel" onclick="cancelLogin()"><input class="cms-button" type="button" value="Cancel" \></a>\n\
               </div>\n\
            </form>\n\
         </div>';
      fadedocument();
      c.appendChild(f);
      document.getElementById("password").focus();
   }
		
   function cancelLogin() {
   	document.getElementById('loginContainer').removeNode(true);
      restoredocument();
   }
   
  	/*
   * Show the login form
   */

   function showMessage(msg) {
      if (document.getElementById("messageContainer")) return false;

      var c = document.createElement('div');
      c.id = 'messageContainer';
      c.style.position = 'absolute';
      c.style.left = '50%';
      c.style.top = '30%';
      c.style.width = '0px';
      c.style.height = '0px';
      document.body.appendChild(c);

      var f = document.createElement('div');
      f.id = 'message';
      f.style.textAlign = 'left';
      f.style.position = 'absolute';
      f.style.marginLeft = '-125';
      f.style.marginTop = '-50px';
      f.style.width = '280px';
      f.style.height = '84px';
      f.className = 'cms-box';
      f.innerHTML = '\
         <h2>'+ msg +'</h2>\n\
         <div class="content">\n\
            Please wait...\n\
         </div>';
      c.appendChild(f);
   }

  /*
   * Validate the login details
   */

   function validateLogin(password) {
      var server = new Server();
      server.get('_editor/login.php?password=' + escape(password), eval);
      if(user.id != '' && user.administrator=='y') {
         document.getElementById('loginContainer').removeNode(true);
         restoredocument();
         showeditor();
      }
      else {
         alert('Sorry, password was incorrect\n');
         document.getElementById("password").value='';
         document.getElementById("password").focus();
      }
      return false;
   }


   /*
   * Start editing currency page
   */

   function showeditor() {
      if (document.getElementById("editor")) return false;
			
      // Create editable content
      var divs = document.body.getElementsByTagName('div');
      var d;
      for(var i = divs.length - 1 ; i >= 0 ; i--) {
         if(divs[i].className == 'editable') {
            d = divs[i]
            //makeEditable(d);
            toggleEditable(d, true);
         }
      }
      if(!d) {
         alert('Sorry, there is no editable content on this page.');
         return;
      }
      //d.focus();

      // Insert menu
      d = document.createElement('div');
      d.id = "editor";
      d.style.display='block';
      //d.style.position = 'absolute';
      //d.style.top    = '0px';
      //d.style.right  = '0px';
      d.style.filter = 'alpha(style=0,opacity=75)';
      d.innerHTML = '\
      	<div style="padding: 5px; float: left; cursor: pointer;">\n\
            <a class="cms-button" href="#b" title="Bold"><input class="cms-button b" onclick="buttonClick(\'Bold\')" type="button" value="" \></a>\
            <a class="cms-button" href="#i" title="Italic"><input class="cms-button i" onclick="buttonClick(\'Italic\')" type="button" value="" \></a>\
            <a class="cms-button" href="#ul" title="Un-ordered List (bullet points)"><input class="cms-button ul" onclick="buttonClick(\'InsertUnorderedList\')" type="button" value="" \></a>\
            <a class="cms-button" href="#ol" title="Ordered List (numbers)"><input class="cms-button ol" onclick="buttonClick(\'InsertOrderedList\')" type="button" value="" \></a>\
            <span class="cms-spacer">|</span>\
            <a class="cms-button" href="#left" title="Align left"><input class="cms-button align-left" onclick="buttonClick(\'JustifyLeft\')" type="button" value="" \></a>\
            <a class="cms-button" href="#center" title="Align center"><input class="cms-button align-center" onclick="buttonClick(\'JustifyCenter\')" type="button" value="" \></a>\
            <a class="cms-button" href="#right" title="Align right"><input class="cms-button align-right" onclick="buttonClick(\'JustifyRight\')" type="button" value="" \></a>\n\
            <span class="cms-spacer">|</span>\
            <a class="cms-button" href="#a" title="Create link..."><input class="cms-button a" onclick="buttonClick(\'CreateLink\')" type="button" value="" \></a>\
					<!--<a class="cms-button" href="#img" title="Insert image..."><input class="cms-button img" onclick="buttonClick(\'InsertImage\')" type="button" value="" \></a>-->\
            <a class="cms-button" href="#html" title="Toggle HTML and source text"><input class="cms-button" onclick="buttonClick(\'toggleHTML\')" type="button" value="HTML" \></a>\
            <!--<a class="cms-button" href="#clear" title="Clear formatting"><input class="cms-button" onclick="buttonClick(\'RemoveFormat\')" type="button" value="Clear" \></a>-->\
         </div>\
         <div style="padding: 5px; float: right;">\n\
            <a class="cms-button" href="#save" title="Save changes"><input class="cms-button" type="button" onclick="save()" value="Save" \></a>\
            <a class="cms-button" href="#cancel" title="Exit without saving changes"><input class="cms-button" onclick="cancelEdit()" type="button" value="Cancel" \></a>\
            <a class="cms-button" href="#logout" title="Logout"><input class="cms-button" onclick="logout()" type="button" value="Logout" \></a>\n\
         </div>\
      ';
      
      document.body.appendChild(d);
      //document.getElementById("innerContainer").insertBefore(d, document.getElementById("header"));
   }
      
   
	 function filterHTML(obj) {
    //editor_updateOutput(objname);
    var contents = obj.innerText;
    //var config   = document.all[objname].config;
  
    // ignore blank contents
    if (contents.toLowerCase() == '<p>&nbsp;</p>') { contents = ""; }
  
    // filter tag - this code is run for each HTML tag matched
    var filterTag = function(tagBody,tagName,tagAttr) {
      tagName = tagName.toLowerCase();
     // var closingTag = (tagBody.match(/^<\//)) ? true : false;
  
      // fix placeholder URLS - remove absolute paths that IE adds
      if (tagName == 'img') { tagBody = tagBody.replace(/(src\s*=\s*.)[^*]*(\*\*\*)/, "$1$2"); }
      if (tagName == 'a')   { tagBody = tagBody.replace(/(href\s*=\s*.)[^*]*(\*\*\*)/, "$1$2"); }
  
      // add additional tag filtering here
  
      // convert to vbCode
  //    if      (tagName == 'b' || tagName == 'strong') {
  //      if (closingTag) { tagBody = "[/b]"; } else { tagBody = "[b]"; }
  //    }
  //    else if (tagName == 'i' || tagName == 'em') {
  //      if (closingTag) { tagBody = "[/i]"; } else { tagBody = "[i]"; }
  //    }
  //    else if (tagName == 'u') {
  //      if (closingTag) { tagBody = "[/u]"; } else { tagBody = "[u]"; }
  //    }
  //    else {
  //      tagBody = ""; // disallow all other tags!
  //    }
  
      return tagBody;
    };
  
    // match tags and call filterTag
    RegExp.lastIndex = 0;
    var matchTag = /<\/?(\w+)((?:[^'">]*|'[^']*'|"[^"]*")*)>/g;   // this will match tags, but still doesn't handle container tags (textarea, comments, etc)
  
    contents = contents.replace(matchTag, filterTag);
  
    // remove nextlines from output (if requested)
    //if (config.replaceNextlines) { 
    //  contents = contents.replace(/\r\n/g, ' ');
    //  contents = contents.replace(/\n/g, ' ');
    //  contents = contents.replace(/\r/g, ' ');
    //}
  
    // update output with filtered content
    obj.innerText = contents;
  
  }


	 function buttonClick(action) {
	 			
	 			switch (action.toLowerCase()) {
							 case "insertimage": 	  
							 			range = document.selection.createRange();   
										alert(range.length);
										showModalDialog("_editor/popups/insert-image.html", document, "resizable: no; help: no; status: no; scroll: no; ");
							 			//document.execCommand(action, true);
										break;
							 case "createlink":
							 			// Make sure some text is selected
										selText = document.selection.createRange().text;
										if (selText.length==0) {
											 alert("Please select some text first");
											 return;
										}
							 			document.execCommand(action, true);
										break;
							 case "togglehtml":
							 			toggleHTML();
										break;
							 default: 	
							 			document.execCommand(action);
				}
	 }
	 
	 
   /*
   * Cancel editing currency page
   */

   function hideeditor() {
 
      if (!document.getElementById("editor")) return false;
    
      // Create editable content
      var divs = document.body.getElementsByTagName('div');
      var d;
      for(var i = divs.length - 1 ; i >= 0 ; i--) {
         if(divs[i].className == 'editable') {
            d = divs[i]
            //makeNonEditable(d);
            toggleEditable(d, false);
         }
      }
      if(!d) {
         return;
      }
      // Go back to html
			toggleHTML(true);
      
      // Remove menu
      document.getElementById("editor").removeNode(true);
 	}
   
   var html = true;
   function toggleHTML(forced) {
   	// Allow result to be forced
   	if (forced==html) return false;
      
   	// Toggle innerHTML of editable divs
      var divs = document.body.getElementsByTagName('div');
      var d;
      for(var i = divs.length - 1 ; i >= 0 ; i--) {
         if(divs[i].className == 'editable') {
            d = divs[i]
            if (html) {
							 d.innerText = d.innerHTML;
							 filterHTML(d);
						} else d.innerHTML = d.innerText;
         }
      }
      html = !html;
   }

   /*
   * Make each section editable
   */

   function toggleEditable(d, editable) {
      d.contentEditable = editable;
      with (d.style) {
      	if (editable) {
            borderStyle	= 'dashed';
            borderColor = '#999';
            borderWidth	= '1px';
         } else {
         	borderStyle	= 'solid';
            borderColor = '#fff';
            borderWidth	= '0px';
         }
      }
   }


   function changeImage() {
      var newsrc = inputbox("Please type the new image path");
      if (newsrc) document.getELementById("").src = newsrc;
   }

   
	/*
   * Fade out and restore functions for when logging in or saving
   */

   function fadedocument() {
      document.body.style.filter = 'alpha(style=0,opacity=25)';
      /*
      var header = document.getElementById("header");
      var img = document.createElement("img");
      img.setAttribute('width', '721');
      img.setAttribute('height', '240');
      img.setAttribute('src', 'images/interface/header-alpha.jpg');
      document.getElementById("flashheader").style.display = 'none';
      header.insertBefore(img, header.firstChild);
      */
   }

   function restoredocument() {
   	/*
      document.getElementById("header").firstChild.removeNode(true);
      document.getElementById("header").firstChild.style.display = 'block';
      */
      document.body.style.filter = '';
   }


   /*
   * Save changes
   */

   function save(doit) {

      if(!doit) {
      	toggleHTML(true);	// Force html view for saving
         //fadedocument();
         showMessage("Saving");
         setTimeout('save(true)', 10);
         return false;
      }

      var server = new Server();
      var postdata = new Array();
      postdata['command'] = 'save';
      var divs = document.body.getElementsByTagName('div');
      var d;

      for(var i = divs.length - 1 ; i >= 0 ; i--) {
         d = divs[i];
         if(d.className == 'editable') {
            postdata['content_id'] = d.id.replace(/^content_/,'');
            postdata['content_html'] = d.innerHTML;
            postdata['content_plain'] = d.innerText;
            var response = server.send('_editor/save.php', postdata);
            if(response.length != 0) {
               alert('Error:\n' + response);
               return false;
            }
         }
      }
      document.location.reload();
   }
	
  
  /*
   * Log out of editor
   */
  
   function logout(actual) {

      if(!actual) {
      	if(!confirm('Discard changes made to this page?')) return false;
         //fadedocument();
         showMessage("Logging out");
         setTimeout('logout(true)', 10);
         return false;
      }
      
      var server = new Server();
      var postdata = new Array();
      postdata['logout'] = '';
      var response = server.send('_editor/login.php', postdata);
      document.location.reload();
   }


   /*
   * Cancel page edit
   */

   function cancelEdit() {
      if(!confirm('Discard changes made to this page?')) return false;
      document.location.reload();
      //hideeditor();
   }