var _pages;
var _slider;
var _expBG;
var _curpage = 0;
var _hasBG = false;
var _hasMarker = true;
var _marker;
var _masked;
var _markp;
var _pageheights = [750, 560, 560, 560, 560];
var _contents;
var _body;

function getPages() {

	var i = 0;
	_pages = [];

	while(p = Armory.select('#page' + i)) {
		_pages.push(p);
		i++;
	}

}

function setPagesVisible(p) {

	var pstr = p.join(' ');

	for(var i=0; i<_pages.length; i++){

		var page = _pages[i];

		if(pstr.indexOf(i) > -1) {
			page.className = 'page';
		}else{
			page.className = 'page-hidden';
		}

	}

}

function showBG() {
	if(_hasBG) return;
	_hasBG = true;
	Armory.anim.tween(_expBG, 0.7, {alpha: '0.8', height: '560px', marginTop: '0px', easing: Armory.anim.easing.Quad.easeInOut});
}

function hideBG() {
	if(!_hasBG) return;
	_hasBG = false;
	Armory.anim.tween(_expBG, 0.7, {alpha: '0', height: '560px', marginTop: '-100px', easing: Armory.anim.easing.Quad.easeInOut});
}

function moveMarker(obj) {

	var goal = (obj.offsetLeft - 1) + 'px';
	var masked = _masked;
	var marker = _marker;
	var markp = _markp;


	var t = Armory.anim.tween(_marker, 1, {left: goal, width: (obj.offsetWidth + 1) + 'px', easing: Armory.anim.easing.Quad.easeInOut, onProgress: updateMasked});
	
	function updateMasked() {

		var pos = -1 * parseFloat(marker.style.left);
		var mpos = -1 * pos + parseFloat(marker.style.width) / 2;

		Armory.anim.setCSS(masked, {left: pos + 'px'});
		Armory.anim.setCSS(markp, {left: mpos + 'px'});

	}

}

function toggleMarker() {

	var alpha = _hasMarker ? 0 : 1;
	var o = [_marker, _markp];
	
	if(alpha){
		Armory.anim.tween(o, 0.25, {alpha: alpha, onStart: function(){ Armory.anim.setCSS(o, {display: 'block'}) } });
	}else{
		Armory.anim.tween(o, 0.25, {alpha: alpha, onComplete: function(){ Armory.anim.setCSS(o, {display: 'none'}) } });
	}

	_hasMarker = !_hasMarker;

}


function gotoPage(obj, p) {

	if(p == _curpage) return;

	if(!_slider) _slider = Armory.select('#slider');
	if(!_expBG) _expBG = Armory.select('#expBG');
	if(!_marker) _marker = Armory.select('#marker');
	if(!_masked) _masked = Armory.select('#masked');
	if(!_markp) _markp = Armory.select('#marker-pointer');
	if(!_pages) getPages();


	if(!_marker.style.left){

		Armory.anim.setCSS(_marker, {left: '17px', width: '67px'});
	}

	if(!_expBG.style.height){
		Armory.anim.setCSS(_expBG, {alpha: 0, marginTop: '-100px', height: '560px'});
	}

	var npage = _pages[p];
	var cpage = _pages[_curpage];

	setPagesVisible([_curpage, p]);


	if(p > _curpage && _slider.offsetLeft != 0) Armory.anim.setCSS(_slider, {left: (-1 * cpage.offsetLeft) + 'px'});
	if(p < _curpage && _slider.offsetLeft == 0) Armory.anim.setCSS(_slider, {left: (-1 * cpage.offsetLeft) + 'px'});

	if(p == 0){
		hideBG();
	}else{
		showBG();
	}

	if(obj) moveMarker(obj);
	if(_curpage == 4 || p == 4) toggleMarker();

	var goal = (-1 * npage.offsetLeft) + 'px';
	_curpage = p;

	setPageHeight();
	Armory.anim.tween(_slider, 1, {left: goal, easing: Armory.anim.easing.Quad.easeInOut});

}

function setPageHeight() {
   if(!_contents) _contents = Armory.select('#contents');
   if(!_body) _body = Armory.select('#body');
   
   if(_contents.style.height == '') Armory.anim.setCSS(_contents, {height: _contents.offsetHeight + 'px'});
   if(_body.style.height == '') Armory.anim.setCSS(_body, {height: _body.offsetHeight + 'px'});
   
   Armory.anim.tween(_contents, 1, {height: _pageheights[_curpage] + 'px', easing: Armory.anim.easing.Quad.easeInOut});
   Armory.anim.tween(_body, 1, {height: (_pageheights[_curpage] + 10) + 'px', easing: Armory.anim.easing.Quad.easeInOut});
}


//-- RelieveTraffic.org Email List


var _email = [	'gary.miller@mail.house.gov',
		'OfficeRepJohnCampbell@mail.house.gov',
		'ca49doscheduling@mail.house.gov',
		'loretta@mail.house.gov',
		'senator.walters@senate.ca.gov',
		'senator.wyland@senate.ca.gov',
		'senator.harman@senate.ca.gov',
		'senator.correa@senate.ca.gov',
		'assemblymember.harkey@assembly.ca.gov',
		'assemblymember.miller@assembly.ca.gov',
		'assemblymember.solorio@assembly.ca.gov'];
var _emailsel = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];

function toggleRep(cb, arr) {

	var cbp = cb.parentNode.parentNode;

	if(cb.src.indexOf('checkbox0') != -1) {
		cb.src = 'img/checkbox1.png';
	}else{
		cb.src = 'img/checkbox0.png';
	}

	if(cbp.className == 'replist'){
		cbp.className = 'replist deselected';
	}else{
		cbp.className = 'replist';
	}

	for(var i=0; i<arr.length; i++) _emailsel[arr[i]] = _emailsel[arr[i]] ? 0 : 1;

}

function sendEmail() {

	var emailfname = Armory.select('#email_fname').value;
	var emaillname = Armory.select('#email_lname').value;
	var emailaddress = Armory.select('#email_address').value;
	var emailcity = Armory.select('#email_city').value;
	var emailzip = Armory.select('#email_zip').value;
	var _to = [];
	for(var i=0; i<_email.length; i++) if(_emailsel[i] && _email[i].length > 0) _to.push(_email[i]);

	if(_to.length == 0) return throwEmailError(1);
	if(emailfname == '' || emaillname == '' || emailcity == '' || emailzip == '' || emailfname == 'Your First Name' || emaillname == 'Your Last Name' || emailcity == 'Your City' || emailzip == 'Your Zip Code') return throwEmailError(2);
	if(!validateZipCode(emailzip)) return throwEmailError(3);

	if(emailaddress == 'Your Street Address (optional)') emailaddress = '';

	var _cc = "Completethe241@RelieveTraffic.org";
	var _subj = "Support SR 241 Completion, Support 13,600 OC Jobs & $3 Billion in Economic Output";
	var _body = "Finally, a step has been taken toward starting construction on the 241 completion project. The Foothill/Eastern Transportation Corridor Agency Board of Directors has approved a plan to develop preliminary engineering plans, complete environmental assessments and create a finance model to build the first four northern-most miles of the 16-mile route, from Oso Pkwy. to the Ortega Hwy. area. This planning phase is estimated to take 12 months.\n\n";
	_body += "A recent economic benefits analysis found that the 241 completion project will create 17,000 jobs in Calif. and generate more than $3 billion in economic output. Building the first four miles will create 2,000 jobs in Orange County and 407 additional jobs statewide. A true kick start for the economy.\n\n";
	_body += "I support the 241 completion project and hope that you will too. Please do what you can to support this initial phase of the project and, in turn, give momentum to the entire project.\n\nSincerely,\n\n";
	_body += emailfname + "\n" + emaillname + "\n" + (emailaddress == '' ? emailaddress : emailaddress + "\n") + emailcity + "\n" + emailzip;
	_to = _to.join(';');

	location.href = 'mailto:' + _to + '?cc=' + _cc + '&subject=' + escape(_subj) + '&body=' + escape(_body);

	throwEmailError(0);

}

function signUp() {

	var _to = "Completethe241@RelieveTraffic.org";
	var _subj = "RelieveTraffic.org E-mail Signup";
	var _body = "Please sign me up for updates about the 241:";

	var fname = Armory.select('#emailFName').value;
	var lname = Armory.select('#emailLName').value;
	var email = Armory.select('#emailAddress').value;

	if(fname == '' || fname == 'First Name' || lname == '' || lname == 'Last Name' || email == '' || email == 'Email Address') return throwSignupError(1);

	if(!validateEmail(email)) return throwSignupError(2);

	_body += '\n\nFirst Name: ' + fname;
	_body += '\n\nLast Name: ' + lname;
	_body += '\n\nEmail Address: ' + email;

	location.href = 'mailto:' + _to + '?subject=' + escape(_subj) + '&body=' + escape(_body);

	throwSignupError(0);
}

function tfFocus(tf, str) {
	if(tf.value != str) return;
	tf.className = 'takeactiontf';
	tf.value = "";
}

function tfBlur(tf, str) {
	if(tf.value != "") return;
	tf.className = 'takeactiontf';
	tf.value = str;
}

function throwEmailError(e) {

	var eerr = Armory.select('#email-error');

	while(eerr.firstChild) eerr.removeChild(eerr.firstChild);


	var err = [	'',
			'Please select at least one representative.',
			'Please complete your first name, last name, city and zip code to continue.',
			'Your zip code contains an error. Please try again.'];

	var tn = document.createTextNode(err[e]);
	eerr.appendChild(tn);

	Armory.anim.setCSS(eerr, {display: 'block'});

	if(e == 0) Armory.anim.setCSS(eerr, {display: 'none'});

}

function throwSignupError(e) {

	var serr = Armory.select('#signup-error');

	while(serr.firstChild) serr.removeChild(serr.firstChild);

	var err = [	'',
			'Please complete all of the fields.',
			'Your email address contains an error. Please try again.'];

	var tn = document.createTextNode(err[e]);
	serr.appendChild(tn);

	Armory.anim.setCSS(serr, {display: 'block'});

	if(e == 0) Armory.anim.setCSS(serr, {display: 'none'});

}

function validateEmail(email) {

	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)) return (true);
	return (false);

}

function validateZipCode(zip) {

	if(/^\d{5}$/.test(zip)) return (true);
	return (false);

}



//-- Email Attention error for Economic Banners



Arrow = (function(){

	var _email;
	var _arrow;
	var _loops = 0;

	var arrow = {

		init: function(){

			if(!this.testForInfo()) return;

			var sw = Armory.select('#site-width');
			var fname = Armory.select('#emailFName');
			var lname = Armory.select('#emailLName');
			var email = Armory.select('#emailAddress');

			_arrow = document.createElement('img');
			_arrow.src = 'img/emailarrow.png';
			_arrow.id = 'email-arrow';
			sw.appendChild(_arrow);

			Armory.anim.setCSS([fname, lname], {className: 'takeactiontf tfhighlight'});

			email.value = this.getEmail().replace(/[\"\=\+\&\|\'\(\)\{\}\[\]]/ig, '');

			this.arrowOut();			

		},

		testForInfo: function(){

			if(location.href.toString().search(/(\?email\=[^\&]+\&b\=1)|(\?b\=1\&email\=.+)/i) > -1) return true;
			return false;

		},

		getEmail: function(){

			var m = location.href.toString().match(/[\&\?]email\=([^\&]+)/i);
			return decodeURIComponent(m[1]);
		},

		arrowOut: function(){

			if(_loops == 5) return arrow.arrowHide();
			_loops++;
			Armory.anim.tween(_arrow, 0.75, {top: 130 + 'px', onComplete: arrow.arrowIn, easing: Armory.anim.easing.Quad.easeInOut});

		},

		arrowIn: function(){

			Armory.anim.tween(_arrow, 0.75, {top: 150 + 'px', onComplete: arrow.arrowOut, easing: Armory.anim.easing.Quad.easeInOut});

		},

		arrowHide: function(){

			Armory.anim.tween(_arrow, 0.4, {width: '0px', left: (_arrow.offsetLeft + _arrow.offsetWidth / 2) + 'px', easing: Armory.anim.easing.Quad.easeIn, onComplete: function(){ _arrow.parentNode.removeChild(_arrow); } });

		}


	}

	Armory.ready(arrow.init, arrow);

	return arrow;

})();
		
		
