﻿var JsLib = {};

function $get(element) {
	return document.getElementById(element);
}

/*
	JsLib._Object
*/
JsLib._Object = function JsLib$Object(){}
	function JsLib$Object$extend(destination, source){
		for (var property in source)
			destination[property] = source[property];
		return destination;
	}
JsLib._Object.prototype = {
	extend: JsLib$Object$extend
}
JsLib.Object = new JsLib._Object();


/*
	JsLib._httpRequest;
*/
JsLib._HttpRequest = function JsLib$HttpRequest(){}
	function JsLib$HttpRequest$loadText(url){
		var xmlHttp=JsLib$HttpRequest$CreateXMLHttpRequest();
		xmlHttp.open('GET',url,false);
		xmlHttp.send(null);
		return xmlHttp.responseText;
	}
	function JsLib$HttpRequest$CreateXMLHttpRequest(){
		if(window.XMLHttpRequest)
			return new XMLHttpRequest();
		else
			if(window.ActiveXObject)
				return new ActiveXObject( "Microsoft.XMLHTTP" );
		return null;
	}
JsLib._HttpRequest.prototype = {
	loadText: JsLib$HttpRequest$loadText
}
JsLib.HttpRequest = new JsLib._HttpRequest();
var $httpRequest = JsLib.HttpRequest;

/*
	JsLib._PopUp
*/
JsLib._PopUp = function JsLib$PopUp(){}
	function JsLib$PopUp$open(url,name){
		var options = JsLib.Object.extend({type:'window',width:500,height:250,top:-1,left:-1,scrollbars:false,status:false,resizable:false},arguments[2]||{});
		if(-1==options.left) options.left=parseInt((screen.width)?(screen.width-options.width)/2:100);
		if(-1==options.top) options.top=parseInt((screen.height)?(screen.height-options.height)/2:100);
		switch(options.type){
			case 'window':JsLib$PopUp$OpenWindow(url,name,options);break;
			case 'htmldiv':JsLib$PopUp$OpenHtmlDiv(url,name,options);break;
		}
	}
JsLib._PopUp.prototype = {
	open: JsLib$PopUp$open
}
JsLib.PopUp = new JsLib._PopUp();
var $popUp = JsLib.PopUp.open;

/*
	JsLib._UI
*/
JsLib._UI = function JsLib$UI(){}
	function JsLib$UI$EqualiseBoxesHeightByClassNameInsideElement(className,elementId) {
		var elements=JsLib.UI.getElementsByClassName(className,null,$get(elementId));
		var maxh=JsLib$UI$maxHeight(elements);
		for (var i=0;i<elements.length;i++) elements[i].style.height = maxh + "px";
	}
	function JsLib$UI$EqualiseBoxesHeightInContainers(classNameForContainers,classNameForChilds) {
		var maxh,containerCount,elements;
		var containers=JsLib.UI.getElementsByClassName(classNameForContainers);
		for(containerCount=0;containerCount<containers.length;containerCount++){
			elements=JsLib.UI.getElementsByClassName(classNameForChilds,null,containers[containerCount]);
			maxh=JsLib$UI$maxHeight(elements);
			for (var i = 0; i < elements.length; i++) elements[i].style.height = maxh + "px";
		}
	}
	function JsLib$UI$EqualiseBoxesHeightByClassName(className) {
		var elements = $getElementsByClassName(className);
		var maxh = JsLib$UI$maxHeight(elements);
		for (var i = 0; i < elements.length; i++) elements[i].style.height = maxh + "px";
	}
	function JsLib$UI$maxHeight(elements){
		var heights=new Array();
		for(var i=0;i<elements.length;i++){
			if (navigator.userAgent.toLowerCase().indexOf('opera')==-1)
				heights.push(elements[i].scrollHeight);
			else
				heights.push(elements[i].offsetHeight);
		}
		heights.sort(function sortNumeric(f,s){return f-s;});
		return heights[elements.length-1];
	}
	function JsLib$UI$GetElementsFromIDs(elementIDs){
		var elements = new Array();
		for(var i=0;i<elementIDs.length;i++)
			elements.push($get(elementIDs[i]));
		return elements;
	}
	function JsLib$UI$GetElementsByClassName(className, tag, elm){
		var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
		var tag = tag || "*";
		var elm = elm || document;
		var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
		var returnElements = [];
		var current;
		var length = elements.length;
		for(var i=0; i<length; i++){
			current = elements[i];
			if(testClass.test(current.className)){
				returnElements.push(current);
			}
		}
		return returnElements;
	}

JsLib._UI.prototype = {
	equaliseBoxesHeightByClassName: JsLib$UI$EqualiseBoxesHeightByClassName,
	equaliseBoxesHeightByClassNameInsideElement: JsLib$UI$EqualiseBoxesHeightByClassNameInsideElement,
	equaliseBoxesHeightInContainers: JsLib$UI$EqualiseBoxesHeightInContainers,
	getElementsByClassName: JsLib$UI$GetElementsByClassName
}
JsLib.UI = new JsLib._UI();
var $getElementsByClassName = JsLib.UI.getElementsByClassName;

/*
	JsLib._Utils
*/
JsLib._Utils = function JsLib$Utils(){}
	function JsLib$Utils$redirect(url){
		window.location.href=url;
	}
JsLib._Utils.prototype = {
	redirect: JsLib$Utils$redirect
}
JsLib.Utils = new JsLib._Utils();
var $redirect=JsLib.Utils.redirect;