//-- updated for jQuery 1.4

	var site = (function () {
    	var _ = {};
        
        var init = function () {
        	utils.getSection();
        	utils.getNavArray();
        	render.init();
            _.page = new page[ config.section ]();
            events.init();
            SWFAddress.onChange = utils.change;
            JQ('#footer_container').css({position:'relative'}).css({position:'absolute'});
        };
        
        var config = {
        	$site_container: $('#shadow_container'),
            site_name: 'Artistry Trend',
            nav: {
            	home:		{ href: '#/home',		text: 'Home'		},
                about:		{ href: '#/about',		text: 'About'		},
                portfolio:	{ href: '#/portfolio',	text: 'Portfolio'	},
                tinkerage:	{ href: '#/tinkerage',	text: 'Tinkerage'	},
                contact:	{ href: '#/contact',	text: 'Contact'		}
            }
        };
        
        var render = {
        	init: function () {
            	config.$site_container.append( render.site() );
                config.$site_container.append( render.footer() );
            },
            site: function () {
            	return $('<div />', { id: 'site_container' })
                	.append( render.header() )
                    .append( render.nav() )
                    .append( render.content() )
                    .append( render.preloadedImages() );
            },
            header: function () {
            	return $('<div />', { id: 'header_container', text: config.site_name });
            },
            footer: function () {
            	return $('<div />', { id: 'footer_container' })
                	.append( render.copyright() )
                    .append( render.footer_nav() );
            },
            copyright: function () {
            	return $('<div />', {
                	'class':	'copyright',
                    'html':		'Copyright &copy; 2010 Robert Messerle'
                });
            },
            footer_nav: function () {
            	var ret = $('<div />', { 'class': 'footer_links' });
                for ( var cv = config.navArray.length; cv > 0; cv-- ) {
                	ret.append( $('<a />', config.nav[ config.navArray[cv-1].name ] ) );
                }
                return ret;
            },
            nav: function () {
            	var ret = $('<div />', { id: 'nav_container' });
                ret.append( $('<div />', { id: 'left_spacer', html: '&nbsp;' }) );
                for ( var cv = 0; cv < config.navArray.length; cv++ ) {
                	ret.append( render.nav_item( config.navArray[cv] ) );
                }
                ret.append( $('<div />', { id: 'right_spacer', html: '&nbsp;' }) );
                return ret;
            },
            nav_item: function (item) {
            	var style = {};
                var current = config.sectionHash == item.href;
                
                if ( current ) {
                	style.backgroundImage = 'url(' + item.img2 + ')';
                    style.color = '#aaa190';
                } else {
                	style.backgroundImage = 'url(' + item.img + ')';
                }
                
            	var ret = $('<a />', {
                	href:		item.href,
                    id:			'nav_' + item.name,
                    css:		style,
                    text:		item.text,
                    mouseover:	events.navOver,
                    mouseout:	events.navOut,
                    click:		events.navClick
                });
                
                if ( current )
                	ret.addClass('current');
                
                return ret;
            },
            content: function () {
            	return $('<div />', { id: 'content' });
            },
            preloadedImages: function () {
            	var ret = $('<div />', { css: { display: 'none' } });
                for (var cv = 0; cv < config.navArray.length; cv++) {
                	ret.append( $('<img />', { src: config.navArray[cv].img }) );
                	ret.append( $('<img />', { src: config.navArray[cv].img2 }) );
                }
                return ret;
            }
            
        };
        
        var utils = {
        	getNavArray: function () {
				var ret = [
					{ name: 'home',			img: 'img/nav/tab1.jpg',	img2: 'img/nav/tab1s.jpg' },
					{ name: 'about',		img: 'img/nav/tab2.jpg',	img2: 'img/nav/tab2s.jpg' },
					{ name: 'portfolio',	img: 'img/nav/tab3.jpg',	img2: 'img/nav/tab3s.jpg' },
					{ name: 'tinkerage',	img: 'img/nav/tab4.jpg',	img2: 'img/nav/tab4s.jpg' },
					{ name: 'contact',		img: 'img/nav/tab5.jpg',	img2: 'img/nav/tab5s.jpg' }
				];
				for (var cv = 0; cv < ret.length; cv++) {
					var navInfo = config.nav[ret[cv].name];
					for (var iv in navInfo) {
						ret[cv][iv] = navInfo[iv];
					}
					config.nav[ret[cv].name] = ret[cv];
				}
				config.navArray = ret;
            },
            change: function () {
            	var hash = SWFAddress.getPath();
                if (hash.charAt(0) == '/')
                	hash = hash.substring(1);
                var section = hash.split('/',1)[0];
                config.section = ( hash == '' || !page[section] ? 'home' : section );
                config.sectionHash = '#/' + config.section;
                $('#nav_container').replaceWith( render.nav() );
                _.page = new page[config.section]();
                $('#footer_container').css({position:'relative'}).css({position:'absolute'});
            },
            getSection: function () {
            	config.section = ( location.hash == '' || !page[location.hash.substring(1)] ? 'home' : location.hash.substring(1) );
                config.sectionHash = '#/' + config.section
            }
        };
        
        var events = {
        	init: function () {
				$('body')
                	.delegate('a', 'click', events.a);
            },
            a: function () {
				var href = $(this).attr('href');
				var linkDomain = href.split(/\/{1,}/g)[1];
				var curDomain = location.href.split(/\/{1,}/g)[1];
				if (href.indexOf('http://') < 0 || linkDomain == curDomain) {
					return true;
				} else {
					window.open(href);
					return false;
				}
			},
            navClick: function () {
            	if ( $(this).hasClass('current') ) return false;
            },
            navOver: function () {
            	if ( !$(this).hasClass('current') )
                	$(this).stop().css('color', '#faf4e9');
            },
            navOut: function () {
            	if ( !$(this).hasClass('current') )
                	$(this).stop().css('color', '#dad4c9');
            }
        };
        
        init();
        
        return _;
    })();