var same_height_queues = [];
function same_height_function(args) {
	var $ = this;
	var elems = [];
	
	var maxh = 0;
	for (var i=0,n=args.length; i < n; i++) {
		var elem = {};
		
		if (typeof args[i] == "string") {
			if (m = args[i].match(/^(.+)\[(.+)\]$/)) {
				elem.id = $(m[1]);
				elem.modif = $(m[2], elem.id);
			} else {
				elem.id = $(args[i]);
				elem.modif = $(args[i]);
			}
		} else {
			elem.id = $(args[i]);
			elem.modif = $(args[i]);
		}
		
		elem.h = $(elem.id).outerHeight();
		if (maxh < elem.h) maxh = elem.h;
		
		elems.push(elem);
	}
	
	for (var i=0,n=elems.length; i < n; i++) {
		var H = elems[i].id.outerHeight();
		var h = $(elems[i].modif, elems[i].id).outerHeight();
		var d = H - h;
		
		d = maxh - d;
		d = d - (h - elems[i].modif.innerHeight());
		
		if (d != 0) {
			var m = h - elems[i].modif.innerHeight();
			var pt = parseInt(elems[i].modif.css("paddingTop")) || 0;
			var pb = parseInt(elems[i].modif.css("paddingBottom")) || 0;
			
			d -= pt + pb + m;
			
			if ( d > 0) {
				elems[i].modif.css({
					height:d+"px"
				});
				
				if (elems[i].modif.is(".carousel")) {
					elems[i].modif.trigger("resize_carousel");
				}
			}
		}
	}
}	
function same_height() {
	var args = arguments;
	
	same_height_queues.push(args);
}

/** Box Carousel **/
(function ($) {
	$.fn.carousel = function(options) {
		var isMethodCall = (typeof options == "string") || false;
		var args = arguments;
			
		$(this).each(function() {
			var carousel = $(this).data("carousel");
			
			if (isMethodCall && carousel) {
				if ( carousel[options] && $.isFunction(carousel[options]) ) {
					carousel[options].apply(carousel, $.makeArray(args).slice(1));
				}
			} else if (!isMethodCall) {
				if ( !carousel ) {
					carousel = new $.carousel(this, options);
					$(this).data("carousel", carousel);
				} else {
					carousel.setOptions(options);
				}
			}
		});
		
		return this;
	}
	
	$.carousel = function(elem, options) {
		this.elem = elem;
		this.options = $.extend( {}, $.carousel.defaults, options );
		this.init();
	};
	
	$.extend( $.carousel, {
		defaults: {
			fx: {
				easing: "easeInOutExpo",
				duration: 1000
			},
			events: {
				slideChanged: undefined
			},
			ui: {
				selectedClass: "selected",
				autoNav: true
			}
		},
		prototype: {
			init: function() {
				this.slides = $(".slide", this.elem);
				this.slidesContainer = $(".slides", this.elem);
				this.clipper = $(".slides_container", this.elem);
				
				if (this.slides.length < 1 || this.slidesContainer.length < 1 || this.clipper.length < 1) return;
				
				this.slidesCount = this.slides.length;
				
				this.slideWidth = $(this.slides[0]).outerWidth(true);
				this.totalWidth = this.slideWidth * this.slidesCount;
				this.clipperWidth = $(this.clipper).innerWidth();
				this.clipperWidth -= parseInt($(this.clipper).css("paddingLeft")) || 0;
				this.clipperWidth -= parseInt($(this.clipper).css("paddingRight")) || 0;
				
				this.slidesContainer.css({width:this.totalWidth+"px"});
				
				this.slidesPerPage = Math.floor(this.clipperWidth / this.slideWidth);
				if (this.slidesPerPage < 1) this.slidesPerPage = 1;
				this.pagesCount = Math.ceil(this.slidesCount / this.slidesPerPage);
				
				this.pageWidth = this.slidesPerPage * this.slideWidth;
				this.currentPage = 0;
				
				this.initSlides();
				this.initNav();
				this.initNavState();
				this.initResize();
				
				this.currentSlide = $(this.slides).filter("." + this.options.ui.selectedClass);
				if (this.currentSlide.length < 1) {
					this.currentSlide = $(this.slides[0]);
					$(this.currentSlide).addClass(this.options.ui.selectedClass);
				} else if (this.currentSlide.length > 1) {
					this.currentSlide = $(this.currentSlide[0]);
					$(this.slides).filter("." + this.options.ui.selectedClass).not(":eq(0)").removeClass(this.options.ui.selectedClass);
				}
				
				this.slideChanged();
			},
			
			slideChanged: function() {
				if (this.options.events.slideChanged && $.isFunction(this.options.events.slideChanged)) {
					this.options.events.slideChanged.apply(this, [this.currentSlide[0]])
				}
			},
			
			initSlides: function() {
				var H=0,h,p,t="";
				
				for (var i=0; i<this.slides.length; i++) {
					h = $(this.slides[i]).outerHeight(true);
					if ( H < h ) {
						H = h;
					}
				}
				for (var i=0; i<this.slides.length; i++) {
					p = parseInt($(this.slides[i]).css("paddingTop") || "");
					p += parseInt($(this.slides[i]).css("paddingBottom") || "");
					$(this.slides[i]).css({
						height: (H-p) + "px"
					});
				}
				
				p = parseInt($(this.slidesContainer).css("paddingTop") || "");
				p += parseInt($(this.slidesContainer).css("paddingBottom") || "");
				$(this.slidesContainer).css({
					height: (H-p) + "px"
				});
				
				p = parseInt($(this.clipper).css("paddingTop") || "");
				p += parseInt($(this.clipper).css("paddingBottom") || "");
				$(this.clipper).css({
					height: (H-p) + "px"
				});
				
				H = 0;
				if ( $(".carousel_nav .text_nav .text_nav_prev .title", this.elem).length ) {
					for (var i=1; i<this.slides.length; i++) {
						t = $(this.slides[i]).attr("title") || "";
						$(".carousel_nav .text_nav .text_nav_prev .title", this.elem).text(t);
						h = $(".carousel_nav .text_nav .text_nav_prev", this.elem).outerHeight(true);
						if ( H < h ) {
							H = h;
						}
					}
					p = parseInt($(".carousel_nav .text_nav", this.elem).css("paddingTop")) || 0
					p += parseInt($(".carousel_nav .text_nav", this.elem).css("paddingBottom")) || 0
					$(".carousel_nav .text_nav", this.elem).css({
						height: (H-p) + "px"
					});
				}
				
				H = $(this.clipper).outerHeight(true);
				H += $(".carousel_nav", this.elem).outerHeight(true);
				p = parseInt( $(this.elem).css("paddingTop")) || 0;
				p += parseInt( $(this.elem).css("paddingBottom")) || 0;
				$(this.elem).css({
					height: (H-p)+"px"
				});
			},
			
			initNav: function() {
				var self = this;
				
				$(".carousel_nav .arrow_nav .prev", this.elem).bind("click.carousel", function(){
					self.movePrev.apply(self, []);
					this.blur();
					return false;
				});
				
				$(".carousel_nav .arrow_nav .next", this.elem).bind("click.carousel", function(){
					self.moveNext.apply(self, []);
					this.blur();
					return false;
				});
				
				$(".carousel_nav .text_nav .text_nav_prev", this.elem).bind("click.carousel", function(){
					self.movePrev.apply(self, []);
					this.blur();
					return false;
				});
				
				$(".carousel_nav .text_nav .text_nav_next", this.elem).bind("click.carousel", function(){
					self.moveNext.apply(self, []);
					this.blur();
					return false;
				});
			},
			
			initNavState: function() {
				var self = this;
				this.stateNav("prev", this.currentPage > 0);
				this.stateNav("next", this.currentPage < this.pagesCount-1);
				
				if (this.currentPage >= this.pagesCount-1) {
					//$(".carousel_nav .text_nav_prev", this.elem).show();
					$(".carousel_nav .text_nav_prev", this.elem).hide();
					$(".carousel_nav .text_nav_next", this.elem).hide();
					
					$(".carousel_nav .text_nav_prev .title", this.elem).text($(this.slides[this.currentPage-1]).attr("title")).attr("title", $(this.slides[this.currentPage-1]).attr("title")) ;
					
				} else {
					$(".carousel_nav .text_nav_prev", this.elem).hide();
					$(".carousel_nav .text_nav_next", this.elem).show();
					
					$(".carousel_nav .text_nav_next .title", this.elem).text($(this.slides[this.currentPage+1]).attr("title")).attr("title", $(this.slides[this.currentPage+1]).attr("title"));
				}
				
				$(".carousel_nav .arrow_nav .current_slide_num", this.elem).text(this.currentPage+1);
				$(".carousel_nav .arrow_nav .slides_count", this.elem).text(this.pagesCount);
			},
			
			stateNav: function(type, state) {
				if (state) {
					$(".carousel_nav  .arrow_nav ." + type, this.elem).removeClass(type + "_disabled");
				} else {
					$(".carousel_nav  .arrow_nav ." + type, this.elem).addClass(type + "_disabled");
				}
			},
			
			movePrev: function()  {
				var x;
				if (this.currentPage > 0) {
					this.currentPage--;
				} else {
					this.currentPage = this.pagesCount-1;
				}
				
				$(this.slidesContainer).stop();
				if (this.currentPage == this.pageCount-1) {
					x = this.totalWidth - this.clipperWidth;
				} else if ( this.currentPage == 0 ) {
					x = 0;
				} else {
					x = this.currentPage * this.pageWidth;
				}
				$(this.slidesContainer).animate({left:-x+"px"}, {queue:false, duration: this.options.fx.duration, easing: this.options.fx.easing});
				this.initNavState();
			},
			
			moveNext: function() {
				if (this.currentPage < this.pagesCount-1) {
					this.currentPage++;
				} else {
					this.currentPage = 0;
				}
				
				$(this.slidesContainer).stop();
				if (this.currentPage == this.pagesCount-1) {
					x = this.totalWidth - this.clipperWidth;
				} else if ( this.currentPage == 0 ) {
					x = 0;
				} else {
					x = this.currentPage * this.pageWidth;
				}
				$(this.slidesContainer).animate({left:-x+"px"}, {queue:false, duration: this.options.fx.duration, easing: this.options.fx.easing});
				this.initNavState();
			},
			
			initResize: function() {
				var self = this;
				$(self.elem).bind("resize_carousel", function(){
					
					var H = $(self.elem).outerHeight();
					var h = $(self.elem).innerHeight();
					var d = H - h;
					var navH = $(".carousel_nav", self.elem).outerHeight();
					H -= d + navH; 
					
					d = self.clipper.outerHeight() - self.clipper.innerHeight();
					d += parseInt(self.clipper.css("paddingTop")) || 0;
					d += parseInt(self.clipper.css("paddingBottom")) || 0;
					
					H -= d;
					self.clipper.css({height:H+"px"});
					
					d = self.slidesContainer.outerHeight() - self.slidesContainer.innerHeight();
					d += parseInt(self.slidesContainer.css("paddingTop")) || 0;
					d += parseInt(self.slidesContainer.css("paddingBottom")) || 0;
					
					H -= d;
					self.slidesContainer.css({height:H+"px"});
					
					
					
					for (var i=0; i<self.slides.length; i++) {
						p = parseInt($(self.slides[i]).css("paddingTop") || "");
						p += parseInt($(self.slides[i]).css("paddingBottom") || "");
						$(self.slides[i]).css({
							height: (H-p) + "px"
						});
					}
				});
			}
		}
	});
})(jQuery);
/** END Box Carousel **/

(function($){
	var init_menu = function() {
		$(".menu").each(function(){
			var elem = this;
			var elemOffset = $(elem).offset();
			var elemWidth = $(elem).width();
			
			$(".mainMenuItem", elem).each(function() {
				var item = this;
				var a = $(">a", item);
				var subMenu = $(">.subMenuOuter", item);
				
				$(a).css({fontWeight:"bold"});
				
				var w = $(a).innerWidth();
				var W = w;
				$(a).css({fontWeight:""});
				var p = 0;
				p = parseInt($(a).css("paddingLeft")) || 0;
				p += parseInt($(a).css("paddingRight")) || 0;
				w = w + 2 - p;
				$(a).css({width: w+"px"});
				
				if (subMenu.length < 1) {
					$(a).parent().addClass("noSubMenu");
					return;
				}
				
				$(subMenu).show();
				var subMenuW = 0;
				$("a", subMenu).each(function(){
					var k = $(this).outerWidth(true);
					if (subMenuW < k) subMenuW = k;
				});
				
				if (subMenuW < W+32) subMenuW = W+32;
				
				var offset = subMenu.offset();
				var isLastMenu = false, offsetLeft;
				offset.left -= elemOffset.left;
				
				if (offset.left + subMenuW > elemWidth) {
					offsetLeft = offset.left + subMenuW - elemWidth;
					subMenuW = elemWidth - offset.left - offsetLeft;
					W = subMenuW - 32;
					isLastMenu = true;
					$(subMenu).css("left", (offsetLeft + (parseInt($(subMenu).css("left")) || 0))+'px');
				}
				
				$(subMenu).css({width:subMenuW+"px"});
				$("a", subMenu).each(function(){
					p = $(this).outerWidth(true) - $(this).innerWidth();
					p = parseInt($(this).css("paddingLeft")) || 0;
					p += parseInt($(this).css("paddingRight")) || 0;
					$(this).css({width: (subMenuW - p)+"px"});
					
					p = $(this).parent().outerWidth(true) - $(this).parent().innerWidth();
					p = parseInt($(this).parent().css("paddingLeft")) || 0;
					p += parseInt($(this).parent().css("paddingRight")) || 0;
					$(this).parent().css({width: (subMenuW - p)+"px"});
				});
				
				var init_shadow = function() {
					var l;
					if (subMenu.length > 0) {
						for (var i=1;i<=5;i++) {
							$(subMenu).append( $("<span />").addClass("b" + i) );
						}
					}
					l = 8 + 12;
					/*
					if (isLastMenu) {
						$(".b3",subMenu).css({width:(W-3)+"px",left:l+"px"});
					} else {
						$(".b3",subMenu).css({width:(W-8)+"px",left:l+"px"});
					}
					*/
					
					$(".b3",subMenu).css({width:(W-8)+"px",left:l+"px"});
					
					/*
					if (isLastMenu) {
						$(".b4, .b5",subMenu).hide();
					} else {
						l += W-8;
						$(".b4",subMenu).css({left:l+"px"});
						
						l += 12;
						$(".b5",subMenu).css({left:l+"px",width:(subMenuW-((W-8)+12+12+8))+"px"});
					}
					*/
					
					l += W-8;
						$(".b4",subMenu).css({left:l+"px"});
						
						l += 12;
						$(".b5",subMenu).css({left:l+"px",width:(subMenuW-((W-8)+12+12+8))+"px"});
					
					if ($.browser.msie && $.browser.version < 7 && $.fn.pngfix) {
						for (var i=1;i<=5;i++) {
							$("span.b" + i, subMenu).pngfix({
								imageFixSrc: "images/x.gif",
								sizingMethod: 'scale'
							});
						}
					}
				};
				init_shadow();
				
				if ($.browser.msie && $.browser.version < 7 && $.fn.pngfix) {
					$(subMenu).pngfix({
						imageFixSrc: "images/x.gif",
						sizingMethod: 'scale'
					});
				}
				
				$(subMenu).hide();
				
				if ($.browser.msie && $.browser.version < 7) {
					var itemOver = false;
					var hideTimeout = 0;
					
					$(a).parent().bind("mouseover.menu", function(){
						//$(a).addClass("expanded");
						//$(subMenu).show();
					});
					
					$("*",item).bind("mouseover.menu", function(){
						if (hideTimeout) {
							window.clearTimeout(hideTimeout);
							hideTimeout = 0;
						}
						if (!itemOver) {
							$(a).addClass("expanded");
							$(subMenu).show();
							itemOver = true;
						}
					});
					
					$(item).bind("mouseout.menu", function(){
						if (hideTimeout) {
							window.clearTimeout(hideTimeout);
							hideTimeout = 0;
						}
						hideTimeout = window.setTimeout(function(){
							$(a).removeClass("expanded");
							$(subMenu).hide();
							itemOver = false;
						},100);
					});
					
				} else {
					$(a).parent().bind("mouseover.menu", function(){
						$(a).addClass("expanded");
						$(subMenu).show();
					});
					$(a).parent().bind("mouseout.menu", function(){
						$(a).removeClass("expanded");
						$(subMenu).hide();
					});
				}
			});
		});
	};
	
	
	var init_mainFeatures = function(){
		$(".mainFeatures_nav").each(function(){
			var elem = this;
			var current = undefined;
			var items = [];
			
			$(".button", elem).each(function(){
				var target = undefined, hash = "", idx = 0, p;
				hash = this.hash.replace('#', '');
				if (hash != "") {
					target = $("#" + hash);
				}
				idx = $(".button", elem).index(this);
				
				if ( $(this).parent().is("parents") ) {
					p = $(this);
				} else {
					p = $(this).parent();
				}
				
				items.push( $.extend( {
					target: target,
					index: idx,
					elem: this,
					parent: p
				}, {}) );
				
				$(this).data("mainFeature_idx", idx);
			});
			
			if (items.length < 1) return;
			
			var changeSlide = function(idx) {
				var toHide = undefined, toShow = undefined;
				
				if (idx == current) return true;
				
				if (current != undefined && items[current] && items[current].target != undefined) {
					toHide = items[current];
					$(items[current].elem).removeClass("button_selected");
				}
				
				
				if (items[idx] && items[idx].target) {
					toShow = items[idx];
				}
				
				if (toHide != undefined) {
					$(toHide.target).stop();
					$(toHide.target).animate({opacity:0}, {queue:false, duration:800, complete:function(){
						$(this).css({
							display:"none",
							opacity:""
						});
					}});
					
					$(".bgImage, .wrapper",toHide.target).stop();
					$(".bgImage, .wrapper",toHide.target).animate({opacity:0}, {queue:false, duration:800, complete:function(){
						$(this).css({
							display:"none",
							opacity:""
						});
					}});
				}
				
				if (toShow != undefined) {
					$(toShow.target).stop();
					
					if ($(toShow.target).css("opacity") == "" || $(toShow.target).css("opacity") >= 1) {
						$(toShow.target).css({
							opacity:0
						});
					}
					if ($(toShow.target).css("display") == "none") {
						$(toShow.target).css({
							display:"block"
						});
					}
					
					$(toShow.target).animate({opacity:1}, {queue:false, duration:1200, complete:function(){
						$(this).css({
							display:"block",
							opacity:""
						});
					}});
					
					
					$(".bgImage, .wrapper",toShow.target).each(function() {
						$(this).stop();
					
						if ($(this).css("opacity") == "" || $(this).css("opacity") >= 1) {
							$(this).css({
								opacity:0
							});
						}
						if ($(this).css("display") == "none") {
							$(this).css({
								display:"block"
							});
						}
						
						$(this).animate({opacity:1}, {queue:false, duration:1200, complete:function(){
							$(this).css({
								display:"block",
								opacity:""
							});
						}});
					});
				}
				
				
				
				current = idx;
				$(items[current].elem).addClass("button_selected");
				
				$(items[current].parent).animate({top:0}, {queue: false, duration:800, easing:"easeInOutExpo"});
				
				var y = $(items[current].elem).outerHeight(true);
				for (var i=0; i < items.length; i++) {
					if (i != current) {
						$(items[i].parent).animate({top:y+"px"}, {queue: false, duration:800, easing:"easeInOutExpo"});
						y += $(items[i].elem).outerHeight(true);
					}
				}
			};
			
			for (var i=0, y=0; i < items.length; i++) {
				if (items[i].target != undefined) {
					$(items[i].target).css({
						display:"none",
						opacity:""
					});
					$(items[i].elem).removeClass("button_selected");
				}
				$(items[i].parent).css({
					position:"absolute",
					left:0,
					top:y+"px"
				});
				
				y += $(items[i].elem).outerHeight(true);
			}
			
			for (var i=0; i < items.length; i++) {
				if (items[i].target != undefined) {
					current = items[i].index;
					$(items[i].target).css({
						display:"block"
					});
					$(items[i].elem).addClass("button_selected");
					break;
				}
			}
			
			for (var i=0; i < items.length; i++) {
				if (items[i].target != undefined) {
					$(items[i].elem).bind("click.mainFeature", function(){
						var idx = $(this).data("mainFeature_idx");
						changeSlide(idx);
						this.blur();
						return false;
					});
				}
				$(items[i].elem).bind("mouseover.mainFeature", function(){
					$(this).addClass("button_hover");
				});
				$(items[i].elem).bind("mouseout.mainFeature", function(){
					$(this).removeClass("button_hover");
				});
			}
			
			
		});
	};				 
										 
	$(document).ready(function(){
		if ($.browser.msie && $.browser.version < 7 && $.fn.pngfix) {
			$("img[src$=.png]").pngfix({
				imageFixSrc: "images/x.gif"
			});
		}
		
		setTimeout(init_menu,100);
		setTimeout(init_mainFeatures,100);
		
		if ($.fn.scrollPane) {
			$(".industries_list .scrollPane").scrollPane({
				scrollTrackPos: 'left'
			});
		}
		
		if ($.fn.carousel) {
			$(".carousel").carousel();
		}
		if ($.fn.accordion) {
			$(".accordion").accordion();
		}
		
		if ($.browser.msie && $.browser.version < 7 && $.fn.pngfix) {
			$("img[src$=.png]").pngfix({
				imageFixSrc: "images/x.gif"
			});
		}
		
		if (same_height_queues.length > 0) {
			for (var i = 0; i < same_height_queues.length; i++) {
				same_height_function.call($,same_height_queues[i]);
				
			}
		}
		
		if ($.fn.colorbox) {
			$(".thumb", ".gallery_thumbnails").colorbox({
				rel: 'gallery',
				opacity:0.8,
				current: "Images {current} of {total}"
			});
		}
		setTimeout("$('#loader_image').remove()",500);
	});
	
	$(document).ready(function(){
		checkcountryQForm=function(){
			if($("#qfCountry").attr("value")=="United States"){
				$("#qfState").attr("value","");
				$("#qfCity").attr("value","");
				$("#qfState").attr("disabled",true);
			}else{
				$("#qfCity").attr("value","");
				$("#qfState").attr("disabled",false);
			}
		}
		
		getCityStateQForm=function(){
			if($("#qfCountry").attr("value")=="United States"){
				$.ajax({
					type:"POST",
					url:AppURL+"ajaxcall.html",
					data:"action=getCityState&component=citystatesearch&act=searchcitystate&zipcode="+$("#qfzip").attr("value"),		
					success: function(msg){
						if(jQuery.trim(msg)!="0"){
							citystatearr=msg.split(":::");
							$("#qfState").attr("value",citystatearr[1]);
							$("#qfCity").attr("value",citystatearr[0]);
						}else{
							$("#qfState").attr("disabled",false);
							$("#qfState").attr("value","");
							$("#qfState").attr("disabled",false);
							$("#qfCity").attr("value","");
						}
					}
				});	
			}else{
				$("#qfCity").attr("value","");
			}	
		}
		checkcountryCForm=function(){
			if($("#cfCountry").attr("value")=="United States"){
				$("#cfState").attr("value","");
				$("#cfCity").attr("value","");
				$("#cfState").attr("disabled",true);
				$("#cfCity").attr("disabled",true);
			}else{
				$("#cfState").attr("disabled",false);
				$("#cfCity").attr("disabled",false);
			}
		}
		
		getCityStateCForm=function(){
			if($("#cfCountry").attr("value")=="United States" && jQuery.trim($("#cfZip").attr("value"))!=""){
				$.ajax({
					type:"POST",
					url:AppURL+"ajaxcall.html",
					data:"action=getCityState&component=citystatesearch&act=searchcitystate&zipcode="+$("#cfZip").attr("value"),		
					success: function(msg){
						if(jQuery.trim(msg)!=0){
							citystatearr=msg.split(":::");
							$("#cfState").attr("value",citystatearr[1]);
							$("#cfCity").attr("value",citystatearr[0]);
						}else{
							$("#cfState").attr("value","");
							$("#cfCity").attr("value","");
						}
					}
				});	
			}else{
				$("#cfCity").attr("value","");
			}	
		}
		
		
	});
	
})(jQuery);
