/**
 * @copyright  Copyright (c) 2007 August Ash Inc. (http://www.augustash.com)
 * @version    $Id: aailib.js 22 2008-05-27 19:03:02Z jjohnson $
 */

/**
 * Prepare Links - using jQuery
 * 
 * Checks the document, when ready, for all link nodes with a class
 * name "external" and opens them in a new window when clicked.
 */
$(document).ready(function(){
	$("a").filter(".external").click(function (){
		var NewWindow = new OpenWindow($(this).attr("href"));
		return NewWindow.open();
	})
    .end();
});

/**
 * OpenWindow Class
 * 
 * Creates an OpenWindow object that allows you to define the URL, 
 * window name, and features for firing a pop-up window.
 * 
 * @param {String} href
 */
function OpenWindow(href)
{
	// Set default values
	var _href     = href;
	var _name     = "external";
	var _features = "";
	
	function __construct() {
		// Define methods		
		this.getHref     = function() { return _href; }
		this.setHref     = function(href) { _href = href; }
		this.getName     = function() { return _name; }
		this.setName     = function(name) { _href = name; }
		this.getFeatures = function() { return _features; }
		this.setFeatures = function(features) { _features = features; }
		
		this.open = function() {
			window.open(_href, _name, _features);
			return false;
		}
	};
	
	return new __construct();
}

/**
 * Quickie function to focus on first "input" element on a page if one
 * exists.
 */
$(document).ready(function() {
    var e = $("input:visible:enabled:first");
    if (e) {
        e.focus();
    }
});

/**
 * Son of Suckerfish Drop Down Menu
 * http://www.htmldog.com/
 */
 
$(document).ready(function(){
	var sfEls = $("ul#nav li");
	for (var i = 0; i < sfEls.length; i++) {
		$(sfEls[i]).mouseover(function(){
			$(this).addClass("sfhover");
		});
		$(sfEls[i]).mouseout(function(){
			$(this).removeClass("sfhover");
		});
	}
	
	$('#home_img_rotator_wrapper').gclimgrotator({
  	imgWidth  :470,
	imgHeight :200,
	delay     :3500,
	fadeSpeed :1500
	}, [
	  { src: 'img/ViewOurFrames.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames1.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames2.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames3.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames4.jpg', alt:'Our Frames' },
	  { src: 'img/ViewOurFrames5.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames6.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames7.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames8.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames9.jpg', alt: 'Our Frames' },
	  { src: 'img/ViewOurFrames10.jpg', alt: 'Our Frames' }
	]
  );
	
   jQuery("#accordion3").gclaccordion({
	    hideActiveLink : false,
	   onOverClass    : "over_header"
    });
   
});


// Toggles the Location Panel to slide down/up
$(document).ready(function(){

	$(".btn-slide").click(function(){
	  $("#locationWrapper").slideToggle("300"); // in milliseconds
	  $(this).toggleClass("active");
	});

});

// Toggles the Accordian sections of the services page

$(document).ready(function(){

	// Store Panel IDs
	var eyeExamPanel 		= "eyeExam";
	var glaucomaPanel 		= "glaucoma";
	var cataractsPanel 		= "cataracts";
	var contactsPanel 		= "contacts";
	var redEyePanel 		= "redEye";
	var foreignBodyPanel 	= "foreignBody";
	var computerVisionPanel = "computerVision";
	var infantSeePanel 		= "infantSee";
	var macularPanel 		= "macular";
	var lasikPanel 			= "lasik";
			
	//	Get the current URL of the page
	var currenturl = document.location.href;

	// Split the url on the div's id to give the requested element's ID
	// i.e. http://bec.yankee.aaidev.com/services/index.php#eyeExam => eyeExam
	var tmp = currenturl.split("#");
	var	requestedInfo = tmp[tmp.length-1];

	if (requestedInfo == eyeExamPanel) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");

		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == glaucomaPanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == cataractsPanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == contactsPanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == redEyePanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == foreignBodyPanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == computerVisionPanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == infantSeePanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == macularPanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else if(requestedInfo == lasikPanel ) {
		var showMe = $(".accordian h3#" + requestedInfo );
		var kids = $(showMe).next("p");

		$(showMe).siblings("h3").removeClass("active");
		$(showMe).siblings("h3").next("p").slideUp("fast");
				
		$(showMe).addClass("active");
		$(kids).slideDown("slow");
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});

	} else {
		// defaults to first panel open
		$(".accordian h3:first").addClass("active");
		$(".accordian p:not(:first)").hide();
		
		$(".accordian h3").click(function(){
			$(this).next("p").slideToggle("slow")
			.siblings("p:visible").slideUp("slow");
			$(this).toggleClass("active");
			$(this).siblings("h3").removeClass("active");
		});
	
	};

});

// Rotating Testimonials and Images using JQuery Innerfade
// for reference: http://medienfreunde.com/lab/innerfade/

$(document).ready( function(){
	$('#quoteMe').innerfade({
		animationtype: 'fade', 		// slide, fade
		speed: 'slow', 				// slow, fast or time in milliseconds
		timeout: 10000, 			// in milliseconds
		type: 'sequence', 			// random or sequence
		containerheight: '120px' 
	});
	
	$('#rotateMe').innerfade({
		animationtype: 'fade', 		// slide, fade
		speed: 'slow', 				// slow, fast or time in milliseconds
		timeout: 10000, 			// in milliseconds
		type: 'sequence', 			// random or sequence
		containerheight: '200px' 
	});
	
	$('#framesGallery').innerfade({
		animationtype: 'fade', 		// slide, fade
		speed: 'slow', 				// slow, fast or time in milliseconds
		timeout: 2000, 				// in milliseconds
		type: 'sequence', 			// random or sequence
		containerheight: '200px' 
	});
	
});



///////////////////////////////////////////////////////////////////////////////
// [JQuery Accordion Plugin] //////////////////////////////////////////////////
(function($) {
$.fn.gclaccordion = function(options) {
	
	var defaults = {
	    slideSpeed        : 500  // How quickly should the accordion scroll?
	   ,hideActiveLink    : true // Hide clicked link?
	   ,linkClass         : "accordion-link"    //Links class name
	   ,contentClass      : "accordion-content" //Contents class name
	   ,activeClass       : "active_header"     //selected header class
	   ,onOverClass       : null       //if not null, header on over class //"over_header"
	   ,openContentOnLoad : 0   //If -1, all tabs will be closed on load, else open content at given pos
	   ,afterChange       : null
	   ,depth             : 1
	},
    settings = jQuery.extend({}, defaults, options),
	$this = jQuery(this), $accordionLinksWrapper, $accordionLinks, $accordionContents, posCurrent;
	
	$accordionLinksWrapper = $this.find("."+settings.linkClass);
	$accordionLinks = $accordionLinksWrapper;
	
    jQuery.each($accordionLinks, function() {
        jQuery(this).data("href", jQuery(this).find("a").attr("href"));
        jQuery(this).find("a").attr({"href": "javascript:void(0)"});
    });

	
	$accordionContents = $this.find("."+settings.contentClass);
	$accordionContents.each(function(index) {
		//jQuery(this).css('height', jQuery(this).height());
	});
	
	$accordionContents.hide();

	posCurrent = settings.openContentOnLoad;
	
	/*
	var $byDepth = new Array();
	$byDepth[0] = { "accordionLinksWrapper": this, "accordionContents": this };
	if(settings.depth > 1) {	
		for (i=1; i<=settings.depth; i++)
		{
			alert($byDepth[(i-1)].accordionLinksWrapper);
			$byDepth[i] = { 
				 "accordionLinksWrapper" : jQuery("> ." + settings.linkClass, $byDepth[(i-1)].accordionLinksWrapper)
				,"accordionContents"     : jQuery("> ." + settings.contentClass, $byDepth[(i-1)].accordionContents)
			}
		}
		$byDepth[1].accordionLinksWrapper.css("background-color","red");
	}
	*/

	var reqLocation = document.location.toString();
	if (reqLocation.match('#')) {
	  var reqAnchor = reqLocation.split('#')[1];
	  $accordionLinks.each(function(index) {
		if ( jQuery(this).data("href") == '#'+reqAnchor ) { posCurrent = index; }
	  });
	}
	
	if(posCurrent > -1) {
		if(settings.activeClass != null && settings.activeClass != "") {
			$accordionLinksWrapper.eq(posCurrent).addClass(settings.activeClass);
		}
		if(settings.hideActiveLink) {
			$accordionLinks.eq(posCurrent).hide();
		}
		$accordionContents.eq(posCurrent).show();
	}
	
	
	if(settings.onOverClass != null && settings.onOverClass != "") {
		$accordionLinksWrapper.hover(function () {
			jQuery(this).siblings($accordionLinksWrapper).removeClass(settings.onOverClass);
			jQuery(this).addClass(settings.onOverClass);
		}, function () {
			jQuery(this).removeClass(settings.onOverClass);
		});
	}
	
	var $thisLink;
	$accordionLinksWrapper.click(function(){
		$thisLink = jQuery(this);
		posCurrent = $accordionLinksWrapper.index(this);
		if(settings.hideActiveLink) {
			$accordionLinks.show("fast"); 
			$accordionLinks.eq(posCurrent).animate({opacity: "hide"}, 500, 'linear');  
		}
		
		if(settings.activeClass != null && settings.activeClass != "") {
			$thisLink.siblings($accordionLinksWrapper).removeClass(settings.activeClass);
			if( ! $thisLink.next("div").is(":visible") ) {
				$thisLink.addClass(settings.activeClass);
			} else {
				$thisLink.removeClass(settings.activeClass);
			}
		}
		
		$thisLink.next($accordionContents).slideToggle(settings.slideSpeed, function() {
			if(settings.afterChange != null && settings.afterChange != "") {
				settings.afterChange();
			}
		}).siblings("div:visible").slideUp(settings.slideSpeed);
		//$(this).parent().next("div").slideToggle(settings.slideSpeed, function () { $(this).siblings("div:visible").slideUp(settings.slideSpeed); });
	});

	// returns the jQuery object to allow for chainability.  
    return this;
	
};
})(jQuery);




///////////////////////////////////////////////////////////////////////////////
// [JQuery CSS Image Replacement Plugin] //////////////////////////////////////
(function($) {
$.fn.cssir = function(options) {
	
	var defaults = {
		spanClassName :null,
		spanClassNameFromParent:null,
		onOver        : false,
		onOverSuffix  : "_oo"
	},
    settings = $.extend({}, defaults, options);
	
	return this.each(function() {
		var $this = $(this),
		$span, className;
		
		if(settings.spanClassName != null && settings.spanClassName != "") {
			className = settings.spanClassName;
		} else if(settings.spanClassNameFromParent != null && settings.spanClassNameFromParent != "") {
			className = $this.parents(settings.spanClassNameFromParent).attr("id") + "_span";
		} else {
			className = $this.attr("id") + "_span"; //$("#debug").append("<br />" + className);
		}
		
		$span = $('<span class="'+className+'"> </span>'); //$span = $(document.createElement("span"));
		$this.append($span);
		if(settings.onOver) {
			$this.hover(function () {
				$span.removeClass(className).addClass(className+settings.onOverSuffix);
			},function () {
				$span.removeClass(className+settings.onOverSuffix).addClass(className);
			});			
		}

	});
};
})(jQuery);



  
///////////////////////////////////////////////////////////////////////////////
// [JQuery IMAGE ROTATOR Plugin] //////////////////////////////////////////////
(function($) {
$.fn.gclimgrotator = function(options, imglist) {
	
	var defaults = {
		imgWidth  : 470,
		imgHeight : 200,
		delay     : 3000,
		fadeSpeed : 1000
	},
    settings = $.extend({}, defaults, options),
	$this = $(this), loadedImgs = [], nImgs = 0, n_loaded = 0, prevImg=-1, curImg=-1, newAppend=true;	
	
	function loop(i, img) 
	{
		img.onload = function(e) {				
			$("#debug").append("<br />loaded image: " + i);
			n_loaded++;
			img.width = settings.imgWidth;
			img.height = settings.imgHeight;
			if (n_loaded == nImgs) { 
				$this.find("img").hide();
				curImg=0;
				proceed();
			}
		}
		img.src = imglist[i].src;
		img.alt = imglist[i].alt;
		
		loadedImgs[i] = img;
		
		if (i + 1 < nImgs) {
			loop(i + 1, new Image());
		}$("#debug").append("<br />loaded image: " + i);
	}
	
	nImgs = imglist.length;
	loop(0, new Image());



	function proceed() 
	{
		$("#debug").append("<br />-showing image: " + curImg); 
		
		$(loadedImgs[curImg]).hide();
		if(newAppend) {
			$(loadedImgs[curImg]).appendTo($this);
		}
		
		if (prevImg >= 0) {
			$(loadedImgs[prevImg]).animate( {opacity: "hide"}, settings.fadeSpeed);
		}
		
		$(loadedImgs[curImg]).animate( {opacity: "show"}, settings.fadeSpeed, function() {
			prevImg = curImg;																	   
			curImg++;
			if (curImg >= nImgs) { curImg=0; newAppend=false;} 
			setTimeout (proceed, settings.delay);
		});
	}	

	// returns the jQuery object to allow for chainability.  
    return this; 
};
})(jQuery);


