function gcb_doClick(obj) {
  try { 
    var evt = document.createEvent("MouseEvents");
    evt.initMouseEvent("click", true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null);
    var canceled = !obj.dispatchEvent(evt);
    if(canceled) {
      // A handler called preventDefault  
    } else {
      // None of the handlers called preventDefault
    }
  } catch(er) {
    //alert(er);
    obj.click();  
  } 
}


function gcb_getObjAttribute(obj,attrName) {
  var zEnd=obj.attributes.length;
  var retval=0;
  for (var z=0;z<zEnd;z++) { //firefox
	  if (obj.attributes[z].name==attrName) {
		  retval=obj.attributes[z].value;
		}	
	}
	if (!retval) {
	  try {
	    retval=eval('obj.'+attrName) //internet explorer
		} catch(er) {
		}	
	}	
	return retval;	
}


function gcb_assignClassNames(strParent,strTagName,strClassNameFilter,strClassName) {
  var elementi=gcb_getChildrenElementsByClassName(strParent,strTagName);
  for (var z=0;z<elementi.length;z++) {
    if (elementi[z].className==strClassNameFilter || strClassNameFilter=='*') {
      elementi[z].className=strClassName;
    }
  }
}

function gcb_assignProperty(strParent,strTagName,strClassNameFilter,sjsProperty) {
  var elementi=gcb_getChildrenElementsByClassName(strParent,strTagName);
  var sjsPropertyc=sjsProperty;
  sjsPropertyc=sjsPropertyc.replace(/this/g,'tempinio');
  var tempinio;    
  for (var z=0;z<elementi.length;z++) {
    if (elementi[z].className==strClassNameFilter || strClassNameFilter=='*') {
      var ss='tempinio=elementi[z];'+sjsPropertyc;
      try {
        eval(ss);
      } catch(er) {
        alert('glocssbot ERROR\n\nfunction:gcb_assignProperty\nss:'+ss+'\n\n'+er);
      }
    }
  }
}

var funkiys=new Array();
function gcb_assignOnClick(strParent,strTagName,strClassName,action) {
//assignOnClick('menutd','DIV','xmenusub','alert("seba")');
  var elementi=gcb_getChildrenElementsByClassName(strParent,strTagName);
  for (var z=0;z<elementi.length;z++) {
    if (elementi[z].className==strClassName || strClassName=='*') {
      if (elementi[z].onclick==null) {
        elementi[z].onclick=new Function (action);
      } else {
         funkiys[z]=elementi[z].onclick;
         elementi[z].onclick=new Function ('eval(\''+action+'\');funkiys['+z+']();');
      }
    }
  }
}

var funkiys=new Array();
function gcb_assignOnMouseOver(strParent,strTagName,strClassName,action) {
//assignOnClick('menutd','DIV','xmenusub','alert("seba")');
//questo significa
// obj=document.getElementById('menutd')
// da obj prendi tutti i children il cui tagname è DIV
// fai un ciclo su questi children e per tutti quelli che hanno la classe uguale a strClassName
//(oppure tutti gli elementi ottenuti se strClassName=*)
//assegna l'evento onmouse over definito da action 
//se gli elementi manipolati hanno già delle proprie azioni di mouseover queste vengono eseguite dopo
//aver eseguito l'azione prescelta
  var elementi=gcb_getChildrenElementsByClassName(strParent,strTagName);
  for (var z=0;z<elementi.length;z++) {
    if (elementi[z].className==strClassName || strClassName=='*') {
      if (elementi[z].onmouseover==null) {
        elementi[z].onmouseover=new Function (action);
      } else {
         funkiys[z]=elementi[z].onmouseover;
         elementi[z].onmouseover=new Function ('eval(\''+action+'\');funkiys['+z+']();');
      }
    }
  }
}

var funkiys=new Array();
function gcb_assignOnMouseOut(strParent,strTagName,strClassName,action) {
//assignOnClick('menutd','DIV','xmenusub','alert("seba")');
  var elementi=gcb_getChildrenElementsByClassName(strParent,strTagName);
  for (var z=0;z<elementi.length;z++) {
    if (elementi[z].className==strClassName || strClassName=='*') {
      if (elementi[z].onmouseout==null) {
        elementi[z].onmouseout=new Function (action);
      } else {
         funkiys[z]=elementi[z].onmouseout;
         elementi[z].onmouseout=new Function ('eval(\''+action+'\');funkiys['+z+']();');
      }
    }
  }
}


function gcb_getObjects(strParent,strTagName,strClassName) {
//ottiene gli elementi nello stesso modo delle stesse funzioni e restituisce array
  var elementi=gcb_getChildrenElementsByClassName(strParent,strTagName);
  var aret=[];
  for (var z=0;z<elementi.length;z++) {
    if (elementi[z].className==strClassName || strClassName=='*') {
      aret.push(elementi[z]);
    }
  }
  return aret;
}


function gcb_getChildrenElementsByClassName(strName,strObj) {
	var menuparent=document.getElementById(strName);
	var elementi=menuparent.getElementsByTagName(strObj);
  return elementi;
}
