<!--//

	if(typeof bframe == "undefined" || !bframe){
		var bframe = {};
	}

	// -------------------------------------------------------------------------
	// class bframe
	// 
	// -------------------------------------------------------------------------
	bframe.getPageInfo = function() {
		var arr = new Array();
		var node = document.getElementsByTagName('meta');

		for(var i in node) {
			arr[node[i].name] = node[i].content;
		}
		return arr;
	}

	bframe.submit = function(fname, module, page, method, mode, nocheck) {
		// set form object
		if(fname) {
			var form = document.forms[fname];
		}
		else {
			var form = document.forms[0];
		}
		// set hidden object
		if(module) bframe.appendHiddenElement(form, "module", module);
		if(page)   bframe.appendHiddenElement(form, "page", page);
		if(method) bframe.appendHiddenElement(form, "method", method);
		if(mode)   bframe.appendHiddenElement(form, "mode", mode);
		if(nocheck) {
			// detach onbeforeunload event
			window.onbeforeunload = "";
		}
		window.onunload = "";
		try {
			form.submit();
		}
		catch(e) {
			// do nothing (this is only for unspecified error)
		}
	}

	bframe.checkAndSubmit = function(obj_id, msg, fname, module, page, method, mode, nocheck) {
		// set form object
		if(fname) {
			var form = document.forms[fname];
		}
		else {
			var form = document.forms[0];
		}
		target = document.getElementById(obj_id);

		if(target && target.value == ""){
			alert(msg);
			target.focus();
			return false;
		}
		bframe.submit(fname, module, page, method, mode, nocheck);
	}

	bframe.confirmSubmit = function(msg, fname, module, page, method, mode) {
		if(confirm(msg)) {
			bframe.submit(fname, module, page, method, mode, true);
		}
	}

	bframe.appendHiddenElement = function(form, id, value) {
		var element = document.createElement('input');
		element.id = id;
		element.type = "hidden";
		element.name = id;
		element.value = value;

		form.appendChild(element);
	}

	bframe.convert_number = function(src) {
		var str = new String;
		var len = src.length;

		for (var i = 0; i < len; i++) {
			var c = src.charCodeAt(i);
			if (c >= 65281 && c <= 65374 && c != 65340) {
				str += String.fromCharCode(c - 65248);
			} else if (c == 8217) {
				str += String.fromCharCode(39);
			} else if (c == 8221) {
				str += String.fromCharCode(34);
			} else if (c == 12288) {
				str += String.fromCharCode(32);
			} else if (c == 65507) {
				str += String.fromCharCode(126);
			} else if (c == 65509) {
				str += String.fromCharCode(92);
			} else {
				str += src.charAt(i);
			}
		}
		return str;
	}

	bframe.getID = function(obj) {
		if(obj.id.substring(obj.id.length-2, obj.id.length) == '[]') {
			return obj.id.substring(0, obj.id.length-2);
		}
		else {
			return obj.id;
		}
	}

	bframe.checkClassName = function(class_name, obj) {
		if(obj.className) {
			var arr = obj.className.split(' ');
			for(var j=0; j<arr.length; j++) {
		        if(arr[j] == class_name) {
					return true;
				}
			}
		}
		return false;
	}

	bframe.getEventSrcElement = function(event) {
		if(window.event) {
			var	obj = window.event.srcElement;
		}
		else {
			var	obj = event.target;
		}
		return obj;
	}

	bframe.getWindowSize = function() {
		var w = top.window.innerWidth  || top.document.documentElement.clientWidth  || top.document.body.clientWidth;
		var h = top.window.innerHeight || top.document.documentElement.clientHeight || top.document.body.clientHeight;
		return {width:w, height:h};
	}

	bframe.getElementPosition = function(element) {
		if(element.getBoundingClientRect) {
			var position = element.getBoundingClientRect();
			return {left:Math.round(position.left), top:Math.round(position.top)};
		}
		else {
			var coords = {left:0, top:0, width: element.offsetWidth, height:element.offsetHeight};
			while(element) {
				coords.left += element.offsetLeft;
				coords.top += element.offsetTop;
				element = element.offsetParent;
			}
			return {left:Math.round(coords.left), top:Math.round(coords.top)};
		}
	}

	bframe.getScrollPosition = function() {
		if(typeof document.body.style.maxHeight != "undefined") {
			var scrollLeft = document.documentElement.scrollLeft;
			var scrollTop = document.documentElement.scrollTop;
		}
		else {
			var scrollLeft = document.body.scrollLeft;
			var scrollTop = document.body.scrollTop;
		}

		return {left:scrollLeft, top:scrollTop};
	}

	bframe.getMousePosition = function(event) {
		if(window.event) {
			var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
			var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
			x = window.event.clientX;
			y = window.event.clientY;
		}
		else {
			var scrollLeft = 0;
			var scrollTop = 0;
			var x = event.pageX;
			var y = event.pageY;
		}

		return {x:x, y:y, scrollLeft:scrollLeft, scrollTop: scrollTop};
	}

    bframe.cancelEvent = function(e) {
        e.preventDefault? e.preventDefault() : e.returnValue = false;
    }

	bframe.addEventListner = function(obj, event, func) {
		if(obj.addEventListener) {
			obj.addEventListener(event, func, false);
		}
		else if(obj.attachEvent) {
			obj.attachEvent("on"+event, func);
		}
	}

	bframe.addEventListnerAllFrames = function(obj, event, func) {
		bframe.addEventListner(obj.document, event, func);
		for(var i=0;  i < obj.frames.length; i++) {
			bframe.addEventListnerAllFrames(obj.frames[i], event, func);
		}
	}
	bframe.removeEventListner = function(obj, event, func) {
		if(obj.removeEventListener) {
			obj.removeEventListener(event, func, false);
		}
		else if(obj.attachEvent) {
			obj.detachEvent("on"+event, func);
		}
	}

	bframe.removeEventListnerAllFrames = function(obj, event, func) {
		bframe.removeEventListner(obj.document, event, func);
		for(var i=0;  i < obj.frames.length; i++) {
			bframe.removeEventListnerAllFrames(obj.frames[i], event, func);
		}
	}

	bframe.addEventListnerAllIFrames = function(iframe, event, func) {
		if(iframe.contentDocument) {
			children = iframe.contentDocument.getElementsByTagName('iframe');
		}
		else if(iframe.contentWindow){
			children = iframe.contentWindow.document.getElementsByTagName('iframe');
		}
		else {
			children = iframe.document.getElementsByTagName('iframe');
		}
		for(var i=0;  i < children.length; i++) {
			bframe.addEventListner(children[i], event, func);
		}
	}

	bframe.onreadyStateChangeAllIFrames = function(iframe, func) {
		if(iframe.contentWindow) {
			children = iframe.contentWindow.document.getElementsByTagName('iframe');
		}
		else if(iframe.document) {
			children = iframe.document.getElementsByTagName('iframe');
		}
		for(var i=0;  i < children.length; i++) {
			children[i].onreadystatechange = func;
		}
	}

	bframe.fireEvent = function(element, event) {
		if(element.fireEvent) {
			element.fireEvent("on"+event);
		}
		else {
			var clickEvent = window.document.createEvent("MouseEvent"); 
			clickEvent.initEvent(event, false, true); 
			element.dispatchEvent(clickEvent);
		}
	}

    bframe.getButton = function(event) {
		var status;
		if(window.event) {
			var e = window.event;
			switch(e.button) {
			case 1:	status = "L"; break;
			case 2:	status = "R"; break;
			case 3:	status = "B"; break;
			}
		}
		else {
			var e = event;
			switch(e.button) {
			case 0:	status = "L"; break;
			case 1:	status = "C"; break;
			case 2:	status = "R"; break;
			}
		}
		return status;
	}

	bframe.isArray = function(obj) {
		if(obj.constructor.toString().indexOf("Array") == -1) {
			return false;
		}
		else {
			return true;
		}
	}

	bframe.getFileName = function(url) {
    	file_name = url.substring(url.lastIndexOf("/")+1, url.length);
	    return file_name;
	}

	bframe.getRelationObject = function(node, id) {
		if(!node) return;

		var object;
		if(node.tagName.toLowerCase() == 'tr' || !node.parentNode) {
			if(object = bframe.serachNodeById(node, id)) {
				return object;
			}
		}
		else if(node.parentNode) {
			if(object = bframe.getRelationObject(node.parentNode, id)) {
				return object;
			}
		}

		return;
	};

	bframe.serachNodeById = function(node, id) {
		if(!node.childNodes) return;

		var object;
		for(var i=0; i<node.childNodes.length; i++) {
			var child = node.childNodes[i];
			if(child.id == id || child.id == id+'[]') {
				return child;
			}
			else {
				if(object = this.serachNodeById(child, id)) {
					return object;
				}
			}
		}
		return;
	};

	bframe.serachNodeByName = function(node, name) {
		if(!node.childNodes) return;

		var object;
		for(var i=0; i<node.childNodes.length; i++) {
			var child = node.childNodes[i];
			if(child.name == name) {
				return child;
			}
			else {
				if(object = this.serachNodeByName(child, name)) {
					return object;
				}
			}
		}
		return;
	};

	bframe.searchParentById = function(obj, id) {
		if(!obj) return;
		if(obj.id) {
			if(obj.id == id || obj.id.toLowerCase() == id) {
				return obj;
			}
		}
		return this.searchParentById(obj.parentNode, id);
	}

	bframe.searchParentByName = function(obj, name) {
		if(!obj) return;
		if(obj.name) {
			if(obj.name == name || obj.name.toLowerCase() == name) {
				return obj;
			}
		}
		return this.searchParentByName(obj.parentNode, name);
	}

	bframe.searchParentByTagName = function(obj, tag) {
		if(!obj) return;
		if(!obj.tagName) return;
		if(obj.tagName == tag || obj.tagName.toLowerCase() == tag) {
			return obj;
		}
		return this.searchParentByTagName(obj.parentNode, tag);
	}

	bframe.getAbsoluteIndex = function(tr, id) {
		for(i=0 ; i<tr.cells.length ; i++) {
			cell=tr.cells[i];
			for(var j=0 ; j < cell.childNodes.length ; j++) {
				if(cell.childNodes[j].id && cell.childNodes[j].id == id) {
					return i;
				}
			}
		}
		return i;
	}

	bframe.getFrameByName = function(window, name) {
		if(window.name == name) {
			return window;
		}
		if(window.frames.length < 2) {
			return;
		}
		else {
			for(var i=0 ; i<window.frames.length; i++) {
				w = bframe.getFrameByName(window.frames[i], name);
				if(w) {
					return w;
				}
			}
		}
	}

	bframe.getFrameOffset = function(w, target_frame) {
		var p_left=0;
		var p_top=0;

		if(w == top || w == target_frame) {
			return {left: p_left, top: p_top};
		}

		var offset = bframe.getFrameOffset(w.parent, target_frame);
		var frames = w.parent.document.getElementsByName(w.name);

		p_left = frames[0].offsetLeft;
		p_top = frames[0].offsetTop;

		if(offset) {
			p_left += offset.left;
			p_top += offset.top;
		}
		return {left: p_left, top: p_top};
	}

	bframe.opacity = function(id, start, end, millisec) { 
	    //speed for each frame 
	    var speed = Math.round(millisec / 100); 
	    var timer = 0; 

	    //determine the direction for the blending, if start and end are the same nothing happens 
	    if(start > end) { 
	        for(var i = start; i >= end; i--) { 
	            setTimeout("bframe.changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
	            timer++; 
	        } 
	    } else if(start < end) { 
	        for(var i = start; i <= end; i++) 
	            { 
	            setTimeout("bframe.changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
	            timer++; 
	        } 
	    } 
	} 

	//change the opacity for different browsers 
	bframe.changeOpac = function(opacity, id) { 
	    var object = document.getElementById(id).style; 
		if(object) {
		    object.opacity = (opacity / 100); 
		    object.MozOpacity = (opacity / 100); 
		    object.KhtmlOpacity = (opacity / 100); 
		    object.filter = "alpha(opacity=" + opacity + ")"; 
		}
	}

	bframe.setOpac = function(opacity, object) { 
	    object.style.opacity = (opacity / 100); 
	    object.style.MozOpacity = (opacity / 100); 
	    object.style.KhtmlOpacity = (opacity / 100); 
	    object.style.filter = "alpha(opacity=" + opacity + ")"; 
	}

	bframe.printProperties = function(obj) {
		var i=0;
		var properties = '';
		for(var prop in obj) {
			if(i >= 20) {
				properties += prop + "=" + obj[prop] + "\n";
			}
			i++;
		}
		alert(properties);
	}

	var _isFF = false;
	var _isIE = false;
	var _isOpera = false;
	var _isKHTML = false;
	var _isMacOS = false;

	if(navigator.userAgent.indexOf('Macintosh') != -1)
		_isMacOS=true;

	if((navigator.userAgent.indexOf('Safari') != -1)||(navigator.userAgent.indexOf('Konqueror') != -1)) {
		var _KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Safari')+7, 5));

		if(_KHTMLrv > 525) { //mimic FF behavior for Safari 3.1+
			_isFF=true;
			var _FFrv = 1.9;
		}
		else {
			_isKHTML=true;
		}
	}
	else if(navigator.userAgent.indexOf('Opera') != -1) {
		_isOpera=true;
		_OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6, 3));
	}

	else if(navigator.appName.indexOf("Microsoft") != -1) {
		_isIE=true;
	}
	else {
		_isFF=true;
		var _FFrv = parseFloat(navigator.userAgent.split("rv:")[1]);
	}

//-->

