function toggleDisplay (item) {
var f = document.getElementById (item);
  if (f.style.display == 'block') {
    f.style.display = 'none';
  } else {
    f.style.display = 'block';
    f.childNodes[1].to.focus();
  }
}

function windowWidth () {
  if( typeof( window.innerWidth ) == 'number' ) {
  // Non-IE
    return window.innerWidth;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
  // IE 6+ in 'standards compliant mode'
    return document.documentElement.clientWidth;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
  // IE 4 compatible
    return document.body.clientWidth;
  }
}

function moveEmailForm (e) {
var f = document.getElementById ('emailForm');
  if (f && f.style.display != 'block') {
  // get mouse position
    var posx = 0;
    var posy = 0;
    if (!e) var e = window.event;
    if (e.pageX || e.pageY) {
      posx = e.pageX;
      posy = e.pageY;
    } else if (e.clientX || e.clientY) {
      posx = e.clientX + document.body.scrollLeft
             + document.documentElement.scrollLeft;
      posy = e.clientY + document.body.scrollTop
             + document.documentElement.scrollTop;
    }
    // reasonably align form's right border horizontally with click
    f.style.left = (posx - 48) + 'px';
    f.style.top = (posy + 8) + 'px';
  }
}

function fieldNotEmpty (dataInput, dataId, dataSpec) {
  if (dataInput.length > 0) {
    return true;
  } else {
    alert ('Missing ' + dataId + '.' 
           + ((dataSpec!='')?(' Must be ' + dataSpec + '.'):''));
    return false;
  }
}

function fieldMatches (dataInput, validRE, dataId, dataSpec) {
 if (dataInput.match (validRE)) {
   return true;
 } else {
   alert (dataId + ' is invalid.'
          + ((dataSpec!='')?(' Must be ' + dataSpec + '.'):''));
   return false;
 }
}

function validateEmailForm (theForm) {
  return (
    fieldNotEmpty (theForm.to.value,
                   'destination address', 'provided')
  &&
    fieldNotEmpty (theForm.from.value,
                   'your address', 'provided')
  &&
    fieldMatches (theForm.to.value, /^.+@.+\..+$/,
                  'The address of your friend', 'an email address')
  &&
    fieldMatches (theForm.from.value, /^.+@.+\..+$/,
                  'Your address', 'an email address')
  );
}


function validateFeedbackForm (f) {
var f = document.getElementById('ajaxForm');
  if (f.feedback.value.indexOf(' ') < 1) {
    document.getElementById('ajaxFormMessage').innerHTML =
      '<span style="color:red;">Email expected</span>';
    return false;
  }
  sendAjaxData (f.value);
  return true;
}

function sendAjaxData (s) {
  var poststr = 'data=' + encodeURI(s);
  makePOSTRequest ('/utils/hejAjax.php', poststr);
}

var http_request = false;

function makePOSTRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      try {
	http_request = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e) {
      }
    }
  }
  if (!http_request) {
    alert ('Cannot create XMLHTTP instance. Maybe your browser has an issue.');
    return false;
  }

  http_request.onreadystatechange =
      function () {
	document.getElementById('ajaxFormMessage').innerHTML =
	    '<span style="color:blue;">Sending...</span>';
	if (http_request.readyState == 4) {
	  if (http_request.status == 200) {
            var response = http_request.responseXML.documentElement;
	    var r = response.getElementsByTagName('result')[0].firstChild.nodeValue;
            document.getElementById('ajaxFormMessage').innerHTML =
	        '<span style="color:green;">Thank you! ('+r+')</span>';
  // enable form again
  var elements = document.getElementById('ajaxForm').elements;
  for (i=0; i<elements.length; i++) {
    var e = elements[i];
    e.disabled = e.oldDisabled;
  }
	  } else {			
	    alert('Sorry, request failed.');
	  }
	}
      }

  try {
    http_request.open ('POST', url, true);
    http_request.setRequestHeader
        ('Content-type', 'application/x-www-form-urlencoded');
    http_request.send (parameters);
  }
  catch (e) {
    alert ('Bizarre. Request send failed.');
  }
  finally {
  }
  // disable form until end of response
  var elements = document.getElementById('ajaxForm').elements;
  for (i=0; i<elements.length; i++) {
    var e = elements[i];
    e.oldDisabled = e.disabled;
    e.disabled = true;
  }
}

function clearField (f, defaultF) {
  if (f.value == defaultF) f.value = '';
}


