//finds the object reference of a name you pass it (form, layer, etc)
//e.g. MM_findObj('bob');
function MM_findObj(n, d) { //v4.01
  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&&i<d.forms.length;i++) 
x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers
[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}


//generic all purpose image rollover scripts

/*
Example use
var sitemapImgLoaded = false;
//name, off, on
var imageList = new Array(
'sm_homepage','arrow_r.gif','arrow_r_white.gif',
'sm_expressbooking','arrow_r.gif','arrow_r_white.gif');

//rollover global path, off , on, or whatever
var imageStates = new Array('off','on');
var globalpath = '/premierlodge/images/generic_icons/';

//preload images
sitemapImgLoaded = preloadImages(imageStates, imageList, globalpath);
*/
function preloadImages(imageStates, imageList, globalpath)	{
	var loaded = false;
	if (document.images)	{
		//preload images
		for (i=0; i < imageList.length; i = i + (imageStates.length+1))	{
			for (y=0; y < imageStates.length; y++)	{
				eval(imageList[i]+"_"+imageStates[y]+" = new Image();");
				eval(imageList[i]+"_"+imageStates[y]+".src = '"+globalpath+imageList[i+1+y]+"'") 
			}
		}
		loaded = true;
	}
	return loaded;
}

//basic image swap function, can be used in conjunction with any other rollover functions
function imgSwap(imgName, imgSrc)	{
	if (document.images)	{
		if (document.layers) {
			MM_findObj(imgName).src = eval(imgSrc+".src");
		}
		else {
			document.images[imgName].src = eval(imgSrc+".src");
		}
	}
}

//rolls over to another image state
/*
Example:
<a href="/xxxxxx/" onMouseOver="roll('sm_homepage','on',sitemapImgLoaded);" onMouseOut="roll('sm_homepage','off',sitemapImgLoaded)">Homepage</a>
*/
function roll(imgRoll, state, imagesLoaded) {
	if (imagesLoaded) {
			imgSwap(imgRoll, imgRoll+"_"+state);
	}
}


function Mod(a, b) { return a-Math.floor(a/b)*b }

function Div(a, b) { return Math.floor(a/b) }

function debug(msg, url, lno)	{
	if (debugOn) {
		alert("Error: "+msg+", at line "+lno+", in file "+url);
	}
	return true;
}

/*
Build your own object: eg.

linkShell[n].lnkname

var linkShell = new Array();
linkShell.Objs = new Array('lnkname','lnkurl', 'parent');

linkShell.Add = defineObj;
//populate object
linkShell.Add('News','http://www.blob.com/', true);
linkShell.Add('Sports','http://www.blob.com/', true);
*/
function defineObj() {
	var movlen = this.length;
	var i;
	
	this[movlen] = new Array((this.Objs.length-1));
	
	for (i=0; i < this.Objs.length; i++)	{
		this[movlen][i] = this.Objs[i];
	}
	
	for (i=0; i < this[movlen].length; i++) {
		this[movlen][this[movlen][i]] = arguments[i];
	}
}