
function displayElementsProperties(elements){
   for (var i=0; i < elements.length; i++){
	elem = elements[i];
	displayElementProperties(elem);
   }
}

function displayElementsProperty(elements,prop){
   for (var i=0; i < elements.length; i++){
	elem = elements[i];
	displayElementProperty(elem,prop);
   }
}

function displayElementChildren(obj){
   for (var i=0; i < obj.children.length; i++){
	child = obj.children.item(i);
	displayElementProperties(child);
   }
}

function displayFormElements(form){
   for (var i=0; i < form.elements.length; i++){
	element = form.elements[i];
	displayElementProperties(element);
   }
}

function displayFormAll(form){
   for (var i=0; i < form.all.length; i++){
	element = form.all[i];
	displayElementProperties(element);
   }
}

function displayDocumentAll(document){
   for (var i=0; i < document.all.length; i++){
	element = document.all[i];
	displayElementProperties(element);
   }
}

function displayDocumentLinks(document){
   for (var i=0; i < document.links.length; i++){
	link = document.links[i];
	displayElementProperties(link);
   }
}

function displayElementProperties(obj,size){
  curCnt=0;
  totCnt=0;
  tit = getElementDisplayTitle(obj) + "\n";
  str = tit;
  if (size==null){
    size=25;
  } 
  for (prop in obj){
      curCnt++;
      totCnt++;
      row= formatInteger(totCnt,3) + "/" + formatInteger(curCnt,3)
           + " - " + prop + " - " + getElementPropertyDisplayValue(obj,prop);
      str+= row +"\n";
      if (curCnt==size){
	  alert(str);
          curCnt=0;
	  str = tit;
      }
  }
  if (curCnt>0){
     alert(str);
  }
}

function displayElementProperty(obj,prop){
  tit = getElementDisplayTitle(obj);
  val = getElementPropertyDisplayValue(obj,prop);
  alert(tit + "\n\n" + prop + " : " + val);
}

function getElementDisplayTitle(obj){
  tit = obj.tagName 
        + "/" + obj.type
        + "/" + obj.name
        + "/" + (obj.disabled?"DISABLED":"<>")
        + "/" + (obj.readOnly?"READONLY":"<>");
  return tit;
}

function getElementPropertyDisplayValue(obj,prop){
  try{
    val = obj[prop];
    if (val==null){
      val="<null>";
    }
    return val;
  }catch(e){
    str = "error when getting value for property " + prop;
    return str + "\n\n" + e;
  }
}

function formatInteger(integer,digits,pad){
	if (integer==null){
		return "";
	}
	string = new String(integer);
	if (digits==null || string.length==digits){
		return string;
	}
	if (pad==null){
 	  pad = "0";
	}
	if (string.length<digits){
	    cnt = digits - string.length;
	    for (var i=1;i<=cnt;i++){
	      string = pad + string;
	    } 
	}
	return string;
}
