//JQuery Setup
$(function(){
//Important functions to fire first!
//-------------------------------------------------------------------------------
	//Google Analytics 
	$.jGoogleAnalytics(
		'UA-9486484-1', // Your GA tracker code
		{
			anchorClick: true, // adds click tracking to *all* anchors
			domainName: 'staging.sesamehost.com/taeger-ernst/', // e.g. 'nottingham.ac.uk'
			pageViewsEnabled: true // can be disabled e.g. if only tracking e.g. click events
		}
	);



  	//load - unload animation
	$('#interior-content').animate({width: '27px'}, 0);
	$('#interior-content .contents').hide();
	$(window).load(function () {
	  	//expand interior-content div
		$('#interior-content')
			.animate({
				width: '99%'
			}, 1000, function() 
			{
				$('#interior-content .contents').fadeIn('slow');
			}
		);
		
	});
	$(window).unload(function() {
		$('#interior-content').animate({width: '27px'},160);	
	});

  	//-- drop-down menus:
  	//-- requires superfish plugin
  	if($('#nav, #utility-nav').length > 0 ) {
		$.ajax({
			type: 'GET',
			url: 'scripts/superfish.js',
			cache: true,
			success: function() { 
				$('#nav>ul, #utility-nav>ul').superfish({ 
					hoverClass:		'sfhover',							//class used by IE for hover effects
			        delay:			500,                             	//one second delay on mouseout 
			        animation:		{opacity:'show',height:'show'},  	//fade-in and slide-down animation 
			        autoArrows:  	false,                           	//disable generation of arrow mark-up 
			        disableHI:   	true              					// set to true to disable hoverIntent detection
			    }); 
			},
			dataType: 'script',
			data: null
		});
	}

  	//IE6 duct tape
  	//detects if browser is IE by checking leadingWhitespace property. 
  	//See: http://docs.jquery.com/Utilities/jQuery.support
	var fancyHover = $.support.leadingWhitespace;
	if(fancyHover == false) {//browser is IE, use script
	//	$('#nav ul li').bind('mouseenter mouseleave', function(){
	//		$(this).toggleClass('sfhover');
	//	});	
		//PNG fix for IE6
		//$.ajax({
		//	type: 'GET',
		//	url: 'scripts/jquery.pngFix1.2.js',
		//	cache: true,
		//	success: function() { 
		//		$(document).pngFix();
		//	},
		//	dataType: 'script',
		//	data: null
		//});
 
		//click to close behavior
		if($('.ie-alert-link').length > 0) {
			$.ajax({
				type: 'GET',
				url: 'scripts/jquery.cookie.js',
				cache: true,
				success: function() { 
					$('.ie-alert-link').click(function() {
						$('#alert').slideToggle("slow");
						$.cookie('ie_alert', 'noshow', { expires: 14 });
					});
					//IE6 Upgrade Warning
					//-- requires:
					//-- <script type="text/javascript" src="http://1.scripts.sesamehost.com/scripts/jquery1.3.2.min.js"></script>
					//-- <script type="text/javascript" src="http://9.scripts.sesamehost.com/scripts/jquery.cookie.js"></script>
					
					//cookies
						
					//set cookie handler
					var alertBox = $.cookie('ie_alert');
					//if cookie val "noshow" then hide message - user has already seen this message!
					if(alertBox == 'noshow') {
						$('#alert').css('display', 'none');
					}else{
						$('#alert').css('display', 'block');
					}
				},
				dataType: 'script',
				data: null
			});
		
		}
		//-- /end ie6 warning
	}
	


  
	//sliding sub menu
        
        	
	// Some effects rely on an element to be initially hidden,
	// but we only hide them if the user has javascript
	$('.jshide').addClass('hide');
	
		
// Image Replacement	
//-------------------------------------------------------------------------------
	
	//Cufon + jQuery
	//--- requires:
	//--- <script type="text/javascript" src="scripts/jquery.fontavailable-1.1.min.js"></script>
	//--- <script type="text/javascript" src="http://2.scripts.sesamehost.com/scripts/cufon-yui.js"></script>
	if (!$.fontAvailable('TwCenMTRegular')) {
		// load the cufon library
		$.ajax({
			type: 'GET',
			url: 'scripts/Tw_Cent_MT_400.font.js',
			cache: true,
			success: function() { 
	            Cufon.replace('h1, h2, h3, h4, h5, h6, dt',{
	            	fontFamily:'Tw Cent MT'
	            });
			},
			dataType: 'script',
			data: null
		});
	}


// Utilities
//-------------------------------------------------------------------------------

	
//Toggle functions
//---------------------------------------------------------------------------------
	
	// Show only when javascript is available
	$('.toggle-link').css('display','block');

	//hide lists first!
	//$('#toggle-content li div').css('display','none');	
	$('#toggle-content dl').css('display','none');	

	//toggle
	function toggleInfoContent(id){
		if($(id).css('display') != 'none'){
		  $(id).fadeOut('fast');
  		  $('.back-to-top').addClass('hide');
		}else{
		  //$("#toggle-content li div").hide();
		  $("#toggle-content dl").fadeOut('fast');
		  $(id).fadeIn('slow');
		  $('.back-to-top').removeClass('hide');
		}
	}
	$(".toggle-link").click(function(){
		var id = $(this).attr('href')
	    toggleInfoContent(id);
	    return false;
	});
	
	//------


//Slideshows
//---------------------------------------------------------------------------------
	//sets a class to the slideshow to set dimensions
	$('.slideshow-wrapper').addClass('jq');

	//load cycle on-demand...
	if ($('#slideshow-home, #florissant-tour, #genevieve-tour').length > 0 ) {
				
		// load jquery.cycle js (getscript of jQuery prevents caching so using ajax)
		$.ajax({
			type: 'GET',
			url: 'scripts/jquery.cycle.all.min.js',
			cache: true,
			success: function() { 
				if($('#slideshow-home').length > 0) {
					//Home Page Slideshow 
					// start the slideshow 
				    var $ss = $('#slideshow-home'); 
     
				    // add slides to slideshow (images 2-8) 
				    for (var i = 2; i < 5; i++) 
				        $ss.append('<img src="images/photos/slideshow-home/slide'+i+'.jpg" width="532" height="210" />'); 
				 
				    // start the slideshow 
				    $ss.cycle({
				        fx:     'fade',
				        speed:   'slow',
				        timeout: 5000
				    });
				
				}else if($('#florissant-tour, #genevieve-tour').length > 0) {	
					//Office Tour
				    $('#florissant-tour').cycle({
				        fx:      'fade',
				        speed:   'slow',
				        timeout:  0,
				        pager:    '#f-pager',
				        pause:   'true',
				        before: function() {  
				            $('#f-caption').html(this.alt).fadeOut('fast'); 
				        },
				       	after: function() {  
				            $('#f-caption').html(this.alt).fadeIn(); 
				        }
				        
				    });
				    $('#genevieve-tour').cycle({
				        fx:      'fade',
				        speed:   'slow',
				        timeout:  0,
				        pager:    '#g-pager',
				        pause:   'true',
				        before: function() {  
				            $('#g-caption').html(this.alt).css('display','none'); 
				        },
				       	after: function() {  
				            $('#g-caption').html(this.alt).fadeIn('fast'); 
				        }
				    });
				}else{
					return false;
				} 
			},
			dataType: 'script',
			data: null
		});
	}
// jQuery Cycle Before and After //-------------------------------------------------
$('#before-after-cycle') // Give this ID a unique name if more than one office tour is needed on a page
		.before('<div class="before-after-nav">') // Ditto for this ID
		.cycle({
		cleartype: true, // true if clearType corrections should be applied (for IE)
		cleartypeNoBg: true, // Set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
		speed: 500, // This controls speed of transition
		timeout: 0, // This controls delay between slides. Set to 0 if more than one office tour on a page, so they don't auto-play
		pager: '.before-after-nav',
		before: function() {
		$('.cycle-detail span').fadeOut(); // Give this ID a unique name if more than one office tour is needed on a page
		},
		after: function(curr, next, opts) {
		var cycle_alt = $(next).find('img').attr('alt'); // This grabs the image alt text
		$('.cycle-detail span').html(cycle_alt).fadeIn(); // This puts alt text into the caption span
		}
		}); 
//PrettyPhoto modal windows
//---------------------------------------------------------------------------------
$("a[rel^='prettyPhoto']").prettyPhoto({
		animationSpeed: 'normal', /* fast/slow/normal */
		default_width: 900,
		default_height: 700,
		opacity: 0.65, /* Value betwee 0 and 1 */
		showTitle: false, /* true/false */
		allowresize: true, /* true/false */
		counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
		theme: 'facebook', /* light_rounded / dark_rounded / light_square / dark_square / facebook */
		hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
		wmode: 'transparent', /* Set the flash wmode attribute */
		autoplay: true, /* Automatically start videos: True/False */
		modal: false /* If set to true, only the close button will close the window */
		}); 
//spy effect
if($('ul.spy').length > 0) {
	$.ajax({
	type: 'GET',
	url: 'scripts/jquery.spy.js',
	cache: true,
	success: function() { 
		$('ul.spy').simpleSpy();
	},
	dataType: 'script',
	data: null
});
}else{
	return false;
}

// Standard Flash Modules
//-------------------------------------------------------------------------------
	
		// Define the default configuation values
		// followed by individual module configuration.
		// Values for individual modules will override the defaults
		
		var flashModules = {
			
			defaults: {			
				width: 500,
				height: 300,
				wmode: 'transparent',
				flashvars: {
					autoPlay: 'false', // change value to 'true'to play on start
					thisColor: '0x' + '0f2d35' // change global hex color (default=639CCE)
				},
				pluginOptions: {version: 9}
			},
		
		modules: [
		  // Define the configuration values for each flash module.
		  // Change item values in any 'flashvars' section to false to omit,
		  // Add any value to override the default value in flashModuleDefaults.
		  
		  {name: 'home', config: {width:541, height:219}},
		  {name: 'braces-diagram', config: {height: 375}},
		  {name: 'brace-painter', config: {height: 430, wmode:'opaque'}},
		  
		  	
		  {name: 'brushing-and-flossing-ortho',
		    config: {
		      flashvars: {
		        brushing: 'true',
		        flossing: 'true'
		      }
		    }
		  },
		  {name: 'brushing-and-flossing-dental',
		    config: {
		      flashvars: {
		        brushing: 'true',
		        flossing: 'true'
		      }
		    }
		  },
		  
		  {name: 'color-your-retainer', config: {width: 300, height: 300}},
		  
		  {name: 'common-treatments',
		    config: {
		      flashvars: {
		        crowding: 'true',
		        openbite: 'true',
		        deepOverbite: 'false',
		        missing: 'false',
		        underbite: 'true',
		        spacing: 'true',
		        overbite: 'true',
		        nonBraces: 'false',
		        phaseI: 'false'
		      }
		    }
		  },
		  
		  {name: 'the-damon-system-comparison', config: {width:250, height:165, wmode:'opaque'}},
		  
		  {name: 'emergency-care',
		    config: {
		      flashvars: {
		        pokingWire: 'true',
		        bracket: 'true',
		        looseWire: 'true',
		        appliance: 'true',
		        headgear: 'false',
		        soreness: 'true'
		      }
		    }
		  },
		  
		  {name: 'ibraces-logo', config: {width:200, height:135, wmode:'opaque'}},
		  
		  {name: 'know-your-teeth', config: {width:500, height:400}},
		  
		  {name: 'office-tour',
		    config: {width:500, height:375, wmode:'opaque',
			  flashvars: { 
				caption01: '',
				caption02: 'Entry way',
				caption03: 'Reception area',
				caption04: 'Coffee tables and chairs',
				caption05: 'Coffee bar',
				caption06: 'Family waiting room',
				caption07: 'Adult waiting room',
				caption08: 'Game room',
				caption09: 'Exam and consultation room',		  
				caption10: 'Records room',		  
				caption11: 'X-ray room',
				caption12: 'Sterilization area',
				caption13: 'Brushing area',
				caption14: 'Open treatment bay',
				caption15: '',
				caption16: ''		  
		      }	  
		    }
		  },
		
		  {name: 'palatal-expander', config: {width: 200, height: 150}},
		  {name: 'patient-care', config: {height: 375}},
	
			{name: 'smile-gallery',
		    config: {
		      flashvars: {
		        bonding: "true",
		        bridges: "true",
		        crowns: "true",
		        fillings: "true",
		        implants: "true",
		        invisalign: "true",
		        veneers: "true",
		        whitening: "true"
		      }
		    }
		  },
		  
		  {name: 'types-of-appliances',
		    config: {
		      flashvars: {
		        elastics: 'true',
		        headgear: 'false',
		        herbst: 'false',
		        palatal: 'true',
		        positioners: 'false',
		        separators: 'true'
		      }
		    }
		  },
		  
		  {name: 'types-of-braces',
		    config: {
		      flashvars: {
		        metal: 'true',
		        gold: 'false',
		        ceramic: 'true',
		        invisible: 'true',
		        lingual: 'true'
		      }
		    }
		  }
		]
		};
		
		// Loop through the defined modules 
		// and do flash replacement for any that are on the current page
		for (var j = flashModules.modules.length - 1; j >= 0; j--){
			var module = flashModules.modules[j];
			// combine default config settings with individual module config settings
			var modConfig = $.extend({}, flashModules.defaults, module.config);
			// combine default flashvars with module flashvars
			modConfig.flashvars = $.extend({}, flashModules.defaults.flashvars, module.config.flashvars);
			modConfig.src = 'flash/' + module.name + '.swf';
			$('#flash-' + module.name).flash(modConfig, flashModules.defaults.pluginOptions);
		}

// Flash Video functions
//-------------------------------------------------------------------------------

		var flashVideos = {
					
						defaults: {
						  // Define the configuation values applied to each module.
						  // Each module in flashModules can override these values.
						  
						  'src': 'video/flvPlayer.swf',
						  'dir': 'http://media.sesamehost.com/video/',//location of video and image files
						  'width': 320,
						  'height': 266,
						  'wmode': 'transparent',
						  'menu': false,
						  'allowFullScreen': true,
						  flashvars: {
						    'autoStart': 'false', // change value to true to play on start
						    'showScaleModes': 'false', //set to false to disable scale modes menu
						    'smoothVideo': 'true' //set to false to disable video smoothing 
						  }
						},
					
						videos: [
							{name: 'invisalign-best-friends', config: {'width': 320, 'height': 206}},
							{name: 'invisalign-news-travels-fast', config: {'width': 320, 'height': 206}},
							{name: 'invisalign-lobby', config:{}},
							{name: 'the-damon-system',config:{'width': 240, 'height': 206}},
							{name: 'the-damon-system-2',config:{'width': 400, 'height': 330}},
							{name: 'in-ovation',config:{}},
							{name: 'opalescence', config: {'width': 400, 'height': 251}},
							{name: 'invisalign', 
								config: {
									//dir: 'video/',//override location of video and image file
									'width': 360
								}
							},
							{name: 'suresmile', config: {'height': 206}},
							{name: 'suresmile-robot', config: {'height': 242, flashvars: {startImage: 'none', autoStart: 'true'}}}
						]
					};
					for (var j=0; j < flashVideos.videos.length; j++) {
						var video = flashVideos.videos[j];
						// combine default config settings with module config settings
						var vidConfig = $.extend({}, flashVideos.defaults, video.config);
						// combine default flashvars with module flashvars
						vidConfig.flashvars = $.extend({}, flashVideos.defaults.flashvars, video.config.flashvars);
						vidConfig.flashvars.flvToPlay = vidConfig.dir + video.name + '.flv';
						vidConfig.flashvars.startImage = vidConfig.dir + video.name + '.jpg';
						$('#video-' + video.name).flash(vidConfig, flashVideos.defaults.pluginOptions);
					};

// Game room
//-------------------------------------------------------------------------------
	

	//Partial Sliding (Only show some of background)  
    $('ul#sesame-games li').hover(function(){  
        $(".cover", this).stop().animate({top:'36px'},{queue:false,duration:160});  
    }, function() {  
        $(".cover", this).stop().animate({top:'0px'},{queue:false,duration:160});  
    });  

    
//Basic HTML functions
//---------------------------------------------------------------------------------

	//Back to top
	if ($('.contents').height() > $(window).height()) {
		$('.back-to-top').removeClass('hide');
	}

	//hover effects for sidebar logos 
	$('#sidebar #login a, #sidebar ul.bullet li a img').hover(function() {
		$(this).animate({opacity: '0.55'}, 400);
	}, function() {
		$(this).animate({opacity: '1'}, 400);	
	});
	// Open external links in new windows
	$('a[href^="http://"], a[href^="https://"]').not('[href*="orthosesame.com"]').addClass('external').attr('target', '_blank');
	
	// Open pdf links in new windows + add icon
	$('a[href$=".pdf"]').attr('target', '_blank').not('[class*="noicon"]').parent().append('<span/>').addClass('pdf');

	// add icons to links which open in prettyPhoto
	$("a[rel^='prettyPhoto[flash]']").parent('li').append('<span/>').addClass('video-link');

 
	//Ordered List Style

	$('ol.alpha, ol.numeric').addClass('js');
	$("ol li").each(function (i) {
	    $(this).wrapInner('<span/>');
    });
    
    //fancy Q & A
    $('ul.q-and-a li').each( function() {
    	$(this).find('h2,h4,h3').prepend('<span>Q: </span>');
    	$(this).find('div').prepend('<span>A: </span>');
	});

	
	//fancy quotes
	//--- required styles
	//--- q:before, q:after {/* remove quotes since IE doesn't understand :( */
	//---    content: ""; 
	//--- }
	//--- q {font-style: oblique;}
	//--- q.js span {font: 22px Georgia; color: #802c11; line-height: 18px; vertical-align: middle;}
	//$('q').each( function() {
	//	$(this).addClass('js').prepend('<span>&ldquo;</span>').append(' <span>&rdquo;</span>');
	//});
//PrettyPhoto
//---------------------------------------------------------------------------------
	//Load prettyPhoto
	// check if rel=prettyphoto exists (plugin trigger)
		if ($("a[rel^='prettyPhoto']").length > 0 ) {
			
			// load pretty photo css
			$('<link>').attr({
				'rel': 'stylesheet',
				'type': 'text/css',
				'href': 'css/prettyPhoto.css',
				'media': 'screen' 
			}).appendTo(document.getElementsByTagName('head')[0]);
			
			// load prettyphoto js (getscript of jQuery prevents caching so using ajax)
			$.ajax({
				type: 'GET',
				url: 'scripts/jquery.prettyPhoto.js',
				cache: true,
				success: function() { 
					$("a[rel^='prettyPhoto']").prettyPhoto({
						animationSpeed: 'normal', /* fast/slow/normal */
						padding: 36, /* padding for each side of the picture */
						opacity: 0.45, /* Value betwee 0 and 1 */
						showTitle: true, /* true/false */
						allowresize: true, /* true/false */
						counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
						theme: 'light_square', /* light_rounded / dark_rounded / light_square / dark_square */
						hideflash: false /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
					}); 
				},
				dataType: 'script',
				data: null
			});
		}
//Form Functions
//---------------------------------------------------------------------------------
		//Hide all items with class of "hidden-content"
		$('.hidden-content').css('display', 'none');
		
		//Sequential numbering of comment form li's
		$(".sequential-list li").each( function(i) {
		    i = i+1;
		    $(this).prepend('<span class="comment-number">' + i + '. </span>');
		});
		
		//toggle hidden fields on Appointment Request Form
		//New Patient Toggle...
		$("input[name^='Current_Patient']").click( function() {
			 if ($("input[name^='Current_Patient']:checked").val() == 'No')
			 	//not current patient, ask where they found us
			 	$('.hidden-content').fadeIn('slow');
			else 
				//current patient, hide content
				$('.hidden-content').fadeOut();
					if($('#found-other').css('display') != 'none') {
						$('#found-other').fadeOut();
					}
		});
		//Where did you hear about us toggle 
		$('#Found').change(function() {
			var selected = $('#Found option:selected');
			if(selected.val() == 'Other') {
				$('#found-other').fadeIn('slow');
			} else {
				$('#found-other').fadeOut();
			}
		});  

		//Comment form "May We Contact You" toggle
		$("input[name^='Contact_Me']").click( function() {
			 if ($("input[name^='Contact_Me']:checked").val() == 'Yes')
			 	//not current patient, ask where they found us
			 	$('.hidden-content')
			 		.fadeIn('slow');
			else 
				//current patient, hide content
				$('.hidden-content').fadeOut();
		});

		//Referral form "Radiographs Sent" toggle
		$("input[name^='Radiographs_Sent']").click( function() {
			 if ($("input[name^='Radiographs_Sent']:checked").val() == 'Yes')
			 	//not current patient, ask where they found us
			 	$('.hidden-content')
			 		.fadeIn('slow');
			else 
				//current patient, hide content
				$('.hidden-content').fadeOut();
		});
		
		/* Toggle Submit after Agreeing to Terms */
		$('input[name^="Disclaimer"]').click( function() {
			 if ($("input[name^='Disclaimer']:checked").val() == 'I Agree')
			 	//not current patient, ask where they found us
			 	$('.hidden-content').fadeIn('slow');
			else 
				//current patient, hide content
				$('.hidden-content').fadeOut();
		});
		
		//clear form fields with "clearme" class when clicked
		$('.clearme').one("focus", function() {
				$(this).val("");
		});
	
		//add red asterisk to label of required fields
		$('label.required').each(function(i) {
			$(this).append('<em> * </em>');
		});
		
		//Form validation
		//---------------------------------------------------------------------------------
			
		//masked input
		$(".date-mask").mask("99/99/9999");
		$(".phone-mask").mask("(999) 999-9999");
	
		//additional validation methods
		$.validator.addMethod("phone", function(phone_number, element) {
		    phone_number = phone_number.replace(/\s+/g, ""); 
			return this.optional(element) || phone_number.length > 9 &&
				phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
		}, "Please specify a valid phone number");
	
		//validator
		$(".validate").each(function() {
			$(this).validate({
				errorElement: "div",
					success: function(label) {
						label.text("ok!").addClass("success");
					},
				rules: {
					First_Name: {
						required:true,
						minlength: 2
					},
					Last_Name: {
						required:true,
						minlength: 2
					},
					Doctor_First_Name: {
						required:true,
						minlength: 2
					},
					Doctor_Last_Name: {
						required:true,
						minlength: 2
					},
					Patient_First_Name: {
						required:true,
						minlength: 2
					},
					Patient_Last_Name: {
						required:true,
						minlength: 2
					},
					Patient_Email: {
						required: true,
						email:true
					},
					Referred_Patient_First_Name: {
						required:true,
						minlength: 5
					},
					Referred_Patient_Last_Name: {
						required:true,
						minlength: 5
					},
					Doctor_Patient_Referring: {
						required:true,
						minlength: 5
					},
					Doctor_Email: {
						required: true,
						email:true
					},
					Appointment_Email: {
						required: true,
						email:true
					},
					Daytime_Phone: {
						required: true,
						phone: true	
					},
					Alternate_Phone: {
						phone: true
					},
					Patient_Phone: {
						required: true,
						phone: true	
					},
					Message: {
						required:true,
						minlength: 12
					},
					Would_Like_To: {
						required: true
					},
					User_Name: {
						required: true
					},
					Password: {
						required: true
					},
					Question_1: {
						required: true
					},
					Question_2: {
						required: true
					},
					Question_3: {
						required: true
					},
					Question_4: {
						required: true
					},
					Question_5: {
						required: true
					},
					Question_6: {
						required: true
					},
					Question_7: {
						required: true
					},
					Question_8: {
						required: true
					},
					Question_9: {
						required: true
					},
					Question_10: {
						required: true
					},
					Patient_Name: {
						minlength: 5,
						required: "#Contact_Me_Yes:checked"
					},
					Email: {
						email:true,
						required: "#Contact_Me_Yes:checked"
					},
					txtNumber: {
						required:true,
						minlength: 5
					}
				}
			});
		});
	
	
});//end document.ready