// Puraspace combined JS file
//events.js

function isUndefined(v) {
    var undef;
    return v===undef;
}


// JavaScript Document
function addEvent(obj, evType, fn){
   if (obj.addEventListener){
      obj.addEventListener(evType, fn, true);
      return true;
   } else if (obj.attachEvent){
      var r = obj.attachEvent("on"+evType, fn);
      return r;
   } else {
      return false;
   }
  }

  function getEventSrc(e) {
   /* Cookie-cutter code to find the source of the event */
    if (typeof e == 'undefined') {
      var e = window.event;
    }
    var source;
    if (typeof e.target != 'undefined') {
       source = e.target;
    } else if (typeof e.srcElement != 'undefined') {
       source = e.srcElement;
    }
    return source;
    /* End cookie-cutter code */
  }
  
  var domLoadedFunctionList=new Array();
  var domLoaded=false;
  
  function callWhenDOMLoaded(func) {
	  if (domLoaded) {
		  func();
	  } else {
	 	 domLoadedFunctionList.push(func);
	  }
  }
  
  function domLoadedEvent() {
  	if (domLoaded) {
  		return;
  	}
	  domLoaded=true;
	  // quit if this function has already been called
       if (arguments.callee.done) return;

       // flag this function so we don't do the same thing twice
       arguments.callee.done = true;
	   
	   for (var i=0;i<domLoadedFunctionList.length;i++) {
		   domLoadedFunctionList[i]();
	   }
  }
  
   /* for Mozilla */
   if (document.addEventListener) {
       document.addEventListener("DOMContentLoaded", domLoadedEvent, null);
   }

 

   /* for other browsers */
   window.onload = domLoadedEvent;
   

//styleupdates.js
function changeStyle(element, newStyleSuffix) 
{
	if(null != element)
	{
		if (element.originalClass==null || element.originalClass.length==0)
		{
			if (element.className.length>0)
			{
				element.originalClass=element.className;
			}
			else
			{
				element.originalClass=" ";
			}
			
		}
		
		if(element.originalClass.length>0 && element.originalClass != " ")
		{
			element.className = element.originalClass+" "+element.originalClass+newStyleSuffix;
		}
		else
		{
			element.className = newStyleSuffix;
		}
	}
}

function revertToOriginalStyle(element)
{
	if(element != null && null != element.originalClass && element.originalClass.length>0)
	{
		element.className =element.originalClass;
	}
}

function addStyle(element, newStyleSuffix)
{
	if(null != element)
	{
		if(element.className == null)
		{
			element.className = newStyleSuffix;
		}
		else
		{
			element.className += ' ' + newStyleSuffix;
		}
	}
}

function removeStyle(element, newStyleSuffix)
{
	if(element != null && element.className!=null)
	{
		if(element.className.indexOf(newStyleSuffix) != -1)
		{
			var n = element.className.indexOf(newStyleSuffix);
			//alert(element.className);
			element.className = element.className.substr(0, n) + element.className.substr(n + newStyleSuffix.length);
			//alert(element.className);
		}
	}
}

//popupwindow.js
function open_popup(URL) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=400,height=500');");
}

function close_window(){
	if(navigator.appName=="Microsoft Internet Explorer") {
	this.focus();self.opener = this;self.close(); }
	else { window.open('','_parent',''); window.close(); }
	};
	
//ajaxhandler.js
function AJAXHANDLER (){
this.ajax = new AJAX();
this.divEl = null;
this.times = [];
this.sendRequest = function(sendpage,dId){
this.divEl = document.getElementById(dId);
this.ajax.open('get', sendpage );
this.ajax.onreadystatechange = delegate(this, this.handleResponse);
this.ajax.send(null);
}
this.handleResponse = function(e){
this.times.push({'date':new Date().getTime(), 'state':this.ajax.readyState});
if(this.ajax.readyState == 4){
var bodytag = document.getElementsByTagName('body')[0]
if (bodytag){
var response = this.ajax.responseText;
this.divEl.innerHTML = response;
}else {
callWhenDOMLoaded(delegate(this, this.handleResponse));
}
}
}
}
function AJAX(){
this.controlPrefix = null;
this.create = function (){
try {
if (window.XMLHttpRequest) {
var req = new XMLHttpRequest();
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onreadystatechange == "function")
req.onreadystatechange();
}, false);
}
this.httpxml = req;
}
if (window.ActiveXObject) {
this.httpxml = new ActiveXObject(this.getControlPrefix() + ".XmlHttp");
}
}
catch (ex) {}
}
this.getControlPrefix = function() {
if (this.controlPrefix != null){
return this.controlPrefix;
}
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
var o, o2;
for (var i = 0; i < prefixes.length; i++) {
try {
o = new ActiveXObject(prefixes[i] + ".XmlHttp");
o2 = new ActiveXObject(prefixes[i] + ".XmlDom");
return this.controlPrefix = prefixes[i];
}
catch (ex) {};
}
throw new Error("Could not find an installed XML parser");
}
this.create();
return this.httpxml;
}
function delegate( that, thatMethod)
{
if(arguments.length > 2)
{
var _params = [];
for(var n = 2; n < arguments.length; ++n) _params.push(arguments[n]);

return function(e) {_params.unshift(e); return thatMethod.apply(that, _params);}
}
else
return function() { return thatMethod.call(that);
}
}

//popup.js
// default popup set of features
var _POPUP_FEATURES = "location=0,statusbar=0,menubar=0,width=550,height=400";
var _SCROLL_FEATURES = "scrollbars=1,location=0,statusbar=0,menubar=0,width=550,height=335";
var _ZOOM_FEATURES = "location=0,statusbar=0,menubar=0,width=790,height=630";

function raw_popup(url, target, features) {
  if (isUndefined(features)) {
    features = _POPUP_FEATURES;
  }
  if (isUndefined(target)) {
    target = '_blank';
  }
  var theWindow =
    window.open(url, target, features);
  theWindow.focus();
  return theWindow;
}

function link_popup(src, features) {
  var href=src.getAttribute('href');
  if (src.className.indexOf("zoompopuplink") != -1) {
	features=_ZOOM_FEATURES
  }
  if (src.className.indexOf("scrollingpopuplink") != -1) {
	features=_SCROLL_FEATURES
  }
  
  return raw_popup(href, src.getAttribute('target') || '_blank',features);
}
function closepopuplink_click(eventObj) {
	if (window.opener != null) {
		window.opener.focus();
		window.close();
		return false;
	}
}
function popuplink_click(eventObj) {
	var srcElement=getEventSrc(eventObj);
	while( (srcElement!=undefined) && (srcElement.tagName.toLowerCase() !='a')) {
		srcElement=srcElement.parentNode;
	}
	  if (!isUndefined(window.event)) {
		eventObj.returnValue = false;
	  } else {
		eventObj.preventDefault();
	  }
	  link_popup(srcElement);
	return false;//
}

function createPopUpLink(element) {
	addEvent(element, "click", popuplink_click);
	element.title+=" [opens in a popup window]";
}
function initPopupLinks() {
	var aTags=document.getElementsByTagName('a');
	for (var i=0;i<aTags.length;i++) {
		if (aTags[i].className.indexOf("popuplink")!=-1) {
			createPopUpLink(aTags[i]);
		}
		if (aTags[i].className.indexOf("popupclose")!=-1) {
			if (window.opener != null) {
				aTags[i].innerHTML="Close Window";
				addEvent(aTags[i], "click", closepopuplink_click);
			}
		}
	//alert(aTags[i].className+" "+aTags[i].className.indexOf("popuplink"));
	}
}


callWhenDOMLoaded(initPopupLinks);
