/* Newer Functions */

function def(element) {
	return (element==undefined ? false : true);
}

function danb(element) {
	return ( (def(element)) && element!="" ? true : false );
}

function prependChild(parent, node) {
    if (parent.firstChild) {
        parent.insertBefore(node, parent.firstChild);
    } else {
        parent.appendChild(node);
    }
}

function show(id,display) {
	if(display==undefined) display="block";
	var d=div(id);
	if(d!="")d.style.visibility="visible";
	if(d!="")d.style.display=display;
}

function hide(id) {
	var d=div(id);
	if(d!="")d.style.visibility="hidden";
	if(d!="")d.style.display='none';
}

function hideEl(element) {
	if(element==undefined||element.style==undefined)return;
	element.style.visibility="hidden";
	element.style.display='none';
}

function showEl(element,display) {
	if(display==undefined) display="block";
	if(element==undefined||element.style==undefined)return;
	element.style.visibility="visible";
	element.style.display=display;
}

function createElement(t,i,p,s){return crel(t,i,p,s);}
function crel(type,id,parent,styles) {
	var d = document.createElement(type);
	if(parent!=undefined&&parent=='body') {
		parent = document.getElementsByTagName('body')[0];
	}
	
	if(id!=undefined&&id!="") {
		d.id = id;
	}
	
	if(styles!=undefined){
		stylize(d,styles);
	}
	
	if(parent!=undefined && parent.appendChild)parent.appendChild(d);
	return d;
}

function stylize(element,styles) {
	if(element==undefined||element=="")return;
	for(var x in styles) {
		if(x=='className'||x=='href'||x=='src'){
			element[x]=styles[x];
		} else if(x=='colSpan') {
			element.setAttribute(x,styles[x]);
		} else if(x=='cursor') {
			setCursor(element,styles[x])
		} else if(x=='text') {
			element.appendChild( document.createTextNode(styles[x]) );
		} else {
			element.style[x] = styles[x];
		}
	}
}

function setCursor(el,cursor) {
	if(el==undefined)return;
	try{
		el.style.cursor=cursor;
	} catch(e) {
		try{
			el.style.cursor='default';
		}catch(f) {
			//noop
		}
	}
}

function deleteElement(id) { del(id); }
function del(element_id) {
	var d = div(element_id);
	if(d=="")return;
	d.parentNode.removeChild(d);
}

function mousecoords(e) {
	var m = mouseXY(e);
	return [m['x'],m['y']];
}

div = el = function(id) {
   var d = document.getElementById(id);
   return ( d==undefined ? '' : d );
}

function setOpacity(el,n) {
	if(el==""||el==undefined||el.style==undefined)return;
	el.style.filter = "alpha(opacity="+n+")";
	el.style.opacity=''+(n/100);
}

function insertAfter(newChild, refChild) { 
	refChild.parentNode.insertBefore(newChild,refChild.nextSibling); 
} 

function insertBefore(newChild, refChild) { 
	refChild.parentNode.insertBefore(newChild,refChild); 
} 


/* the following three functions by ppk (quirksmode.org) */
function getinnerwidth() {
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	return [x,y];
}	

function getscrolloffset() {
	var x,y;
	if (self.pageYOffset) // all except Explorer
	{
		x = self.pageXOffset;
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}
	return [x,y];
}

function getpageheight() {
	var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
	     //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}
	return [x,y];
}

/* 	
			BrowserDetect:
			Written by ppk, www.quirksmode.org
		  
		  Taken from http://www.quirksmode.org/js/detect.html
*/
	
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

var Browser = {
	compat: function() {
		if(
			  ( BrowserDetect.browser=='Explorer' && parseFloat(BrowserDetect.version)>=5 ) ||
			  ( BrowserDetect.browser=='Opera' && BrowserDetect.version>=8 ) ||
			  ( BrowserDetect.browser=='Firefox' )
			) {
				return true;
			}
			return false;
		},
	advancedOptions: function() {
		if(
			  ( BrowserDetect.browser=='Explorer' && parseFloat(BrowserDetect.version)>=5.5 ) ||
			  ( BrowserDetect.browser=='Opera' && BrowserDetect.version>=9 ) ||
			  ( BrowserDetect.browser=='Firefox' )
			) {
				return true;
			}
			return false;
	}
};

BrowserDetect.init();


/* the following three functions by ppk (quirksmode.org) */
function getinnerwidth() {
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	return [x,y];
}	

function getscrolloffset() {
	var x,y;
	if (self.pageYOffset) // all except Explorer
	{
		x = self.pageXOffset;
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}
	return [x,y];
}

function getpageheight() {
	var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
	     //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}
	return [x,y];
}


/*************
CONSTANTS
**************/

//var _baseURL = 'http://cfsadmin.org.dev.offshootinc.com/';
var _baseURL = '/';

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,"scrollbars=no," + features);
}

function imgfunc(imgname) {
   	MM_openBrWindow("popup_image.php?path=" + imgname);
}

function hideDiv(dateID){
	if (document.layers) {
		document.layers[dateID].display = 'none';
	} else if (document.all) {
		document.all[dateID].style.display = 'none';
	} else {
		document.getElementById(dateID).style.display = 'none';
	}
}

function showDiv(dateID){
	if (document.layers) {
		document.layers[dateID].display = 'block';
	} else if (document.all) {
		document.all[dateID].style.display = 'block';
	} else {
		document.getElementById(dateID).style.display = 'block';
	}
}

function setAction(the_form, val){
	document.forms[the_form].elements['action'].value = val;
	//alert(document.forms[the_form].elements['action'].value);
}
	
function flagImage(the_form, name){
	document.forms[the_form].elements['image'].value = name;
}

function toggleView(divId, path){

		if (document.layers) {
			target = document.layers[divId].display;
		} else if (document.all) {
			target = document.all[divId].style.display;
		} else {
			target = document.getElementById(divId).style.display;
		}

		toggle = document[ divId + "_IMG" ];
    
		if (target == "table"){
			target = "none";
			toggle.src= path + divId + "_plus.jpg";										
		} else {
			target = "table";				
			toggle.src= path + divId +"_minus.jpg";					
		}

		if (document.layers) {
			document.layers[divId].display = target;
		} else if (document.all) {
			document.all[divId].style.display = target;
		} else {
			document.getElementById(divId).style.display = target;
		}	
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

// updated to work with safari
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		while (true) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
			  break;
			obj = obj.offsetParent;
		}
	} 
	
	return [curleft,curtop];
}

function getElementsByClassName(theClass,d,c) {
  if(!document.hasChildNodes) return false;
   
  if(!c) var c = new Array();
  if(!d) var d = document.body;
  
  if(d.nodeType == 1 && d.className.match("^" + theClass + "$")) {
    c.push(d);
  }
  
  if(d.hasChildNodes()) {
    
    for(var i = 0; i < d.childNodes.length; i++) {
      getElementsByClassName(theClass,d.childNodes[i],c);
    }
    
    return c;
    
  } else {
    
    return c;
    
  }
}

function newElement(elementType,attributes) {
  
  var d = document;
  if(!d.createElement) return false;
  
  /* if we're trying to make a radio button */
  if(elementType == "input") {
    
    /* Try the IE way first */
    var inputStr = "<input";
    
    for(var j in attributes) {
      
      if(j == "className") {
      
        inputStr += " class=\"" + attributes[j] + "\"";
        
      } else {
        
        inputStr += " " + j + "=\"" + attributes[j] + "\"";
        
      }
    }
    
    inputStr += " />";
    
    try {
      newEl = d.createElement(inputStr);
    } catch(e) {
      // do nothing
    }
    
  }
  
  if(elementType == "button") {
    
    var buttStr = "<button ";
    
    for(var j in attributes) {
      
      switch(j) {
        case "value":
          // do nothing
          break;
          
        case "className":
          buttStr += " class=\"" + attributes[j] + "\"";
          break;
          
        case "text":
          // do nothing
          break;
          
        default:
          buttStr += " " + j + "=\"" + attributes[j] + "\"";
      }
      
    }
    
    buttStr += " ></button>";
    
    try {
      newEl = d.createElement(buttStr);
      
      if(typeof(attributes["text"]) != "undefined" && attributes["text"] != null) {
        newEl.appendChild(document.createTextNode(attributes["text"]));
      } else {
        newEl.appendChild(document.createTextNode(""));
      }
    } catch(e) {
      
    }
    
  }
  
  // if newEl hasn't already been created      
  if(typeof(newEl) == "undefined") {
    
    var newEl = d.createElement(elementType);
    
    for(var j in attributes) {

      if(j == "text") {

        var text = d.createTextNode(attributes[j]);
        newEl.appendChild(text);

      } else if (j == "className") {

        newEl.setAttribute(j,attributes[j]);
        newEl.setAttribute(j.substr(0,5),attributes[j]);

      } else {

        newEl.setAttribute(j,attributes[j]);

      }
    }
  }

  return newEl;

}

function setClass(item,classText) {
  item.setAttribute("className",classText);
  item.setAttribute("class",classText);
}

function setStyles(element,styleObj) {
  
  for(var j in styleObj) {
    
    if(j == "float") {
      if(document.all) {
        element.style.styleFloat = styleObj[j];
      } else {
        element.style.cssFloat = styleObj[j];
      }
    } else {
      element.style[j] = styleObj[j];
    }
  }
  
}

String.prototype.stripWhite = function() {
  
  // strip leading whitespace
  tmp_str = this.replace(/^\s+/m,"");
  
  // strip trailing whitespace
  tmp_str = tmp_str.replace(/\s+$/m,"");
  
  return tmp_str;
}

// this function gives the "indexOf" functionality to the Apple Safari Browser
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

function exists(node) {
  if(typeof(node) != "undefined" && node != null) {
    return true;
  } else {
    return false;
  }
}

function callback(obj,method) {
  return function() {
    method.apply(obj,arguments);
  }
}

function findParent(node,tag) {
  
  while(node.nodeName.toLowerCase() != tag) {
    node = node.parentNode;
  }
  
  return node;
  
}

function getNodeData(node,nodeName) {
  
  return node.getElementsByTagName(nodeName)[0].firstChild.nodeValue;
  
}

function getViewportSize()
{
 var size = [0, 0];

 if (typeof window.innerWidth != 'undefined')
 {
   size = [
       window.innerWidth,
       window.innerHeight
   ];
 }
 else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
 {
   size = [
       document.documentElement.clientWidth,
       document.documentElement.clientHeight
   ];
 }
 else
 {
   size = [
       document.getElementsByTagName('body')[0].clientWidth,
       document.getElementsByTagName('body')[0].clientHeight
   ];
 }

 return {w:size[0],h:size[1]};
}

function getDocumentSize() {
  
  var size = [];
  
  if(document.documentElement && document.documentElement.scrollWidth) {
    
    size = [document.documentElement.scrollWidth,
            document.documentElement.scrollHeight];
    
  } else if(document.body.scrollWidth) {
    
    size = [document.body.scrollWidth,
            document.body.scrollHeight];
    
  }
  
  return {w:size[0],h:size[1]};
  
}

function getScrollXY() {
  
  var x = window.pageXOffset || 
          document.body.scrollLeft || 
          document.documentElement.scrollLeft;
          
  var y = window.pageYOffset || 
          document.body.scrollTop || 
          document.documentElement.scrollTop;
          
  return {x:x ? x : 0,y:y ? y : 0};
  
}

startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("header_tabs");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
  }
  node.onmouseout=function() {
  this.className=this.className.replace(" over", "");
   }
   }
  }
 }
}

function getTargetElement(e) {
  if(!e) var e = window.event;
  if(e.target) targ = e.target;
  else if(e.srcElement) targ = e.srcElement;
  if(targ.nodeType == 3) // defeat safari bug
    targ = targ.parentNode;
    
  return targ;
}

/*
function insertAfter(theParent,newNode,targetNode) {
  
  if(exists(targetNode.nextSibling)) {
    theParent.insertBefore(newNode,targetNode.nextSibling);
  } else {
    theParent.appendChild(newNode);
  }
  
}
*/

function insertAfter(newNode, siblingID) {
  
  if(siblingID.nodeType == 1) {
    var sibling = siblingID;
  } else {
    var sibling = document.getElementById(siblingID);
  }
  
  var theNextSibling = sibling.nextSibling;
  var theSiblingsParent = sibling.parentNode;
  
  if(theNextSibling) {
    theSiblingsParent.insertBefore(newNode,theNextSibling);
  } else {
    theSiblingsParent.appendChild(newNode);
  } 
}

function removeChildren(node) {
  
  while(node.hasChildNodes()) {
    
    node.removeChild(node.lastChild);
    
  }
  
}

function getNodeData(node) {
  
  if(node.hasChildNodes()) {
    return node.firstChild.nodeValue;
  } else {
    return "";
  }
  
}

function changeOpac(opac,node) {
  
  var obj = node.style;
  obj.opacity = (opac / 100);
  obj.mozOpacity = (opac / 100);
  obj.KhtmlOpacity = (opac / 100);
  //obj.filter = "alpha(opacity=" + opac + ")";
  obj.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+opac+")";
  
}

function mouseXY(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 {x:posx,y:posy};

}

/* section navigation functions */

function setUpExpandList() {
  if(!document.getElementById) return false;
  
  var list = document.getElementById("sections");
  
  if(exists(list)) {
  
    var expanders = new Array();
    
    for(var i = 0; i < list.childNodes.length; i++) {
      if(list.childNodes[i].nodeName == "LI") {
        if(list.childNodes[i].className.match("expand")) {
          expanders.push(list.childNodes[i]);
        }
      }
    }
    
    for(var i = 0; i < expanders.length; i++) {
      
      expanders[i].getElementsByTagName("img")[0].onclick = function() {
        
        if(this.className.match("collapsed")) {
          
          this.className = "expanded";
        
          var listEl = findParent(this,"li");
          
          var ul = listEl.getElementsByTagName("ul")[0];
          
          ul.style.display = "block";
          
          this.src = _baseURL + "imgs/common/collapse_bullet.gif";
          
        } else {
          
          this.className = "collapsed";
          
          var listEl = findParent(this,"li");
          
          var ul = listEl.getElementsByTagName("ul")[0];
          
          ul.style.display = "none";
          
          this.src = _baseURL + "imgs/common/expand_bullet.gif";
          
        }
        
      }
      
    }
    
  }
  
}

//addLoadEvent(setUpExpandList);

function rowShading(tbody) {
  
  var rows = tbody.getElementsByTagName("tr");
  
  for(var i = 0; i < rows.length; i++) {
    if(i % 2) {
      rows[i].className = rows[i].className.replace(/(even)|(odd)/gi,"even");
    } else {
      rows[i].className = rows[i].className.replace(/(even)|(odd)/gi,"odd");
    }
    
  }
  
}

function showDescSetUp() {
  
  var hideBtn = document.getElementById("hideDescOnClick");
  
  if(exists(hideBtn)) {
    
    hideBtn.onclick = function() {
    
     hideDescs();
     
   }
    
  }
  
  var csDescBtn = document.getElementById("showComingSoonDescOnClick");
  
  if(exists(csDescBtn)) {
    
    csDescBtn.onclick = function() {
    
      hideDescs();
      document.getElementById("ComingSoonDescription").style.display = "block";
      
    }
    
  }
  
}

addLoadEvent(showDescSetUp);

function hideDescs() {
  
  document.getElementById("ComingSoonDescription").style.display = "none";
  
}

function itemDeleteSetUp() {
  
  var items = getElementsByClassName("itemDelete");
  
  for(var i = 0; i < items.length; i++) {
    
    items[i].onclick = function() { return itemDelete(this.href) };
    
  }
  
}

addLoadEvent(itemDeleteSetUp);

function itemDelete(href) {
  
  var vp = getViewportSize();
  var docs = getDocumentSize();
  var scr = getScrollXY();
  
  var shade = newElement("div",{id:"shade"});
  
  document.body.appendChild(shade);
  
  if(vp.w < docs.w) {
    sw = 18;
  } else {
    sw = 0;
  }
  
  setStyles(shade,{
    position:"absolute",
    top:scr.y + "px",
    left:scr.x + "px",
    width:vp.w + "px",
    height:vp.h - sw + "px",
    background:"#000",
    zIndex:"990"
  });
  
  changeOpac(50,shade);
  
  var popUpWidth = 363;
  var popUpHeight = 122;
  
  var confirmDiv = newElement("div",{id:"conf"});
  
  var para = newElement("p");
  para.appendChild(newElement("img",{src:_baseURL + "imgs/common/error_icon.gif"}));
  var text = document.createTextNode( languages[lang]['deleteconfirm'] );
  para.appendChild(text);
  setStyles(para,{color:"#0071a7",fontSize:"1.2em",fontWeight:"900",marginTop:"15px",marginLeft:"20px"});
  
  var yesBtn = newElement("button",{name:"yes",type:"button",value:"true",className:"imgbtn"});
  yesBtn.appendChild(newElement("span",{text:languages[lang]['yes']}));
  setStyles(yesBtn,{marginLeft:"230px",marginTop:"35px"});
  
  var cancelBtn = newElement("button",{name:"cancel",type:"button",value:"true",className:"imgbtn"});
  cancelBtn.appendChild(newElement("span",{text:languages[lang]['cancel']}));
  setStyles(cancelBtn,{marginTop:"35px"});
  
  confirmDiv.appendChild(para);
  confirmDiv.appendChild(yesBtn);
  confirmDiv.appendChild(cancelBtn);
  
  document.body.appendChild(confirmDiv);
  
  setStyles(confirmDiv,{
    position:"absolute",
    zIndex:"991",
    top:scr.y + (vp.h / 2) - (popUpHeight / 2) + "px",
    left:scr.x + (vp.w / 2) - (popUpWidth / 2) + "px",
    width:popUpWidth + "px",
    height:popUpHeight + "px",
    background:"url(" + _baseURL + "imgs/common/conf_bg.gif) no-repeat"
  });
  
  
  /* background and form popup resizing and scrolling events */
  
  window.onresize = function() {
    
    var vp = getViewportSize();
    var scr = getScrollXY();
    var docs = getDocumentSize();
    
    if(vp.w < docs.w) {
      sw = 18;
    } else {
      sw = 0;
    }
    
    setStyles(shade,{
      top:scr.y + "px",
      left:scr.x + "px",
      width:vp.w + "px",
      height:vp.h - sw + "px"
    });
    
    setStyles(confirmDiv,{
      top:scr.y + (vp.h / 2) - (popUpHeight / 2) + "px",
      left:scr.x + (vp.w / 2) - (popUpWidth / 2) + "px"
    });
    
  }
  
  window.onscroll = function() {
    
    var vp = getViewportSize();
    var scr = getScrollXY();
    var docs = getDocumentSize();
    
    if(vp.w < docs.w) {
      sw = 18;
    } else {
      sw = 0;
    }
    
    setStyles(shade,{
      top:scr.y + "px",
      left:scr.x + "px",
      width:vp.w + "px",
      height:vp.h - sw + "px"
    });
    
    setStyles(confirmDiv,{
      top:scr.y + (vp.h / 2) - (popUpHeight / 2) + "px",
      left:scr.x + (vp.w / 2) - (popUpWidth / 2) + "px"
    });
    
  }
  
  /* confirmation button events */
  
  cancelBtn.onclick = function() {
    
    shade.parentNode.removeChild(shade);
    
    var conf = document.getElementById("conf");
    
    if(exists(conf)) {
    
      conf.parentNode.removeChild(conf);
      
    }
    
  }
  
  yesBtn.onclick = function() {
    
    window.location = href;
    
  }
  
  return false;
  
}

/* function for changing the preview image in the colour scheme selection interface */

function changePrev(template,scheme) {
  
  var prev = document.getElementById("previewImg");
  
  if(exists(prev)) {
    
    prev.src = _baseURL + "imgs/previews/t"+template+"_s"+scheme+".gif";
    
  }
  
}

function popup() {
	if(arguments.length<4)return;
	var text = arguments[0];
	var html = "";
	html += "<p class=\"popUpTxt\">" +
		"  <img src=\"" + _baseURL + "imgs/common/alert_icon.gif\" alt=\"\" title=\"\" />" +
		"  "+text
		"</p>\n";
	html += "<p class=\"popUpBtn\">";
		"  <a href=\"#\" id=\"buttonLink"+languages['en']['cancel']+"\">" +
		"    <span>"+languages[lang]['cancel']+"</span>" +
		"  </a>";
	for(var i=1;i<arguments.length;i+=3) {
		html+="  <a href=\"" + arguments[i+1] + "\" id=\"buttonLink"+arguments[i+2]+"\">" +
			"    <span>"+arguments[i]+"</span>" +
			"  </a>";
	}
	html+="</p>\n";


	var vp = getViewportSize();
	var docs = getDocumentSize();
	var scr = getScrollXY();
	  
	var scrollSize = 18;
	 
	var popUpWidth = 363;
	var popUpHeight = 122;
	  
	var shade = newElement("div",{id:"shade"});
	  
	document.body.appendChild(shade);
	  
	if(vp.w < docs.w) {
		shadeHeight = vp.h - scrollSize;
	} else {
		shadeHeight = vp.h;
	}
	  
	if(vp.h < docs.h) {
		shadeWidth = vp.w - scrollSize;
	} else {
		shadeWidth = vp.w;
	}
      
  setStyles(shade,{
    position:"absolute",
    top:scr.y + "px",
    left:scr.x + "px",
    zIndex:"990",
    width:shadeWidth  + "px",
    height:shadeHeight + "px",
    background:"#000"
  });
      
  changeOpac(50,shade);
    
  var popUpDiv = newElement("div",{id:"popUpDiv"});
  popUpDiv.innerHTML = html;
    
  document.body.appendChild(popUpDiv);
    
  setStyles(popUpDiv,{
    position:"absolute",
    top:(vp.h / 2) - (popUpHeight / 2) + "px",
    left:(vp.w / 2) - (popUpWidth / 2) + "px",
	top:(vp.h / 2) - (popUpHeight / 2) + scr.y + "px",
    left:(vp.w / 2) - (popUpWidth / 2) + scr.x + "px",
	zIndex:"991",
    width:popUpWidth + "px",
    height:popUpHeight + "px",
    background:"url(" + _baseURL + "imgs/common/messpopup_bg.gif) no-repeat"
  });
    
  var cancelBtn = document.getElementById("buttonLinkCancel");
  if(exists(cancelBtn)) {
      cancelBtn.onclick = function() {     
        shade.parentNode.removeChild(shade);
        popUpDiv.parentNode.removeChild(popUpDiv);
        return false;
      }
  }
    
  var yesBtn = document.getElementById("buttonLinkYes");
  if (exists(yesBtn)) {
    	yesBtn.onclick = function() {
        shade.parentNode.removeChild(shade);
        popUpDiv.parentNode.removeChild(popUpDiv);
        return true;
      }
  }
    		
    
  var browsechange = function() {
      var vp = getViewportSize();
      var docs = getDocumentSize();
      var scr = getScrollXY();
      
      if(vp.w < docs.w) {
          shadeHeight = vp.h - scrollSize;
      } else {
          shadeHeight = vp.h;
      }
      
      if(vp.h < docs.h) {
          shadeWidth = vp.w - scrollSize;
      } else {
          shadeWidth = vp.w;
      }
      
      setStyles(shade,{
        top:scr.y + "px",
        left:scr.x + "px",
        width:shadeWidth + "px",
        height:shadeHeight + "px"
      });
      
      setStyles(popUpDiv,{
        top:(vp.h / 2) - (popUpHeight / 2) + scr.y + "px",
        left:(vp.w / 2) - (popUpWidth / 2) + scr.x + "px"
      });
  }
  window.onresize = browsechange;
  window.onscroll = browsechange;
    
  return false;
}

/* AJAX Functionality ============================================================= */

/* Poll Ajax */

function setUpPollsInterface() {
  if(!document.getElementById) return false;
  
  var pollSubmitBtn = document.getElementById("submitPoll");
  
  if(exists(pollSubmitBtn)) {
    
    pollSubmitBtn.onclick = function() {
      
      var inputs = document.getElementById("pollQuestion").getElementsByTagName("input");
      
      var questionID = inputs[0].value;
      
      var answerID = "";
      
      for(var i = 0; i < inputs.length; i++) {
        
        if(inputs[i].type == "radio") {
          
          if(inputs[i].checked) {
            answerID = inputs[i].value;
          }
          
        }
        
      }
      
      if(!answerID) {
        
        alert("You must select an answer before submitting to the poll");
        
      } else {
        
        // this URL will need a slash "/" at the end when everything is working together
        var baseURL = "http://www.offshootinc.net/CFSphase2/mockwebservice/polls.php";
        
        // function name will need to be supplied when systems are working togther
        url = XMLRequestParamsURL(baseURL,"","questionID",questionID,"answerID",answerID);
        
        AjaxUpdater.update("post",url,parsePollResults);
        
      }
      
    }
    
  }
  
}

addLoadEvent(setUpPollsInterface);

function parsePollResults() {
  
  if(Ajax.checkReadyState() == 200) {
    
    var results = Ajax.getResponse().getElementsByTagName("poll")[0];
    
    var answers = new Array();
    
    var answersXML = results.getElementsByTagName("answer");
    
    for(var i = 0; i < answersXML.length; i++) {
      
      title = answersXML[i].getElementsByTagName("title")[0].firstChild.nodeValue;
      percent = answersXML[i].getElementsByTagName("percent")[0].firstChild.nodeValue;
      
      answers.push({title:title,percent:percent})
      
    }
    
    var numOfPeople = results.getElementsByTagName("numOfPeople")[0].firstChild.nodeValue;
    
    displayPollResults(answers,numOfPeople);
    
  }
  
}

function displayPollResults(answers,numOfPeople) {
  
  // create elements to be displayed
  
  var colours = new Array();
  colours.push("red");
  colours.push("green");
  colours.push("blue");
  colours.push("orange");
  colours.push("red");
  
  var headerP = newElement("p",{text:"Poll Results",className:"question"});
  
  var table = newElement("table",{className:"poll_results"});
  var tbody = newElement("tbody");
  table.appendChild(tbody);
  
  for(var i = 0; i < answers.length; i++) {
    
    if(i % 2) {
      rowClass = "odd";
    } else {
      rowClass = "even";
    }
    
    tr = newElement("tr",{className:rowClass});
    tbody.appendChild(tr);
    td = newElement("td");
    tr.appendChild(td);
    
    p = newElement("p",{text:answers[i].title});
    td.appendChild(p);
    
    divOuter = newElement("div",{className:"percent_outer"});
    td.appendChild(divOuter);
    
    divInner = newElement("div");
    divOuter.appendChild(divInner);
    
    setStyles(divInner,{
      width:answers[i].percent + "%",
      background:colours[i]
    });
    
    percentSpan = newElement("span",{text:"(" + answers[i].percent + "%)"});
    divInner.appendChild(percentSpan);
    
  }
  
  var spacerTr = newElement("tr",{className:"spacer"});
  var spacerTd = newElement("td");
  spacerTr.appendChild(spacerTd);
  tbody.appendChild(spacerTr);
  
  var numOfPeopleP = newElement("p",{text:numOfPeople + " people have responded to this poll."});
  
  var pollQuestion = document.getElementById("pollQuestion").style.display = "none";
  
  var pollResults = document.getElementById("pollResults");
  
  pollResults.appendChild(headerP);
  pollResults.appendChild(table);
  pollResults.appendChild(numOfPeopleP);
}

function initAddTextFieldOld() {
  
  var addTextFieldBtn = document.getElementById("addTextField");
  
  if(exists(addTextFieldBtn)) {

    addTextFieldBtn.onclick = function() {
      
      var customTextFields = getElementsByClassName("customTextField");
      
      if(customTextFields.length < 3) {
      
        this.parentNode.removeChild(this);
        
        var minusButton = document.getElementById("minusTextField");
        
        // create minus button for removing custom fields
        
        if(exists(minusButton)) {
          
          minusButton.parentNode.removeChild(minusButton);
          
        } else {
          
          minusButton = newElement("button",{type:"button",name:"minusTextField",id:"minusTextField",value:"true",className:"imgbtn"});
          minusButtonSpan = newElement("span",{text:"-"});
          minusButton.appendChild(minusButtonSpan);
          
        }
        
        // assign function to minus button
        
        minusButton.onclick = minusTextFieldButtonFunc;
        
        var clone = customTextFields[customTextFields.length-1].cloneNode(true);
        
        var cloneBr = clone.getElementsByTagName("br")[0];
        
        clone.insertBefore(this,cloneBr);
        clone.insertBefore(minusButton,cloneBr);
        
        var cloneInputs = clone.getElementsByTagName("input");
        
        cloneInputs[0].value = "Edit Label";
        
        for(var i = 0; i < cloneInputs.length; i++) {
          cloneInputs[i].name = cloneInputs[i].name.replace(/\d+/gi,customTextFields.length);
        }
        
        var customTextFieldsArea = document.getElementById("customTextFieldsArea");
        
        customTextFieldsArea.appendChild(clone);
        
      }
      
    }

  }
  
}

function minusTextFieldButtonFunc() {
  
  var customTextFields = getElementsByClassName("customTextField");
  
  var addButton = document.getElementById("addTextField");
  var minusButton = document.getElementById("minusTextField");
  
  if(customTextFields.length > 2) {
    
    br = customTextFields[customTextFields.length-2].getElementsByTagName("br")[0];
    
    customTextFields[customTextFields.length-2].insertBefore(addButton,br);
    customTextFields[customTextFields.length-2].insertBefore(minusButton,br);
    
    customTextFields[customTextFields.length-1].parentNode.removeChild(customTextFields[customTextFields.length-1]);
    
  } else {
    
    minusButton.parentNode.removeChild(minusButton);
    
    br = customTextFields[customTextFields.length-2].getElementsByTagName("br")[0];
    
    customTextFields[customTextFields.length-2].insertBefore(addButton,br);
    customTextFields[customTextFields.length-1].parentNode.removeChild(customTextFields[customTextFields.length-1]);
  }
  
}


function initAddCheckBoxOld() {
  
  var addCheckBoxBtn = document.getElementById("addCheckBox");
  
  if(exists(addCheckBoxBtn)) {

    addCheckBoxBtn.onclick = function() {
      
      var customCheckBoxes = getElementsByClassName("customCheckBox");
      
      if(customCheckBoxes.length < 3) {
      
        this.parentNode.removeChild(this);
        
        var minusButton = document.getElementById("minusCheckBox");
        
        // create minus button for removing custom fields
        
        if(exists(minusButton)) {
          
          minusButton.parentNode.removeChild(minusButton);
          
        } else {
          
          minusButton = newElement("button",{type:"button",name:"minusCheckBox",id:"minusCheckBox",value:"true",className:"imgbtn"});
          minusButtonSpan = newElement("span",{text:"-"});
          minusButton.appendChild(minusButtonSpan);
          
        }
        
        // assign function to minus button
        
        minusButton.onclick = minusCheckBoxButtonFunc;
        
        var clone = customCheckBoxes[customCheckBoxes.length-1].cloneNode(true);
        
        var cloneBr = clone.getElementsByTagName("br")[0];
        
        clone.insertBefore(this,cloneBr);
        clone.insertBefore(minusButton,cloneBr);
        
        var cloneInputs = clone.getElementsByTagName("input");
        
        cloneInputs[0].value = "Edit Label";
        
        for(var i = 0; i < cloneInputs.length; i++) {
          cloneInputs[i].name = cloneInputs[i].name.replace(/\d+/gi,customCheckBoxes.length);
        }
        
        var customCheckBoxesArea = document.getElementById("customCheckBoxesArea");
        
        customCheckBoxesArea.appendChild(clone);
        
      }
      
    }

  }
  
}

function minusCheckBoxButtonFunc() {
  
  var customCheckBoxes = getElementsByClassName("customCheckBox");
  
  var addButton = document.getElementById("addCheckBox");
  var minusButton = document.getElementById("minusCheckBox");
  
  if(customCheckBoxes.length > 2) {
    
    br = customCheckBoxes[customCheckBoxes.length-2].getElementsByTagName("br")[0];
    
    customCheckBoxes[customCheckBoxes.length-2].insertBefore(addButton,br);
    customCheckBoxes[customCheckBoxes.length-2].insertBefore(minusButton,br);
    
    customCheckBoxes[customCheckBoxes.length-1].parentNode.removeChild(customCheckBoxes[customCheckBoxes.length-1]);
    
  } else {
    
    minusButton.parentNode.removeChild(minusButton);
    
    br = customCheckBoxes[customCheckBoxes.length-2].getElementsByTagName("br")[0];
    
    customCheckBoxes[customCheckBoxes.length-2].insertBefore(addButton,br);
    customCheckBoxes[customCheckBoxes.length-1].parentNode.removeChild(customCheckBoxes[customCheckBoxes.length-1]);
  }
  
}

addLoadEvent(bindDeleteLinks);
function bindDeleteLinks() {
	var inSections = location.href.match(/\/sections\//);
	var imgs = document.getElementsByTagName("IMG");
	for(var i=0;i<imgs.length;i++) {
		if( imgs[i].src.match('imgs/common/delete.gif') && def(imgs[i].parentNode) && danb(imgs[i].parentNode.href) ) {
			imgs[i].parentNode.onclick = function(e) {
				var el = getTargetElement(e);
				var href;
				if( danb(el.href) && !(def(el.src) && el.href==el.src) ) {
					href = el.href;
				} else {
					if( def(el.parentNode) && danb(el.parentNode.href) ) {
						href = el.parentNode.href;
					}
				}
				if(!danb(href))return false;
				
				popup(
					inSections ? languages[lang]['deletesectionconfirm'] : languages[lang]['deleteconfirm'],
					languages[lang]['yes'],href,languages['en']['yes'],
					languages[lang]['cancel'],"#",languages['en']['cancel']
				);
				
				if( inSections && lang=='fr' ) {
					var element = getElementsByClassName('popUpBtn');
					if( element && element.length && element[0] ) {
						element[0].style.marginTop='0px';
					}
				}
				
				return false;
			}
		}
	}
}

function bindMoveLinks(func) {
	if( !def(func) ) return;
	var imgs = document.getElementsByTagName("IMG");
	for(var i=0;i<imgs.length;i++) {
		if( imgs[i].src.match('imgs/common/move_arrows.gif') ) {
			imgs[i].onmousedown = func;
			stylize( imgs[i], {cursor:'pointer'} );
		}
	}
}


function removeAllChildren( element ) {
	if( !def(element) || !def(element.childNodes) ) return;
	while( element.childNodes.length>0 ) {
		element.removeChild( element.childNodes[0] );
	}
}


var languages = {
	'en': {
		deletesectionconfirm:'Are you sure you want to delete this section? All content in this section will be lost. There is no undo.',
		cannotdrop:'Cannot drop here because that would create a section with more than %MAXLEVELS% subsections.',
		dropbefore:'Drop to place this before "%NAME%".',
		dropafter:'Drop to place this after "%NAME%".',
		dropsubsection:'Drop to make this a subsection of "%NAME%".',
		droptoplevel:'Drop to make this a main section.',
		custom:'Custom',
		deleteconfirm:'Are you sure you want to delete this item?',
		yes:'Yes',
		cancel:'Cancel',
		savechanges:'Save Changes',
		rearrangeimages:'Rearrange Images',
		answerno:'Answer #',
		enterlabel:'Enter Label...'
	},
	'fr': {
		deletesectionconfirm:'\u00cates-vous s\u00fbr(e) de vouloir supprimer cette section? Tout le contenu de cette section sera perdu. Il ne sera pas possible de le r\u00e9cup\u00e9rer.',
		cannotdrop:'Impossible de d\u00e9placer ici, car cela cr\u00e9era une section avec plus de %MAXLEVELS% sous-sections.',
		dropbefore:'D\u00e9placer ceci devant \u00ab %NAME% \u00bb.',
		dropafter:'D\u00e9placer ceci apr\u00e8s \u00ab %NAME% \u00bb.',
		dropsubsection:'D\u00e9placer ceci pour en faire une sous-section de \u00ab %NAME% \u00bb.',
		droptoplevel:'D\u00e9placez pour que ceci devienne la section principale.',
		custom:'Personnaliser',
		deleteconfirm:'Voulez-vous vraiment supprimer cet article?',
		yes:'Oui',
		cancel:'Annuler',
		savechanges:'Enregistrer les modifications',
		rearrangeimages:'R\u00e9organiser les images',
		answerno:'R\u00e9ponse n\u00ba',
		enterlabel:'Inscrire le nom du champ'
	}
}

/* 
	Various Unicode Characters:
		00ca - E^
		00fb - u^
		00e9 - e/
*/

/* Debug Functions */
var dbgtimeout;
function dbg(m,title) {
	if(debug==undefined||debug==0)return;
	if(m==undefined){var m='undefined value';}
	if(div('dbg')=='') {
		var db = document.createElement("DIV");
		db.style.backgroundColor="#eee";
		db.style.fontSize="9pt";
		db.style.height="400px";
		db.style.width="800px";
		db.style.position="absolute";
		db.style.top="200px";
		db.style.left="1050px";
		db.style.overflow="scroll";
		db.id='dbg';
		document.getElementsByTagName('BODY')[0].appendChild(db);
		if(1==1){
			 var scrollfunc = function() {
				if(dbgtimeout!=undefined)clearTimeout(dbgtimeout);
				dbgtimeout = setTimeout( function() {
					db.style.top=200+getscrolloffset()[1]+'px';
					//div('coords').style.bottom='18px';
				}, 150);
			}
			window.onscroll = scrollfunc;
			scrollfunc();
			//crel('DIV','coords',db,{width:'100%',backgroundColor:'white',position:'absolute',bottom:'18px',textAlign:'center'});
		}
	}
	if( m.constructor!=undefined&&m.constructor.toString().indexOf('Object')!=-1) {
		if(title==undefined)var title="Object";
		else title="\""+title+"\"";
		var t = "<div style='background-color:#FFFBCF;margin:5px;border:solid #999 1px;'><strong>"+title+" Contents (object):</strong><br />\n";
		for(var x in m) {
			t+="&nbsp;&nbsp;&nbsp;&nbsp;"+x+": "+m[x]+"<br />\n";
		}
		t+="</div>";
		m=t;		
		
	} else if( m.constructor!=undefined&&m.constructor.toString().indexOf('Array')!=-1 ) {
		if(title==undefined)var title="Array";
		else title="\""+title+"\"";
		var t = "<div style='background-color:#FFFBCF;margin:5px 15px;border:solid #999 1px;'><strong>"+title+" Contents (array):</strong><br />\n";
		for(var x=0;x<m.length;x++ ) {
			t+="&nbsp;&nbsp;&nbsp;&nbsp;"+x+": "+m[x]+"<br />\n";
		}
		t+="</div>";
		m=t;		
	} else if( m.indexOf && m.indexOf('<')!=-1 ) {
		while(m.indexOf('<')!=-1){m = m.replace(/</,'&lt;');}
		while(m.indexOf('>')!=-1){m = m.replace(/>/,'&gt;');}
		while(m.indexOf('\n')!=-1){m = m.replace(/\n/,'<br />');}
		if(title==undefined)var title="HTML Block";
		else title="\""+title+"\"";
		m = "<div style='background-color:#FFFBCF;margin:5px 15px;border:solid #999 1px;font-size:80%'><strong>"+title+" Contents (html):</strong><br />"+m+"</div>";
	} else {
		if(title!=undefined)m="<strong>"+title+"</strong>: "+m;
	}
	div('dbg').innerHTML="<span style='font-size:7pt;color:#999'>"+new Date().toUTCString()+ts()+'</span>: '+m+"<br>"+div('dbg').innerHTML;
}
function ts() {return " ("+new Date().getTime()+")";}
var debug=0;

/* create username based on the domain name used for a student union page */

function getUsernameSetup() {

  var domain = document.getElementById("domain_name");
  
  if(exists(domain)) {
  	domain.onblur = getUsername;
  }

}

addLoadEvent(getUsernameSetup)

function getUsername() {
  
  var domain = document.getElementById("domain_name");
  
  if(exists(domain)) {

	  // grab the first 16 valid (a to z, 0 to 9) characters from the domain name (not including the domain extension), and make it the username
	  var usernameText = domain.value.substr(0,domain.value.lastIndexOf(".")).replace(/[^a-zA-Z0-9]/g,'').substr(0,16);
	  
	  var username = document.getElementById("account_username").value = usernameText;
	  
  }
  
}

/* from http://www.faqts.com/knowledge_base/view.phtml/aid/7199 */
function unCheckRadio(oRadio) {
	  var or = document.getElementsByName(oRadio);
      for (var i = 0; i < or.length; i++) {
         or[i].checked = false;
     }
}

function bindNoActivePolls()
{
	var button = el('no_active_polls');
	if( button=='' ) return;
	button.onclick = function()
	{
		unCheckRadio('poll_active');
	}
}
addLoadEvent( bindNoActivePolls );
