// page init

jQuery(function(){

	initCufon();

	//initInputs();

	initPlugins();

	initCustomForms();

        $('#gallery .gallery-holder ul').cycle({fx:'fade',timeout:2000,speed:3000});

        $('.focusClear, #search-form #edit-keys').focus(function(){

	  //assign a local variable so our function
	  //will have its own unique original value per item
	  var originalValue = this.value;

	  //first time we always clear
	  this.value = '';

	  //unbind this jquery inline function
	  //because we want to set original value once
	  $(this).unbind('focus');

	  //add an unique onblur per item
	  this.onblur = function(){
		if(this.value == ''){
		   this.value = originalValue;
		}

		//attach the new unique onfocus per item
		this.onfocus = function(){
			 if(originalValue == this.value){
				this.value = '';
			 }
		  }
	  }
	});

        $('.flickr-gallery-lightbox').click(function(e){
            var group = $('.flickr-group-list .fickr-photoset .flickr-photo-box a',$(this).parent()).first();
            $(group).click();
            e.preventDefault();
        });


});



// cufon settings

function initCufon(){

	Cufon.replace('.contacts p span', {textShadow: '#2e5994 2px 2px', fontFamily:'Myriad Pro'});

	Cufon.replace('.contacts p em', {textShadow: '#2e5994 2px 2px', fontFamily:'Myriad Pro Semibold'});

	Cufon.replace('.contacts p strong', {textShadow: '#2e5994 2px 2px', fontFamily:'Myriad Pro Bold'});

}



// custom forms init

function initCustomForms() {

	$('select.fancy').customSelect();

	//$('input:radio').customRadio();

	//$('input:checkbox').customCheckbox();

}



// clear inputs onfocus

function initInputs() {

	var _inputs = $('input.focusClear');

	_inputs.each(function(){

		var _input = $(this);

		var _val = _input.val();

		if(_val.length) {

			_input.focus(function(){

				if(_input.val() == _val) _input.val('');

			});

			_input.blur(function(){

				if(!_input.val().length) _input.val(_val);

			});

		}

	});

}



// plugins init

function initPlugins(){

	jQuery('ul#menu li').OpenClose({

		activeClass:'active',

		opener:'>a.opener',

		slider:'>div.slide',

		slideSpeed: 400

	});

	initNav({

		menuId: "nav",

		hoverClass: "hover",

		dropExistenceClass: "has-drop-down",

		sideClasses: true,

		cleverMode: true,

		flexibility: true,

		menuPaddings: 10,

		minWidth: 240

	});

}



// custom forms plugin

;(function(jQuery){

	// custom checkboxes module

	jQuery.fn.customCheckbox = function(_options){

		var _options = jQuery.extend({

			checkboxStructure: '<div></div>',

			checkboxDisabled: 'disabled',

			checkboxDefault: 'checkboxArea',

			checkboxChecked: 'checkboxAreaChecked'

		}, _options);

		return this.each(function(){

			var checkbox = jQuery(this);

			if(!checkbox.hasClass('outtaHere') && checkbox.is(':checkbox')){

				var replaced = jQuery(_options.checkboxStructure);

				this._replaced = replaced;

				if(checkbox.is(':disabled')) replaced.addClass(_options.checkboxDisabled);

				else if(checkbox.is(':checked')) replaced.addClass(_options.checkboxChecked);

				else replaced.addClass(_options.checkboxDefault);



				replaced.click(function(){

					if(checkbox.is(':checked')) checkbox.removeAttr('checked');

					else checkbox.attr('checked', 'checked');

					changeCheckbox(checkbox);

				});

				checkbox.click(function(){

					changeCheckbox(checkbox);

				});

				replaced.insertBefore(checkbox);

				checkbox.addClass('outtaHere');

			}

		});

		function changeCheckbox(_this){

			_this.change();

			if(_this.is(':checked')) _this.get(0)._replaced.removeClass().addClass(_options.checkboxChecked);

			else _this.get(0)._replaced.removeClass().addClass(_options.checkboxDefault);

		}

	}



	// custom radios module

	jQuery.fn.customRadio = function(_options){

		var _options = jQuery.extend({

			radioStructure: '<div></div>',

			radioDisabled: 'disabled',

			radioDefault: 'radioArea',

			radioChecked: 'radioAreaChecked'

		}, _options);

		return this.each(function(){

			var radio = jQuery(this);

			if(!radio.hasClass('outtaHere') && radio.is(':radio')){

				var replaced = jQuery(_options.radioStructure);

				this._replaced = replaced;

				if(radio.is(':disabled')) replaced.addClass(_options.radioDisabled);

				else if(radio.is(':checked')) replaced.addClass(_options.radioChecked);

				else replaced.addClass(_options.radioDefault);

				replaced.click(function(){

					if($(this).hasClass(_options.radioDefault)){

						radio.attr('checked', 'checked');

						changeRadio(radio.get(0));

					}

				});

				radio.click(function(){

					changeRadio(this);

				});

				replaced.insertBefore(radio);

				radio.addClass('outtaHere');

			}

		});

		function changeRadio(_this){

			$(_this).change();

			$('input:radio[name='+$(_this).attr("name")+']').not(_this).each(function(){

				if(this._replaced && !$(this).is(':disabled')) this._replaced.removeClass().addClass(_options.radioDefault);

			});

			_this._replaced.removeClass().addClass(_options.radioChecked);

		}

	}



	// custom selects module

	jQuery.fn.customSelect = function(_options) {

		var _options = jQuery.extend({

			selectStructure: '<div class="selectArea"><span class="left"></span><span class="center"></span><a href="#" class="selectButton"></a><div class="disabled"></div></div>',

			hideOnMouseOut: false,

			copyClass: true,

			selectText: '.center',

			selectBtn: '.selectButton',

			selectDisabled: '.disabled',

			optStructure: '<div class="optionsDivVisible"><div class="select-top"></div><div class="select-center"><ul></ul><div class="select-bottom"></div></div>',

			optList: 'ul'

		}, _options);

		return this.each(function() {

			var select = jQuery(this);

			if(!select.hasClass('outtaHere')) {

				if(select.is(':visible')) {

					var hideOnMouseOut = _options.hideOnMouseOut;

					var copyClass = _options.copyClass;

					var replaced = jQuery(_options.selectStructure);

					var selectText = replaced.find(_options.selectText);

					var selectBtn = replaced.find(_options.selectBtn);

					var selectDisabled = replaced.find(_options.selectDisabled).hide();

					var optHolder = jQuery(_options.optStructure);

					var optList = optHolder.find(_options.optList);

					if(copyClass) optHolder.addClass('drop-'+select.attr('class'));



					if(select.attr('disabled')) selectDisabled.show();

					select.find('option').each(function(){

						var selOpt = $(this);

                                                var _opt = '';



                                                if(selOpt.val().indexOf('/') != -1){



                                                    _opt = jQuery('<li><a href="' + selOpt.val() + '">' + selOpt.html() + '</a></li>');



                                                    if(selOpt.html() == 'Ohio Coming Soon'){

                                                        _opt = jQuery('<li><span>Ohio <em>Coming Soon</em></span></li>');

                                                    }//' + selOpt.html() + '



                                                    if(selOpt.attr('selected')) {

                                                            selectText.html(selOpt.html());

                                                            _opt.addClass('selected');

                                                    }

                                                }

                                                else{

                                                    _opt = jQuery('<li><a href="#">' + selOpt.html() + '</a></li>');







                                                    if(selOpt.attr('selected')) {

                                                            selectText.html(selOpt.html());

                                                            _opt.addClass('selected');

                                                    }

                                                    _opt.children('a').click(function() {

                                                            optList.find('li').removeClass('selected');

                                                            select.find('option').removeAttr('selected');

                                                            $(this).parent().addClass('selected');

                                                            selOpt.attr('selected', 'selected');

                                                            selectText.html(selOpt.html());

                                                            select.change();

                                                            optHolder.hide();

                                                            return false;

                                                    });

                                                }

                                                

						optList.append(_opt);

					});

					replaced.width(select.outerWidth());

					replaced.insertBefore(select);

					optHolder.css({

						width: select.outerWidth(),

						display: 'none',

						position: 'absolute'

					});

					jQuery(document.body).append(optHolder);



					var optTimer;

					replaced.hover(function() {

						if(optTimer) clearTimeout(optTimer);

					}, function() {

						if(hideOnMouseOut) {

							optTimer = setTimeout(function() {

								optHolder.hide();

							}, 200);

						}

					});

					optHolder.hover(function(){

						if(optTimer) clearTimeout(optTimer);

					}, function() {

						if(hideOnMouseOut) {

							optTimer = setTimeout(function() {

								optHolder.hide();

							}, 200);

						}

					});

					selectBtn.click(function() {

						if(optHolder.is(':visible')) {

							optHolder.hide();

						}

						else{

							if(_activeDrop) _activeDrop.hide();

							optHolder.children('ul').css({height:'auto', overflow:'hidden'});

							optHolder.css({

								top: replaced.offset().top + replaced.outerHeight(),

								left: replaced.offset().left,

								display: 'block'

							});

							if(optHolder.children('ul').height() > 200) optHolder.children('ul').css({height:200, overflow:'auto'});

							_activeDrop = optHolder;

						}

						return false;

					});

					select.addClass('outtaHere');

				}

			}

		});

	}



	// event handler on DOM ready

	var _activeDrop;

	jQuery(function(){

		jQuery('body').click(hideOptionsClick)

		jQuery(window).resize(hideOptions)

	});

	function hideOptions() {

		if(_activeDrop && _activeDrop.length) {

			_activeDrop.hide();

			_activeDrop = null;

		}

	}

	function hideOptionsClick(e) {

		if(_activeDrop && _activeDrop.length) {

			var f = false;

			$(e.target).parents().each(function(){

				if(this == _activeDrop) f=true;

			});

			if(!f) {

				_activeDrop.hide();

				_activeDrop = null;

			}

		}

	}

})(jQuery);



// stretchable navigation

function initNav(opt){

	var o = jQuery.extend({

		menuId:'nav',

		cleverMode:false,

		flexibility:false,

		dropExistenceClass:false,

		hoverClass:'hover',

		menuHardCodeClass:'menu-hard-code',

		sideClasses:false,

		center:false,

		menuPaddings:0,

		minWidth:0,

		coeff:1.7

	},opt);



	var n = $('#'+o.menuId).get(0);

	if(n)

	{

		$(n).removeClass(o.menuHardCodeClass);

		var lfl = [];

		var li = $('li',n);

		for (var i=0; i<li.length; i++)

		{

			li[i].className += (" " + o.hoverClass);

			var d = li[i].getElementsByTagName("div").item(0);

			if(d)

			{

				if(o.flexibility)

				{

					var a = d.getElementsByTagName("a");

					for (var j=0; j<a.length; j++)

					{

						var w = a[j].parentNode.parentNode.offsetWidth;

						if(w > 0)

						{

							if(typeof(o.minWidth) == "number" && w < o.minWidth)

								w = o.minWidth;

							else if(typeof(o.minWidth) == "string" && li[i].parentNode == n && w < li[i].offsetWidth)

								w = li[i].offsetWidth - 5;

							a[j].style.width = w - o.menuPaddings + "px";

						}

					}

					d.style.width = li[i].getElementsByTagName("div").item(1).clientWidth + "px";

				}

				var t = document.documentElement.clientWidth/o.coeff;

				if(li[i].parentNode != n && (!o.cleverMode || fPX(li[i]) < t))

				{

					d.style.right = "auto";

					d.style.left = li[i].parentNode.offsetWidth + "px";

					d.parentNode.className += " left-side";

				}

				else if(li[i].parentNode != n && (o.cleverMode || fPX(li[i]) >= t))

				{

					d.style.left = "auto";

					d.style.right = li[i].parentNode.offsetWidth + "px";

					d.parentNode.className += " right-side";

				}

				else if(li[i].parentNode == n && o.cleverMode && fPX(li[i]) >= t)

				{

					li[i].className += " right-side";

				}

				if(li[i].parentNode == n && o.center)

					d.style.left = -li[i].getElementsByTagName("div").item(1).clientWidth/2 + li[i].clientWidth/2 + "px";

			}

			if(o.dropExistenceClass && li[i].getElementsByTagName("ul").length > 0)

			{

				li[i].className += (" " + o.dropExistenceClass);

				li[i].getElementsByTagName("a").item(0).className += (" " + o.dropExistenceClass + "-link");

				li[i].innerHTML += "<em class='pointer'></em>";

			}

			if(li[i].parentNode == n) lfl.push(li[i]);

		}

		if(o.sideClasses)

		{

			lfl[0].className += " first-child";

			lfl[0].getElementsByTagName("a").item(0).className += " first-child-link";

			lfl[lfl.length-1].className += " last-child";

			lfl[lfl.length-1].getElementsByTagName("a").item(0).className += " last-child-link";

		}

		for (var i=0; i<li.length; i++)

		{

			li[i].className = li[i].className.replace(o.hoverClass, "");

			li[i].onmouseover = function()

			{

				this.className += (" " + o.hoverClass);

			}

			li[i].onmouseout = function()

			{

				this.className = this.className.replace(o.hoverClass, "");

			}

		}

	}

	function fPX(a)

	{

		var b = 0;

		while (a.offsetParent) {b += a.offsetLeft; a = a.offsetParent;}

		return b;

	}

}



// open-close plugin

;jQuery.fn.OpenClose = function(_options){

	// default options

	var _options = jQuery.extend({

		activeClass:'active',

		opener:'.opener',

		slider:'.slide',

		slideSpeed: 400,

		animStart:false,

		animEnd:false,

		event:'click'

	},_options);



	return this.each(function(){

		// options

		var _holder = jQuery(this);

		var _slideSpeed = _options.slideSpeed;

		var _activeClass = _options.activeClass;

		var _opener = jQuery(_options.opener, _holder);

		var _slider = jQuery(_options.slider, _holder);

		var _animStart = _options.animStart;

		var _animEnd = _options.animEnd;

		var _event = _options.event;

		if(_slider.length) {

			_opener.bind(_event,function(){

				if(!_slider.is(':animated')) {

					if(typeof _animStart === 'function') _animStart();

					if(_holder.hasClass(_activeClass)) {

						_slider.slideUp(_slideSpeed,function(){

							if(typeof _animEnd === 'function') _animEnd();

						});

						_holder.removeClass(_activeClass);

					} else {

						_holder.addClass(_activeClass);

						_slider.slideDown(_slideSpeed,function(){

							if(typeof _animEnd === 'function') _animEnd();

						});

					}

				}

				return false;

			});

			if(_holder.hasClass(_activeClass)) _slider.show();

			else _slider.hide();

		}

	});

}


