/* +--------------------------------------------------------------+
 * | This file is part of the web application framework "ISTANTE" |
 * | Copyright (c) 2005 Claudio Cicali <claudio@cicali.org>       |
 * |                and Renomo s.r.l <info@renomo.com>            |
 * | All rights reserved                                          |
 * +--------------------------------------------------------------+
 * | Author: Claudio Cicali claudio@cicali.org                    |
 * +--------------------------------------------------------------+
 */

var RESIZABLE        = 'r5IZbl';  // gi img,lyr  resizable if <ctrl> or <shift> pressed
var SCALABLE         = 'SCLbl';   // gi img,lyr  scalable           "
 
function SET_DHTML(a,b)
{
  // void 
}
 
function application_onload(eventArgs)
{
  auto_focus();
  auto_validate();
  resize_dialogs(null);
  table_enhance();
  if (typeof(prepare_for_edit) != "undefined")
  {
    prepare_for_edit(); 
  }
  // Unset the cookie to tell application any form is not yet valid, and it can't process it
  eraseCookie("ajax_validation");
  /*
  makeNiceTitles();
  */
}

function auto_focus()
{
  var autof_els=null;
  var e;
  
	forms=document.getElementsByTagName('FORM');
  
  for (var f=0; f < forms.length; f++)
  { 
    if (forms[f].className && forms[f].className.indexOf("autofocus") != -1)
    {
      for (e=0; e < forms[f].elements.length; e++)
      {
        if (forms[f].elements[e].type != "hidden")
        {
          if (forms[f].elements[e].focus)
          {
            try 
            {
              forms[f].elements[e].focus();
              label_focus_on(forms[f].elements[e]);          
            }
            catch(e) {}
          }
          break;
        }
      }
      autof_els = forms[f].elements;
      break;
    }
  }
  
  if (autof_els)
  {
    for (e=0; e < autof_els.length; e++)
    {
      add_event(autof_els[e], 'focus', hilight_label);
      add_event(autof_els[e], 'blur', lowlight_label);
    }
  }
}

function auto_validate()
{
	forms=document.getElementsByTagName('FORM');
  for (var f=0; f < forms.length; f++)
    if (forms[f].className && forms[f].className.indexOf("autovalidate") != -1)
      add_event(forms[f], "submit", form_validate);
}

function label_focus_on(e)
{
  label = get_label_for(e.id);
  
  if (label && label.style.fontWeight != "bold")
  {
//    label.style.fontWeight="bold";
    label.style.backgroundColor="#eaeaea";
  }
}

function label_focus_off(e)
{
  label = get_label_for(e.id);
  if (label && label.style.fontWeight != "normal")
    label.style.backgroundColor="transparent";    
    //label.style.fontWeight="normal";
}

function get_label_for(id)
{
  if (!id)
    return null;
	labels=document.getElementsByTagName('LABEL');
  for (var l=0; l < labels.length; l++)
    if (labels[l].getAttribute)
    {
      var for_id = labels[l].getAttribute("FOR"); 
      // Does exit a label with that id?
      if ( for_id == id)
        return (labels[l]);
      else
        if ( for_id == id.replace(/_day|_month|_year/,""))
          return (labels[l]);
    }
  return null;
}

function hilight_label(evt)
{
  if(!evt) 
    evt = window.event;
  var e = ( evt.srcElement ) ? evt.srcElement : evt.originalTarget;  
  label_focus_on(e);
  evt.returnValue = false;
  return false;
}

function lowlight_label(evt)
{
  if(!evt) 
    evt = window.event;
  var e = ( evt.srcElement ) ? evt.srcElement : evt.originalTarget;  
  label_focus_off(e);
  evt.returnValue = false;
  return false;
}

function resize_dialogs(param)
{
  childs = document.getElementById("application").childNodes;
  for (var child=0; child < childs.length; child++)
  {
    if (childs[child].tagName &&
        childs[child].tagName == "DIV" && 
        childs[child].className.indexOf("dialog_box") != -1)
    {
      d_childs = childs[child].childNodes;
      maxSize=0;
      center_dialog=0;
      for (d_child in d_childs )
      {
        elem = d_childs[d_child];
        if (elem.offsetWidth &&
            ((elem.tagName == "TABLE" && elem.className == "big_list") ||
              elem.tagName == "FORM"))
        {
          if (elem.tagName == "TABLE")
          {
            center_dialog=1;
            w = elem.getElementsByTagName("THEAD")[0].offsetWidth;
            elem.style.minWidth="90%";
          }
          else
            w = elem.offsetWidth;
          
          if (w > maxSize)
            maxSize = w;
        }
      }
      
      if (center_dialog == 1)
        childs[child].style.marginLeft = childs[child].style.marginRight="auto";
      
      if (maxSize == 0)
        maxSize = childs[child].offsetWidth / 2;

      childs[child].style.width=maxSize + 10 + "px";
      childs[child].style.visibility="visible";
    }
  }
}        

function table_enhance()
{
	if(!document.createTextNode){return;}
	var tableClass='big_list';
	var colourClass='odd_row';
	var hoverClass='hover_for_ie';
	var alltables,bodies,i,j,k,addClass,trs,c,a;
	alltables=document.getElementsByTagName('table');
	for (k=0;k<alltables.length;k++)
	{
		if(!alltables[k].className.match(tableClass)){continue;}
		bodies=alltables[k].getElementsByTagName('tbody');
		for (i=0;i<bodies.length;i++)
		{
			trs=bodies[i].getElementsByTagName('tr')
			for (j=0;j<trs.length;j++)
			{
				if(trs[j].getElementsByTagName('td').length>0)
				{
					addClass = j%2 == 0 ? ' ' + colourClass : '';
					trs[j].className=trs[j].className+addClass;
					trs[j].onmouseover=function()
					{
						this.className=this.className+' '+hoverClass;
					}
					trs[j].onmouseout=function()
					{
						var rep=this.className.match(' '+hoverClass)?' '+hoverClass:hoverClass;
						this.className=this.className.replace(rep,'');
					}
				}
			}
		}
	}		 
}

add_event(window, 'load', application_onload);

