/**
 * board stuff
 *
 * Created on 29.10.2008
 * Project: CMS
 *
 * '$Id: survey_matrix_ajax.js,v 1.2 2008/10/20 12:33:31 abaethe Exp $'
 *
 */


var req;
var previewhtml = '';


/**
 * show preview field
 */
function showPreview(sid, aEvent)
{
  var myevent  = window.event ? window.event : aEvent;

  toggleGlobalOverlay(); 

  var preview = document.getElementById('preview');
  if( myevent.pageX && myevent.pageY )           // FF
  {
    preview.style.left = myevent.pageX - 150 + 'px';
    preview.style.top  = myevent.pageY - 300 + 'px';
  }
  else if( myevent.clientX && myevent.clientY )  // IE
  {
    preview.style.left = myevent.clientX + document.documentElement.scrollLeft - 150 + 'px';
    preview.style.top  = myevent.clientY + document.documentElement.scrollTop -300 + 'px';
  }
  else
    preview.style.top  = preview.style.left = 'auto';
  
  preview.style.visibility = 'visible';
 
  showPreview_sendAjax(sid);
}


/**
 * send ajax request
 */
function showPreview_sendAjax(sid) 
{
  boardajax_init();
  
  document.getElementById('preview').innerHTML = previewhtml + "<br /><br />&nbsp;Bitte warten Sie einen Augenblick ...";

  var topic = document.getElementById('post_topic');
  var email = document.getElementById('post_email');
  var body  = document.getElementById('post_body');

  req.open('POST','http://www.workingoffice.de/index.php', true);
  req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');   // needed in case of POST (not GET)
  req.onreadystatechange = showPreview_ajaxResponse;   // call it AFTER open() to make it work in f**king IE
  req.send('do=b_preview&sid=' + sid + '&post_topic=' + encodeURIComponent(topic.value) + '&post_email=' + encodeURIComponent(email.value) + '&post_body=' + encodeURIComponent(body.value));
}

/**
 * handle ajax responses
 */
function showPreview_ajaxResponse()
{
  if( req.readyState == 4 )   // XHR-state 'complete'
  {
    if( req.status == 200 )   // want HTTP status code 'OK' only
      document.getElementById('preview').innerHTML = previewhtml + req.responseText;
    else
      alert("There was a problem retrieving the XML data:\n" + req.statusText);
  }
}



/**
 * init stuff
 */
function boardajax_init()
{
  if( typeof req == 'undefined' )      
  {
    req = createXMLHttpRequest();
    previewhtml = document.getElementById('preview').innerHTML;   
  }
}

function createXMLHttpRequest()
{
  var myreq = null;

  if( window.XMLHttpRequest )      // Mozilla, Safari, ...
    myreq = new XMLHttpRequest();
  else if( window.ActiveXObject )  // IE
    myreq = new ActiveXObject("Microsoft.XMLHTTP");

/*  var req = null;
  try 
  {
    req = new ActiveXObject("MSXML2.XMLHTTP");
  }
  catch( err_MSXML2 )
  {
    try
    {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch( err_Microsoft )
    {
      if( typeof XMLHttpRequest != "undefined" ) 
        req = new XMLHttpRequest;
    }
  } */

  return myreq;
}



/**
 * add emoticons
 */
function addEmoticon(imagetext)
{
  mytextarea = document.getElementById('post_body');
  myPasteText(mytextarea, imagetext);
}

/**
 * (browser-independent) version of 'paste text into textarea'
 */
function myPasteText(ta, text)
{
  if( ta.createTextRange)            // IE
  {
    ta.focus();
    document.selection.createRange().duplicate().text = text;
  }
  else if( document.getElementById ) // Mozilla
  {
    var selEnd    = ta.selectionEnd;
    var txtLen    = ta.value.length;
    var txtbefore = ta.value.substring(0,selEnd);
    var txtafter  = ta.value.substring(selEnd, txtLen);
    ta.value      = txtbefore + text + txtafter;
    ta.focus();
  }
  else
    ta.value += text;
}


