/* https://github.com/douglascrockford/JSON-js/blob/master/json2.js */
var JSON;if(!JSON){JSON={}}(function(){'use strict';function f(n){return n<10?'0'+n:n}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z':null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key)}if(typeof rep==='function'){value=rep.call(holder,key,value)}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null'}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null'}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==='string'){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v)}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' '}}else if(typeof space==='string'){indent=space}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value})}}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j}throw new SyntaxError('JSON.parse');}}}());

if(typeof this.PINT==="undefined"){var PINT={};}

/** FUNCTIONS *******************/
(function ($) {

    /** ADD CLASS *****/
    // Format: $('.something').PINT_addClass('last');
    $.fn.PINT_addClass = function(addClass) {
        this.each(function() {
            $(this).addClass(addClass);
        });
    };
    
    /** APPEND CODE *****/
    // Format: $('.something').PINT_addClass('last');
    $.fn.PINT_appendCode = function(appendCode) {
        this.each(function() {
            $(this).append(appendCode);
        });
    };

    /** BANNER TOGGLE *****/
    $.fn.PINT_bannerToggle = function() {
        // Show the first Banner Box DIV on load
        $('#h-banner')
            .children(':first-child')
                .show()
        ;
        // Menu Button Click
        this.each(function() {
            $(this)
                .click(function() {
                    // Get current 'click button' index (order #)
                    var thisIndex = ( $(this).index() ) + 1;
                    // When you click a menu item, get the banner DIV, hide all child DIVs
                    // Then find the child DIV (Banner Text) who's index matches that of
                    // the clicked item and fade it in.
                    $('#h-banner')
                        .children()
                            .hide()
                        .end()
                        .find(':nth-child(' + thisIndex + ')')
                            .fadeIn(1300)
                    ;
                    
                    // Set the ID of the content DIV to be the correct banner
                    $('div.content').attr('id','h-banner-'+thisIndex);
                    
                    // Remove trigger 'on' class from any trigger link
                    // Then add to current click item A
                    $(this)
                        .parent()
                            .find('a')
                                .removeClass('on')
                        .end()
                    .end()
                        .children()
                            .addClass('on')
                    ;
                    
                    // Stop the default A click action
                    return false;
                })
            ;
        });
    };

    /** LOGO SLIDER *****/
    $.fn.PINT_carousel = function() {
        this.each(function() {
            // Add the carousel code
            $(this).jcarousel({ scroll:3, animation:800 }).addClass('carousel-items-js');
            
            // Find 'Image Clip' Container width and the width of the image container (UL)
            var clipWidth = $(this).find('.jcarousel-clip').width();
            var imagesContainerWidth = $(this).find('.jcarousel-list').width();
            // If the image container width is 'less than' that of the clip container
            // Hide the next/previous buttons since there is nothing to scroll
            if ( imagesContainerWidth < clipWidth ) {
                $(this)
                    .children().not('.jcarousel-clip').hide()
                    .end()
                    .children().css({ width:'100%' }).children().css({ marginRight:'42px' })
                ;
            }
        });
    };
    
    /** FADER *****/
    $.fn.PINT_fader = function() {
        this.each(function() {
        
            $(this).cycle({
                fx: 'fade',
                speed: 1300,
                timeout: 1300
            });
            
            // Center Images
            $(this)
                .find('img')
                    .each(function() {
                        // Find width of parent and width of image
                        var parentWidth = $(this).parent().parent().innerWidth();
                        var thisWidth = $(this).innerWidth();
                        // Find width of parent and width of image
                        var parentHeight = $(this).parent().innerHeight();
                        var thisHeight = $(this).innerHeight();
                        // Find half the width/height of the image
                        var offsetW = Math.floor(thisWidth/2);
                        var offsetH = Math.floor(thisHeight/2);
                        // Find half the width of the parent and subtract the offset value
                        var thisLeft = Math.floor(parentWidth/2) - offsetW;
                        var thisTop = Math.floor(parentHeight/2) - offsetH;
                        // Set the 'left' property of the image
                        $(this).css({ top:thisTop, left:thisLeft })
                    })
            ;
            
        });
    };
    
    /** FOCUS/BLUR *****/
    $.fn.PINT_focusBlur = function() {
        this.each(function() {
            var text = $(this).attr('value');
        
            $(this)
                .focus(function(){
                    if ( $(this).val() == text ) {
                        $(this).val('');
                    }
                })
                .blur(function(){ 
                    if ( $(this).val() == '' ) {
                        $(this).val(text);				
                    }
                })
            ;
        });
    };
    
    /** LOGO HOVER *****/
    $.fn.PINT_logoHover = function() {
        this.each(function() {
            // Get 'href' value
            var thisHref = $(this).parent().attr('href');
            // IF this example has a 'null' href...
            if ( thisHref == '#') {
                // Show 'default' cursor (instead of 'hand/pointer' cursor
                $(this).parent().addClass('null');
                // And do nothing if clicked
                $(this)
                    .parent()
                        .bind('click', function() {
                            return false;
                        })
                ;
            }
        });
    };

}(jQuery));


/** INITIALIZE/RUN FUNCTIONS *******************/
$(document).ready(function() {

    /** JS ENABLED - Target any element differently (CSS) if JS enabled/disabled *****/
    $('body').PINT_addClass('js-enabled');
    $('#sitemap > ul > li:last-child').PINT_addClass('last');
    
    /** APPEND CODE *****/
    $('#col2').PINT_appendCode('<span class="cover"></span>');
    
    /** BANNER TOGGLE *****/
    $('#subnav-home > li').PINT_bannerToggle();

    /** INPUT: 'FOCUS/BLUR' *****/
    //$('input.input').PINT_focusBlur();
    
    /** LOGO HOVER *****/
    $('span.logo').PINT_logoHover();
    
    /* PINTBOX **********/
    $('.pintbox').fancybox({ 'titleShow':false });   // 'width':1000,
    $('.pintbox-iframe').fancybox({ 'autoDimensions': false, 'width':990,'height':480,'modal':'true','type':'iframe','scrolling':'no'});
    
    // 'width':1000,'height':650
    
    /** JS CODE LOADING DEFERMENT TO AFTER JQUERY LOADS (DO NOT REMOVE) **********/

        /* Code Execution/Functions */
        // 'Setup' code added to 'Page Begin'. Find 'PINT.onStartFns'
        // Code added via CONTENTBLOCK to be run inside common.js, so it is run after jQuery loaded
        if( PINT.onStartFns ) { $.each(PINT.onStartFns, function(index, fn) { fn(); }); }

    /** ENDS JS CODE LOADING **********/

});
