// JavaScript Document

	function _append_zero(n){
		if (n>0 && n<10){
			return '0' + n;	
		}
		return n;
	}
	
	function _external_internal_links()
	{
		// links;
		
		$$("a").each(function(n) {
			if ((n.protocol=='http:' || n.protocol=='https:') && window.location.host!=n.hostname){
				n.target = '_blank';
				/*n.observe('click', function (e){
					//window.open(n.href);
					alert(n.hostname + ' ? ' + window.location.host);
					e.stop();
				});
				//e.stop();*/
				
			}	
		});
	}
	
	// auto height
	function _autoHeight(){
		$$('textarea.autoHeight').each(function (e){
			var txt = $(e);
			var ht = txt.rows-1;
	
			e.onkeydown = function (el){
				/*alert(txt.rows);	
				txt.height != txt.dummy.getHeight() + txt.line_height*/
				var c = 0;
				var r = 2;				
				var t = txt.value;
				for(var i=0; i<t.length; i++) {
					if (t.substr(i,1) == '\n') {
						c = 0;
						r++;
					}
					else {
						c++;
						if(c >= txt.cols) { c=0; r++;}
					}
				}
				if (r>ht){
					txt.rows = r;				
				}
			}
		});
	}
	
	function _formSubmission()
	{
		$$("form").each(function(n) {
			
			// check for no magic;
			
			if (n.hasClassName('noMagic')==false){
				n.observe('submit', function(e){
					// process form;
					var valid = true;
					
					if (_required_fields = n.select('.required')){
						_required_fields.each(function(r)						   
						{
							if (r_object = $(r.readAttribute('for'))){
								
								if (r_object.getValue()=='' && r_object.disabled==false){
									valid = false;
									r.up('li').addClassName('error');
								}
							}
						});
						
					}
					
					if (valid){
					
						_process_indicator_html = 	'<dl class="clearfix spin processing">';
						_process_indicator_html += 		'<dt class="title">Un, momento!</dt>';
						_process_indicator_html += 		'<dd class="story">';
						_process_indicator_html +=			'<blockquote><p>We are processing what you submitted &mdash; <em>sometimes</em> it takes longer than expected.</p></blockquote>';
						_process_indicator_html +=			'<p>We hope it doesn&rsquo;t.</p>';
						_process_indicator_html +		'</dd>';
						_process_indicator_html += 	'</dl>';
								
						_process_object = document.createElement('div');
						Element.extend(_process_object);
						_process_object.update(_process_indicator_html);
						_process_object.id = 'form_processing';
				
						n.select('fieldset').invoke('hide'); // hide forms;
						_process_object.addClassName('form_processing');
						n.insert(_process_object);
						
						//e.stop();
					} else {
						e.stop();
					}
				});
			}
		});
	}
	
	function _do_on_off (_obj, _tar, _tar_child, are_we_on)
	{
		if (are_we_on) {
			_obj.down(_tar).addClassName('spin');
			_obj.down(_tar_child).addClassName('ajax_spinning');
		} else {
			_obj.down(_tar).removeClassName('spin');
			_obj.down(_tar_child).removeClassName('ajax_spinning');
		}
	}
										 
	
	function _get_twitter_status()
	{
		$$('.ajax_twitter').each(function(n) {
			var tweet_layer = $(n);
			
			tweet_layer.down('.story').addClassName('spin');
			tweet_layer.down('.story p').addClassName('ajax_spinning');
			
			var r = new Ajax.Request
			(
			 '/xy/twitter',
			 {
				method: 'get',
				onComplete: function (transport){
					if (data = transport.responseText.evalJSON(true)){
						
						tweet_layer.down('.story p').update(data['twitter'].text);
										
						tweet_layer.down('.hours').update(data['twitter']['created'].human_time);
						tweet_layer.down('.hours').href = data['twitter'].link;
						
						tweet_layer.down('.story p').removeClassName('ajax_spinning');
						tweet_layer.down('.story').removeClassName('spin');
						
						_external_internal_links();
						
					}
				}
			 }
			);
		});
	}
	
	function _get_bio_ajax_data ()
	{
		$$('.ajax_xy_data').each(function(n)
		{
			var _layer = $(n);
			var _url;
			
			if (_layer.down('.fotography')) {
				_do_on_off (_layer, '.fotography', '.list', true);
			} else if (_layer.down('.tracks')) {
				_do_on_off (_layer, '.tracks', '.list', true);
			}
			
			if (n.hasClassName('_75th')){
				_url = '/xy/75';
			} else if (n.hasClassName('_flickr')) {
				_url = '/xy/flickr';
			} else if (n.hasClassName('_imgly')) {
				_url = '/xy/imgly';
			} else if (n.hasClassName('_lastfm')) {
				_url = '/xy/lastfm';
			}
				
			//alert(_url); return;
			
			var r = new Ajax.Request
			(
			 _url,
			 {
				method: 'get',
				onComplete: function (transport)
				{
					if (data = transport.responseText.evalJSON(true)){
						
						_layer.down('.list').hide();
						_html = '';
						if (data.fotos){
							data.fotos.each(function(f)						   
							{
								_html  += '<li class="item"><a href="' + f.url + '" title="' + f.title + '"><img src="' + f.thumb + '" alt="' + f.title + '" width="60px" height="60px" /></a></li>';
								
							});
							
							_layer.down('.list').update(_html);
							Effect.Appear(_layer.down('.list'));
							
							_do_on_off (_layer, '.fotography', '.list', false);
							
						} else if (data.tracks) {
							data.tracks.each(function(t)						   
							{
								_html  += '<li class="item"><span><a href="' + t.artist.url + '" title="' + t.artist.name + '">' + t.artist.name + '</a>';
								
								_html  += ' &mdash; <a href="' + t.track.url + '" title="' + t.track.name + '">' + t.track.name + '</a></span></li>';
								
							});
							
							_layer.down('.list').update(_html);
							Effect.Appear(_layer.down('.list'));
							
							_do_on_off (_layer, '.tracks', '.list', false);
							
						} else {
							_layer.hide();	
						}
						
						_external_internal_links();
						
					}
				}
			 }
			);
		});
	}
	
	
	
	function _traverse_action(n, direction)
	{
		if (_link = n.down('.' + direction)){
			window.location = _link.down('a').href;
		}
	}
	
	
	function _quick_nav()
	{
	 
	 // traversal
		$$('.js_traverse').each(function(n){
										 
			Event.observe(document, 'keyup', function(e){
			// 
				var tag = $(Event.element(e)).tagName;
				//$('DBG').update(tag);
			
				if (tag != 'TEXTAREA' && tag != 'INPUT'){
					if (e.keyCode == 37){
						_traverse_action(n, 'previous');
					} else if (e.keyCode == 39){
						_traverse_action(n,'next');
					}
				}
			});
		});
	}
	
	function _socia_buttons_actions()
	{
		$$('._social_button_action').each(function(n){
			n.observe('click', function(e)
			{
					e.stop();
					
					window_opener = window.open(n.href, '', "status=1,toolbar=0, location=0, width=540, height=320"); 
					window_opener.moveTo((document.viewport.getDimensions().width - 480)/2, (document.viewport.getDimensions().height - 320)/2);
					//alert('hello');
					
			});
		});
	}

	
	
	function _apply_general_actions()
	{	
		_autoHeight(); // done
		_external_internal_links(); // done
		_formSubmission(); // done
		
		_get_twitter_status();
		
		_get_bio_ajax_data();
		
		_quick_nav();
		
		_socia_buttons_actions();
	}
	
	_apply_action('_apply_general_actions');
	
	
	
	




