

/*
---------------------------------------------------------------
Get Browser function (Factory method)
---------------------------------------------------------------
*/
function getBrowser() {
	var name;
	var version;
	var versionInt;
//debugger;
	name = navigator.appName;
	version = navigator.appVersion;
	versionInt = parseInt(version);
	if (name=="Netscape") {
		return new browserNS();
	}
	else if (name=="Microsoft Internet Explorer") {
		if (version.indexOf('MSIE 5')>0  || version.indexOf('MSIE 6')>0 ) {
			return new browserIE5();	
		}
		else {
			return new browserIE();	
		}	
	}
	
}


/*
---------------------------------------------------------------
---------------------------------------------------------------
Browser object
---------------------------------------------------------------
---------------------------------------------------------------
*/
function browser() {
	this.name = navigator.appName;
	this.version = navigator.appVersion;
}
// Basic Methods
browser.prototype.test = browserTest;
browser.prototype.newGraphic = browserNewGraphic;
browser.prototype.destroy = browserDestroy;
// Basic Methods
function browserTest() {
	alert('browser ' + this.name + ' v' + this.version);	
}
function browserNewGraphic(id) {
	return new graphic(id);
}
function browserDestroy() {
	alert("browser-Destroy()");	
}

/*
---------------------------------------------------------------
Browser IE Subclass object
---------------------------------------------------------------
*/ function browserIE() {
	this.base = browser;
	this.base();
}
browserIE.prototype = new browser;
// Basic Methods
browserIE.prototype.getDIVById = browserIEGetDIVById;
browserIE.prototype.newGraphic = browserIENewGraphic;
browserIE.prototype.destroy = browserIEDestroy;
// Basic Methods
function browserIEGetDIVById(id) {
	return document.all(id);
}
function browserIENewGraphic(id) {
	return new graphicIE(id);
}
function browserIEDestroy() {
	//debugger;
	//delete this.base;
	this.base = null;
}
/*
---------------------------------------------------------------
Browser IE5 Subclass object
---------------------------------------------------------------
*/ function browserIE5() {
	this.base = browserIE;
	this.base();
}
browserIE5.prototype = new browserIE;

// Basic Methods
browserIE5.prototype.getDIVById = browserIE5GetDIVById;
browserIE5.prototype.getDIVs = browserIE5GetDIVs;
browserIE5.prototype.newGraphic = browserIE5NewGraphic;
browserIE5.prototype.getElementLinks = browserIE5GetElementLinks;
browserIE5.prototype.getElementImages = browserIE5GetElementImages;

// Basic Methods
function browserIE5GetDIVById(id) {
	return document.getElementById(id);
}
function browserIE5NewGraphic(id) {
	return new graphicIE5(id);
}
function browserIE5GetDIVs() {
	return document.getElementsByTagName('DIV');
}
function browserIE5GetElementLinks(element) {
	return element.getElementsByTagName('A');
}
function browserIE5GetElementImages(element) {
	return element.getElementsByTagName('IMG');
}

/*
---------------------------------------------------------------
Browser NS Subclass object
---------------------------------------------------------------
*/ 
function browserNS() {
	this.base = browser;
	this.base();
}
browserNS.prototype = new browser;

// Basic Methods
browserNS.prototype.getDIVById = browserNSGetDIVById;
browserNS.prototype.getElementDIVById = browserNSGetElementDIVById;
browserNS.prototype.getDIVs = browserNSGetDIVs;
browserNS.prototype.getElementDIVs = browserNSGetElementDIVs;
browserNS.prototype.newGraphic = browserNSNewGraphic;
browserNS.prototype.getElementLinks = browserNSGetElementLinks;
browserNS.prototype.getElementImages = browserNSGetElementImages;

// Basic Methods
function browserNSGetDIVById(id) {
	return this.getElementDIVById(document, id);
}

function browserNSGetElementDIVById(element, id) {
	var i;
	var objDIV;
	
	if (element.layers[id]!=null) {
		return element.layers[id];
	}
	else {
		for (i=0;i<element.layers.length;i++) {
			objDIV = this.getElementDIVById(element.layers[i], id);
			if (objDIV!=null) {
				return objDIV;
			}
		}
	}
	
}




function browserNSNewGraphic(id) {
	return new graphicNS(id);
}

function browserNSGetDIVs(prefix) {
	return this.getElementDIVs(document,prefix);
}

function browserNSGetElementDIVs(element,prefix) {
	var i;
	var allDIVs;
	var childDIVs;


	allDIVs = new Array;
	
	//only recurse if we are root document or element has id
	if (element.id || document) {
		//only recurse if we match pattern
		if (true) {
			for (i=0;i<element.layers.length;i++) {
				childDIVs = this.getElementDIVs(element.layers[i],prefix);
				allDIVs = allDIVs.concat(childDIVs);
				if (childDIVs.length > 0) {
					//alert( 'First child is:' + childDIVs[0].name);
				}
	
			} 	if (element!=document) {
				allDIVs[allDIVs.length] = element;	
			}
		}
	}	
	return allDIVs;
}

function browserNSGetElementLinks(element) {
	return element.document.links;
}
function browserNSGetElementImages(element) {
	return element.document.images;
}

