// DOM helpers
function _G(id){
	if(document.getElementById){return document.getElementById(id+'');}else{return false;}
}
function _GT(tag,doc){
	if(document.getElementsByTagName){return (doc?doc:document).getElementsByTagName(tag+'');}else{return new Array();}
}
function _GA(o,id){
	var t='';if(typeof(o)=='object'){if(o.getAttribute){t = o.getAttribute(id+'');};return t;};
}
function _SA(o,id,v){
	if(typeof(o)=='object'){if(o.setAttribute){o.setAttribute(id+'',v);};};
}




// string functions
function T(s){
	s = (s+''); while(1){if(s.charAt(0)==' '){s = s.substring(1,s.length);}else{break;};};while(1){if(s.charAt(s.length-1)==' '){s = s.substring(0,s.length-1);}else{break;};};return s;
}
function UC(s){
	return (s+'').toUpperCase();
}
function LC(s){
	return (s+'').toLowerCase();
}



// browser ident
var _ua = navigator.userAgent.toUpperCase();
var _mac = (_ua.indexOf("MAC") != -1) ? true : false;
var _opera = (_ua.indexOf("OPERA") != -1) ? true : false;
var _safari = (_ua.indexOf("SAFARI") != -1) ? true : false;
var _ie = ((document.all&&!_opera) ? true : false);
var _khtml = (_ua.indexOf("KHTML") != -1) ? true : false;
var _gecko = (_ua.indexOf("GECKO") != -1) ? true : false;





function ValidateForm(oFORM)
{
  var i, j, f, v, t, formName, fName, fType, bRet = true, msg = '', rq=' required',rf,rn,nf='',err;

	formName = oFORM.name;


	rf = "Please fill in following fields:\n-------------------------------";
	rn = "Fields not found in form:\n-------------------------------";


	try {

			for(f in __FORMS[formName])
			{
				v = __FORMS[formName][f];
				fName = v[0];
				fType = v[1];

				if(!oFORM[f])
				{
					continue;
				}

				oFORM[f].className = oFORM[f].className.replace(/(\s*(required))/ig, '');


				if(__FORMS[formName][f][2])
				{
					if(oFORM[f].value == __FORMS[formName][f][2])
					{
						oFORM[f].value = '';
					}
				}


				switch(fType)
				{
					case 'text':
						try {
							v = T(oFORM[f].value);
						}catch(e){
							nf += "\n" + fName;
						}
						if(!v)
						{
							msg += "\n" + fName;
							bRet = false;
							oFORM[f].className += rq;
						}
						break;

					case 'zip':
						try {
							v = T(oFORM[f].value);
						}catch(e){
							nf += "\n" + fName;
						}
						if(!v || !parseInt(v))
						{
							msg += "\n" + fName;
							bRet = false;
							oFORM[f].className += rq;
						}
						break;

					case 'email':
						try {
							v = T(oFORM[f].value);
						}catch(e){
							nf += "\n" + fName;
						}
						if(!v)
						{
							msg += "\n" + fName;
							oFORM[f].className += rq;
						}else{
							if(v.indexOf('@') < 0)
							{
								msg += "\n" + '"' + fName + '" is not a valid e-mail address';
								bRet = false;
								oFORM[f].className += rq;
							}
						}
						break;

					case 'phone':
						try {
							v = T(oFORM[f].value);
						}catch(e){
							nf += "\n" + fName;
						}

						if(!v && __FORMS[formName][f][2])
						{
							msg += "\n" + fName;
							oFORM[f].className += rq;
						}
						if(v && !v.match(/^[\s-]*[\(]*[\s-]*(\d{3})[\s-]*[\)]*[\s-]*(\d{3})[\s-]*(\d{2})[\s-]*(\d{2})[\s-]*$/i))
						{
							msg += "\n" + '"' + fName + '" is not a valid phone number';
							oFORM[f].className += rq;
						}else{
							if(v)
							{
								oFORM[f].value = v.replace(/^[\s-]*[\(]*[\s-]*(\d{3})[\s-]*[\)]*[\s-]*(\d{3})[\s-]*(\d{2})[\s-]*(\d{2})[\s-]*$/g, "($1) $2-$3$4");
							}
						}
						break;

					case 'int':
						try {
							v = T(oFORM[f].value);
						}catch(e){
							nf += "\n" + fName;
						}

						v = v*1;
						if(v==0)
						{
							msg += "\n" + fName;
							oFORM[f].className += rq;
						}
						break;
				}


				if(oFORM && oFORM[f] && __FORMS[formName][f][2])
				{
					if(oFORM[f].value.replace(/\s*/g,'') == '')
					{
						oFORM[f].value = __FORMS[formName][f][2];
					}
				}
			}


	}catch(e){
		alert('Error happened: ' + (e.description ? e.description : e));
		return false;
	}


	if(msg || nf)
	{
		alert(rf+msg+"\n\n"+(nf?rn+nf:''));
		return false;
	}
	return true;
}






function Form_Field_OnFocus()
{
	var fn = (_mac?this._f:this.getAttribute('_f')), n = this.name, f = document.forms[fn][n];

	if(__FORMS[fn][n][2])
	{
		if(f.value == __FORMS[fn][n][2])
		{
			f.value = '';
		}
	}
	f.className += ' focus';
}

function Form_Field_OnBlur()
{
	var fn = (_mac?this._f:this.getAttribute('_f')), n = this.name, f = document.forms[fn][n];

	if(__FORMS[fn][n][2])
	{
		if(f.value.replace(/\s*/g,'') == '')
		{
			f.value = __FORMS[fn][n][2];
		}
	}
	f.className = f.className.replace(/\s*focus/ig,'');
}





function init_forms()
{
	for(var i=0; i<__FORMS.length; i++)
	{
		var fn = __FORMS[i];
		if(document.forms[fn])
		{
			document.forms[fn].onsubmit = function (){return ValidateForm(this);};

			var ae = document.forms[fn].elements;
			for(var j=0; j<ae.length; j++)
			{
				var f = ae[j], n = ae[j].name;

				if(__FORMS[fn][n])
				{
					f.onfocus = Form_Field_OnFocus;
					f.onblur = Form_Field_OnBlur;

					if(_mac)
					{
						f._f = fn;
					}else{
						f.setAttribute('_f', fn);
					}

					if(__FORMS[fn][n][2])
					{
						f.value = __FORMS[fn][n][2];
					}
				}
			}
		}
	}
}



var __FORMS = ['fm_subscribe'];
__FORMS.fm_subscribe = {
	'username': ['Name', 'text', 'Name'],
	'email': ['Email Address', 'email', 'Email Address']
};




var px_bottom = null;


window.onload = function(){
	window_onload();
}


function window_onload()
{
	var i,j,a,k,o,h;



	if(typeof(page_color) == 'undefined')
	{
		page_color = '#000000';
	}



	// replace elements with sIFR
	sIFR.replaceElement(named({sSelector:"h1", sFlashSrc:"/fonts/helvetica_cond_bold.swf", sColor:"#FFFFFF", sLinkColor:"#FF0000", sBgColor:page_color, sHoverColor:"#CCCCCC", nPaddingTop:0, nPaddingBottom:0, sFlashVars:"textalign=left&offsetTop=0&offsetLeft=0", sWmode: "transparent"}));
	sIFR.replaceElement(named({sSelector:"#slogan", sFlashSrc:"/fonts/helvetica_cond.swf", sColor:"#FFFFFF", sLinkColor:"#000000", sBgColor:page_color, sHoverColor:"#CCCCCC", nPaddingTop:0, nPaddingBottom:0, sFlashVars:"textalign=left&offsetTop=0&offsetLeft=0", sWmode: "transparent"}));
	sIFR.replaceElement(named({sSelector:"h2", sFlashSrc:"/fonts/helvetica_cond_bold.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#FFFFFF", sHoverColor:"#CCCCCC", nPaddingTop:0, nPaddingBottom:0, sFlashVars:"textalign=left&offsetTop=0&offsetLeft=0", sWmode: "transparent"}));




	// fix H1 placement
	h = document.getElementById('header').clientHeight;
	var o = _G('h1-outer');
	if(o)
	{
		o.style.top = (h - o.clientHeight - 15) + 'px';
	}




	// fix slogan height if subnav higher
	o = _G('subnav');
	if(o)
	{
		var o1 = _G('slogan_box');
		if(o1)
		{
			o1.style.height = (o.clientHeight + (_ie?8:11)) + 'px';
		}
	}





	// BEGIN: animate faq block
	var o = _G('faq_list');
	if(o)
	{
		var j=0, oa = o.childNodes, k = oa.length;

		for(var i=0; i<k; i++)
		{
			if(oa[i].tagName)
			{
				if(oa[i].tagName.toUpperCase() == 'DT')
				{
					j++;
					oa[i].id = 't_'+j;
				}
				if(oa[i].tagName.toUpperCase() == 'DD')
				{
					oa[i].id = 'd_'+j;
					oa[i].style.display = 'none';
				}
			}
		}

		var oa = _GT('DT',o), k = oa.length;
		for(var i=0; i<k; i++)
		{
			oa[i].onmouseover = function(){this.className +=' hover';};
			oa[i].onmouseout = function(){this.className = this.className.replace(/s*hover/ig,'');};

			oa[i].onclick = function(){
				var a = this.id.split('_'); o = _G('d_'+a[1]);
				if(o)
				{
					if(this.className.indexOf('current') >= 0)
					{
						this.className = this.className.replace(/s*current/ig,'');
						o.className = o.className.replace(/s*current/ig,'');
						o.style.display = 'none';
					}else{
						this.className += ' current';
						o.className += ' current';
						o.style.display = 'block';
					}
				}
			}
		}
	}
	// END: animate faq block






	// BEGIN: add effects to sidebar navigation
	a = document.getElementsByTagName('DL');
	k = a.length;
	for(i=0; i<k; i++)
	{
		if(a[i].id != 'faq_list')
		{
			o = a[i];
			o.id = 'sidenav_'+i;
			if(o.className.toLowerCase().indexOf('sidenav') >= 0)
			{

				var toggles = o.getElementsByTagName('DT'); //h3s where I click on
				var stretchers = o.getElementsByTagName('DD'); //div that stretches


				for(j=0; j<toggles.length; j++)
				{
					toggles[j].setAttribute('alt', 'sidenav_'+i);

					toggles[j].onmouseup = function() {

						var id = this.getAttribute('alt');
						var toggles = document.getElementById(id).getElementsByTagName('DT');
						var k=toggles.length;
						for(var i=0; i<k; i++)
						{
							toggles[i].className = toggles[i].className.replace(/\s*current/ig,'');
						}
						this.className += ' current';
					}
				}


				for(j=0; j<toggles.length; j++)
				{
					toggles[j].onmouseover = function() {
						var toggles = document.getElementById(this.getAttribute('alt')).getElementsByTagName('DT');
						var k=toggles.length;
						for(var i=0; i<k; i++)
						{
							toggles[i].className = toggles[i].className.replace(/\s*hover/ig,'');
						}
						this.className += ' hover';
					}
					toggles[j].onmouseout = function() {
						this.className = this.className.replace(/\s*hover/ig,'');
					}

					toggles[j].onmousedown = function() {
						this.className = this.className.replace(/\s*hover/ig,'');
					}
				}

				toggles.each = stretchers.each = Array.prototype.each;

				var myAccordion = new fx.Accordion(
					toggles, stretchers, {opacity: true, duration: 300}
				);

				if(o.className.toLowerCase().indexOf('closed') < 0)
				{
					toggles[0].className += ' current';
					myAccordion.showThisHideOpen(stretchers[0]);
				}
			}
		}
	}
	// END: add effects to sidebar navigation



	px_bottom = document.createElement('DIV');
	px_bottom.style.position = 'absolute';
	px_bottom.style.bottom = '0';
	document.body.appendChild(px_bottom);



	// BEGIN: init header images
	for(i=1; i<=5; i++)
	{
		_G('hd'+i).style.height = '300px';
	}
	for(i=0; i<imgs_count; i++)
	{
		imgs_loaded[i] = false;
		imgs_stack[i] = new Image();
		imgs_stack[i].src = imgs[i];
	}
	// END: init header images



	size_fix();


	// setup form validation
	init_forms();
}




// header images variables
var imgs_count = Math.ceil(screen.availWidth / 460);
var imgs_loaded = [];
var imgs_stack = [];





function show_header_image(idx, url)
{
	var d = document.createElement('DIV');
	d.style.position = 'absolute';
	d.style.width = '460px';
	d.style.height = '300px';
	d.style.top = '0';
	d.style.left = (idx*460)+'px';
	d.style.backgroundColor = '#FF0000';
	d.style.zIndex = 1;
	document.body.appendChild(d);
}




function set_header_image(name)
{
	for(var i=0; i<imgs_count; i++)
	{
		imgs_stack[i].src = imgs_path + name +'.jpg';
		imgs_loaded[i] = false;
	}
}



function size_fix()
{
	var ow = document.getElementById('wrapper');
	var of = document.getElementById('footer');


	if(ow && of && px_bottom)
	{

		var h = (of.style.position!='absolute'? 0 : of.clientHeight);

		if((px_bottom.offsetTop - h) < ow.clientHeight)
		{
			of.style.position = 'relative';
		}else{
			of.style.position = _ie ? 'absolute' : 'fixed';
		}
	}



	for(var i=0; i<imgs_count; i++)
	{
		if(!imgs_loaded[i])
		{
			if(imgs_stack[i].complete)
			{
				imgs_loaded[i] = true;
				var o;

				switch(i)
				{
//					case 1:
//						o = document.body;
//						break;
					case 0:
						o = _G('wrapper');
						break;
					case 1:
						o = _G('header');
						break;
					default:
						o = _G('hd'+(i-1));
						break;
				}

				o.style.background = 'transparent url('+imgs_stack[i].src+') no-repeat '+(i*460)+'px top';
			}
		}
	}

	setTimeout('size_fix()', 10);
}


