(function($, undefined) {
    
    var tag2attr = {
        a       : 'href',
        img     : 'src',
        form    : 'action',
        base    : 'href',
        script  : 'src',
        iframe  : 'src',
        link    : 'href'
    },
    
	key = ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","fragment"], // keys available to query
	
	aliases = { "anchor" : "fragment" }, // aliases for backwards compatability

	parser = {
		strict  : /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,  //less intuitive, more accurate to the specs
		loose   :  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // more intuitive, fails on relative paths and deviates from specs
	},
	
	querystring_parser = /(?:^|&|;)([^&=;]*)=?([^&;]*)/g, // supports both ampersand and semicolon-delimted query string key/value pairs
	
	fragment_parser = /(?:^|&|;)([^&=;]*)=?([^&;]*)/g; // supports both ampersand and semicolon-delimted fragment key/value pairs
	
	function parseUri( url, strictMode )
	{
		var str = decodeURI( url ),
		    res   = parser[ strictMode || false ? "strict" : "loose" ].exec( str ),
		    uri = { attr : {}, param : {}, seg : {} },
		    i   = 14;
		
		while ( i-- )
		{
			uri.attr[ key[i] ] = res[i] || "";
		}
		
		// build query and fragment parameters
		
		uri.param['query'] = {};
		uri.param['fragment'] = {};
		
		uri.attr['query'].replace( querystring_parser, function ( $0, $1, $2 ){
			if ($1)
			{
				uri.param['query'][$1] = $2;
			}
		});
		
		uri.attr['fragment'].replace( fragment_parser, function ( $0, $1, $2 ){
			if ($1)
			{
				uri.param['fragment'][$1] = $2;
			}
		});
				
		// split path and fragement into segments
		
        uri.seg['path'] = uri.attr.path.replace(/^\/+|\/+$/g,'').split('/');
        
        uri.seg['fragment'] = uri.attr.fragment.replace(/^\/+|\/+$/g,'').split('/');
        
        // compile a 'base' domain attribute
        
        uri.attr['base'] = uri.attr.host ? uri.attr.protocol+"://"+uri.attr.host + (uri.attr.port ? ":"+uri.attr.port : '') : '';
        
		return uri;
	};
	
	function getAttrName( elm )
	{
		var tn = elm.tagName;
		if ( tn !== undefined ) return tag2attr[tn.toLowerCase()];
		return tn;
	}
	
	$.fn.url = function( strictMode )
	{
	    var url = '';
	    
	    if ( this.length )
	    {
	        url = $(this).attr( getAttrName(this[0]) ) || '';
	    }
	    
        return $.url( url, strictMode );
	};
	
	$.url = function( url, strictMode )
	{
	    if ( arguments.length === 1 && url === true )
        {
            strictMode = true;
            url = undefined;
        }
        
        strictMode = strictMode || false;
        url = url || window.location.toString();
        	    	            
        return {
            
            data : parseUri(url, strictMode),
            
            // get various attributes from the URI
            attr : function( attr )
            {
                attr = aliases[attr] || attr;
                return attr !== undefined ? this.data.attr[attr] : this.data.attr;
            },
            
            // return query string parameters
            param : function( param )
            {
                return param !== undefined ? this.data.param.query[param] : this.data.param.query;
            },
            
            // return fragment parameters
            fparam : function( param )
            {
                return param !== undefined ? this.data.param.fragment[param] : this.data.param.fragment;
            },
            
            // return path segments
            segment : function( seg )
            {
                if ( seg === undefined )
                {
                    return this.data.seg.path;                    
                }
                else
                {
                    seg = seg < 0 ? this.data.seg.path.length + seg : seg - 1; // negative segments count from the end
                    return this.data.seg.path[seg];                    
                }
            },
            
            // return fragment segments
            fsegment : function( seg )
            {
                if ( seg === undefined )
                {
                    return this.data.seg.fragment;                    
                }
                else
                {
                    seg = seg < 0 ? this.data.seg.fragment.length + seg : seg - 1; // negative segments count from the end
                    return this.data.seg.fragment[seg];                    
                }
            }
            
        };
        
	};

})(jQuery);

function SlideShow() {

    var classname = $('div#slideshow a.current').attr('class');

    if (classname === undefined) {
        // Slideshow is stopped
    }
    else {
        var remove = classname.split(' ');
        var current = remove[1];
        classname = remove[0];

        $('div#slideshow a.current').removeClass('current');

        switch (classname) {
            case 'home':
                classname = 'anydoc';
                $('div#slideshow div.slide').fadeOut('fast', function () {
                    $('div#slideshow div.slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('div#slideshow div.slide').fadeIn();
                });        
                $('div#slideshow a.anydoc').addClass('current');
                $('a#slide-link').attr('href', '/products/anydoc-software');
                break;
            case 'anydoc':
                classname = 'medius';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.medius').addClass('current');
                $('a#slide-link').attr('href', '/products/medius');
                break;
            case 'medius':
                classname = 'kodak';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.kodak').addClass('current');
                $('a#slide-link').attr('href', '/products/kodak');
                break;
            case 'kodak':
                classname = 'digitech';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.digitech').addClass('current');
                $('a#slide-link').attr('href', '/products/digitech');
                break;
            case 'digitech':
                classname = 'formatta';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.formatta').addClass('current');
                $('a#slide-link').attr('href', '/products/formatta');
                break;
            case 'formatta':
                classname = 'ibml';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.ibml').addClass('current');
                $('a#slide-link').attr('href', '/products/ibml');
                break;
            case 'ibml':
                classname = 'sharepoint';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.sharepoint').addClass('current');
                $('a#slide-link').attr('href', '/products/sharepoint');
                break;
            case 'sharepoint':
                classname = 'onesource';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.onesource').addClass('current');
                $('a#slide-link').attr('href', '/products/one-source-healthcare-solutions');
                break;
            case 'onesource':
                classname = 'home';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.onsource').addClass('current');
                $('a#slide-link').attr('href', '/services');
                break;
            default:
                classname = 'anydoc';
                $('#slideshow .slide').fadeOut('fast', function () {
                    $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
                    $('#slideshow .slide').fadeIn();
                });
                $('div#slideshow a.anydoc').addClass('current');
                $('a#slide-link').attr('href', '/services');
                break;
        }
    }
}

$(document).ready(function () {

    var currentUrl = $.url();
    var pageName = currentUrl.segment(-1);
    var thePage = currentUrl.segment(-2);

    function menuCssMod() {
        $('#menu-103').css('background', 'url(/Themes/BerkheimerTheme/Content/images/bkg-top-menu.jpg)');
        $('#menu-103').css('height', '42px');
        $('#menu-103').css('border-bottom', '1px solid #cccccc');
        $('#menu-103').css('border-left', '1px solid #FFFFFF');
        $('#menu-103').css('border-right', '1px solid #cccccc');
        //$('#menu-103 li a:hover').css('height', '45px'); // currently causing an error in IE 7
    }

    function HideSubNavBasedOnPage() {
        switch (pageName) {
            case 'case-studies':
                $('#menu-103 li.current').css('height', '42px');
                menuCssMod();
                break;
            case 'contact-us':
                menuCssMod();
                break;
            case 'terms-of-use':
                menuCssMod();
                break;
            case 'privacy-statement':
                menuCssMod();
                break;
            case 'sitemap':
                menuCssMod();
                break;
            case '':
                menuCssMod();
                break;
        }
        
        if (!$('ul#menu-103 ul.sub').length || thePage == 'case-study') {
            menuCssMod();
        }

    }
    HideSubNavBasedOnPage();

    function SlideShowSwitcher(classname) {
        $('#slideshow .slide').fadeOut('fast', function () {
            $('#slideshow .slide').css('background', 'url(/Media/Default/Slideshow/slides/' + classname + 'Slide.jpg)');
            $('#slideshow .slide').fadeIn();
        });
        ChangeClassToCurrent(classname);
        switch (classname) {
            case 'anydoc':
                $('a#slide-link').attr('href', '/products/anydoc-software');
                break;
            case 'medius':
                $('a#slide-link').attr('href', '/products/medius');
                break;
            case 'kodak':
                $('a#slide-link').attr('href', '/products/kodak');
                break;
            case 'digitech':
                $('a#slide-link').attr('href', '/products/digitech');
                break;
            case 'formatta':
                $('a#slide-link').attr('href', '/products/formatta');
                break;
            case 'ibml':
                $('a#slide-link').attr('href', '/products/ibml');
                break;
            case 'sharepoint':
                $('a#slide-link').attr('href', '/products/sharepoint');
                break;
            case 'onesource':
                $('a#slide-link').attr('href', '/products/one-source-healthcare-solutions');
                break;
            default:
                $('a#slide-link').attr('href', '/services');
                break;
        }
    };
    slideShowPlay = setInterval("SlideShow()", 5000);

    $('.tollbar a').mouseover(function () {
        clearInterval(slideShowPlay);
        var classname = $(this).attr('class');
        var remove = classname.split(' ');
        var current = remove[1];
        if (current === undefined) {
        }
        else {
            classname = remove[0];

            $('.current').removeClass('current');
            $('.toparrow').remove();
        }
        SlideShowSwitcher(classname);
    });

    function ChangeClassToCurrent(classname) {
        $('.' + classname + '').mouseout(function () {
            $(this).addClass('current');
        }); // end function
    }

    function myCallback(url, answer) {
        return answer;
    }

    function IsValidImageUrl(url, callback) {
        var img = new Image();
        img.onerror = function () { callback(url, false); }
        img.src = url;
    }

    function SwitchImageBasedOnPage(page, thePage) {
        if (thePage === "blog") {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/' + thePage + '.jpg)');
            var li = $('#menu-103 li').get(1);
            $(li).addClass('current');
        }
        else if (page === 'blog') {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/' + page + '.jpg)');
            var li = $('#menu-103 li').get(1);
            $(li).addClass('current');

        }
        else if (thePage === 'case-study') {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/case-studies.jpg)');
        }
        else if ($.url().segment(-2) === 'services') {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/' + page + '.jpg)');
        }
        else if (thePage === 'company') {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/' + page + '.jpg)');
        }
        else if (thePage === 'products') {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/' + page + '.jpg)');
        }
        else if ($.url().segment(-3) === 'products') {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/' + thePage + '.jpg)');
        }
        else if (thePage == undefined) {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/' + page + '.jpg)');
        }
        else {
            $('div.services').css('background', 'url(/Media/Default/innerSlides/default.jpg)');
        }
    }
    SwitchImageBasedOnPage(pageName, thePage);

    $('#footer_form input').focus(function () {
        $(this).attr('value', '');
    });
    $('#footer_form textarea').focus(function () {
        $(this).text('');
    });
    $('#footer_form textarea, #footer_form input').blur(function () {
        if ($('input[name$="Name"]').val() == "") $('input[name$="Name"]').attr("value", "Name");
        if ($('input[name$="Email"]').val() == "") $('input[name$="Email"]').attr("value", "Email");
        if ($('input[name$="Phone"]').val() == "") $('input[name$="Phone"]').attr("value", "Phone");
        if ($('textarea[name$="Message"]').val() == "") $('textarea[name$="Message"]').attr("value", "Question");
    });
});


