/*
	This file assembled, compressed and cache-managed by
	File Packer, v1.1 (c) 2005 bivia
	
	Each file contained herein is copyright its respective owner.
	By assembling these files, bivia has optimized for delivery
	but has not otherwise edited or changed the files, and bivia
	makes no claims as to their suitability or compatibility
	
	Files included in this package may be accessed directly in this
	directory with the following names:
		DOMAss/DOMAss.js
		DOMAss/DOMAssContent.js
		DOMAss/DOMAssCSS.js
		DOMAss/DOMAssEvents.js
		DOMAss/DOMAssLoad.js
		home_v2.js
*/

/* (1) packer:START(DOMAss/DOMAss.js) ... */

/*
	DOMAss is developed by Robert Nyman, http://www.robertnyman.com, and is free for anyone to use.
	For more information, please see http://www.robertnyman.com/domass
*/
var DOMAss = {
	
	methodsToAdd : [],
	
	init : function (){
		this.applyMethod.call(window, "$", this.$);
		window.DOMAss = this;
		this.addBaseMethods();
	},
	
	addBaseMethods : function (){
		document.getElementsByClassName = this.getElementsByClassName;
		document.getElementsByAttribute = this.getElementsByAttribute;
		if(typeof HTMLElement == "function"){
			HTMLElement.prototype.getElementsByClassName = this.getElementsByClassName;
			HTMLElement.prototype.getElementsByAttribute = this.getElementsByAttribute;		
		}
		this.methodsToAdd.push(["getElementsByClassName", this.getElementsByClassName]);
		this.methodsToAdd.push(["getElementsByAttribute", this.getElementsByAttribute]);
	},
	
	applyMethod : function (method, func){
		if(typeof this[method] != "function"){
			this[method] = func;
		}
	},
	
	addMethods : function (elm){
		if(elm){
			var elms = (elm.constructor == Array)? elm : [elm];
			for(var i=0; i<elms.length; i++){	
				for(var j=0; j<this.methodsToAdd.length; j++){
	            	this.applyMethod.call(elms[i], this.methodsToAdd[j][0], this.methodsToAdd[j][1]);
	            }
			}
		}
	},
	
	$ : function (){
		var elm = null;
		if(document.getElementById){
			elm = (arguments.length > 1)? [] : null;
			var current;
			for(var i=0; i<arguments.length; i++){
				current = arguments[i];
				if(typeof current != "object"){
					current = document.getElementById(current);
				}
				if(arguments.length > 1){
					elm.push(current);
				}
				else{
					elm = current;
				}
			}
			this.DOMAss.addMethods(elm);
		}
		return elm;
    },
	
	getElementsByClassName : function (className, tag){
		var elms = ((!tag || tag == "*") && this.all)? this.all : this.getElementsByTagName(tag || "*");
		var returnElms = [];
		var className = className.replace(/\-/g, "\\-");
		var regExp = new RegExp("(^|\\s)" + className + "(\\s|$)");
		var elm;
		for(var i=0; i<elms.length; i++){
			elm = elms[i];		
			if(regExp.test(elm.className)){
				returnElms.push(elm);
			}
		}
		return (returnElms);
	},
	
	getElementsByAttribute : function (attr, attrVal, tag){
	    var elms = ((!tag || tag == "*") && this.all)? this.all : this.getElementsByTagName(tag || "*");
	    var returnElms = [];
	    if(typeof attrVal != "undefined"){
			var attrVal = new RegExp("(^|\\s)" + attrVal + "(\\s|$)");
		}
	    var current;
	    var currentAttr;
	    for(var i=0; i<elms.length; i++){
	        current = elms[i];
	        currentAttr = current.getAttribute(attr);
	        if(typeof currentAttr == "string" && currentAttr.length > 0){	
	            if(typeof attrVal == "undefined" || (attrVal && attrVal.test(currentAttr))){
					returnElms.push(current);
	            }
	        }
	    }
	    return returnElms;
	}	
}
DOMAss.init();
/* ... /packer:END(DOMAss/DOMAss.js) */
/* (2) packer:START(DOMAss/DOMAssContent.js) ... */

/*
	DOMAss: http://www.robertnyman.com/domass
	This module by Robert Nyman, http://www.robertnyman.com
*/
DOMAss.initContent = function (){
	this.addContentMethods();
};

DOMAss.addContentMethods = function (){
	if(typeof HTMLElement == "function"){
		HTMLElement.prototype.prev = DOMAss.prev;
		HTMLElement.prototype.next = DOMAss.next;
		HTMLElement.prototype.create = DOMAss.create;
		HTMLElement.prototype.setAttributes = DOMAss.setAttributes;
		HTMLElement.prototype.addContent = DOMAss.addContent;
		HTMLElement.prototype.replaceContent = DOMAss.replaceContent;
		HTMLElement.prototype.remove = DOMAss.remove;
	}
	this.methodsToAdd.push(["prev", this.prev]);
	this.methodsToAdd.push(["next", this.next]);
	this.methodsToAdd.push(["create", this.create]);
	this.methodsToAdd.push(["setAttributes", this.setAttributes]);
	this.methodsToAdd.push(["addContent", this.addContent]);
	this.methodsToAdd.push(["replaceContent", this.replaceContent]);
	this.methodsToAdd.push(["remove", this.remove]);
};

DOMAss.prev = function (){
	var prevSib = this.previousSibling;
	while(prevSib && prevSib.nodeType != 1){
		prevSib = prevSib.previousSibling;
	}
	return prevSib;
};

DOMAss.next = function (){
	var nextSib = this.nextSibling;
	while(nextSib && nextSib.nodeType != 1){
		nextSib = nextSib.nextSibling;
	}
	return nextSib;
};

DOMAss.create = function (name, attr, append, content){
	var elm = document.createElement(name);
	elm = $(elm);
	if(attr){
		elm.setAttributes(attr);
	}
	if(typeof content != "undefined"){
		elm.addContent(content);
	}
	if(append){
		this.addContent(elm);	
	}
	return elm;
};

DOMAss.setAttributes = function (attr){	
	for(var i in attr){
		if(i.toLowerCase().substring(0,5) == 'class'){
			this.className = attr[i];
		}
		else{
			this.setAttribute(i, attr[i]);
		}	
	}
	return this;
};

DOMAss.addContent = function (content){
	var retVal = null;
	if(typeof content == "string"){
		retVal = this.innerHTML += content;
	}
	else{		
		retVal = this.appendChild(content);
	}
	return this;
};

DOMAss.replaceContent = function (newContent){
	for(var i=(this.childNodes.length - 1); i>=0; i--){
    	this.childNodes[i].parentNode.removeChild(this.childNodes[i]);
    }
	return this.addContent(newContent);
};

DOMAss.remove = function (){
	this.parentNode.removeChild(this);
};

DOMAss.initContent();

/* ... /packer:END(DOMAss/DOMAssContent.js) */
/* (3) packer:START(DOMAss/DOMAssCSS.js) ... */

/*
	DOMAss: http://www.robertnyman.com/domass
	This module by Robert Nyman, http://www.robertnyman.com
*/
DOMAss.initCSS = function (){
	this.addCSSMethods();
};

DOMAss.addCSSMethods = function (){
	if(typeof HTMLElement == "function"){		
		HTMLElement.prototype.addClass = this.addClass;
		HTMLElement.prototype.removeClass = this.removeClass;
		HTMLElement.prototype.hasClass = this.hasClass;
		HTMLElement.prototype.getStyle = this.getStyle;
	}
	this.methodsToAdd.push(["addClass", this.addClass]);
	this.methodsToAdd.push(["removeClass", this.removeClass]);
	this.methodsToAdd.push(["hasClass", this.hasClass]);
	this.methodsToAdd.push(["getStyle", this.getStyle]);
};

DOMAss.addClass = function (className){
	var currentClass = this.className;
	if(!new RegExp(className, "i").test(currentClass)){
		this.className = currentClass + ((currentClass.length > 0)? " " : "") + className;
	}
	return this;
};

DOMAss.removeClass = function (className){
	var classToRemove = new RegExp((className + "\s?"), "i");
	this.className = this.className.replace(classToRemove, "").replace(/^\s?|\s?$/g, "");
	return this;
},

DOMAss.hasClass = function (className){
	return new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i").test(this.className);
};

DOMAss.getStyle = function (cssRule){
	var cssVal = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		cssVal = document.defaultView.getComputedStyle(this, "").getPropertyValue(cssRule);
	}
	else if(this.currentStyle){
		cssVal = cssRule.replace(/\-(\w)/g, function (match, p1){
			return p1.toUpperCase();
		});
		cssVal = this.currentStyle[cssVal];
	}
	return cssVal;
};

DOMAss.initCSS();

/* ... /packer:END(DOMAss/DOMAssCSS.js) */
/* (4) packer:START(DOMAss/DOMAssEvents.js) ... */

/*
	DOMAss: http://www.robertnyman.com/domass
	This module by Robert Nyman, http://www.robertnyman.com
*/
DOMAss.initEvents = function (){
	this.addEventMethods();
};

DOMAss.addEventMethods = function (){
	if(typeof HTMLElement == "function"){
		HTMLElement.prototype.addEvent = DOMAss.addEvent;
		HTMLElement.prototype.handleEvent = DOMAss.handleEvent;
		HTMLElement.prototype.removeEvent = DOMAss.removeEvent;
	}
	this.methodsToAdd.push(["addEvent", this.addEvent]);
	this.methodsToAdd.push(["handleEvent", this.handleEvent]);	
	this.methodsToAdd.push(["removeEvent", this.removeEvent]);
};

DOMAss.addEvent = function (evt, func){
	if(this.addEventListener){
		this.addEventListener(evt, func, false);
	}
	else{
		if(!this.events){
			this.events = {};
		}
		if(!this.events[evt]){
			this.events[evt] = [];
		}							
		this.events[evt].push(func);
		this["on" + evt] = DOMAss.handleEvent;
	}
	return this;
};

DOMAss.handleEvent = function (evt){
	var evt = evt || event;
	var eventType = evt.type;
	var eventColl = this.events[eventType];
	for (var i=0; i<eventColl.length; i++) {
		eventColl[i].call(this, evt);
	}
	return this;
};

DOMAss.removeEvent = function (evt, func){
	if(this.removeEventListener){
		this.removeEventListener(evt, func, false);
	}
	else if(this.events){
		var eventColl = this.events[evt];
		for (var i=0; i<eventColl.length; i++) {
			if(eventColl[i] == func){
				delete eventColl[i]
				eventColl.splice(i, 1);
			}
		}
	}
	return this;
};

DOMAss.preventDefault = function (evt){
	if(evt && evt.preventDefault){
		evt.preventDefault();
	}
	else{
		event.returnValue = false;
	}
};

DOMAss.cancelBubble = function (evt){
	if(evt && evt.stopPropagation){
		evt.stopPropagation();
	}
	else{
		event.cancelBubble = true;
	}
};

DOMAss.initEvents();

/* ... /packer:END(DOMAss/DOMAssEvents.js) */
/* (5) packer:START(DOMAss/DOMAssLoad.js) ... */

/*
	DOMAss: http://www.robertnyman.com/domass
	This module by Robert Nyman, http://www.robertnyman.com
	Inspired and influenced by Dean Edwards, Matthias Miller, and John Resig: http://dean.edwards.name/weblog/2006/06/again/
*/
DOMAss.functionsToCall = [
	/*
		functionName // name of function
		"functionName()" // name of function with parentheses and optional arguments
	*/
];

DOMAss.initLoad = function (){
	this.DOMLoaded = false;
	this.DOMLoadTimer = null;
};

DOMAss.DOMHasLoaded = function (){
	if(DOMAss.DOMLoaded) return;
	DOMAss.DOMLoaded = true;
	DOMAss.execFunctions();
};

DOMAss.execFunctions = function (){
	if(this.DOMLoaded){
		clearInterval(this.DOMLoadTimer);
	}
	var functionToCall;
	for(var i=0; i<this.functionsToCall.length; i++){
		try{
			functionToCall = this.functionsToCall[i];
			if(typeof functionToCall == "function"){
				functionToCall();
			}
			else if (typeof functionToCall == "string"){
				eval(this.functionsToCall[i]);
			}
		}
		catch(e){
			// Optional: handle error here
		}
	}
};
// ---
/* Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
	if(document.getElementById){
		document.write("<script id=\"ieScriptLoad\" defer src=\"//:\"><\/script>");
	    document.getElementById("ieScriptLoad").onreadystatechange = function() {
	        if (this.readyState == "complete") {
	            DOMAss.DOMHasLoaded();
	        }
	    };
	}
/*@end @*/
// ---
/* Mozilla/Opera 9 */
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", DOMAss.DOMHasLoaded, false);
}
// ---
/* Safari */
if(navigator.userAgent.search(/WebKit/i) != -1){
    DOMAss.DOMLoadTimer = setInterval(function (){
		if(document.readyState.search(/loaded|complete/i) != -1) {
			DOMAss.DOMHasLoaded();
		}
	}, 10);
}
// ---
/* Other web browsers */
window.onload = DOMAss.DOMHasLoaded;
// ---
DOMAss.initLoad();
/* ... /packer:END(DOMAss/DOMAssLoad.js) */
/* (6) packer:START(home_v2.js) ... */


if (!document.documentElement)
	document.documentElement = document.getElementsByTagName('html')[0];
$(document.documentElement).addClass('domCapable domLoading');

// TODO: debug why this is causing IE6 to lose CSS-based graphics from the display
// DOMAss.functionsToCall.push(
// 	function () { document.documentElement.addClass('domReady').removeClass('domLoading'); }
// );




var Carousel = {
	host : null,
	trg  : null,
	seek : 0,
	current : 0,
	pics : null,
	show : 5,
	timer : null,

	init : function () {
		var Trg = $('carousel');
		if (! Trg) return;
		Carousel.host = $(Trg.getElementsByTagName('div')[0]).addClass('slideActive');
		Carousel.pics = Carousel.host.getElementsByTagName('li');
		Carousel.pics.at = 0;
		Carousel.trg = Carousel.pics[0].parentNode;
		for (var xx=0; xx<Carousel.pics.length; xx++) {
			Carousel.pics[xx].x = Carousel.getOffset(Carousel.pics[xx]).left -5;
		}
		Trg.create('div', { className : 'slideControl slideControlLeft' }, true, '&nbsp;').addEvent('click', Carousel.less);
		Trg.create('div', { className : 'slideControl slideControlRight' }, true, '&nbsp;').addEvent('click', Carousel.more);
		Carousel.more();
		Carousel.more();
		setTimeout("Carousel.less(); Carousel.less();", 1000);
	}, // END: init
	
	track : function () {
		if (Carousel.timer) clearTimeout(Carousel.timer);
		var Bump = (Carousel.current < Carousel.seek) ? Math.floor : Math.ceil;
		Carousel.current = Carousel.current - Bump((Carousel.current - Carousel.seek) /8);
		if (Carousel.current > 0) {
			Carousel.trg.style.marginLeft = "-"+ Carousel.current +"px";
		} else {
			Carousel.trg.style.marginLeft = "0";
		}
		if (Carousel.current != Carousel.seek) 
			Carousel.timer = setTimeout("Carousel.track()", 12);
	}, // END: track

	more : function () {
		Carousel.pics.at += 5;
		if (Carousel.pics.at >= Carousel.pics.length - Carousel.show) {
			Carousel.pics.at = Carousel.pics.length - Carousel.show;
		}
		Carousel.seek = Carousel.pics[Carousel.pics.at].x;
		Carousel.track();
	}, // END: more

	less : function () {
		Carousel.pics.at -= 5;
		if (Carousel.pics.at <= 0) {
			Carousel.pics.at = 0;
		}
		Carousel.seek = Carousel.pics[Carousel.pics.at].x;
		Carousel.track();
	}, // END: more

	getOffset : function (el,base) { // no base = offset from parent
		if (!base && el.offsetParent == el.parentNode) {
			return { top : el.offsetTop, left : el.offsetLeft };
		} else if (!base) base = el.parentNode;
		return {
			top  : el.offsetTop  - base.offsetTop,
			left : el.offsetLeft - base.offsetLeft
		};
	},
	complete : true
};
DOMAss.functionsToCall.push(Carousel.init);

// 
// slideControl slideControlRight

/* ... /packer:END(home_v2.js) */
/* /File Packer, v1.1 */
