﻿function printDoc() {
	if(window.print) window.print();
}

function bookmark (url, description) {
	if(window.external) window.external.AddFavorite(url,description);
}

function hideEl(el) {
	if (document.getElementById)	{
		var disp = document.getElementById(el).style.display;
		if (disp != 'none')
			//disp = 'none';
			document.getElementById(el).style.display = 'none';
 }
}

function showEl(el){
 if (document.getElementById){
  document.getElementById(el).style.display = 'block';
 }
}

function tickCheckBox(el) {
	if (document.getElementById) {
		if (document.getElementById(el)) {
			document.getElementById(el).checked = true;
		}
	}
	return true;
}

function showDiv (el, div, alignX, alignY) {
	if (document.getElementById){
  var i = document.getElementById(el);
		var c = document.getElementById(div);
  if (c.style.display != "block"){
			var box = getDimensions(i);
			var left = box.x, top = box.y;
			c.style.visibility = 'hidden'; // Needed to measure
			c.style.display = "block";     // Needed to measure
			if(alignX == 'left')
				left -= c.offsetWidth;
			else
				left += i.offsetWidth;
			if(alignY == 'top')
				top -= c.offsetHeight;
			else
				top += i.offsetHeight;
			if(top < 10)
				top = 10;
			// XXX: Don't know why IE5 needs this here and not for calendar
			if(gClientIsIE5) {
				left += document.body.scrollLeft;
				top += document.body.scrollTop;
			}
   c.style.left = left + 'px';
	  c.style.top = top + 'px';
			c.style.visibility = 'visible';
		} 
		else {
			c.style.display = "none";
		}
	}
}

function hideDiv (div) {
	if (document.getElementById){
		var c = document.getElementById(div);
		c.style.display = "none";
	}
}

function displayArrow(ulist, image) {
    var ulBlock = document.getElementById(ulist);
    var ulBlockDisplay = ulBlock.style.display;
    var arrowImg = document.getElementById(image);
    if (ulBlockDisplay == "none") {
        arrowImg.style.backgroundPosition = "0 -11px";
    }
    else {
        arrowImg.style.backgroundPosition = "left top";
    }
}

// Getting element dimensions
function getDimensions( elm ) {
	var box = { x:0, y:0, w:0, h:0 };
	if(document.getBoxObjectFor) {
		var boxRef = document.getBoxObjectFor(elm);
		box.x = boxRef.x;
		box.y = boxRef.y;
		box.w = boxRef.width;
		box.h = boxRef.height;
	}
	else if(elm.getBoundingClientRect) {
		var rxIE50 = /MSIE 5\.0/g;
		//alert(rxIE50 + '.test("' + navigator.appVersion + '" = ' + rxIE50.test(navigator.appVersion));
		var boxRef = elm.getBoundingClientRect();
		box.x = boxRef.left;
		box.y = boxRef.top;
		box.w = (boxRef.right - boxRef.left);
		box.h = (boxRef.bottom - boxRef.top);
		//var s='';for(p in boxRef) s+=p+'    '; alert(s);
		// Damn IE...
		if(document.compatMode && document.compatMode != 'BackCompat') {
			// IE6/compliance mode
			box.x += document.documentElement.scrollLeft - 2;
			box.y += document.documentElement.scrollTop - 2;
		}
		else if(!gClientIsIE5) {
			// IE5.5
			box.x += document.body.scrollLeft - 2;
			box.y += document.body.scrollTop - 2;
		}
	}
	else {
		// No known box information available, walking
		// manually through offsetParents to calculate x/y coordinates
		box.w = elm.offsetWidth;
		box.h = elm.offsetHeight;
		while(elm) {
			box.x += elm.offsetLeft;
			box.y += elm.offsetTop;
			if(elm.offsetParent) // Required for Safari 1.3 :(
				elm = elm.offsetParent;
			else
				break;
		}
	}
	var cc;
	if(cc = document.getElementById('bodyconstraint'))
		box.x -= cc.offsetLeft;
	return box;
}

// Basic event handling
function addListener( elm, event, handler ) {
	if(elm.addEventListener)
		elm.addEventListener(event, handler, false);
	else if(elm.attachEvent)
		elm.attachEvent('on'+event, handler);
	else
		elm['on'+event] = handler;
}

function removeListener( elm, event, handler ) {
	if(elm.removeEventListener)
		elm.removeEventListener(event, handler, false);
	else if(elm.detachEvent)
		elm.detachEvent('on'+event, handler);
}

var DOM = {
	isParentOf: function( parentElm, contextElm) {
		while(contextElm && (contextElm != parentElm))
			contextElm = contextElm.parentNode;
		return (contextElm == parentElm);
	},
	getParentOrSelf: function( contextElm, nodeName ) {
		nodeName = nodeName.toLowerCase();
		while(contextElm.nodeName.toLowerCase() != nodeName && contextElm.parentNode)
			contextElm = contextElm.parentNode;
		return contextElm;
	},
	addClass: function( elm, className ) {
		elm.className += ' '+className;
	},
	removeClass: function( elm, className) {
		var classMatch = new RegExp('\\b'+className+'\\b', 'g');
		if(classMatch.test(elm.className))
			elm.className = elm.className.replace(classMatch, ' ');
	}	
};

var gClientIsGecko = (window.controllers) ? true : false;
var gClientIsOpera = (window.opera) ? true : false;
var gClientIsIE    = (document.all && !gClientIsOpera) ? true : false;
var gClientIsIE5   = (gClientIsIE && /MSIE 5\.0/.test(navigator.appVersion)) ? true : false;
var gClientIsIE55  = (gClientIsIE && /MSIE 5\.5/.test(navigator.appVersion)) ? true : false;
var gClientIsIE6   = (gClientIsIE && /MSIE 6\.0/.test(navigator.appVersion)) ? true : false;
var gClientIsIE7   = (gClientIsIE && /MSIE 7\.0/.test(navigator.appVersion)) ? true : false;
var gClientIsMac   = (/Mac/.test(navigator.appVersion)) ? true : false;

// Onload function
function _init() {
	if(window.initDaySelect)
		initDaySelect();
	if(window.initAreaSelect)
		initAreaSelect();
}
//window.onload = _init;
addListener(window, 'load', _init);

function toggleLayer(aLayer)
{
  var elem, vis;
  if (document.getElementById)
    elem = document.getElementById(aLayer);
  else if (document.all)
    elem = document.all[aLayer];
  else if (document.layers)
    elem = document.layers[aLayer];
  vis = elem.style;
  if (vis.display == '' && elem.offsetWidth != undefined && elem.offsetHeight != undefined)
    vis.display = (elem.offsetWidth != 0 && elem.offsetHeight != 0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}

function swapHtml(aElement, aHtml1, aHtml2)
{
  var elem;
  if (document.getElementById)
    elem = document.getElementById(aElement);
  //else if (document.all)
  //  elem = document.all[aElement];
  //else if (document.layers)
  //  elem = document.layers[aElement];
  if (elem.innerHTML == aHtml1)
    elem.innerHTML = aHtml2;
  else elem.innerHTML = aHtml1;
}

// Array functions for IE5
if(!Array.prototype.pop) {
	Array.prototype.pop = function() {
		var item;
		if (this.length > 0) {
			item = this[this.length-1];
			this.length--;
		}
		return item;
	};
}

if(!Array.prototype.push) {
	Array.prototype.push = function() {
		var start = this.length;
		for (var i = 0; i < arguments.length; i++)
			this[start + i] = arguments[i];
		return this.length;
	};
}

if(!Array.prototype.shift) {
	Array.prototype.shift = function() {
		var item = this[0];
		if (item)
			this.splice(0,1);
		return item;
	};
}

if(!Array.prototype.unshift) {
	Array.prototype.unshift = function() {
		this.reverse();
		for(var i=arguments.length-1;i>=0;i--)
			this[this.length]=arguments[i];
		this.reverse();
		return this.length;
	};
}

// Number functions for IE5
if(!Number.prototype.toFixed) {
	Number.prototype.toFixed = function( dc ) {
		dc = (typeof(dc)=='number') ? dc : 0;
		return eval('Math.round(this * 1e' + dc + ') / 1e' + dc);
	};
}
  

