/*
*/

var onloads = new Array();
onloads.push(registerAjaxStuff);

var _baseURL = '';
function initialize(baseURL) {
   _baseURL = baseURL.substring(0, baseURL.lastIndexOf("/") + 1);
   for ( var i = 0 ; i < onloads.length ; i++ )
      onloads[i]();
}

function registerAjaxStuff() {
   ajaxEngine.registerRequest('selectMenu', 'lib/ajax.php');
   ajaxEngine.registerRequest('setPalette', 'lib/cookie.php');
   ajaxEngine.registerAjaxElement('header');
   ajaxEngine.registerAjaxElement('mainMenu');
   ajaxEngine.registerAjaxElement('contextMenu');
   ajaxEngine.registerAjaxElement('content');
   ajaxEngine.registerAjaxElement('paletteSelector');
   ajaxEngine.registerAjaxObject('menuHandler', new MenuHandler());
   ajaxEngine.registerAjaxObject('jsHandler', new JavaScriptHandler());
   new Effect.Round("div", "rounded");
   new Effect.Round("div", "roundNested");
//   setStatus('consider yourself well rounded ;)',1000);
   setPalette('', true);
/*
   dndMgr.registerDropZone(new Rico.Dropzone('body'));
   dndMgr.registerDraggable(new Rico.Draggable('paletteSelectorBox', 'paletteSelector'));
*/
}

function setStatus(status,timeout) {
   $('statusContainer').style.visibility = "visible";
   $('statusMsg').innerHTML = status;
   setTimeout("$('statusContainer').style.visibility = 'hidden';", timeout);
}

function setPalette(palette, noReload) {
   ajaxEngine.sendRequest('setPalette', {
      parameters: "palette=" + palette,
      onComplete: function() { if (!noReload) location.reload(); }
   });
}

function selectMenu(item,ctx) {
   ajaxEngine.sendRequest('selectMenu', "main=" + item, "context=" + ctx);
}

function go(url) {
   document.location = _baseURL + url;
}

function checkForm(formId) {
   var form = $(formId);
   if (!form) return;
   var controls = $(formId+'Controls');
   var status = $(formId+'Status');
   if (!controls || !status) return;
   var elements = Form.getElements(form);
   for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      if (element.type != 'hidden' && !element.disabled)
         Element.addClassName(element, 'blur');
   }
   controls.style.display = 'none';
   status.style.display = 'block';
   form.submit();
}

function clearForm(formId) {
   var form = $(formId);
   if (!form) return;
   form.reset();
}

function faq(el) {
   if (!el) return;
   var items = $('faq').getElementsByTagName('div');
   for (var i=0; i < items.length; i++) {
      if (items[i].id != el.id || el.show) {
         items[i].show = false;
         var qItems = items[i].getElementsByTagName('h4');
         for (var j=0; j < qItems.length; j++) {
            Element.removeClassName(qItems[j], 'selected');
         }
         var aItems = items[i].getElementsByTagName('p');
         for (var j=0; j < aItems.length; j++) {
            Element.removeClassName(aItems[j], 'show');
         }
      } else {
         el.show = true;
         var qItems = el.getElementsByTagName('h4');
         for (var j=0; j < qItems.length; j++) {
            Element.addClassName(qItems[j], 'selected');
         }
         var aItems = el.getElementsByTagName('p');
         for (var j=0; j < aItems.length; j++) {
            Element.addClassName(aItems[j], 'show');
            new Effect.FadeTo(aItems[j], 0, 1, 1);
            new Effect.FadeTo(aItems[j], 1, 250, 10);
         }
      }
   }
}

var MenuHandler = Class.create();
MenuHandler.prototype = {

   initialize: function() {},

   ajaxUpdate: function(ajaxResponse) {
      for (var i=0; i < ajaxResponse.childNodes.length; i++) {
         var node = ajaxResponse.childNodes[i];
         if (node.nodeName != 'menuItem') continue;
         var menu = node.getAttribute('id');
         var name = node.getAttribute('name');
         var value = node.getAttribute('value');
         this.selectMenu(menu, name, value);
      }
   },

   selectMenu: function(menu, name, value) {
      var menuId = menu + 'Menu';
      var menuEl = $(menuId);
      if (!menuEl) return;
      var itemId = menuId + '_' + value;
      var items = menuEl.getElementsByTagName(name);
      for (var i=0; i < items.length; i++) {
         Element.removeClassName(items[i], 'selected');
         if (items[i].id == itemId)
            Element.addClassName(items[i], 'selected');
      }
   }
}

var JavaScriptHandler = Class.create();
JavaScriptHandler.prototype = {

   initialize: function() {},
   ajaxUpdate: function(ajaxResponse) {
      var js = '';
      for (var i=0; i < ajaxResponse.childNodes.length; i++) {
         var node = ajaxResponse.childNodes[i];
         if (node.nodeName == '#text') js = js + node.nodeValue;
      }
      eval(js);
   }

}
