/****************
Default JS file for all flex templates
motoole- 03.05.09
****************/
var msg = "";

document.observe("dom:loaded", function() {
	Page.init();
});


Event.observe(window, 'load', function() {
	Slide.init();
});

var Page = Class.create();
Page = {
	init: function() {
		if(typeof stationInit == 'function') {stationInit()} // check for station specific load scripts
		if(typeof pageInit == 'function') {pageInit()} // check for page specific load scripts
		Tabs.init();
//		Slide.init();
//		Forms.init();
		Tip.check();
		Collapse.init();
		Pagination.init();
	}, 
	m: function(message) {
		$('msg').innerHTML = message;
	}
}


var Featured = Class.create();
Featured = {
	init: function() {
		if($$('.featured').length > 0) {}
	}
}

var slideTimer;

var Slide = Class.create();
Slide = {
	init: function() {
		if($$('.slide-item').length > 0) {
			var slideItems = $$('.slide-item');
			var slideHeight = 0;
			var slideWidth = $$('.slide-item')[0].getWidth();

			$$('.slide-item').each(function(s){
				s.setStyle({
				  width: slideWidth
				});
			});
			
			slideItems.each(function(s,index){
				s.identify();
				if(slideHeight < s.getHeight()) {
					slideHeight = s.getHeight();
				}
			});
			
		
			$$('.slide-item').each(function(s){
				s.setStyle({
				  height: slideHeight
				});
			});
			
			Slide.controls(slideItems);
			Slide.autoChange();
		}
	}, 
	controls: function(items) {
		var con = $$('.slide-item').first().up('.slide-inner');
		var conDIV = new Element('div', {'class': 'pagination slide-control nav-c'});
		var conUL = new Element('ul', {'class': 'nav-h'});

		items.each(function(s,index){
			if(index==0) {onClass='on'} else {onClass = ''};
			conUL.appendChild(
				new Element('li', {'class': onClass}).update(
					new Element('a', {'href': 'javascript:void(0);'}).update (
						new Element('span').update(
							index + 1
						)
					)
				)
			);		
		});

		$(conUL).immediateDescendants().each(function(s){
			$(s.down('A')).observe('click', function(event) {
				Slide.change(event);
			});
		});
		conDIV.appendChild(conUL);
		con.appendChild(conDIV);
	}, 
	autoChange: function() {
		$$('.slide-item').each(function(s,index){
			if(!s.hasClassName('hide')){snum = index + 1;}
		});

		slideTimer=setTimeout("Slide.next(snum)",3000);
	}, 
	change: function(event) {
		elm = Event.element(event);
		
		if(elm.childElements().length > 0) {
			slideNum = elm.down('SPAN').innerHTML;
		} else {
			slideNum = elm.innerHTML;
		}		
		
		slideNum = slideNum - 1;
		Slide.next(slideNum);
		clearTimeout(slideTimer);

	}, 
	next: function(snum) {
		var slideItems = $$('.slide-item');
		var slideControls = $($$('.slide-control').first().down(0)).immediateDescendants();

		var slideCount = slideItems.length -1;

		slideItems.each(function(s) {s.addClassName('hide')});
		slideControls.each(function(s) {s.removeClassName('on')});

		if(snum > slideCount) {snum = 0;}

		slideItems[snum].removeClassName('hide');
		slideControls[snum].addClassName('on');

		Slide.autoChange();
	}
}


var Tabs = Class.create();
Tabs = {
	init: function() {
		var tabs = $$('.tabs-nav');
		if(tabs.length > 0) {
			tabs.each(function(s){
				Tabs.setTabs(s.down('ul'));
			});
		}
	}, 
	setTabs: function(tabset) {
		coll = tabset.childElements();
		
		$(coll)[0].up('.tabs-container').down('.tabs-content').immediateDescendants().each(function(s,index){
			if(!$(s).hasClassName('hide')) {
				Tabs.highlight($(coll)[index]);
			}
		});
		
		coll.each(function(s,index){
			$(s).writeAttribute("id", $(s).identify());
			$(s).observe('click', function(event){
				Tabs.toggle(event);
			});
		});
		
	}, 
	toggle: function(event) {
		val = $(Event.element(event).up('li')).id;
		Tabs.highlight(val);
		num = val.charAt(val.length - 1) - 1;
		tabcontainers = $($(val).up('.tabs-container').down('.tabs-content')).childElements();
		tabcontainers.each(function(s,index){
			if(index == num) {
				s.removeClassName('hide');
			} else {
				s.addClassName('hide');
			}		
		});
	}, 
	highlight: function(ele) {
		$(ele).up('.tabs-nav').down(0).childElements().each(function(s){
			s.removeClassName('on');
		});
		$(ele).addClassName('on');
	}, 
	getTabs: function() {

	}	
}

var Tip = Class.create();
Tip = {
	check: function(){
		if($$('.tip').length > 0) {
			Tip.observe();
		}
	},
	observe: function() {
		$$('.tip').each(function(s){
			s.observe('mouseover', function(event){
				Tip.show(event);
			});
			s.observe('mouseout', function(event){
				Tip.hide(event);
			});
		});
	}, 
	create: function(element) {
		text = $(element).down('.tip-text').innerHTML;
		container = new Element('div', {'class': 'tipcontainer' })
		container.appendChild(new Element('div', {'class': 'tc-top' }).update(new Element('span')));
		container.appendChild(new Element('div', {'class': 'tc-content' }).update(new Element('span').update(text)));
		container.appendChild(new Element('div', {'class': 'tc-bottom' }).update(new Element('span')));

		return container;
	},
	show: function(event) {
		element = event.element();
		container = Tip.create(element);
		position = Tip.position(event,container);
		$(element).appendChild(container);
	},
	hide: function(event) {
		element = event.element();
		$($(element).childNodes[$(element).childElements().length - 1]).remove();
	},
	position: function(event,container) {
		element = event.element();
	}
};

var Forms = Class.create();
Forms = {
	init: function() {
		if($$('.field-time-full').length > 0) {
			Forms.timeDrop();
		}
	}, 
	timeDrop: function() {
		$$('.field-time-full').each(function(s){
			s.observe('click', function(event){Forms.timeInsert(event);});
			s.observe('keypress', function(event){Forms.timeRemove(event)});
		});

	}, 
	timeInsert: function(event) {
		element = event.element();
		
		if($('fieldtimedrop')) {$('fieldtimedrop').remove()};
		
		tDIV = Forms.timeList(event);
		tDIV.setStyle({
		  left: event.element().positionedOffset()[0],
		  top: event.element().positionedOffset()[1] + event.element().getHeight()
		});
		$(event.element()).up('.field-input').insert(tDIV);
	}, 
	timeRemove: function(event) {
		element = event.element();
		
		if($('fieldtimedrop')){
			$('fieldtimedrop').remove();
		}

	}, 
	timeList: function(event) {
		var thisTime;
		var pINPUT = event.element();
		timeUL = new Element('ul', {'id': 'fieldtimedrop', 'class': 'field-time-drop nav-v'});
		
		shift = 'PM';
		for(i=0;i<24;i++) {
			if(i==0) {thisTime = 12;} 
			else if (i>12) {thisTime = i - 12;} 
			else {thisTime = i;}
			if(i>12) {shift = 'AM';}
			timeUL.appendChild(new Element('li').update(thisTime + ':00' + shift));
			timeUL.appendChild(new Element('li').update(thisTime + ':30' + shift));
		}


		timeUL.observe('mouseout', function(event) {
			elm = event.element();
			if($(elm).identify() == 'fieldtimedrop') {
				Page.m($(elm).identify());
				Forms.timeRemove(event).delay(.5,event);
			}
			
		});
		
		timeUL.childElements().each(function(s){
			s.observe('click', function(event) {
				Forms.timeReturn(event,pINPUT);
				Forms.timeRemove(event);
			});
		});
		
		return timeUL;
	}, 
	timeReturn: function(event,input) {
		time = event.element();
		input.value = time.innerHTML;
	}
}

var Collapse = Class.create();
Collapse = {
	init: function() {
		if($$('.collapsable').length > 0) {
			$$('.collapsable').each(function(s){
				Collapse.setup(s);
			});
		}
	}, 
	setup: function(elm) {
		content = $(elm).down('.e-content');
		title = $(elm).down('span.title');
	
		title.addClassName('expand');
//		title.insert( new Element('a', {'class':'toggle','href':'#'}), {position:'before'} );
		title.insert({top:new Element('a', {'class':'toggle','href':'#'})});

		content.addClassName('hide');

		title.observe('click', function(event) {
			if(content.hasClassName('hide')) {
				content.removeClassName('hide');
				title.removeClassName('expand');
			} else {
				content.addClassName('hide');
				title.addClassName('expand');
			}
		});
	}
}

var Pagination = Class.create();
Pagination = {
	init: function() {
		if($$('.nav-c')) {
			$$('.nav-c').each(function(s) {
				Pagination.center(s);
			});
		}
	},
	center: function(elm) {
		leftVal = elm.getWidth() - elm.down('ul.nav-h').getWidth();
		leftVal = leftVal / 2;
		elm.down('ul.nav-h').setStyle({
		  left: leftVal
		});
	}
}

/****************
inputTextReplace() - Toggles default input text on/off onFocus/onBlur
****************/
var inputValue;
var inputNode;
var element;
var action;

function inputTextReplace(element,action,inputValue) {
	if(action == 'focus') {
		$(element).value = inputValue;
	} else {
		if($(element).value == '') {
			$(element).value = inputValue;
		}
	}
}

/* used in the tools box "email to" link */
function popup(copyURL,newwidth,newheight){
	newwidth = newwidth + 15;
	newheight = newheight + 15;
	window.open(copyURL, 'newwin', 'toolbar=no,location=no,directories=no,status=no,scrollbars=yes,menubar=no,width=' + newwidth + ',height=' + newheight);
};