// All browser script by David Højelen
// 1/1-2006 
// Copyright - D/Site ApS


// errorhandler
window.onerror = function () { return true; }

// disable right click
document.oncontextmenu = function () { return false; }

var mouseState 		= 0;
var activeOption 	= 0;


var browser = new dudiBrowser();

var iframeDataName = "";
var documentEventObjects = new Array();

function dudiBrowser() {
	var agt=navigator.userAgent.toLowerCase();

	// is DOM
	this.DOM = document.getElementById?1:0;

	// is IE
	this.IE = document.all?1:0;

	// is IE
	this.IE5 = this.IE?(document.hasFocus?0:1):0;
	
	// is IE
	this.IE55 = this.IE?(agt.indexOf("msie 5.5")!=-1):0;

	// is NS
	this.NS = (!this.DOM && !this.IE)?1:0

	// is on mac
	this.MAC = (agt.indexOf("mac")!=-1);
	
	// is on mac safari
	this.SAFARI = (agt.indexOf("safari")!=-1);
	
	// is on win 98
    this.WIN9X = (agt.indexOf("windows 9")!=-1);
	
}

function initIframeHeight(IframeName) {
	docObj = new dc();
	documentHeight = docObj.contentHeight();
	parentRef = new parent.element(IframeName);
	if(documentHeight > 100) {
		
		parentRef.setH(documentHeight + "px");
	}
	parent.initDataIframeHeightReInit();
}

function initDataIframeHeight(IframeName) {
	iFrameRef = new element('iFrameHeight');
	parentRef = new parent.element(IframeName);
	parentRef.setH(iFrameRef.getH() + "px");
	iframeDataName = IframeName;
}


function initDataIframeWidth(IframeName) {
	iFrameRef = new element('TABLE_');
	parentRef = new parent.element(IframeName);
	parentRef.setW(iFrameRef.getW() + "px");
	//parent.adjustCol();
}


function initDataIframeHeightReInit() {
	if(iframeDataName) {
		initDataIframeHeight(iframeDataName);
	}
}


function initIframeHeight2(IframeName) {
	
	iFrameRef = new element('iFrameHeight');
	parentRef = new parent.element(IframeName);
	parentRef.setH(iFrameRef.getH() + "px");
	parent.initDataIframeHeightReInit();
}

function adjustCol() {
	
	var objLeftcol = new element('leftCol');
	var objContentContainer = new element('contentContainer')
	var aDivs = document.getElementsByTagName("DIV");
	var aTables = document.getElementsByTagName("TABLE");
	var aIframes = document.getElementsByTagName("IFRAME");
	var widest = 0;
	
	for(var x=0;x<aDivs.length; x++) {
		if(aDivs[x].id != "contentContainer" && aDivs[x].id != "") {
			
			var tmpElement = new element(aDivs[x].id);
			widest = tmpElement.getW() > widest?tmpElement.getW():widest;
		}
	} 
	
	for(var x=0;x<aTables.length; x++) {
		if(aTables[x].id != "") {
			
			var tmpElement = new element(aTables[x].id);
			widest = tmpElement.getW() > widest?tmpElement.getW():widest;
		}
	}
	
	for(var x=0;x<aIframes.length; x++) {
		if(aIframes[x].id != "") {
			
			var tmpElement = new element(aIframes[x].id);
			widest = tmpElement.getW() > widest?tmpElement.getW():widest;
		}
	}

	//setting leftcolumnwidth 
	if(widest>440) {
		//setting leftcolumnwidth 
		objLeftcol.setW((widest+26)+"px");
		
		// moving background
		//setting leftcolumnwidth 
		objContentContainer.css.backgroundPosition = "-" + (1024-(widest+34))+"px 0px";
		
	}
	
}

function element(id) {
	this.id = id;
	this.obj = browser.NS?document.layers[id]:browser.DOM?document.getElementById(id):document.all[id];
	if(this.obj) {
		this.elm = browser.NS?eval("document."+id):document;
		this.css = browser.NS?eval("document."+id):(browser.DOM || browser.IE)?this.obj.style:"NaN";
		this.w = browser.NS?this.css.clip.width:browser.DOM?this.obj.offsetWidth:browser.IE?this.css.pixelWidth:"NaN";
		this.h = browser.NS?this.css.clip.height:browser.DOM?this.obj.offsetHeight:browser.IE?this.css.pixelHeight:"NaN";
		this.setH = function (height) {
						this.css.height  = height;
					}
		this.setW = function (width) {
						this.css.width 	= width;
					}
		this.getH = function () {return browser.NS?this.css.clip.height:browser.DOM?this.obj.offsetHeight:browser.IE?this.css.pixelHeight:"NaN";}
		this.getW = function () {return browser.NS?this.css.clip.width:browser.DOM?this.obj.offsetWidth:browser.IE?this.css.pixelWidth:"NaN";}
		this.show = function () {this.css.display = "block";}
		this.hide = function () {this.css.display = "none";}
		
		this.setPT = function (height) {this.css.paddingTop = height;}
		this.setMT = function (height) {this.css.marginTop = height;}
		this.setPB = function (height) {this.css.paddingBottom = height;}
		this.setMB = function (height) {this.css.marginBottom = height;}
		this.getMT = function () { 
			tempMT = parseInt(this.css.marginTop);
			return (isNaN(tempMT))?0:tempMT;
		}
		this.getPT = function () { 
			tempPT = parseInt(this.css.paddingTop);
			return (isNaN(tempPT))?0:tempPT;
		}
		this.getMB = function () { 
			tempMB = parseInt(this.css.marginBottom);
			return (isNaN(tempMB))?0:tempMB;
		}
		this.getPB = function () { 
			tempPB = parseInt(this.css.paddingBottom);
			return (isNaN(tempPB))?0:tempPB;
		}
		
		if(this.obj.tagName == "IFRAME") {
			this.setOnload = function (func) {
				if(this.obj.addEventListener) {
				
					this.obj.addEventListener("load", func, false);
				} else if(this.obj.attachEvent) {
				
					this.obj.detachEvent("onload", func); // Bug fix line
					this.obj.attachEvent("onload", func);
				}
			}	
		}
	}
	
	return this;
}
		
function dc() {
	this.obj = document;

	this.height = function () { 
		if(browser.MAC && browser.IE) {
			h = this.obj.body.offsetHeight;
		} else if(browser.SAFARI) {
			h = this.obj.body.scrollHeight;
		} else if(!browser.MAC && browser.IE) {
			h = (this.obj.body.scrollHeight > this.obj.documentElement.offsetHeight)?this.obj.body.scrollHeight:this.obj.documentElement.offsetHeight;
		}else {
			h = this.obj.documentElement.scrollHeight;
		}
			
		return h;
	}
	
	this.contentHeight = function () { 
		h = this.obj.body.scrollHeight;
			
		return h;
	}
	
	return this;
}

function writeFileInput(value,top,left) {
	var opacity = (!browser.IE)?"-moz-opacity:0.0;":"filter:alpha(opacity=0);";
	var position = (browser.IE)?"left:-145px;":"left:-145px;";
	var htmlImg = "<div style=\"position:relative;left:" + left + "px;top:" + top + "px;width:68px;height:27px;\"><input type=\"button\" value=\"" + value + "\"></div>";
	var htmlCont = "<div style=\"position:relative;left:" + left + "px;top:" + top + "px;width:68px;height:27px;overflow:hidden;\"><input style=\"position:relative;" + position + opacity + "\" type=\"file\" name=\"file\" onchange=\"submitForm();\"></div>";

	return htmlImg + htmlCont;
}

function debug() {
	
	//making debug window
	if(typeof debugWindow == "undefined") {
		debugWindow = window.open('about:blank','','scrollbars=yes,menubar=no,height=300,width=300,resizable=yes,toolbar=no,location=no,status=no');
		
	}
	this.add =  function (text) {
					debugWindow.document.write(text + "<br>");
					
				}
	
	return this;
}

// function for smooth expansion
function expandSmooth(dragObj,objRefId,height,width,timeInterval,timeTotal,incDec,expansionType) {
	var heightArray 	= new Array(); 
	var tempHeight;
	
	// finding number of intervals
	var intervals 		= timeTotal/timeInterval;
	
	// calculating array of height values
	if(incDec == 0) { // Plain
		
		tempHeight = Math.floor(height / intervals);
		
		// population height array
		for(var x = 0; x < intervals; x++) {
			heightArray[x] 	= tempHeight;
			
		}
	
	} else if(incDec == 1) { // fast in begining
		tempHeight = Math.floor(height / intervals);
		
		// population height array
		for(var x = 0; x < intervals; x++) {
			heightArray[x] 	= tempHeight;
			
		}
	} else { // slow in begining
	
	}
	
	changeSize(dragObj,objRefId,heightArray,timeInterval,0,expansionType);
}

function changeSize(dragObj,objRefId,heightArray,timeInterval,counter,expansionType) {
	var htmlRef = new element(objRefId);
	
	if(counter < heightArray.length) {
		// doing first
		if(expansionType == 0) { // height
	
			htmlRef.setH(htmlRef.getH() + heightArray[counter] + "px");
			
		} else if(expansionType == 1) { // margin top
		
			htmlRef.setMT(htmlRef.getMT() + heightArray[counter] + "px");
		
		} else if(expansionType == 2) { // padding top
		
			htmlRef.setPT(htmlRef.getPT() + heightArray[counter] + "px");
		
		} else if(expansionType == 3) { // margin top
			htmlRef.setMB(htmlRef.getMB() + heightArray[counter] + "px");
		
		} else { // padding bottom
			htmlRef.setPB(htmlRef.getPB() + heightArray[counter] + "px");
		}
		
		counter++;
		
		dragObj.expansionTimers[objRefId] = setTimeout("changeSize(" + dragObj.strRef +",'" + objRefId + "',Array(" + heightArray.join(',') + ")," + timeInterval + "," + counter +"," + expansionType +");",timeInterval)
	}
}

/* function for checking all elements in checkboxes */
function checkAllCheckbox(strName) {
	
	// getting form
	var el = document.getElementsByName(strName)
	for(i=0;i<el.length;i++){
		el[i].checked = true;
	}

}

/* function for checking all elements in checkboxes */
function uncheckAllCheckbox(strName) {
	// getting form
	var el = document.getElementsByName(strName)
	for(i=0;i<el.length;i++){
		el[i].checked = false;
	}
}

/* function for searching in selectbox */
function searchSelect(objRef,objRefSelect,e) {
	
	// check for enter
	var isEnter = catchEnter(e);
	
	// if is Enter add to counter
	if(isEnter == 13) {
		activeOption++;
		// what to look for
		var strSearch = objRef.value;
	} else {
		activeOption = 0;
		
		
		// what to look for
		var strSearch = objRef.value + catchKey(e);
	}
	

	var trimRegExp 		= new RegExp('^\\s*', 'g');
	var searchRegExp 	= new RegExp('^' + strSearch, 'gi');

	var matchCounter 	= 0;
	
	for(var x=0; x<objRefSelect.options.length; x++) {
		
		var tmpText = objRefSelect.options[x].text;
		tmpText = tmpText.replace(trimRegExp,"");
		
		if(tmpText.match(searchRegExp)) {
			if(matchCounter == activeOption) {
				objRefSelect.options[x].selected = true;
				break;
			}
			matchCounter++;
			
		}
		
	}
	
	if(isEnter == 13) {
		
		return false;
	} else {
		return true;
	}
}

/* function for searching in selectbox */
function catchKey(e) {

     var key;

     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox     
             
     return String.fromCharCode(key);

}

/* function for searching in selectbox */
function catchEnter(e) {

     var key;

     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox     
             
     return key;

}

/* dragging actions */
document.onmousemove 	= 	function (e) {
							mouseState = 1;
							if(documentEventObjects.length) {
								// running bound events
								for(key in documentEventObjects) {
									documentEventObjects[key].onmousemove(e)
								}
							}
						}
							
document.onmouseup 		= function () {
							mouseState = 0;
							if(documentEventObjects.length) {
								// running bound events
								for(key in documentEventObjects) {
									documentEventObjects[key].onmouseup()
								}
							}
						}	
