/* exUrban, Inc. : exurbaninc.com : 2010 */

var CON = {}; //Consigli namespace

CON.page = function() {
	
	var onInit = function() {}
	
	var onLoad = function() { //window.onload
		CON.forms.onLoad();
		if(document.getElementById('gallery') != null) {CON.gallery.onLoad('gallery');}
		if(document.getElementById('newsroll') != null) {CON.gallery.onLoad('newsroll');}
	}
	
	return {
		init: onInit, onLoad: onLoad
	}
	
}();

CON.forms = function() {
	
	var _submit = false; //currently submitting?
	
	var onInit = function() {}
	
	var onLoad = function() { //listener ("page"): window.onload
		var objForm; var objBttn;
		
		objForm = document.getElementById('headform');
		objBttn = document.getElementById('headsubmit');
		
		if((objForm != null) && (objBttn != null)) {
			objForm.onsubmit = function() {onSubmit(this); return(false);}
			objBttn.onclick = function() {onBttnClick(this);}
		}
	}
	
	var onSubmit = function(form) { //listener: form "onSubmit"
		var bolTest;
		
		if(!_submit) {
			_submit = true;
			bolTest = (validText(document.getElementById('headsearch').value));
			if(bolTest) {form.submit();} else {_submit = false;}
		}	
	}
	
	var onBttnClick = function(bttn) { //listener: button "onClick"
		var strAction; var objForm;
	
		strAction = (bttn.id.indexOf('submit') != -1) ? 'submit' : 'reset';
		
		switch(strAction) {
			case 'submit':
				objForm = document.getElementById(bttn.id.slice(0, (bttn.id.length - 6)) + 'form');
				onSubmit(objForm);
				break;
			case 'reset':
				objForm = document.getElementById(bttn.id.slice(0, (bttn.id.length - 5)) + 'form');
				objForm.reset();
				break;
			default: break;
		}
	}
	
	var validText = function(text) { //tests for non-empty string
		text = (typeof(text) == 'string') ? text : '';
		
		var bolTest = false;
		if((text.replace(/\s/g, '')) != '') {bolTest = true;}
		return(bolTest);
	}
	
	return {
		init: onInit, onLoad: onLoad
	}

}();

CON.gallery = function() { //used for both "gallery" & "newsroll"

	var _galintv = -1; //"newsroll" auto-play interval id
	var _newsintv = -1; //"newsroll" auto-play interval id
	var _frames = {}; //gallery id: currently displayed (number)
	var _layer2s = {}; //gallery id: visibility (boolean)
	
	var onInit = function() {}
	
	var onLoad = function(dvid) { //listener ("page"): window.onload
		dvid = (typeof(dvid) == 'string') ? dvid : '';
		
		var strPFix; var intFrames;
		var i;
		
		if(dvid != '') {
			_frames[dvid] = 1; _layer2s[dvid] = false;
			
			strPFix = (dvid == 'gallery') ? 'gal' : ((dvid == 'newsroll') ? 'news' : '');
			trimFrame(strPFix + 'layer1'); trimFrame(strPFix + 'layer2');
			
			intFrames = (document.getElementById(dvid).getElementsByTagName('div').length - 2) / 2;
			for(i=0; i<intFrames; i++) {trimFrame(strPFix + 'frame' + (i + 1));}
			
			if(dvid == 'gallery') {
				setGalleryOpac('gallayer2', 0);
				document.getElementById('gallayer2').style.display = 'none';
				_galintv = setInterval('CON.gallery.autoNextFrame(\'gallery\')', 4000);
			} else {
				document.getElementById('newslayer1').style.top = '0px';
				document.getElementById('newslayer2').style.top = '40px';
				_newsintv = setInterval('CON.gallery.autoNextFrame(\'newsroll\')', 10000);
			}
		}
	}
	
	var autoNextFrame = function(dvid) { //auto-forwards to next frame
		var strPFix; var intFrames; var intFrame;
		var objFrame; var objLayer;
		
		if(dvid == 'gallery') {
			strPFix = 'gal';
			intFrames = (document.getElementById(dvid).getElementsByTagName('div').length - 2) / 2;
		} else {
			strPFix = 'news';
			intFrames = document.getElementById(dvid).getElementsByTagName('div').length - 2;
		}
		
		if(_frames[dvid] == intFrames) {intFrame = 1;} else {intFrame = _frames[dvid] + 1;}
		
		objFrame = document.getElementById(strPFix + 'frame' + intFrame);
		objLayer = _layer2s[dvid] ? document.getElementById(strPFix + 'layer1') : document.getElementById(strPFix + 'layer2');
		
		objLayer.appendChild(objFrame.firstChild);
		objLayer.className = objFrame.className;
		
		_frames[dvid] = intFrame;
		
		if((dvid == 'gallery') && (!_layer2s['gallery'])) {
			document.getElementById('gallayer2').style.display = 'block';
			fadeGallery(0, 100);
		} else {
			if(dvid == 'gallery') {fadeGallery(100, 0);} else {rollNews();}
		}
	}
	
	var fadeGallery = function(ocur, oend) { //fades "gallayer2"
		ocur = (typeof(ocur) == 'number') ? ocur : 0;
		oend = (typeof(oend) == 'number') ? oend : 100;
		
		var objLayer; var intFrames; var intFrame;
		
		if(ocur > oend) {ocur = ocur - 5;} else {ocur = ocur + 5;}
		setGalleryOpac(ocur);
		
		if(ocur != oend) {setTimeout('CON.gallery.fadeGallery(' + ocur + ', ' + oend + ')', 25);}
		else {
			if(_layer2s['gallery']) {
				objLayer = document.getElementById('gallayer2');
				objLayer.style.display = 'none';
			} else {objLayer = document.getElementById('gallayer1');}
			
			intFrame = parseInt(objLayer.className.slice(5));
			document.getElementById('galframe' + intFrame).appendChild(objLayer.firstChild);
						
			_layer2s['gallery'] = !_layer2s['gallery'];
		}
	}
	
	var setGalleryOpac = function(opac) { //sets "gallayer2" opacity
		opac = (typeof(opac) == 'number') ? opac : 0;
		
		var objStyle = document.getElementById('gallayer2').style;
		objStyle.opacity = (opac / 100);
		objStyle.filter = 'alpha(opacity=' + opac + ')'; //IE
		objStyle.MozOpacity = (opac / 100); //Mozilla & Firefox (old versions)
		objStyle.KhtmlOpacity = (opac / 100); //Safari (old version) & Konqueror
	}
	
	var rollNews = function() { //rolls "newslayer1" & "newslayer2" upwards
		var objLayer1; var objLayer2; var objLayer; var intFrame;
		var intL1Top; var intL2Top;
		
		objLayer = document.getElementById('newslayer1');
		intL1Top = parseInt(objLayer.style.top.slice(0, (objLayer.style.top.length - 2)));
		objLayer.style.top = (intL1Top - 1) + 'px';
		
		objLayer = document.getElementById('newslayer2');
		intL2Top = parseInt(objLayer.style.top.slice(0, (objLayer.style.top.length - 2)));
		objLayer.style.top = (intL2Top - 1) + 'px';
		
		if(((!_layer2s['newsroll']) && (intL2Top == 1)) || ((_layer2s['newsroll']) && (intL2Top == -39))) {
			if(!_layer2s['newsroll']) {objLayer = document.getElementById('newslayer1');}
			objLayer.style.top = '40px';
			
			intFrame = parseInt(objLayer.className.slice(5));
			document.getElementById('newsframe' + intFrame).appendChild(objLayer.firstChild);
			
			_layer2s['newsroll'] = !_layer2s['newsroll'];
		} else {setTimeout('CON.gallery.rollNews()', 25);}
	}
	
	var trimFrame = function(dvid) { //makes certain only 1 element node (gallery: "galcontent" or newsroll: "h3") exists w/in frame
		dvid = (typeof(dvid) == 'string') ? dvid : '';
	
		var objDiv; var objNode;
		var i; var j;
		
		if(dvid != '') {
			objDiv = document.getElementById(dvid); j = objDiv.childNodes.length;
			if(j > 1) {
				for(i=0; i<j; i++) {
					if(objDiv.childNodes[i].nodeType == 1) {
						if(((objDiv.childNodes[i].className == 'galcontent') && (dvid = 'gallery')) || ((objDiv.childNodes[i].nodeName.toLowerCase() == 'h3') && (dvid = 'newsroll'))) {
							objNode = objDiv.childNodes[i].cloneNode(true); break;
						}
					}
				}
				while(objDiv.firstChild) {objDiv.removeChild(objDiv.firstChild);}
				if(typeof(objNode) != 'undefined') {objDiv.appendChild(objNode);}
			}
		}
	}
	
	return {
		init: onInit, onLoad: onLoad,
		fadeGallery: fadeGallery, rollNews: rollNews, autoNextFrame: autoNextFrame
	}

}();

var trace = function(text) {alert(text);} //allows "trace" to be used in place of "alert"
window.onload = CON.page.onLoad;
CON.page.init();
