
var Hsa = {
  Version: '1.0',
  activeRequestCount: 0,
  initConfig: function () {
	this.config = {
		lang: 'fi',
		path: '/js/hsa/',
		backendpath: '/hsapi/',
		helpbubblebackendpath: '/hsapi-helps/'
	};
	},
  require: function(libraryName) {
	document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
  },
  writeLog: function (string) {
        parent.window.status=string;
  },
  addEvent: function(elm, evType, fn, useCapture) {
        if (! elm) return;
                if (elm.addEventListener) {
                        elm.addEventListener(evType, fn, useCapture);
                        return true;
                } else if (elm.attachEvent) {
                        var r = elm.attachEvent('on' + evType, fn);
                        return r;
                } else {
                        elm['on' + evType] = fn;
        }
  },
  findPos: function(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
 },
 currentPageYPosition: function () {
	var currentPageYPosition = (navigator.appName.indexOf("Netscape") != -1) ? pageYOffset : document.documentElement &&
				   document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
	return currentPageYPosition;
 },
  _keepLoadIndicator : function (id) {
	var keepElement = document.getElementById(id);
	var currentPageYPosition = (navigator.appName.indexOf("Netscape") != -1) ? pageYOffset : document.documentElement &&
				   document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
	var currentOptimalPosition = currentPageYPosition;
	if (currentOptimalPosition<keepElement.minY) {
		currentOptimalPosition = keepElement.minY;
	}
	keepElement.y = currentOptimalPosition;
	keepElement.style.top=keepElement.y+"px";
	if (Hsa.activeRequestCount>0) {
		setTimeout("Hsa._keepLoadIndicator('"+id+"')", 20);
	}
  },
  keepLoadIndicator : function (id) {
		var keepElement = document.getElementById(id);
		if (!keepElement)
			return;
		keepElement.minY = 0;
		keepElement.y = keepElement.minY;
		this._keepLoadIndicator(id);
  },

  requestStart: function() {
        Hsa.activeRequestCount++;
        if (Hsa.activeRequestCount>0) {
		jQuery('#busy').fadeIn(100);
		Hsa.keepLoadIndicator('busy');
        }
  },
  requestEnd: function() {
        Hsa.activeRequestCount--;
        if (Hsa.activeRequestCount == 0) {
		jQuery('#busy').fadeOut(200);
        }
   },

   activeLoaderKiller: function() {
	if (Hsa.activeRequestCount == 0) {
		var busyElem = document.getElementById('busy');
		if (busyElem)
			//jQuery(busyElem).fadeOut(200);
			jQuery(busyElem).hide();
	}
	setTimeout("Hsa.activeLoaderKiller()", 1000);
   },

   _debugger: function() {
	setTimeout("Hsa._debugger()", 20);
   },

   getMousePos: function(e) {
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	return [posx, posy];
  },

  init: function() {
	// Hsa._debugger();
	Hsa.initConfig();
	//Hsa.require(this.config.path + 'form.js');
        //Hsa.require(this.config.path + 'hsacalendar.js');
        //Hsa.require(this.config.path + 'productselector.js');
	//Hsa.require(this.config.path + 'introduce.js');
	Hsa.activeLoaderKiller();
  }
}

Hsa.init();

