
var amicus = (function() {
	var scriptsSoFar;
	
	var singl3ton = {
		srcPath: (function() {
			var thisPath = (scriptsSoFar = document.getElementsByTagName("script"))[scriptsSoFar.length - 1].getAttribute("src");
			return thisPath.slice(0, thisPath.lastIndexOf("/") + 1);   
		})()
	};
	
	singl3ton.doJsCompress = function() {
		singl3ton.jscompress = 1;
		singl3ton.jscompress_path="compressed";
	};
	
	return singl3ton;
	
})();

/*	COOKIE
	@author btapley
	http://webdev.macromedia.com/wiki/index.php/Cookie
*/
amicus.Cookie = {
	set: function(name, value, duration, path, domain, secure){
		var cookie = [];
		cookie.push(name+"="+escape(value));
		if(duration) {
			var date = new Date();
			date.setTime(date.getTime() + (duration*86400000));
			cookie.push("expires=" + date.toGMTString());
		}
		if(path) {
			cookie.push("path=" + path || "/");	
		}
		if(domain) {
			cookie.push("domain=" + domain);
		}
		if(secure) {
			cookie.push("secure");
		}
		document.cookie = cookie.join(";");
	},
	get: function(name){
		var result, test, rexp = new RegExp(name + "=(.*)");
		document.cookie.split(";").detect(function(cookie){
			if((test = cookie.match(rexp))) {
				result = unescape(decodeURI(test[1]));
			} 
			return test;
		});
		return result;
	},
	remove: function(name){
		this.set(name, '', -1);
	}
};

getCookie = amicus.Cookie.get;
setCookie = amicus.Cookie.set;

/*	STATE MANAGER
	@author btapley
	http://webdev.macromedia.com/wiki/index.php/StateManager
*/
amicus.StateManager = (function() {
	var loadedUri;
	var loadedCookies = {};
	var cookiesDays = {};
	var cookies = amicus.Cookie;
	
	function getUri() {
		return loadedUri || (loadedUri = window.location.search.toQueryParams());	
	}
	
	function getUriId(id) {
		return getUri()[id];	
	}
	
	function getSaveDays(ns) {
		return cookiesDays[ns] || 0;
	}
	
	function setSaveDays(ns, days) {
		cookiesDays[ns] = days;
		return;
	}
	
	function getSave(ns) {
		return loadedCookies[ns] || (loadedCookies[ns] = (cookies.get(ns) || "").toQueryParams());
	}
	
	function clearSave(ns, id) {
		var save = getSave(ns);
		delete save[id];
		var val = $H(save).toQueryString();				
		return val ? cookies.set(ns, val, getSaveDays(ns)) : cookies.remove(ns);
	}
	
	function setSave(ns, id, val) {
		var itemsToSave;
		
		if(val instanceof Array) { //since Array is also an Object, order is important here
			itemsToSave = (val).join(",");
		} else if(typeof val == 'object') {
			itemsToSave = $H(val).inject([], function(arr, state) {
				var value = state.value || 0;  //use numbers instead of booleans if present
				if(value && typeof value == 'boolean') {
					value = 1; //use numbers instead of booleans if present
				}
				arr.push(state.key + ":" + value);
				return arr;
			}).join(",");
		} else if(typeof val == 'string') {
			itemsToSave = val;
		} else if(typeof val == 'boolean') {
			itemsToSave = val ? "1" : "0";
		} else if(typeof val == 'number' && isFinite(val)) {
			itemsToSave = val.toString();
		}
		
		if(!itemsToSave) { return clearSave(ns, id); }
		
		getSave(ns)[id] = itemsToSave;
				
		cookies.set(ns, $H(getSave(ns)).toQueryString(), getSaveDays(ns));
		return;
	}
	
	var c0nstruct0r = function(nam3spac3, days2save) {
		this.ns = nam3spac3;
		setSaveDays(nam3spac3, days2save || 0);
		return this;
	};
	
	c0nstruct0r.prototype = {
		setCookieParam: function(id, state) {
			setSave(this.ns, id, state); //lazy loader and assignment
			return;
		},
		getCookieParam: function(id) {
			return getSave(this.ns)[id];
		},
		removeCookieParam: function(id) {
			return clearSave(this.ns, id);
		},
		getQueryParam: function(id) {
			return (id) ? getUriId(id) : getUri();
		}
	};
	return c0nstruct0r;
})();


/* ////////// Browser Detection //////////////////// */

BrowserDescription = function () {
	this.appN = navigator.appName.toLowerCase();
	this.appV = parseInt(navigator.appVersion);
	this.ua = navigator.userAgent.toLowerCase();
	this.plt = navigator.platform.toLowerCase();
	//the preferred OS language in IE 
	//or the language version of the browser for non IE
	this.lang = (navigator.language || navigator.userLanguage).substring(0,2); 
	// reset appV string incorrect user agent
	if (this.ua.indexOf('opera/7') != -1 || this.ua.indexOf('opera 7') != -1) {
		this.appV = 7;
	}
	this.ax = window.ActiveXObject != "undefined";
	this.isSafari = (this.ua.indexOf('safari') != -1); //should remove this
	
	if(this.ua.indexOf('safari') != -1) 
	{
		var wk = 'applewebkit/';
		var kitpos = this.ua.indexOf(wk);
		if(kitpos == -1) return null;
		var kit = this.ua.substring(kitpos+wk.length);
		kit = kit.substring(0,kit.indexOf(" "));
		this.kitV = parseInt(kit);
	}
	return this;
}

/* ////////// global variables //////////////////// */

var browser = new BrowserDescription();

/*///////////////////// On Load /////////////////////*/

/* ////////// Event Registration //////////////////// */


function defineEventHandler (element,eventName,handler,capture) {
	
	try {
		
		if (document.addEventListener) {
			// W3C Event model
			element.addEventListener(eventName,handler,capture);
			
		} else if (document.attachEvent) {
			// Internet Explorer Event model
			eventName = 'on'+eventName;
			element.attachEvent(eventName,handler);
		}
		
	} catch (ex) {
		return;
	}
}


function removeEventHandler (element,eventName,handler,capture) {

	try {
	
		if (document.removeEventListener) {
			// W3C Event model
			element.removeEventListener(eventName,handler,capture);
			
		} else if (document.detachEvent) {
			// Internet Explorer Event model
			element.detachEvent('on'+eventName,handler);
		}	

	} catch (ex) {
		return;
	}
}


/* Create a queue for all onload functions */
var onload_queue = new Array();

function execute_onload () {
	for (var i=0; i < onload_queue.length; i++) {
		onload_queue[i]();
	}
}

// called to register onload function
function registerOnLoadFunc () {

	// loop through arguments and add them to the onload queue
	for (var i=0; i < arguments.length; i++) {
		if (typeof arguments[i] == 'function') onload_queue[onload_queue.length] = arguments[i];
	}
	
	// W3C -OR- Internet Explorer Event models
	if (document.addEventListener || document.attachEvent) {
		var domElement = (window.opera) ? document : window;
		removeEventHandler(domElement,'load',execute_onload,false);
		defineEventHandler(domElement,'load',execute_onload,false);
		
	} else {
		// Event model for MacIE, Opera 6
		onload = execute_onload;
 	}
}
function getURLParam(strParamName){
	var strReturn = "";
	var strHref = window.location.href;
	
	
	if(strHref.indexOf("#") > -1) {
		var strQueryString = strHref.substr(strHref.indexOf("#")).toLowerCase();
	}
		
	
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				
				break;
			}
		}
	}
	return strReturn;
}

/* Show company */
ShowCompanies = function(type,ID) {
	if(type) {
		if($('nav-current')) $('nav-current').className=(type=='current')?'selected company':'selected company';
	}
	var url = '/companies/display.php';

	var pars = 'company_id='+ID+'&display=company&type=past';
	$('pastContent').style.visibility = 'visible';
	$('companies').className = 'past';
	var myAjax = new Ajax.Updater( 'pastContent', url, { method: 'get', parameters: pars });				
	ShowCompanyList(type,ID);

}




/* Show company right nav list */
ShowCompanyList = function(type,ID) {
	var url = '/companies/display.php';
	var pars = 'company_id='+ID+'&display=companyList&type='+type;
	var myAjax = new Ajax.Updater( 'companyList', url, { method: 'get', parameters: pars });
}

/* Show company logos */
ShowCompanyLogos = function() {
	var url = '/companies/display.php';
	var pars = 'company_id=1&display=companyLogos&type=current';
	var myAjax = new Ajax.Updater( 'companyLogos', url, { method: 'get', parameters: pars });
}

/*--- ARTICLES ---*/

/* FROM HOME PAGE */
ShowArticleListHome = function ()
{
		var url = '/news/display.php';
		var pars = 'fromHome=true&display=articleListHome';
		var myAjax = new Ajax.Updater( 'newsList', url, { method: 'get', parameters: pars });
}
ShowArticleHome = function (articleID)
{
	var articleLink = '/news/?articleID=' + articleID;
	window.location.href=articleLink;
}

/* FROM ARTICLES PAGE */
var query = location.search.substring(1);
var pos = query.indexOf('=');
var ID = query.substring(pos+1,query.length);
//if(!query) ID = 1;


ShowArticleList = function ()
{
		var url = '/news/display.php';
		var pars = 'article_id='+ID+'&display=articleList';
		var myAjax = new Ajax.Updater( 'newsList', url, { method: 'get', parameters: pars });
		//ShowArticleList(ID)
	
}

GetArticleList = function() {
		var url = '/news/display.php';
		var pars = 'display=getArticleList';
		var myAjax = new Ajax.Updater( 'newsList', url, { method: 'get', parameters: pars });
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

ShowArticle = function (ID,evt)
{

	
		var url = '/news/display.php';
		var pars = 'article_id='+ID+'&display=article';
		var myAjax = new Ajax.Updater( 'mainContent', url, { method: 'get', parameters: pars });
		//ShowArticleList(ID)
		if(evt) {
			var list = $A($('articleListing').getElementsByTagName('li'));
				list.each(function(li) {
					li.className = '';	
				});
			evt.parentNode.className='selected';
		}
				 
			
			
		
			
			
		
}

/*--- ADMINISTRATION ---*/
AdminShowNews = function (ID)
{
	//	navOff();
	//	if($('nav-news')) $('nav-news').className='selected';
		var url = '/admin/news/display.php';
		var pars = 'article_id='+ID+'&display=article';
		var myAjax = new Ajax.Updater( 'layout', url, { method: 'get', parameters: pars });
		ShowArticleList(ID)
}

AdminShowCompanies = function(type,ID)
{
	//navOff();
	//if($('nav-companies')) $('nav-companies').className='selected';
	var url = '/admin/companies/display.php';
	var pars = 'company_id='+ID+'&display=company&type='+type;
	var myAjax = new Ajax.Updater( 'layout', url, { method: 'get', parameters: pars });
}

AdminEditCompany = function(ID)
{
	//navOff();
	//if($('nav-companies')) $('nav-companies').className='selected';
	var url = '/admin/companies/form.php';
	var pars = 'company_id='+ID+'&display=form';
	var myAjax = new Ajax.Updater( 'layout', url, { method: 'get', parameters: pars });
}
AdminUpdateCompany = function()
{
	// subscribe to mouse clicks on the menu
   updateButton();
	var url = '/admin/companies/display.php';
	var pars = 'display=company&update=true';
	var myAjax = new Ajax.Updater( 'layout', url, { method: 'get', parameters: pars });
}

AdminShowInvestors = function(type,ID)
{
	//navOff();
	//if($('nav-investors')) $('nav-investors').className='selected';
	var url = '/admin/investors/display.php';
	var pars = 'company_id='+ID+'&display=company&type='+type;
	var myAjax = new Ajax.Updater( 'layout', url, { method: 'get', parameters: pars });
}


navOff = function() {
	$A($('navigation').getElementsByTagName('li')).each(function(nodes) {
		nodes.className = '';																										 
	 });
}

updateButton = function() {
	var button = $("update");
   if (typeof window.attachEvent != "undefined") {
      // Internet Explorer
      button.attachEvent("onclick",  handleMouseClick);
   } else { // W3C standards
      button.addEventListener("click",  handleMouseClick, false);
   }
}

function gup( name )
{
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = window.location.href;
  var results = regex.exec( tmpURL );
  if( results == null )
    return "";
  else
    return results[1];
}

function getURLParam(strParamName){
	var strReturn = "";
	var strHref = window.location.href;
	
	if(strHref.indexOf("#") > -1) {
		var strQueryString = strHref.substr(strHref.indexOf("#")).toLowerCase();
	}
		
	
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
		var aQueryString = strQueryString.split("&");
		
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				
				break;
			}
		}
	}
	return strReturn;
}

/* Create a queue for all unload functions */
var unload_queue = new Array();

function execute_unload () {
	for (var i=0; i < unload_queue.length; i++) {
		unload_queue[i]();
	}
}

// called to register onload function
function registerUnLoadFunc () {

	// loop through arguments and add them to the onload queue
	for (var i=0; i < arguments.length; i++) {
		if (typeof arguments[i] == 'function') unload_queue[unload_queue.length] = arguments[i];
	}
	
	// W3C -OR- Internet Explorer Event models
	if (document.addEventListener || document.attachEvent) {
		var domElement = (window.opera) ? document : window;
		defineEventHandler(domElement,'unload',execute_unload,false);
		
	} else {
		// Event model for MacIE, Opera 6
		onunload = execute_unload;
 	}
}

