// odeUtil.js

var theOdeUtils = new odeUtils();

function odeUtils(){
	this.setElementStyle = function(popupId, styleName, val){
		var elem = document.getElementById(popupId);
		if(elem != null){
			eval("elem.style." + styleName + " = '" + val + "';");
		}
	}
	
	this.mouseX = function(evt) {
		if (evt.pageX) 
			return evt.pageX;
		if (evt.clientX)
			return evt.clientX + (document.documentElement.scrollLeft ?
				   document.documentElement.scrollLeft :
				   document.body.scrollLeft);
				   
		return null;
	}
	this.mouseY= function(evt) {
		if (evt.pageY) 
			return evt.pageY;
		if (evt.clientY)
	   		return evt.clientY + (document.documentElement.scrollTop ?
	   				document.documentElement.scrollTop :
	   				document.body.scrollTop);
	   				
		return null;
	}
	
	this.openPopupCell = function(event, popupId){
		if(event == null)
			event = window.event;
		var shiftX = 0;
		var shiftY = -6;
		var elem = document.getElementById(popupId);
		if(elem != null){
			if(elem.style.visibility != "visible"){
				elem.style.left = this.mouseX(event) + shiftX + "px";
				elem.style.top = this.mouseY(event) + shiftY + "px";	
				elem.style.visibility = "visible";
			}
		}
	}
		
	this.decode64 = function(input){
		var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		
		// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		
		do {
		   enc1 = keyStr.indexOf(input.charAt(i++));
		   enc2 = keyStr.indexOf(input.charAt(i++));
		   enc3 = keyStr.indexOf(input.charAt(i++));
		   enc4 = keyStr.indexOf(input.charAt(i++));
		
		   chr1 = (enc1 << 2) | (enc2 >> 4);
		   chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
		   chr3 = ((enc3 & 3) << 6) | enc4;
		
		   output = output + String.fromCharCode(chr1);
		
		   if (enc3 != 64) {
		      output = output + String.fromCharCode(chr2);
		   }
		   if (enc4 != 64) {
		      output = output + String.fromCharCode(chr3);
		   }
		} while (i < input.length);
		
		return output;
	}
}

