
// Guidebook 2.0 JS
// Written by Pete Lada
// Sep 9th, 2011

if(!GBUI){
	var GBUI = {};
}
if(!GB){
	var GB = {};
}

/* Allow CSRF token via ajax submit
more info: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax
-----------------------------------------------------------------------------------------------------------*/ 

$('html').ajaxSend(function(event, xhr, settings) {
    function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
        // Only send the token to relative URLs i.e. locally.
        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
    }
});






/* Tabs
-----------------------------------------------------------------------------------------------------------*/ 

GBUI.tabs = function(){

	var defaults = {
		direction: "horizontal",
		tabClass: "gui-tab",
		tabContainerClass: "gui-tab-container",
		el: "tabs",
		tabHeading: '',
		animation: 'none'
	},
	
	Tab = function(title, options, num, additionalClass){
		var el = options.el;
		var aClass = additionalClass || '';
		var tab = $('<div></div>').
			addClass(options.tabClass).
			addClass(aClass).
			append(title).
			attr('data-tab-id', num).
			click(function(){
				switchTabs(el, num, options);
			}).
			appendTo(options.el + ' .gui-tab-navigation');
	},
	
	switchTabs = function(parent, tabId, options){
		$(parent).find('.' + options.tabClass).each(function(){
			if(parseInt($(this).attr('data-tab-id')) === tabId){
				$(this).addClass('selected');
			}else{
				$(this).removeClass('selected');
			}
			
		});
		$(parent).find('.' + options.tabContainerClass).each(function(){
			
			var time = 0;
			if(options.animation === 'fade'){
				time = 600;
			}
			
			if(parseInt($(this).attr('data-tab-container-id')) === tabId){
				$(this).fadeIn(time);
			}else{
				$(this).fadeOut(0);
			}
			
		});
		
		window.location.hash = options.el + ':' + tabId;
	},
	
	generateTabs = function(options){
		$(options.el).addClass(options.direction).prepend('<div class="gui-tab-navigation clearfix"></div>');
		if(options.tabHeading !== ''){
			$(options.el).find('.gui-tab-navigation').prepend('<div class="gui-tab-heading">' + options.tabHeading + '</div>');
		}
		$(options.el).find('.tab').each(function(i){
			var title = $(this).attr('data-tab-title');
			if($(this).attr('data-tab-class')){
				var tab = new Tab(title, options, i, $(this).attr('data-tab-class'));
			}else{
				var tab = new Tab(title, options, i);
			}
			$(this).addClass(options.tabContainerClass).attr('data-tab-container-id', i).hide();
			$(this).find('.next-tab').click(function(e){
				e.preventDefault();
				switchTabs(options.el, i+1, options);
				$('.gui-tooltip').hide();
			});
		});
		
		if(window.location.hash.indexOf(options.el) > -1){
			var tabid = window.location.hash.split(':');
			switchTabs(options.el, parseInt(tabid[1]), options);
		}else{
			switchTabs(options.el, 0, options);	
		}
	},
	
	init = function(options){
		var newOptions = $.extend(defaults, options);
		generateTabs(newOptions);
	};
	
	return init;
	
}();




/* Sticky Bar
-----------------------------------------------------------------------------------------------------------*/ 

GB.isScrolledIntoView = function(elem){

    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}

GB.stickyBar = function(){
	if(GB.isScrolledIntoView('#bar') === false && $('#sticky-bar').length === 0){
		var bar = $('<div id="sticky-bar"></div>').appendTo(document.body);
	}else if(GB.isScrolledIntoView('#bar') === true && $('#sticky-bar').length > 0){
		$('#sticky-bar').remove();
	}
}

/* Generic Sticky Class
-----------------------------------------------------------------------------------------------------------*/ 

GB.SetSticky = function(el, trigger, dismiss){
	//dismiss should be pixels from doc top
	var docViewTop;
	var height = $(window).height();
	var sticky = '';
	function setSticky(){
		docViewTop = $(window).scrollTop();
		if(GB.isScrolledIntoView(trigger) === false && sticky === ''){
			sticky = $(el).clone().addClass('sticky').appendTo(document.body).hide();
			sticky.fadeIn(100);
		}else if(GB.isScrolledIntoView(trigger) === true && sticky != ''){
			sticky.remove();
			sticky = '';
		}

		if(dismiss && (docViewTop + height) >= (dismiss+height) && sticky != ''){
			sticky.remove();
			sticky = '';
		}
	}
	
	$(window).scroll(function(){
		setSticky();
	});
	setSticky();
}


/* Get URL Params
-----------------------------------------------------------------------------------------------------------*/ 
GB.params = function(){
	var url = window.location.toString();
	//get the parameters
	url.match(/\?(.+)$/);
	var params = RegExp.$1;
	var params = params.split("&");
	var queryStringList = {};
	 
	for(var i=0;i<params.length;i++){
	     var tmp = params[i].split("=");
	     queryStringList[tmp[0]] = unescape(tmp[1]);
	}
	return queryStringList;
}
 

/* Scroll to (onload)
-----------------------------------------------------------------------------------------------------------*/ 

GB.detectScroll = function(){
	// scrollto destination should be a !class! of an element
	if(GB.params() != null && GB.params().scrollto){
		$.scrollTo($('.' + GB.params().scrollto).offset().top - 130 + 'px', 250);
	}
}


/* Show all plans
-----------------------------------------------------------------------------------------------------------*/ 

GB.showFullPlans = function(){

	$('.plan-contents').slideUp();
	$('.plan-contents-full').slideDown();
	$('#full-plans').slideUp();

}

/* Position sub-nav arrow
-----------------------------------------------------------------------------------------------------------*/ 

GB.positionSubNavArrow = function(){
	if( $('#global-nav').length > 0 && $('#sub-nav').length > 0 ){
		var x = $('#global-nav .selected').offset().left;
		var y = $('.content').offset().left;
		var w = $('#global-nav .selected').width();
		var left = x-y+(w/2)-11;
		if(left > 725){
			$('#sub-nav .arrow').addClass('light');
		}
		$('#sub-nav .arrow').css('left', x-y+(w/2)-11);
	}
}

/* Sign-in
-----------------------------------------------------------------------------------------------------------*/ 

GB.memberBox = {};

GB.memberBox.dropdown = function(){
	var init = function(){
		open();
	},
	open = function(){
		$('#member-box').addClass('open');
		setTimeout(function(){
			$('#member-box-trigger a').unbind();
			$('#member-box-trigger a').click(function(){
				close();
			});
		}, 100);
		$('#member-box #login-email').focus();
	},
	close = function(){
		$('#member-box').removeClass('open');
		setTimeout(function(){
			$('#member-box-trigger a').unbind();
			$('#member-box-trigger a').click(function(){
				open();
			});
		}, 100);
	}
	return {init: init, open: open, close: close};
}();


/* Form placeholder text
-----------------------------------------------------------------------------------------------------------*/ 

/*GBUI.placeholder = function(){
	
	var Placeholder = function(el){
		var text = $(el).val();
		
		$(el).focus(function(){
			removePlaceholder(el, text);
		});
		
		$(el).blur(function(){
			addPlaceholder(el, text);
		});
	},
	
	removePlaceholder = function(el, text){
		var newText = $(el).val();
		if(newText === text){
			$(el).val('').removeClass('placeholder');
		}
	},
	
	addPlaceholder = function(el, text){
		var newText = $(el).val();
		
		if(newText === '' || newText === text){
			$(el).val(text).addClass('placeholder');
		}
	},
	
	init = function(){
		$('.placeholder').each(function(){
			var p = new Placeholder($(this));
		});
	};
	
	return init;
	
	
}();

/* Form verify
-----------------------------------------------------------------------------------------------------------*/ 

// Verification for the registration form, slightly reusable but right now not very ugly code! boo
GBUI.formVerify = function(){
	var defaults = {
		submitButtonId: '#submit',
		callback: function(){
			return;
		},
		buttonText: 'Please fill out all required fields.',
		successText: 'Submit!'
	},
	settings,
	items = [],
	errors = {
	
	},
	Item = function(el, id){
		var $el = $(el);
		var value = $el.val();
		$el.data('placeholder', value);
		$el.data('el', el);
		$el.data('error', {filled: false});
		$el.data('error-id', id)
		items.push(el);
		var trigger = $el.attr('data-verify-trigger') || 'blur';
		var type = $el.attr('data-verify-type') || 'default';
		$el.bind(trigger, function(){
			verify(el, type);
		});
		
		// if the field is filled in already (from a referral) it will check itself immediately
		if( $el.val() !== '' && $el.hasClass('placeholder') === false ){
			verify(el, type);
		}
		
	},
	
	verify = function(el, type){

		var $el = $(el),
			err = $el.data('error');
		// check to see if entered text equals placeholder text or is not set
		if( ( $el.data('placeholder') === $el.val() && $el.hasClass('placeholder') ) || $el.val() === '' ){
			// check to see if error already exists
			if($('#error-' + $el.data('error-id') + '-filled').length <= 0){	
				err.filled = false;
				$el.addClass('form-error');
				var x = $('<div></div>').addClass('error').attr('id', 'error-' + $el.data('error-id') + '-filled').append('This is required.');
				$el.after(x);
			}
		}else{
			// if the field is filled in we remove the error and remove the error class
			err.filled = true;
			$('#error-' + $el.data('error-id') + '-filled').remove();
			$el.removeClass('form-error');
		}

		if( $el.attr('id') === 'confirm' || 'password'){
			// match password & confirm
			matchPass();
		}
		
		if( $el.attr('id') === 'password'){
			// verify the password is strong enough
			var pass = $el.val();
			verifyPass(pass);
		}
		
		if( type === 'email' && verifyField('email', $el.val()) === false ){
			if($('#error-' + $el.data('error-id') + '-email').length <= 0){
				err.email = 'invalid';
				$el.addClass('form-error');
				var x = $('<div></div>').addClass('error').attr('id', 'error-' + $el.data('error-id') + '-email').append('Please enter a valid email.');
				$el.after(x);
			}
		}else if( type === 'email' && verifyField('email', $el.val()) === true ){
			err.email = 'valid';
			$('#error-' + $el.data('error-id') + '-email').remove();
			$el.removeClass('form-error');
			
			// only verify a unique email if the field requests it (usually only on sign up)
			if($el.attr('data-unique-email') && $el.attr('data-unique-email') === 'true'){
				verifyEmail($el.val());
			}
		}
		
		checkErrors();
		

	},
	
	matchPass = function(){
		var err = $('#password').data('error');
		if( ($('#confirm').val() !== $('#password').val()) && $('#confirm').val() !== '' && $('#password').val() !== ''){
			if( err.password !== 'mismatch'){
				err.password = 'mismatch';
				var y = $('<div></div>').addClass('error').attr('id', 'error-' + $('#password').data('error-id') + '-pass').append('Passwords don\'t match!');
				$('#password').after(y);
			}
		}else{
			if(err){
				err.password = 'match';
				$('#error-' + $('#password').data('error-id') + '-pass').remove();
				if(err.filled === true){
					$('#password').removeClass('form-error');
				}
			}
		}
	},
	
	verifyPass = function(pass){
		$('#verify-err').remove();
		var y = $('<div class="small-text gb-load" id="verify-err">Loading…</div>');
		$('#password').after(y);
		
		$.ajax({
			type: 'POST',
			data: 'pw='+pass,
		  	url: "/verify/password/",
		  	success: function(x){
		    	if(x === 'OK'){
		    		y.removeClass('error gb-load').html('Password OK!').delay(2000).fadeOut();
		    		$('#password').data('error').strength = 'OK';
		    	}else{
		    		y.addClass('error').removeClass('gb-load').html('Password must be 8 characters and contain at least one digit.');
		    		$('#password').data('error').strength = 'weak';
		    	}
		  	}
		});
	},
	
	verifyEmail = function(email){
		$('#email-err').remove();
		var y = $('<div class="small-text gb-load" id="email-err">Loading…</div>');
		$('#email').after(y);
		
		$.ajax({
			type: 'GET',
			data: 'email='+email,
		  	url: "/verify/email/",
		  	success: function(x){
		    	if(x === 'OK'){
		    		y.removeClass('error gb-load').html('Email OK!').delay(2000).fadeOut();
		    		$('#email').data('error').emailInUse = 'OK';
		    	}else{
		    		y.addClass('error').removeClass('gb-load').html('This email is already in use!');
		    		$('#email').data('error').emailInUse = 'in use';
		    	}
		  	}
		});
	},
	
	checkErrors = function(){
		var errors = false;
		// cycle over each required field, checking to make sure they are filled and in the case of a password field that it matches the confirm field
		$(items).each(function(i){
			var err = $(this).data('error');
			if(err && err.filled === false){
				errors = true;
			}
			if(err && err.password && err.password === 'mismatch'){
				errors = true;
			}
			if(err && err.email && err.email === 'invalid'){
				errors = true;
			}
			if(err && err.strength && err.strength === 'weak'){
				errors = true;
			}
			if(err && err.emailInUse && err.emailInUse === 'in use'){
				errors = true;
			}
			
			// if there are no errors found we activate the submit button
			if(i===$(items).length-1 && errors === false){
				activateSubmit(true);
			// otherwise we disable the submit button
			}else if(i===$(items).length-1 && errors === true){
				activateSubmit(false);
			}
		});
		return errors;
	},
	
	verifyField = function(type, val){
	
		if( type === 'email' ){
			return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(val);
		}
	
	},
	
	activateSubmit = function(toggle){
		$el = $(settings.submitButtonId);
		if(toggle === true){
			$el.unbind();
			$el.html(settings.successText).removeClass('disabled').css({'opacity':1});
			$el.bind('click', function(){
				settings.callback();
			});
		}
		if(toggle === false){
			$el.unbind();
			$el.removeClass('disabled');
			$el.html(settings.buttonText).addClass('disabled').css({'opacity':.5});
		}
		
	},
	
	init = function(options){
	
		settings = $.extend(defaults, options);
	
		$('[data-required=true]').each(function(i){
			var p = new Item($(this), i);
		});
		
		activateSubmit(false, settings.submitButtonId);
		
	};
	
	return {init:init, verify:verify, errors:errors, check:checkErrors};
	
	
}();


/* Login to Gears
-----------------------------------------------------------------------------------------------------------*/ 

GB.login = function(){
	
	var doLogin = function(){
		$('#login-error').empty();
		var email = $('#login-email').val(),
			pass = $('#login-password').val();
		
		if(email === '' || pass === ''){
			empty();
		}else{
			verifyLogin(email, pass);
		}
	},
	init = function(){
		$('#login-password').keypress(function(e){
			if(e.which == 13){
				e.preventDefault();
				doLogin();
			}
		});
		$('#gears-login').click(function(){
			doLogin();	
		});
	},
	empty = function(){
		var x = $('<div></div>').append('Please fill out all fields').addClass('small-text');
		$('#login-error').append(x);	
	},
	verifyLogin = function(username, pass){
		var err = $('<div></div>').append('Logging in…').addClass('gb-load small-text');
		$('#login-error').append(err);
		$.ajax({
			type: 'POST',
			data: 'email='+username+'&password='+pass,
		  	url: "/login/",
		  	success: function(x,y,z){
		    	if(x === 'OK'){
		    		$(err).removeClass('gb-load').html('Success!');
		    		setTimeout(function(){
		    			location.reload(true);
		    		}, 250);
		    	}else{
		    		$(err).removeClass('gb-load').html('Wrong username or password!');
		    	}
		  	}
		});
	};
	
	
	return init;
	
}();

/* Logout
-----------------------------------------------------------------------------------------------------------*/ 

GB.logout = function(){
	$.ajax({
	  	url: "/logout/",
	  	success: function(x,y,z){
	    	if(x === 'Logged Out'){
	    		location.reload(true);
	    	}
	  	}
	});
};

/* Photos
-----------------------------------------------------------------------------------------------------------*/ 

GB.photos = function(){

	var open = function(id, caption){
		GBUI.overlay.open({}, '/static/corp/overlay/photo.html', 'modal', 'overlay', function(){
			$('.photo-caption').html('Loading…');
			$('.photo-loading').show();
			var x = $('<img src="/static/corp/img/photos/' + id + '" />');
			$(x).ready(function(){
				setTimeout(function(){
				$('.photo-loading').hide();
				$(x).appendTo('.photo-holder');
				$('.photo-caption').html(caption);
				}, 1000);
			});
		});
	};
	
	return open;
}();

/* Popup
-----------------------------------------------------------------------------------------------------------*/ 

GBUI.alert = function(options){
	$('gui-alert').remove();
	
	defaults = {
		openLength: 2500, 
		message: 'Success!',
		alertClass: 'success'
	}
	defaults = $.extend(defaults, options);
	var x = $('<div></div>').addClass('gui-alert').addClass(defaults.alertClass).append('<p>' + defaults.message + '</p>').appendTo(document.body);
	setTimeout(function(){
		$(x).fadeOut('fast');
	}, defaults.openLength);
}

/* Form Tools
-----------------------------------------------------------------------------------------------------------*/ 

GB.formClear = function(el){
	$(el).find('input, textarea').val('');
}


/* Guidebook Bar Stuff
-----------------------------------------------------------------------------------------------------------*/ 

function bar(){
	BarSegment = function($el){
		var rand = Math.floor(Math.random()*11);
		var rand2 = Math.floor(Math.random()*11);
		if(rand % 2 === 0){
			$el.css({'width': '7%'});
		}
		if(rand2 % 2 === 0){
			$el.css({'width': '4%'});
		}
	}
	
	$('#bar .bar-segment').each(function(){
		var x = new BarSegment($(this));
	});
}

loadingBar = {

	animate: function($bar){
		var x = 61;
		function ani(){
			$bar.animate({backgroundPosition: x + 'px 0px'}, 500, 'linear', function(){
				x += 61;
				ani();
			});
		};
		ani();
	},
	
	stopAnimation: function($bar){
		
		$bar.stop();
	},
	
	init: function(text, parentEl){
		var x = $('<div></div>').addClass('loading-bar').append(text).prependTo(parentEl);
		$(x).slideDown();
		loadingBar.animate(x);
	},
	
	hide: function(el, text, callback){
		$(el).html(text);
		loadingBar.stopAnimation($(el));
		var z = $('<div></div>').addClass('loading-flash').appendTo(el);
		$(z).css('opacity', .7).show().fadeOut('normal');
		setTimeout(function(){
			$(el).slideUp('normal', function(){
				$(el).remove();
				if(callback){
					callback();
				}
			});
		},2000)
	}

};


/* Registration referral cookie
-----------------------------------------------------------------------------------------------------------*/


/**
 * jQuery Cookie plugin
 *
 * Copyright (c) 2010 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
(function($) {
    $.cookie = function(key, value, options) {

        // key and at least value given, set cookie...
        if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {
            options = $.extend({}, options);

            if (value === null || value === undefined) {
                options.expires = -1;
            }

            if (typeof options.expires === 'number') {
                var days = options.expires, t = options.expires = new Date();
                t.setDate(t.getDate() + days);
            }

            value = String(value);

            return (document.cookie = [
                encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),
                options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
                options.path    ? '; path=' + options.path : '',
                options.domain  ? '; domain=' + options.domain : '',
                options.secure  ? '; secure' : ''
            ].join(''));
        }

        // key and possibly options given, get cookie...
        options = value || {};
        var decode = options.raw ? function(s) { return s; } : decodeURIComponent;

        var pairs = document.cookie.split('; ');
        for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {
            if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined
        }
        return null;
    };
})(jQuery);


GB.refCookie = {
	set: function(newRef){
		var params = GB.params();
		
		var r = newRef || params.ref || null;

		if( r ){
			//console.log('here');
			$.cookie('referral', r, {
				expires: 1, 
				path: '/' 
			});
		}
	},
	check: function(newRef){
		if( $.cookie('referral') !== null && !newRef){
			return $.cookie('referral');
		}else{
			GB.refCookie.set(newRef);
		}
	},
	remove: function(){
		$.cookie('referral', null, {
			expires: 1, 
			path: '/' 
		});
	}
};



/*  Google map object
   -----------------------------------------------------------------------------------------------------------*/

GB.initMap = function(el, address, options){


	var map,
	geocoder;


	function initialize() {
		var myLatlng;
		var defaults = {
			zoom: 15,
			center: myLatlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			mapTypeControl: false,
			navigationControlOptions: {
			    style: google.maps.NavigationControlStyle.SMALL
			  },
			backgroundColor:'white'
		}
		geocoder = new google.maps.Geocoder();
		map = new google.maps.Map(document.getElementById(el), defaults);

		function codeAddress() {
			geocoder.geocode( { 'address': address}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {	
					map.setCenter(results[0].geometry.location);
					var marker = new google.maps.Marker({
						map: map,
						position: results[0].geometry.location
					});
					
					if(options.success){
						options.success();
					}
					
					
				} else {
					if(options.failure){
						options.failure();
					}
				}
			});
		}

		codeAddress();

		var marker = new google.maps.Marker({
			position: myLatlng,
			map: map,
			title:"Venue Location"
		});
	}




	initialize();	


}





/* Onload Run...
-----------------------------------------------------------------------------------------------------------*/ 

$(document).ready(function(){
	
	GB.refCookie.check();
	
	var stickybar = new GB.SetSticky('#bar', '#bar');
	GB.positionSubNavArrow();
	
	// align image navigation controllers if they exist
	
	if($('.image-nav').length > 0){	
		var count, w;
		$('.image-nav').each(function(){
			count = $(this).find('a').length;
			w = Math.round(parseInt($(this).width()) / parseInt(count));
			$(this).find('a').css('width', w-1 + 'px');		
		});
	}
	
	GBUI.tooltip.init({
		bottom: 10,
		zindex: 1000
	});
	
	GBUI.overlay.init({
		overlayClass: 'overlay'
	});
	
	//GBUI.placeholder();
	
	bar();
	
});




















