function usrActionReg(which,action) {
   if (action == 20) {
      window.print();
   }
   else if (action == 19) {
      location.href='mailto:?subject='+encodeURIComponent(document.title)+'&body='+encodeURIComponent(location.href);
   }
}


function showAcrobat() {
	var el = document.getElementById('acrobat');
	if(el.className == 'bury static') {el.className = 'drill'};
}

function rmAcrobat() {
	var el = document.getElementById('acrobat');
	if(el.className == 'drill') {el.className = 'bury static'};
}

function toolbar() {
	if ($$('.social')) {
     	var social = $$('.social');
		social.each(function(el, i){ 
			el.addEvent('mouseenter', function(e){ 
				social[i].addClass('drill'); 
			});	
			el.addEvent('mouseleave', function(e){ 
				social[i].removeClass('drill'); 
			});
		})
	} // end social

	if ($('embed')) {
		var link = $$('#embed a');
		var cont = $('embed');
		link.addEvent('click', function(e){ 
			e = new Event(e).stop();
			cont.toggleClass('drill');
		});
	}
}

function selector() {
	var selector = $$('.selector');
	var selectBox = $$('.selectBox');
	var remember = true; //cookie
	var warehouse = [];
	
	selector.each(function(el,i){
		var selectTabs = el.getElements('li');
		var name = selectTabs[0].get('text').slice(0,10).replace(/[ \t]/g, "")+"_"+document.URL.slice(document.URL.length - 15, document.URL.length - 5);
		var pos = 0;
		var locateBox = [];
		warehouse.push(locateBox);
		if (el.getElements('.external') != ""){
			remember = false;
		}

		selectTabs.each(function(ela, ia){
			
			locateBox.push(selectBox[0]);
			selectBox.splice(0,1);
			
			ela.addEvent('click', function(e){	
				e = new Event(e).stop();
				selectTabs[pos].removeClass('on');
				warehouse[i][pos].removeClass('on');
				selectTabs[ia].addClass('on');
				warehouse[i][ia].addClass('on');
				pos = ia;
				if (remember) {
					Cookie.write(name, ia, {duration: 12});
				}
			});
		});//selectTabs.each
		
		if (remember) {
			var tab = Cookie.read(name);
			if (tab) {
				pos = tab;
				selectTabs[0].removeClass('on');
				selectTabs[pos].addClass('on');
				warehouse[i][0].removeClass('on');
				warehouse[i][pos].addClass('on');
			}
		}
	}); //selector.each
} //selector


function sideBox() {
	var post = $$('.post');	
	post.each(function(el){ 
		var para = el.getElements('p');
		$('sideBox').inject(para[0],'after');
	})
} //sideBox

function acrobat() {
	var	el = $('acrobat');
	var	fix = $$('.river');
	el.addEvent('mouseenter', function(){ 
		el.addClass('on'); 
		fix.each(function(el2){ el2.setStyle('position', 'static');})
	});
	
	el.addEvent('mouseleave', function(){ 
		el.removeClass('on');
		fix.each(function(el2){ el2.setStyle('position', 'relative');})
	});
}

var CustomTags = {
	truncate: function(amount){
		$$('.tags').each(function(el){
			var links = el.get('html').split(',');
			if (links.length > amount) {
				var hiddenLinks = links.splice(amount,links.length - amount);
				hiddenLinks = hiddenLinks.join(', ');
				links = links.join(', ');
				el.set('html',links);
				var ellipsis = new Element ('span', {'class': 'ellipsis'}).set('html','...').inject(el,'bottom');
				var hiddenCont = new Element ('span', {'class': 'more'}).set('html',',' + hiddenLinks).inject(el,'bottom');
				el.addEvents({
					'mouseenter': function(){
						ellipsis.setStyle('display','none');
						hiddenCont.setStyle('display','inline');
					},
					'mouseleave': function(){
						ellipsis.setStyle('display','inline');
						hiddenCont.setStyle('display','none');
					}
				});
			}
		});
	}
};

var SearchSwitcher = {
	init: function(start){
		this.bnetSearch = $('bnetSearch');
		this.searchoptions = $$('#search ul li');
		this.querybox = $('searchbox');
		this.fa = false;
		this.faSearch = $('faSearch');
		this.faSearch.addEvent('submit', function(e) {
			e.stop();
			var query = this.faSearch.toQueryString();
			var queryUrl = query.replace("%20","+");
			window.location = "http://findarticles.com/p/search?" + queryUrl + "&x=0&y=0";
		}.bind(this));

	if (start == 'fa') {
		this.fa = true;
		this.bnetSearch.setStyle('display','none');
	} else {
		this.faSearch.setStyle('display','none');
	}

		this.searchoptions.each(function(el,i){
			el.addEvent('click', function(e){
				e = new Event(e).stop();
				this.setOff();
				this.setOn(el);
			}.bind(this));
		}.bind(this));
	},
	
	setOn: function(el){
		el.addClass('on');
		this.setParams(el.get('id'));

		if (!this.fa) {
			this.bnetSearch.set({
				'styles': {
					'display': 'block'
					},	
				'action' : this.action
			});
			this.querybox.set('name',this.query);
		}
	},

	setOff: function(){
		this.searchoptions.each(function(el,i){
			el.removeClass('on');
		}.bind(this));

		if ($chk(this.hidden)) {
			this.hidden.destroy();
		}

		if (this.fa) {
			this.faSearch.setStyle('display','none');
			this.fa = false;
		}
	},

	setParams: function(id){

		switch (id) {
			case 'srchAll':
				this.action = "http://resources.bnet.com/index.php";
				this.query = "q";
				break;
			case 'srchArt':
				// function to hide BNET and show FA search
				this.fa = true;
				this.bnetSearch.setStyle('display','none');
				this.faSearch.setStyle('display','block');
				break;
			case 'srchLib':
				this.action = "http://jobfunctions.bnet.com/search.aspx";
				this.query = "q";
				break;
			case 'srchStks':
				this.action = "http://finance.bnet.com/bnet";
				this.query = "q";
				this.hidden = new Element ('input', {
					'type': 'hidden',
					'name': 'Page',
					'value': 'Quote'
					}).inject(this.bnetSearch,'bottom');				
				break;
			case 'srchDict':
				this.action = "http://dictionary.bnet.com/index.php";
				this.query = "d";
				break;
			} // switch
		} // setParams
};


// Pillars - initializes dropdown for Pillars

var Pillars = {
	init: function(){
		this.handles = $$('#pillars h5');
		this.contents = $$('#pillars .inner');
		
		var truncate = new CNBTruncate($$('#pillars h5 span'),{
			'length': 38
		});

		this.handles.each(function(el,i){
			var drop = new Dropdown(this.contents[i]);
			el.addEvent('click', function(e){
				e = new Event(e).stop();
				if(!this.contents[i].hasClass('on')) this.closeAll();
				drop.chain(function(){ 
					el.toggleClass('on');
				})
				drop.toggle();
			}.bind(this));
		}.bind(this));
	},
	
	closeAll: function(){
		this.contents.each(function(el,i){
			if (el.hasClass('on')) {
				var drop = new Dropdown(el);
				this.handles[i].removeClass('on');
				drop.close();
			}
		}.bind(this));
	}
};

/* Dropdown */

var Dropdown = new Class({
	Implements: [Chain, Options],
	options: {
		speed:  300
	},
	
	initialize: function(element,options){
		this.setOptions(options);
		this.element = element;
		this.height = this.element.getScrollSize().y;

		if (!this.options.open && this.element.get('height') != '0') {
			this.element.setStyles({
				visibility: 'hidden', //set this in the css also
		    	height: 0,
				overflow: 'hidden'
			});
		}
		this.fx = new Fx.Morph(this.element, {duration: this.options.speed, link: 'ignore'});
	},
	
	toggle: function(){
		(this.element.hasClass('on')) ? this.close() : this.open();
	},
	
	open: function(){
		this.element.setStyle('visibility', 'visible');
		this.callChain();
		this.fx.start({
			'height': this.height
		});
		this.element.addClass('on');
	},
	
	close: function(){
		this.fx.start({
			'height': 0
		}).chain(function(){
			this.element.setStyle('visibility', 'hidden');
			this.callChain();
		}.bind(this));
		this.element.removeClass('on');
	}
});

CNBTruncate = new Class({
	//Todo: add format = words and more/less options
	Implements: Options,
	options: {
		format: 'characters', 
		length: 100,
		showMore: false,
		truncEnd: '...',
		moreText: {
			more: '+more',
			less: '-less'
		}
	},

	initialize: function(content,options){
		this.setOptions(options);
		
		if ($type(content) != 'array') { content = [content]; }
		
		content.each(function(el){ 
			var text = el.get('text');
			
			if (text.length > this.options.length) {
				// regex determines if it\'s the middle of a word or space
				var trunc = text.substring(0, this.options.length).replace(/\w+$/, '').replace(/\s+$/, '');

				this.replaceText(el,trunc);
			}
		}.bind(this));

	},
	
	replaceText: function(el,text){
		el.set('html',text + this.options.truncEnd);
	}
});


InputFocus = new Class({

	Implements: Options,
	options: {
		container: null,
		className: 'focus'
	},

	initialize: function(options){
		this.setOptions(options);
		$$('.'+this.options.className).each(function(el,i){
			el.addClass('unfocus');
			el.removeClass('focus');
			var original = el.get('value');
			el.addEvent('focus', function(e){
				if (el.hasClass('unfocus')) {
					el.removeClass('unfocus');
					el.set('value','');
				}
			}.bind(this));
			el.addEvent('blur', function(e){	
				if(!$chk(el.get('value'))) {
					el.addClass('unfocus');
					el.set('value',original);
				}
			}.bind(this));
		}.bind(this));
	}
});


function feedbackPop(email) {
	var load = window.open('http://blogs.zdnet.com/emailform.php?email='+email,'','scrollbars=no,menubar=no,height=640,width=400,resizable=no,toolbar=no,location=no,status=no');
	load.document.close();
}

function viewChanger() {
	$$('.view-changer').each(function(el, i){ 
		var items = el.getElements('li');
		var target = el.get('rel');
		var views = $$("'." + target + "'");
		
		items.each(function(el2){
			var viewClass = el2.get('class').replace("changer","view");
			
			el2.addEvent('click', function(e){	
				e = new Event(e).stop();
				items.each(function(el3){
					el3.getElements('a').removeClass('on');
				});
				el2.getElements('a').addClass('on');
				
				views.each(function(el4){
					var findClass = el4.get('class').split(' ');
					findClass.each(function(el5){
						if (el5.contains('view')) el4.removeClass(el5);
					});
					el4.addClass(viewClass);
				});
				Cookie.write('viewChanger', viewClass, {duration: 5});
			});
		});
		
		var pastView = Cookie.read('viewChanger');
		if (pastView) {
			items.each(function(el3){
				el3.getElements('a').removeClass('on');
				if (el3.get('class').replace("changer","view") == pastView) {
					el3.getElements('a').addClass('on');
				}

			});

			views.each(function(el4){
				var findClass = el4.get('class').split(' ');
				findClass.each(function(el5){
					if (el5.contains('view')) el4.removeClass(el5);
				});
				el4.addClass(pastView);
			});
		}
	});
};


window.addEvent('domready', function() {		
	if ($$('.toolbar') && $$('.toolbar') != "") toolbar();
	if ($$('.selector') && $$('.selector') != "") selector();
	if ($('sideBox')) sideBox();
	if ($('acrobat')) acrobat();	
	if ($$('.tags') != "" && typeof(Tags) == 'undefined') CustomTags.truncate(5);

	if (typeof(CNB) == 'undefined') {
		if ($('pillars')) Pillars.init();
		if ($$('.focus') != "") new InputFocus();
		if ($$('.view-changer') != "") viewChanger();
	}

});
