
var Local = {

    onCommentReply: function(id) {
		Comments.openReply(id);
		comment_count($('comment_thread_wrapper'))
	},

    onCancelReply: function(id) {
		Comments.closeReply();
	}

};

var window_loaded = false;

Event.onDOMReady(function(){
        form_defaults();
	hero_controls();
	style_radios();
	remove_font_tags();
	randomize_archive();
	media_box();
	init_subscriber_form();
	equal_columns();
	search_box();
	comment_count();
	donation_form_setup();
        $$('a').each(
		function(link) {
			Event.observe(link, 'click', function() { link.blur() });
		}
	)
//	podcast_player_setup();
});

Event.observe(window,'load',
	function() {
		equal_columns();
		window_loaded = true;
	}
);

var donation_form_submit = null;

function donation_form_setup() {
	

	var calculateTotal = function(radiobuttons){
                if(radiobuttons[radiobuttons.length-1].checked){
			return parseInt($$('#donation-form .form-element.form-type-amount input')[0].value);
		}
		var toreturn = 0;
		radiobuttons.slice(0,(radiobuttons.length-1)).each( function(item){
                        if(item.checked){
				toreturn += parseInt(item.value);
			}
                });
		return toreturn;
	}

	$$('#donation-form form').each( function(item){
		var radiobuttons = Form.getInputs(item,'radio');
		
		if(radiobuttons.length > 0){
			//clicking on the specific amount radios will deselect and clear the personalized amount input.
			radiobuttons.slice(0,(radiobuttons.length-1)).each( function(item){
					Event.observe(item,'click', function(){clearAmountField(); });
			});
		
			//click on the personalized amount input will select the other
			$$('#donation-form .form-element.form-type-amount input').each( function(item){
                        	Event.observe(item,'click', function(){ radiobuttons[radiobuttons.length-1].checked = true; });
			});
			
			//bind the lightbox to the click event on the submit button
			$$('.input-button').each( function(item){
                        	Event.observe(item,'click', function(){ 
					Lightbox.showBoxByID('donationlightbox', 490, 200);
					$('donationlightboxtotal').innerHTML = '';
					new Insertion.Bottom($('donationlightboxtotal'),calculateTotal(radiobuttons)+".00");
					return false; 
				});
			});
			
		               					
			//writeout the lightbox info
			var confirmationtext = '<div id="donationlightbox" style="display:none;">';
            		confirmationtext += '<h2><strong>Your credit card will be charged $<span id="donationlightboxtotal"></span>.</strong><br /> Are you sure you want to proceed?</strong></h2>';
            		confirmationtext += '<div id="donationlightboxbuttons"><a id="donationlightboxconfirmedsubmit" href="#" onclick="donation_form_submit();return false;"><img src="/images/submitbutton.gif" alt="submit"/></a><a href="#" onclick="Lightbox.hideBox();">Cancel</a> or </div>';
            		confirmationtext += '</div>';
            		var body = document.getElementsByTagName("body").item(0);
    			new Insertion.Bottom(body, confirmationtext);

                        donation_form_submit = function(){ item.submit(); };
		}
		
	});

	

	var clearAmountField = function() {
		$$('#donation-form .form-element.form-type-amount input').each( function(item){
			Form.Element.clear(item);
		});
	}
};

function comment_count(parent) {
	if(typeof parent == 'undefined') {
		parent = $('comment_form_wrapper')
	}
	if(!parent) {
		return
	}
	if(typeof parent.getElementsBySelector == 'function') {
		textareas = parent.getElementsBySelector('textarea[!count]')
	} else if(typeof parent.select == 'function') {
		textareas = parent.select('textarea[!count]')
	} else {
		return
	}
	
	if(textareas == null) {
		return
	}
	
	textareas.each(function(textarea) {
		var counter = document.createElement('div');
		var words = textarea.getValue().split(" ");
		var count = words.length - 1;
		var limit = 150;
		counter.className = 'word-count';
		textarea.parentNode.appendChild(counter);
		textarea.setAttribute('count','true')
		counter.appendChild(document.createTextNode('Word Count (' + count + '/' + limit + ')'));
		Event.observe(textarea, 'keyup', function(){
			words = textarea.getValue().split(" ");
			count = words.length - 1;
			if(count < limit) {
				counter.innerHTML = '';
				counter.appendChild(document.createTextNode('Word Count (' + count + '/' + limit + ')'));
			} else {
				textarea.value = '';
				for(var i = 0; i < limit; i++) {
					textarea.value += words[i] + ' ';
				}
				counter.innerHTML = '';
				counter.appendChild(document.createTextNode('Word Count (' + limit + '/' + limit + ')'));
			}
		})
	})
}

function strpad(str, char, num) {
        str = '' + str;
        while(str.length < num) {
                str += char;
        }   
        return str;
}

function format_currency(str) {
        var num = parseFloat(str);
        var prefix = "$";
        
        if(num < 0) {
                num = -num;
                prefix = "-" + prefix;
        }
        
        var a = ('' + num).split('.');
        return prefix + a[0] + '.' + strpad(a[1] || '', '0', 2).substring(0, 2);
}

function init_subscriber_form() {
	var page = $$('.subscribe-form, .subscriber-renew-form, .subscriber-edit-form, .subscriber-pass-form');
	if(page.size() > 0) {
		page = page.first();

		/*
		 * SHIP SAME
		 */
		var el = $$('.shipping-same .input-checkbox').first();
		var shippingEl = $$('fieldset.shipping').first();
		//Element.hide(shippingEl);
		
		//Event.observe(el, 'click', function(e) {
		//		var el = Event.element(e);
		//		if(el.checked) {
		//			Element.hide(shippingEl);
		//		}
		//		else {
		//			Element.show(shippingEl);
		//		}
		//});


		/*
		 * SEPARATE FORMS
		 */
		function hideAllExcept(els, parent) {
			parent = parent || '.form-subscribe-form form';
			
			$$(parent).first().childElements().each(function(o) {
					o.hide();
			});

			$$(els + ',.form-type-submit').each(function(o) {
					o.show();
			});			
		}
		
		if(page.hasClassName('subscriber-renew-form')) {
			hideAllExcept('.subscribe-options, .form-type-payment, .subscribe-total, .form-type-profile');
			hideAllExcept('.form-type-address', '.form-type-profile');
		}
		else if(page.hasClassName('subscriber-edit-form')) {
			$$('.subscribe-options, .form-type-payment, .num-mags, .subscribe-total').invoke('hide');

			var shippingInputs = $$('.shipping input');
			if(shippingInputs[1].value != '') {
				el.checked = false;
				Element.show($$('.shipping').first());
			}
		}
		else if(page.hasClassName('subscriber-pass-form')) {
			hideAllExcept('.form-type-password');
		}

		if(!page.hasClassName('subscriber-pass-form')) {
			$$('.form-type-password').first().hide();
		}

		if(page.hasClassName('subscribe-form') || page.hasClassName('subscriber-renew-form')) {
			var total_func = function() {
				var form = $$('.form-subscribe-form').first();
				var shipsame = form.getElementsBySelector('.shipping-same input').first().getValue() == "Yes";
				var country_el;
				
				if(shipsame) {
					country_el = 'billing-country';
				}
				else {
					country_el = 'ship-country';
				}

				var country = form.getElementsBySelector('.' + country_el + ' select').first().getValue();
				var num_mags = parseFloat(form.getElementsBySelector('.num-mags input').first().getValue());
				var price = 0;
				var extra = 0;
				var years = 0;

				if('' + num_mags != 'NaN') {
					var options = form.getElementsBySelector('.subscribe-options input');
					options.each(function(o, i) {
						if(o.checked) {
							price = parseFloat(o.getValue());
							years = i+1;
						}
					});

					if(country == 'Canada') {
						extra = years * 8;
					}

					$('subscribe-total').innerHTML = format_currency((price + extra) * num_mags);
				}
				else {
					$('subscribe-total').innerHTML = "";
				}
			}

			total_func();

			var form = $$('.form-subscribe-form').first();
			Event.observe(form.getElementsBySelector('.billing-country select').first(), 'change', total_func);
			Event.observe(form.getElementsBySelector('.ship-country select').first(), 'change', total_func);
			Event.observe(form.getElementsBySelector('.shipping-same input').first(), 'click', total_func);
			Event.observe(form.getElementsBySelector('.num-mags input').first(), 'keyup', total_func);
			form.getElementsBySelector('.subscribe-options input').each(function(o) {
					Event.observe(o, 'click', total_func);
			});

		}

	}
}

function form_defaults() {
	$$('input[type=text]', 'input[type=password]').each(
		function(input) {
			if(input.up('div.form-subscribe-form')) {
				return false;
			}
			var default_text = input.getValue();
			Event.observe(input, 'focus',
				function() {
					if(input.getValue() == default_text) {
						input.value = '';
					}
				}
			);
			Event.observe(input, 'blur',
				function() {
					if(input.getValue() == '') {
						input.value = default_text;
					}
				}
			);
		}
	);
}

function hero_controls() {
	if($('imageFadeContainer')) {
		var dur = Number($('imageFadeContainer').down('input[name~=showvalue]').getValue());
		var fade = Number($('imageFadeContainer').down('input[name~=fadevalue]').getValue());
		var count = 0;
		var heroes = $('imageFadeContainer').getElementsBySelector('img');
		heroes[0].addClassName('visible');
		var container = $(document.createElement('div'));
		container.setAttribute('id','container');
		var controls = $(document.createElement('div'));
		controls.addClassName('heroshot_navigation');
		var list = $(document.createElement('ul'));
		count = 0;
/*
		if(heroes[0].up('a')) {
			var first = heroes[0].up('a').cloneNode(true);
		} else {
			var first = heroes[0].cloneNode(true);
		}
*/
		heroes.each(
			function(img) {
				var item = $(document.createElement('li'));
				if(count == 0) {
					item.addClassName('selected');
				}
				item.innerHTML = count + 1;
				item.style.cursor = 'pointer';
				Event.observe(item,'click',
					function() {
						show_hero(item, 'jump');
					}
				);
				list.appendChild(item);
				if(img.up('a')) {
					container.appendChild(img.up('a'));
				} else {
					container.appendChild(img);
				}
				count = count + 1;	
			}
		);
//		container.appendChild(first);
		controls.appendChild(list);
		$('imageFadeContainer').appendChild(controls);
		$('imageFadeContainer').appendChild(container);

		var shadow = $(document.createElement('div'));
		shadow.addClassName('heroshot_shadow');
		$('imageFadeContainer').appendChild(shadow);

		rotation = setInterval("rotate_heroes()",dur * 1000);
	}
}

function show_hero(item, action) {
	if($('imageFadeContainer') && animate == false) {
		var dur = Number($('imageFadeContainer').down('input[name~=showvalue]').getValue());
		var fade = Number($('imageFadeContainer').down('input[name~=fadevalue]').getValue());
		var heroes = $('imageFadeContainer').getElementsBySelector('img');
		var controls = $('imageFadeContainer').down('ul').getElementsBySelector('li');
		var from_img = null;
		var to_img = null;

		if(action == 'rotate') {
			var img_no = Number(item.innerHTML - 1); // The current image being shown
			var count = 0;
			if(img_no == controls.length - 1) { // The current image is the last one in the slide show
				if(heroes[0].up('a')) {
					var first = heroes[0].up('a').cloneNode(true);
				} else {
					var first = heroes[0].cloneNode(true);
				}
				$('imageFadeContainer').down('div#container').appendChild(first);
	
				to_img = first;
				heroes[0].addClassName('visible');
				controls[0].addClassName('selected');
	
				from_img = heroes[heroes.length - 1];
				from_img.removeClassName('visible');
				controls.last().removeClassName('selected');
				setTimeout(
					function() { 
						$('imageFadeContainer').down('div#container').style.left = '0px'; 
						first.remove(); 
					},
					(fade * 1000) + 500
				);
			} else {
				from_img = heroes[img_no];
				from_img.removeClassName('visible');
				controls[img_no].removeClassName('selected');
	
				to_img = heroes[img_no + 1];			
				to_img.addClassName('visible');
				controls[img_no + 1].addClassName('selected');
			}
			var change = $('imageFadeContainer').getWidth() * -1;
		} else if(action == 'jump') {
			clearInterval(rotation);
			var count = 0;
			var current = 1;
			heroes.each(
				function(img) {
					if(img.hasClassName('visible')) {
						from_img = img;
						img.removeClassName('visible');
						controls[count].removeClassName('selected');
						current = count + 1;
					}
					count = count + 1;
				}
			);
			var img_no = Number(item.innerHTML - 1); // The image to be shown
			to_img = heroes[img_no];
			to_img.addClassName('visible');
			controls[img_no].addClassName('selected');
			rotation = setInterval("rotate_heroes()",(dur * 2) * 1000);
			var change = $('imageFadeContainer').getWidth() * (current - Number(item.innerHTML));
		}
		animate = true;
		new Effect.Move($('imageFadeContainer').down('div[id=container]'), { duration: fade, x: change, transition: Effect.Transitions.sinoidal });
		setTimeout("animate = false;",fade * 1000);
	}
}

var rotation = null;
var animate = false;

function rotate_heroes() {
	if(window_loaded == false) {
		return false;
	}

	if($('imageFadeContainer')) {
		var controls = $('imageFadeContainer').down('ul').getElementsBySelector('li');
		if(controls.length > 1) {
			controls.each(
				function(item) {
					if(item.hasClassName('selected')) {
						show_hero(item, 'rotate');
					}
				}
			);
		}
	}
}

function equal_columns() {
	var left = $('left');
	var right = $('right');
	if(left && right) {
		if(left.getHeight() < right.getHeight()) {
			var difference = right.getHeight() - left.getHeight();
			left.style.paddingBottom = (difference + Number(left.getStyle('paddingBottom').replace(/px/,''))) + 'px';
		}
	}
}

function style_radios() {
	if($('right')) {
		if($('right').getElementsBySelector('input[type=radio]')) {
			var radios = $('right').getElementsBySelector('input[type=radio]');
			radios.each(
				function(radio) {
					if(radio.next('label')) {
						radio.next('label').style.cursor = 'pointer';
						Event.observe(radio.next('label'),'click',
							function() {
								if(radio.up('form').down('label[class~=checked]')) {
									radio.up('form').down('label[class~=checked]').removeClassName('checked');
								}
								radio.next('label').toggleClassName('checked');
								if(radio.checked == '') {
									radio.checked = 'checked';
								} else {
									radio.checked = '';
								}
							}
						);
					}
				}
			);
		}
	}
}

function remove_font_tags() {
	$$('font').each(
		function(font_tag) {
			if(font_tag.innerHTML) {
				var contents = font_tag.innerHTML;
				font_tag.replace(contents);
			} else {
				font_tag.remove();
			}
		}
	);
}

function randomize_archive() {
	if($('home') && $('left')) {
		if($('left').down('div.archive_sidebar')) {
			var archive = $('left').down('div.archive_sidebar');
			var items_temp = archive.getElementsByClassName('item');
			var items = new Array();
			for(var i = 0; i < items_temp.length; i++) {
				items[i] = items_temp[i]
			}
			if(items.length > 0) {
				items.sort(function() { return 0.5 - Math.random() });
				var count = 1;
				for(var i = 0; i < items.length; i++) {
					var item = items[i]
					if(count > 2) {
						if(item.down('span.item_thumb')) {
							item.down('span.item_thumb').remove();
						}
						if(item.down('p.teaser')) {
							item.down('p.teaser').remove();
						}
						item.addClassName('item-abbreviated');
					}
					archive.appendChild(item);
					count = count+1;
				}
			}
		}
	}
}

function media_box() {
	if($('home')) {
		if($('left').down('div.media_sidebar')) {
			var media = $('left').down('div.media_sidebar').down('ul');
			var cats = media.getElementsBySelector('h2');
			var items = media.getElementsByClassName('items');

			if(items.length > 0) {
				for(var i = 0; i < items.length; i++) {
					items[i].style.display = 'none';
				}
			}
			items[0].style.display = 'block';
			cats[0].addClassName('selected');

			if(cats.length > 0) {
				cats.each(
					function(cat) {
						cat.style.cursor = 'pointer';
						Event.observe(cat, 'click',
							function() {
								if(cat.next('div.items')) {
									cats.each(
										function(cat1) {
											if(cat1.hasClassName('selected')) {
												cat1.removeClassName('selected');
											}
										}
									);
									cat.addClassName('selected');

									for(var i = 0; i < items.length; i++) {
										var item = items[i]
										if(item.visible() && item != cat.next('div.items')) {
											item.style.display = 'none';
										}
									}

									cat.next('div.items').style.display = 'block';
									new Effect.Highlight(cat.next('div.items'));
								}
							}
						);
					}
				);
			}
		}
	}
}

function podcast_player_setup() {
	$$('a[href$=mp3]').each(
		function(link, i) {
			var src		=	link.href;
			var player	=	document.createElement('object');
			var embed	=	document.createElement('embed');
			player.setAttribute('type','application/x-shockwave-flash');
			embed.setAttribute('type','application/x-shockwave-flash');
			player.setAttribute('data','/player.swf');
			embed.setAttribute('src','/player.swf');
			player.setAttribute('height', '24');
			embed.setAttribute('height', '24');
			player.setAttribute('width','269');
			embed.setAttribute('width','269');
			player.setAttribute('id','audioplayer' + i);
			var param1	=	document.createElement('param');
			param1.setAttribute('name','movie');
			param1.setAttribute('value','/player.swf');
			player.appendChild(param1);
			var param2	=	document.createElement('param');
			param2.setAttribute('name','FlashVars');
			param2.setAttribute('value','playerID='+ i +'&soundFile=' + src + '&bg=0x4f3416&text=0x867c6a&lefticon=0x867c6a&leftbg=0x5a3d1c&rightbg=0x5a3d1c&righticon=0x867c6a&righticonhover=0x867c6a&rightbghover=0x483016&track=0x4f3416&border=0x867c6a&slider=0x867c6a&loader=0x5a3d1c');
			player.appendChild(param2);
			var param3	=	document.createElement('param');
			param3.setAttribute('name','quality');
			param3.setAttribute('value','high');
			embed.setAttribute('quality','high');
			player.appendChild(param3);
			var param4	=	document.createElement('param');
			param4.setAttribute('name','menu');
			param4.setAttribute('value','false');
			player.appendChild(param4);
			var param5	=	document.createElement('param');
			param5.setAttribute('name','wmode');
			param5.setAttribute('value','transparent');
			embed.setAttribute('wmode','transparent');
			player.appendChild(param5);
			player.appendChild(embed);
			var br		=	document.createElement('br');
			link.parentNode.appendChild(br)
			link.parentNode.appendChild(player)
		}
	);
}

var ap_instances = new Array();

function ap_stopAll(playerID) {
	for(var i = 0;i<ap_instances.length;i++) {
		try {
			if(ap_instances[i] != playerID) document.getElementById("audioplayer" + ap_instances[i].toString()).SetVariable("closePlayer", 1);
			else document.getElementById("audioplayer" + ap_instances[i].toString()).SetVariable("closePlayer", 0);
		} catch( errorObject ) {
			// stop any errors
		}
	}
}

function ap_registerPlayers() {
	var objectID;
	var objectTags = document.getElementsByTagName("object");
	for(var i=0;i<objectTags.length;i++) {
		objectID = objectTags[i].id;
		if(objectID.indexOf("audioplayer") == 0) {
			ap_instances[i] = objectID.substring(11, objectID.length);
		}
	}
}

var ap_clearID = setInterval( ap_registerPlayers, 100 );

function search_box() {
	Event.observe($('search_input'),'focus',function() { $('search_input').style.color = 'black' })
	Event.observe($('search_input'),'blur',function() { $('search_input').style.color = '' })
}
