/**
 * Project Scroller Widget
 *
 * Takes a UL of project information and creates a carousel out of it.
 *
 * @author Tyler Vano <tvano@blackshrike.com>
 * @company BlackShrike
 */
 
 /**
 * The "bind()" function extension from Prototype.js, extracted for general use
 *
 * @author Richard Harrison, http://www.pluggable.co.uk
 * @author Sam Stephenson (Modified from Prototype Javascript framework)
 * @license MIT-style license @see http://www.prototypejs.org/
 */
Function.prototype.bind = function(){
    // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Functions:arguments
    var _$A = function(a){return Array.prototype.slice.call(a);}

    if(arguments.length < 2 && (typeof arguments[0] == "undefined")) return this;

    var __method = this, args = _$A(arguments), object = args.shift();

    return function() {
      return __method.apply(object, args.concat(_$A(arguments)));
    }
}

function w_project ( img, label )
{
	if ( typeof img == 'undefined' || typeof label == 'undefined' )
	{
		return;
	}

	this.img = img;
	this.label = label;
}
 
w_project.prototype.render = function ( )
{
	
}
 
function project_widget ( list_id )
{
	this.list_id = list_id;
	
	if ( document.getElementById( list_id ) )
	{
		this.list_element = document.getElementById( list_id );
	}
	else
	{
		return;
	}
	
	this.projects = [];
	
	var li_elements = this.list_element.getElementsByTagName( 'LI' );
	
	if ( li_elements.length )
	{
		for ( var i = 0, ii = li_elements.length; i < ii; i++ )
		{
			var img_element = li_elements[i].getElementsByTagName( 'IMG' )[0];
			
			this.projects.push( new w_project( img_element.getAttribute( 'src' ), img_element.getAttribute( 'alt' ) ) );
		}
	}
	
	this.project_div = document.createElement( 'DIV' );
	this.project_div.className = 'project-scroll-container';
		
	this.list_element.parentNode.replaceChild( this.project_div, this.list_element );
	
	this.client_next = document.createElement( 'DIV' );
	this.client_next.className = 'project-next';
	
	this.client_prev = document.createElement( 'DIV' );
	this.client_prev.className = 'project-prev';
	
	this.client_description_shadow = document.createElement( 'DIV' );
	this.client_description_shadow.className = 'project-description-shadow';
	
	this.client_description = document.createElement( 'DIV' );
	this.client_description.className = 'project-description';
	
	this.project_div.appendChild( this.client_prev );
	this.project_div.appendChild( this.client_next );
	
	this.project_div.appendChild( this.client_description_shadow );
	this.project_div.appendChild( this.client_description );
	
	this.client_next.onclick = this.next_client.bind(this);
	this.client_prev.onclick = this.previous_client.bind(this);
	
	this.project_pointer = 0;
}

project_widget.prototype.render = function ( )
{
	if ( typeof this.projects == 'undefined' )
	{
		return;
	}
	
	this.project_div.style.backgroundImage = 'url('+this.projects[this.project_pointer].img+')';
	this.client_description_shadow.innerHTML = this.projects[this.project_pointer].label;
	this.client_description.innerHTML = this.projects[this.project_pointer].label;
}

project_widget.prototype.previous_client = function ( )
{
	if ( this.project_pointer == 0 )
	{
		this.project_pointer = this.projects.length - 1;
	}
	else
	{
		this.project_pointer--;
	}
	
	this.render();
}


project_widget.prototype.next_client = function ( )
{
	if ( this.project_pointer == this.projects.length - 1 )
	{
		this.project_pointer = 0;
	}
	else
	{
		this.project_pointer++;
	}
	
	this.render();
}



