function DOM ( ) { }

DOM.init		= function ( $win )
{
	this._document	= document;
	this._window	= $win;
	this._dynamicId	= 0;

	var attArray	= function ( ) { }

	var _tmpEl		= this._document.createElement ( 'span' );

	if ( _tmpEl && _tmpEl.attributes && _tmpEl.length > 0 ) {
		attArray.complient	= false;
		attArray.renames		= { "class" : "className", "checked" : "defaultChecked", "usemap" : "useMap", "for" : "htmlFor" };
	} else {
		attArray.complient	= true;
		attArray.renames		= { };
	}

	this.attributeArray	= attArray;
}

DOM.dynamicId	= function ( ) {
	var self	= DOM;
	return 't' + ( self._dynamicId++ );
}

DOM.getElement	= function ( $id )
{
	var self	= DOM;
	if ( arguments.length == 1 ) {
		 return ( ( typeof ( $id ) == "string" ) ? self._document.getElementById ( $id ) : $id );
	}
}

DOM.getElementsByTagAndClassName	= function ( $tagName, $className, $parent )
{
	var self	= DOM;

	if ( typeof ( $tagName ) == 'undefined' || $tagName === null ) {
		$tagName	= '*';
	}

	if ( typeof ( $parent ) == 'undefined' || $parent === null ) {
		$parent	= self._document;
	}

	$parent		= self.getElement ( $parent );
	var children	= $parent.getElementsByTagName ( $tagName ) || self._document.all;
	var elements	= new Array;

	for ( var i = 0; i < children.length; i++ ) {

		var child	= children [ i ]
		var classes	= child.className.split ( ' ' )

		for ( var j = 0; j < classes.length; j++ ) {
			if ( classes [ j ] == $className ) {
				elements.push ( child );
				break;
			}
		}
	}
	return elements;
}

DOM.hasElementClass	= function ( $element, $className )
{
	var self	= DOM;
	var obj	= self.getElement ( $element );
	var classes	= obj.className.split ( ' ' );

	for ( var i = 1; i < arguments.length; i++ ) {
		var found	= false;

		for ( var j = 0; j < classes.length; j++ ) {
			if ( classes [ j ] == arguments [ i ] ) {
				found	= true;
				break;
			}
		}

		if ( !found ) {
			return false;
		}
	}
	return true;
}

DOM.setElementClass	= function ( $element, $className )
{
	var self	= DOM;
	var obj	= self.getElement ( $element );

	if ( self.attributeArray.compliant ) {
		obj.setAttribute ( "className", $className );
	} else {
		obj.className	= $className;
	}
}

DOM.addElementClass	= function ( $element, $className )
{
	var self	= DOM;
	var obj	= self.getElement ( $element );
	var cls	= obj.className;

	if ( cls.length === 0 ) {
		self.setElementClass ( obj, $className );
		return true;
	}

	if ( cls == $className ) {
		return false;
	}

	var classes = obj.className.split ( " " );

	for ( var i = 0; i < classes.length; i++ ) {
		if ( classes[i] == $className ) {
			return false;
		}
	}
	self.setElementClass ( obj, cls + " " + $className );
	return true;
}

DOM.removeElementClass	= function ( $element, $className )
{
	var self	= DOM;

	var obj	= self.getElement($element);
	var cls	= obj.className;

	if ( cls.length === 0 ) {
		return false;
	}

	if ( cls == $className ) {
		self.setElementClass ( obj, "" );
		return true;
	}

	var classes = obj.className.split(" ");

	for ( var i = 0; i < classes.length; i++ ) {
            if ( classes [ i ] == $className ) {
			classes.splice ( i, 1 );
			self.setElementClass ( obj, classes.join ( " " ) );
			return true;
		}
	}
	return false;
}

DOM.toggleElementClass	= function ( $className, $element )
{
	var self	= DOM;

	for ( var i = 1; i < arguments.length; i++ ) {
		var obj	= self.getElement ( arguments [ i ] )

		if ( !self.addElementClass ( obj, $className ) ) {
			self.removeElementClass ( obj, $className )
		}
	}
}

DOM.init ( ( (typeof ( window ) == "undefined" ) ? this : window ) )

var portfolioLastSelected

function Portfolio ( element )
{
	//var imgLarge	= document.getElementById ( "iImgLarge" )

	var imgLarge	= DOM.getElementsByTagAndClassName ( 'img', 'iImgLarge' )

	if ( imgLarge ) {
		imgLarge	= imgLarge [ 0 ]
	}

	var link		= this.getElementsByTagName ( "a" )

	if ( link.length ) {
		link		= link [ 0 ]
	}

	if ( DOM.hasElementClass ( this, 'selected' ) ) {
		portfolioLastSelected	= this;
	}

	if ( imgLarge ) {

		link.onclick	= function ( ) {

			//var imgLarge	= document.getElementById ( "iImgLarge" )
			var imgLarge	= DOM.getElementsByTagAndClassName ( 'img', 'iImgLarge' )

			if ( imgLarge ) {
				imgLarge	= imgLarge [ 0 ]
			}

			var img		= this.getElementsByTagName ( 'img' )

			if ( img ) {
				img		= img [ 0 ]
			} else {
				return true;
			}

			var src		= img.src;
			src			= src.replace ( '-thumb', '' )

			var alt		= img.alt
			if ( !alt ) {
				var t		= document.getElementById ( 'iTitle' )
				if ( t ) {
					alt	= t.innerHTML
				} else {
					alt	= 'Kent Design'
				}
			}

			var altD		= document.getElementById ( 'iAltDescription' )
			if ( altD ) {
				altD.innerHTML	= alt
			}

			imgLarge.src	= src;

			if ( portfolioLastSelected ) {
				DOM.removeElementClass ( portfolioLastSelected, 'selected' )
			}

			portfolioLastSelected	= this.parentNode

			DOM.addElementClass ( portfolioLastSelected, 'selected' )

			return false;
		}
	}

}

function NavHighlight ( )
{
	var link	= this.getElementsByTagName ( "a"  );
	var url	= window.location

	if ( link.length )
	{
		link	= link [ 0 ];

		if ( link.href == url ) {
			DOM.addElementClass ( this, 'here' );

			var i	= 10
			var parent	= this.parentNode

			while ( --i ) {

				if ( DOM.hasElementClass ( parent, 'closed' ) ) {
					DOM.removeElementClass ( parent, 'closed' );
				}

				parent	= parent.parentNode
			}
		}
	}
}

function ListCollapse ( )
{
	var ul	= this.getElementsByTagName ( "ul" );
	var link	= this.getElementsByTagName ( "a"  );

	if ( ul.length && link.length ) {

		ul	= ul   [ 0 ];
		link	= link [ 0 ];

		DOM.addElementClass ( this, 'closed' )

		link.onclick = function ( )
		{
			DOM.toggleElementClass ( 'closed', this.parentNode );
			return false;
		}
	}
}

function ors ( ) {
	var bw	= getBrowserWidth ( );
	var body	= document.getElementsByTagName ( 'body' )[ 0 ]

	if ( typeof DOM == "function" && body ) {
		if ( bw < 800 ) {
			DOM.addElementClass(body, 'narrow')
		} else {
			DOM.removeElementClass(body, 'narrow')
		}
	} else {
		if ( body && bw < 800 ) {

			body.className += ' narrow'
		}
	}
}

function getBrowserWidth(){
	if (window.innerWidth){
		return window.innerWidth;}
	else if (document.documentElement && document.documentElement.clientWidth != 0){
		return document.documentElement.clientWidth;	}
	else if (document.body){return document.body.clientWidth;}
		return 0;
}

ors()
window.onresize =	ors;

window.onload=function(){

	ors()
	window.onresize =	ors;

	var el	= DOM.getElement ( "iThumbs" )

	if ( el ) {
		var li	= el.getElementsByTagName ( "li" )

		for ( var i = 0; i < li.length; i++ ) {
			Portfolio.call ( li [ i ] )
		}
	}

	var el	= DOM.getElement ( "iNavL2" )

	if ( el ) {
		var li	= el.getElementsByTagName ( "li" )

		for ( var i = 0; i < li.length; i++ ) {
			ListCollapse.call ( li [ i ] )
			NavHighlight.call ( li [ i ] )
		}
	}
}