view ajax.js @ 785:7735f97b2bbf

Preliminal implementation of the preview image zoom box.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 21 Nov 2014 05:32:19 +0200
parents c7b4139eb217
children 8bee2554d95e
line wrap: on
line source

//
// FAPWeb - Simple Web-based Demoparty Management System
// Common JavaScript / AJAX code
// (C) Copyright 2012-2014 Tecnic Software productions (TNSP)
//


function jsCloseMessageBox(callback, cb_data)
{
  var nitem = document.getElementById("messageBox");
  if (nitem && nitem.style.display != "none")
  {
    nitem.style.display = "none";
  
    if (callback && typeof(callback) === "function")
      callback(cb_data);
  }
}


function jsMessageBox(msg)
{
  var nitem = document.getElementById("messageBox");
  if (nitem)
  {
    nitem.innerHTML = "<div class='messageBoxInner'>"+ msg +
      "<div class='messageBoxControls'>"+
      "<input id='msgBoxConfirmClose' type='button' value=' OK '>"+
      "</div></div>";

    var elem = document.getElementById("msgBoxConfirmClose");
    elem.onclick = function () { jsCloseMessageBox(0, 0); }

    nitem.style.display = "block";
  }
}


function jsConfirmBox(msg, cb_ok, cb_cancel, cb_data)
{
  var nitem = document.getElementById("messageBox");
  if (nitem)
  {
    nitem.innerHTML = "<div class='messageBoxInner'><h1>Confirmation</h1><p>"+ msg +"</p>"+
      "<div class='messageBoxControls'>"+
      "<input id='msgBoxConfirmCancel' type='button' value=' Cancel '>"+
      "<input id='msgBoxConfirmOK' type='button' value=' OK '>"+
      "</div></div>";

    var elem = document.getElementById("msgBoxConfirmCancel");
    elem.onclick = function () { jsCloseMessageBox(cb_cancel, cb_data); }

    elem = document.getElementById("msgBoxConfirmOK");
    elem.onclick = function () { jsCloseMessageBox(cb_ok, cb_data); }
    
    nitem.style.display = "block";
  }
}


function statusMsg(msg)
{
  var nitem = document.getElementById("nstatus");
  if (nitem) nstatus.innerHTML = msg;
}


function strtrim(str)
{
  if (!str || str == null)
    return "";
  return str.replace(/^\s+|\s+$/g,'')
}


function strencode(str)
{
  return encodeURIComponent(str);
}


function jsCreateXMLRequest()
{
  var req;
  if (window.XMLHttpRequest)
  {
    // Modern browsers
    req = new XMLHttpRequest();
  }
  else
  {
    // Old IE versions
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  return req;
}


//
// Function for creating AJAX POST request arguments list based
// on fields and giving them specified types. Also basic check
// for validity can be performed (e.g. field empty or not)
//
var lastPostArgs = Object();
function jsMakePostArgs(fields, fprefix, fsuffix, nofail)
{
  var res = [];
  lastPostArgs = Object();

  for (var id in fields)
  {
    var elname = fprefix + id + fsuffix;
    switch (fields[id])
    {
      case 4:
        elname += "Sel";
        break;
    }

    var elem = document.getElementById(elname);
    if (!elem && !nofail)
    {
      jsMessageBox("No such DOM element '"+ elname +"'.");
      return "";
    }

    if (elem)
    {
      switch (fields[id])
      {
        case 1:
          var vstr = strtrim(elem.value);
          res.push(id+"="+strencode(vstr));
          lastPostArgs[id] = vstr;
          break;

        case 2:
          var vint = parseInt(strtrim(elem.value));
          res.push(id+"="+vint);
          lastPostArgs[id] = vint;
          break;

        case 3:
          res.push(id+"="+(elem.checked ? "1" : "0"));
          lastPostArgs[id] = elem.checked;
          break;

        case 4:
          var vval = (elem.selectedIndex != -1) ? elem.options[elem.selectedIndex].value : -1;
          res.push(id+"="+vval);
          lastPostArgs[id] = vval;
          break;

        default:
          jsMessageBox("Unsupported field type in "+ elname);
          return "";
      }
    }
  }
  return res.join("&");
}


function jsGetValue(elname, eltype)
{
  var elem = document.getElementById(elname);
  if (!elem)
  {
    jsMessageBox("No such DOM element '"+ elname +"'.");
    return "";
  }

  switch (eltype)
  {
    case 1:
      var vstr = strtrim(elem.value);
      return strencode(vstr);

    case 2:
      var vint = parseInt(strtrim(elem.value));
      return vint;

    case 3:
      return elem.checked ? "1" : "0";

    case 4:
      if (elem.selectedIndex != -1)
        return elem.options[elem.selectedIndex].value;
      else
        return null;

    default:
      jsMessageBox("Unsupported field type in "+ elname);
      return "";
  }
}


function jsShowPreviewImage(file)
{
  var nitem = document.getElementById("messageBox");
  if (nitem)
  {
    nitem.innerHTML = "<div class='imageBoxInner'>"+
      "<img src='"+file+"' alt='"+file+"' />"+
      "</div>";

    var elem = document.getElementById("messageBox");
    elem.onclick = function () { jsCloseMessageBox(0, 0); }

    nitem.style.display = "block";

    return false;
  }

  return true;
}