/////////////////////////////////////////////////////////////////////////////////////
// freestyle javascript base version 3.01.00 for admin and hierarchy editor module
//-----------------------------------------------------------------------------
// ! DO NOT REMOVE THIS NOTICE ! 
// ! DO NOT CHANGE THIS NOTICE !
// THIS IS A LICENSED VERSION. 
// IT IS NOT ALLOWED TO REDISTRIBUTE THIS PRPGRAM OR ANY PART OF IT.
//-----------------------------------------------------------------------------
// Copyright (c) 2001-2004 by aClass+aWeaver and Ralph Stuermer. All Rights reserved.
// Developing+Programming by Ralph Stuermer
//-----------------------------------------------------------------------------
// DOM level 1 supported by NN6 and IE5 allows to dynamically create form
// elements and add them to a FORM.
/////////////////////////////////////////////////////////////////////////////////////

function nop() {}

/////////////////////////////////////////////////////////////////////////////////
// findObject
function findObject(n,d) {
  var p,i,x;
  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document;
    n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all)
  	x=d.all[n];
	for(i=0;!x&&d.forms&&i<d.forms.length;i++)
		x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++)
		x=findObject(n,d.layers[i].document);
  if(!x && d.getElementById)
  	x=d.getElementById(n);
  return x;
}

/////////////////////////////////////////////////////////////////////////////////
// findFrame
function findFrame(frameName){
  obj=top; var frameObj=0,i,j,a,ln;
  for(i=0;i<obj.frames.length;i++){
    if(obj.frames[i].name==frameName){
    	frameObj=obj.frames[i]; 
    	break;
    };
    ln=obj.frames[i].frames.length
    for(j=0;j<ln;j++){
      if(obj.frames[i].frames[j].name==frameName){
      	frameObj=obj.frames[i].frames[j];  
      	break
      };
      ln2=obj.frames[i].frames[j].frames.length
      for(a=0;a<ln2;a++){
      	/*
      	if(i==4&&j==1&&a==0) {
      		inspectObject(obj);
			   	alert('stop for obj');
      		inspectObject(obj.frames[i]);
			   	alert('i='+i);
			   	inspectObject(obj.frames[i].frames[j]);
		     	alert('j='+j);
		     	inspectObject(obj.frames[i].frames[j].frames[a]);
      		alert('a='+a);
      	}
      	*/
        if(obj.frames[i].frames[j].frames[a].name==frameName){
        	frameObj=obj.frames[i].frames[j].frames[a]; 
        	break
        }
      }
    }
  }
  return frameObj;
}

/////////////////////////////////////////////////////////////////////////////////
// getProperties
function getProperties(obj) {
	var properties = '<html><body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="margin:0px;padding:0px;"><table cols="2" border="0" style="border:0x solid #000000">';
	properties += '<tr style="text-align:left;background-color:#cccccc;"><th>Property</th><th>Values of '+obj['name']+'</th></tr>';
	var propNames=new Array();
	var i=0;
	for(var propName in obj) {
		propNames[i++]=propName;
	}
	propNames.sort();
	for(i=0; i<propNames.length; i++) {
		properties +='<tr style="text-align:left;"><td style="text-align:left;background-color:#cccccc;">'+propNames[i]+'</td><td style="text-align:left;background-color:#f0f0f0;border:1x solid #999999">'+obj[propNames[i]]+'&nbsp;</td></tr>';
	}
	properties +='</table></body></html>';
	return properties;
}

/////////////////////////////////////////////////////////////////////////////////
// inspectObject
function inspectObject(obj,doc) {
	if(obj&&obj!=null) {
		var newWindow = window.open("","propWindow","height=400,width=350,status=1,resizable=1,scrollbars=1");
		newWindow.document.write(getProperties(obj));
		newWindow.document.close();
		newWindow.focus();
	}
}

/////////////////////////////////////////////////////////////////////////////////
// addzero
function addZero(v,n)	{
	v=String(v);
	while(v.length<n) v='0'+v;
	return v;
}

/////////////////////////////////////////////////////////////////////////////////
// absLeft
function absLeft(el) {
   return (el.offsetParent)? 
   el.offsetLeft+absLeft(el.offsetParent) : el.offsetLeft;
}

/////////////////////////////////////////////////////////////////////////////////
// absTop
function absTop(el) {
   return (el.offsetParent)? 
   el.offsetTop+absTop(el.offsetParent) : el.offsetTop;
}

/////////////////////////////////////////////////////////////////////////////////
// fileViewer -> used in a formtoolbox form
function fileviewer(link,target,file,update) {
	var fvWidth = 600;
	var fvHeight = 400;
	if(file) {
		if(file.indexOf('#')>0) {
			if(!update||update==null) return;
			file=update;
		}
		if(file=='*'||file=='') return;
	} else
		file='';
	var fvw=window.open(link+file,target,'width='+fvWidth+',height='+fvHeight+',resizable=yes,scrollbars=no,dependent=yes,status=no,toolbar=no,menubar=no');
  if (document.all) { // IE
    fvw.resizeTo(fvWidth,fvHeight);
  } else
  if (document.layers) { // NS
    fvw.outerWidth=fvWidth;
    fvw.outerHeight=fvHeight;
  }
	fvw.moveTo((screen.availWidth-fvWidth)/2,(screen.availHeight-fvHeight)/2);
	fvw.focus();
}


function replaceSubstring(inputString, fromString, toString) {
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { 
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { 
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      }
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   }
   return temp; 
} 
