/*
Created By: Devon Beck
Website: http://www.401creative.com
Date: 10/18/2008
*/

/*-------------------------------GLOBAL VARIABLES------------------------------------*/
var width = 920;
var margin = 2;

/*-----------------------------------------------------------------------------------------------*/

var articleShifter = Class.create({

	initialize: function(ctrl,t) {
		if(t!=0){
			this.ctrl = $(ctrl);
			this.t = t-1;
			this.as_prev = $(this.ctrl).getElementsByClassName('as_prev');
			this.as_next = $(this.ctrl).getElementsByClassName('as_next');
			this.as_counter = $(this.ctrl).getElementsByClassName('as_counter');
			Event.observe(this.as_prev[0], 'click', this.previous.bindAsEventListener(this));
			Event.observe(this.as_next[0], 'click', this.next.bindAsEventListener(this));
			this.content = this.as_prev[0].rel;
			this.grouping = parseFloat(this.as_next[0].rel);			
			this.page = 0;
			this.as_nav = $(this.ctrl).getElementsByClassName('as_nav');
			this.as_nav_ul = $(this.as_nav[0]).firstDescendant();
			this.as_nav_li = $(this.as_nav_ul).getElementsByTagName('li');
			this.numPages = $(this.as_nav_li).length;
			var pageLink = this.as_nav_li[this.t];
			var ancr = pageLink.getElementsByTagName('a');
			this.url = ancr[0].href;
			this.loadInfo(null,this.url,this.t);
		} else {
			this.ctrl = $(ctrl);
			
			this.as_prev = $(this.ctrl).getElementsByClassName('as_prev');
			this.as_next = $(this.ctrl).getElementsByClassName('as_next');
			this.as_counter = $(this.ctrl).getElementsByClassName('as_counter');
			Event.observe(this.as_prev[0], 'click', this.previous.bindAsEventListener(this));
			Event.observe(this.as_next[0], 'click', this.next.bindAsEventListener(this));
			this.content = this.as_prev[0].rel;
			this.grouping = parseFloat(this.as_next[0].rel);
			
			this.page = 0;
			this.as_nav = $(this.ctrl).getElementsByClassName('as_nav');
			this.as_nav_ul = $(this.as_nav[0]).firstDescendant();
			this.as_nav_li = $(this.as_nav_ul).getElementsByTagName('li');
			this.numPages = $(this.as_nav_li).length;
			
			var auto = 0;
			
			for(var j=0; j<this.numPages; j++){
				var pageLink = $(this.as_nav_li[j]);
				var ancr = $(pageLink).getElementsByTagName('a');
				if ($(ancr[0]).hasClassName('on')){
					auto = j;
				}
				var url = ancr[0].href;		
				Event.observe(pageLink, 'click', this.loadInfo.bindAsEventListener(this, url, j));
				pageLink.onclick = function(){return false;};
			}
			var pageLink = this.as_nav_li[auto];
			var ancr = pageLink.getElementsByTagName('a');
			this.url = ancr[0].href;
			this.loadInfo(null,this.url,auto);
		}
	},
	
	// Begin Ajax request based off of the href of the clicked linked
	loadInfo: function(e,url,jj) {
		this.url = url;
		
		for(var l=0; l<this.numPages; l++){
			var pageLink = this.as_nav_li[l];
			var ancr = pageLink.getElementsByTagName('a');
			if (l != jj){				
				if ($(ancr[0]).hasClassName('on')){
					$(ancr[0]).removeClassName('on');
				}
			} else {
				if (!$(ancr[0]).hasClassName('on')){
					$(ancr[0]).addClassName('on');
				}
			}
		}
		
		var loading = '<div id="loading">Loading Content...</div>';
		Element.update(this.content, ' ');
		new Insertion.Top($(this.content), loading);
		
		var as_ajax = new Ajax.Request(this.url, {method: 'get', onComplete: this.processInfo.bindAsEventListener(this)});		
	},
	
	// Display Ajax response
	processInfo: function(response){
		info = response.responseText;
		Element.update(this.content, ' ');
		new Insertion.Top($(this.content), info);
		this.changePage();
		this.checkLinks();
	},
	
	changePage: function() {
		
		this.group = 0;
		this.numElements = $(this.content).getElementsByTagName('li').length;
		this.numGroups = Math.ceil(this.numElements/this.grouping);
		new Effect.Move(this.content, {x:0, y:0, mode: 'absolute', duration: 0.0});	
		
		if(this.numElements <= this.grouping){
			$(this.as_prev[0]).style.visibility = 'hidden';
			$(this.as_next[0]).style.visibility = 'hidden';
			$(this.as_counter[0]).style.visibility = 'hidden';
			this.checkLinks();
		} else {
			this.as_prev[0].style.visibility = 'visible';
			this.as_next[0].style.visibility = 'visible';
			this.as_counter[0].style.visibility = 'visible';
			if(!this.as_prev[0].hasClassName('off')){
				this.as_prev[0].addClassName('off');
			}
			if(this.as_next[0].hasClassName('off')){
				this.as_next[0].removeClassName('off');
			}
			this.as_prev[0].onclick = function(){return false;};
			this.as_next[0].onclick = function(){return false;};
			this.changeCounter();
			this.resizeContainer();
		}
	},
	
	previous: function() {
		if (this.group > 0){
			this.group--;
			new Effect.Move(this.content, {x:-((this.group*width)), y:0, mode: 'absolute', duration: 0.6});
			if (this.group == 0){
				this.as_prev[0].addClassName('off');	
			}
			this.changeCounter();
		}
		if (this.group != (this.numGroups-1)){
			this.as_next[0].removeClassName('off');
		}
	},
	
	next: function() {
		if (this.group < (this.numGroups-1)){
			this.group++;
			new Effect.Move(this.content, {x:-(this.group*(width)), y:0, mode: 'absolute', duration: 0.6});
			if (this.group == (this.numGroups-1)) {
				this.as_next[0].addClassName('off');
			}
			this.changeCounter();
		}
		if (this.group != 0){
			this.as_prev[0].removeClassName('off');
		}
	},
	
	// change the counter
	changeCounter: function(){
		Element.update(this.as_counter[0], ' ');
		counter_html = ((this.group*this.grouping)+1) + ' - ';
		if(((this.group*this.grouping)+this.grouping) <= this.numElements){
			counter_html += (this.group*this.grouping)+this.grouping;
		} else {
			counter_html += this.numElements;
		}
		counter_html += ' <i>of</i> ';
		counter_html += this.numElements;
		this.as_counter[0].innerHTML = counter_html;
	},
	
	// resizes container so all the content will fill width of container
	resizeContainer: function(){
		this.newwidth = (width)*this.numGroups+5;
		$(this.content).style.width = this.newwidth.toString() + 'px';
	},
	
	checkLinks: function(){
		lbox = $(this.content).getElementsByClassName('lbOn');
		for(var k = 0; k < lbox.length; k++) {
			var valid = new lightbox(lbox[k]);
		}
		flash = $(this.content).getElementsByClassName('flash');
		for(var f = 0; f < flash.length; f++) {
			var fc = new flashConnect(flash[f]);
		}
	}
});

/*-----------------------------------------------------------------------------------------------*/

var articleReplacer = Class.create({
								  
	initialize: function(ctrl,v) {
		if(v!=0){
			this.ctrl = $(ctrl);
			this.v = v;
			this.content = $('replacer_container');
			this.page = 0;
			this.ar_nav = $(this.ctrl).getElementsByClassName('ar_nav');
			this.ar_nav_ul = $(this.ar_nav[0]).firstDescendant();
			this.ar_nav_li = $(this.ar_nav_ul).getElementsByTagName('li');
			this.numPages = $(this.ar_nav_li).length;
			var pageLink = this.ar_nav_li[this.v];
			var ancr = pageLink.getElementsByTagName('a');
			this.url = ancr[0].href;
			this.loadInfo(null,this.url,this.v);
		} else {
			this.ctrl = $(ctrl);
			this.content = $('replacer_container');
			this.page = 0;
			this.ar_nav = $(this.ctrl).getElementsByClassName('ar_nav');
			this.ar_nav_ul = $(this.ar_nav[0]).firstDescendant();
			this.ar_nav_li = $(this.ar_nav_ul).getElementsByTagName('li');
			this.numPages = $(this.ar_nav_li).length;
			this.checkLinks();
			
			var auto = 0;
			
			for(var j=0; j<this.numPages; j++){
				var pageLink = $(this.ar_nav_li[j]);
				var ancr = $(pageLink).getElementsByTagName('a');
				if ($(ancr[0]).hasClassName('on')){
					auto = j;
				}
				var url = ancr[0].href;
				if(url){
					Event.observe(pageLink, 'click', this.loadInfo.bindAsEventListener(this, url, j));
				}
				pageLink.onclick = function(){return false;};
			}
			var pageLink = this.ar_nav_li[auto];
			var ancr = pageLink.getElementsByTagName('a');
			this.url = ancr[0].href;
			this.loadInfo(null,this.url,auto);
		}
	},
	
	// Begin Ajax request based off of the href of the clicked linked
	loadInfo: function(e,url,jj) {
		this.url = url;
		
		for(var l=0; l<this.numPages; l++){
			var pageLink = this.ar_nav_li[l];
			var ancr = pageLink.getElementsByTagName('a');
			if (l != jj){				
				if ($(ancr[0]).hasClassName('on')){
					$(ancr[0]).removeClassName('on');
				}
			} else {
				if (!$(ancr[0]).hasClassName('on')){
					$(ancr[0]).addClassName('on');
				}
			}
		}
		
		var loading = '<div id="loading">Loading Content...</div>';
		Element.update(this.content, ' ');
		new Insertion.Top($(this.content), loading);
		
		var ar_ajax = new Ajax.Request(this.url, {method: 'get', onComplete: this.processInfo.bindAsEventListener(this)});
	},
	
	// Display Ajax response
	processInfo: function(response){
		info = response.responseText;
		Element.update(this.content, ' ');
		new Insertion.Top($(this.content), info);
	},
	
	checkLinks: function(){
		flash = $(this.ar_nav_ul).getElementsByClassName('flash');
		for(var f = 0; f < flash.length; f++) {
			var fc = new flashConnect(flash[f]);
		}
	}
	
});
