  function hst_set_val(x,i,s,o,c,h){
    $(i).setValue(x);
    $(s).update(h);
    $(c).update(h);
    $(s).show();
    $(c).hide();
    $(o).hide();
    $(i).focus();
  }
  
  var wysi_targets = new Array();
  var wysi_editors = new Array();
  var wysi_toolbars = new Array();
  var wysi_onsubmits = new Array();
  var wysi_actions = new Array();
  var wysi_ajax = new Array();
  
  function AddCSS(fwin)
  {  
    // Adding style sheet
    var styles = "/stylesheets/wysiwyg_iframe.css";
    var newSS=fwin.document.createElement('link');
    newSS.rel='stylesheet';
    newSS.type='text/css';
    newSS.href=escape(styles);
    fwin.document.getElementsByTagName("head")[0].appendChild(newSS);
   
    // Adding some text
    var sometext = fwin.document.createElement('div');
    sometext.className = 'redtext';
    sometext.innerHTML = 'Hello <u>World</u>!';
    fwin.document.getElementsByTagName("body")[0].appendChild(sometext);
   
    // Adding some embedded style
    var embedstyle = fwin.document.createElement('style');
    embedstyle.type='text/css';
    embedstyle.innerHTML = 'body { color:green; }';
    fwin.document.getElementsByTagName("body")[0].appendChild(embedstyle);
  }
  
  function wysi_init(target, aid){
    wysi_targets[aid] = target;
    wysi_editors[aid] = WysiHat.Editor.attach(wysi_targets[aid]);
    wysi_toolbars[aid] = new WysiHat.Toolbar(wysi_editors[aid]);
    
    // trigger to work with form_remote_tag
    if (($(target).form.readAttribute('onsubmit')) && ($(target).form.readAttribute('onsubmit').include('Ajax.'))) {
      wysi_onsubmits[aid] = true;
    } else {
      wysi_onsubmits[aid] = false;
    }
    if (wysi_onsubmits[aid]) {
      wysi_onsubmits[aid] = $(target).form.readAttribute('onsubmit');
      wysi_actions[aid] = wysi_onsubmits[aid].gsub('new Ajax.Request(\'','').gsub('\', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;','');
      $(wysi_targets[aid]).form.writeAttribute('onsubmit','return false;');
    }
    
    // apply stylesheet to the iframe
    //AddCSS(wysi_editors[aid].contentWindow);
    //setTimeout('wysi_editors['+aid+'].contentWindow.document.getElementsByTagName("head")[0].title.insert("Hello World");alert("pass");',150);
    setTimeout('var cssLink = document.createElement("link");cssLink.href = "/stylesheets/wysiwyg_iframe.css";cssLink.rel = "stylesheet";cssLink.type = "text/css";wysi_editors['+aid+'].contentWindow.document.getElementsByTagName("head")[0].appendChild(cssLink);',150);
    
    // make the iframe resizeable
    //resizable({minHeight: 50, minWidth: 50});
    setTimeout('wysi_make_resizable('+aid+')',150);
    

  }
  
  function wysi_make_resizable(aid){
    //alert('resize');
  }
  
  function wysi_sub(u,f){
    new Ajax.Request(u, {
      asynchronous: true,
      evalScripts: true,
      parameters: Form.serialize(f)
    });
  }
  
  function wysi_save(aid){
    wysi_editors[aid].save();
    setTimeout('wysi_sub(wysi_actions['+aid+'],$(wysi_targets['+aid+']).form);',150);
  }
  
  // target is the id of a textarea
  // aid is the id position of the editor in the wysi_editors array
  function wysi_start(aid) {
    wysihat_apply_toolbar(wysi_toolbars[aid], wysi_editors[aid]);
  }
  
  function wysi_off(aid){
    wysi_editors[aid].save();
    $(wysi_targets[aid]).show();
    $(wysi_targets[aid]+"_editor").previous().remove();
    $(wysi_targets[aid]+"_editor").remove();
    if (wysi_onsubmits[aid]) {
      $(wysi_targets[aid]).form.stopObserving('submit');
      $(wysi_targets[aid]).form.writeAttribute('onsubmit', wysi_onsubmits[aid]);
    }
    $('wysi_on_'+aid).show();
    $('wysi_off_'+aid).hide();
  }
