//JQuery Setup
$(function(){
 
  	//IE6 duct tape
	$('#nav ul li').bind('mouseenter mouseleave', function(){
		$(this).toggleClass('sfhover');
	});		
	
		
	// Some effects rely on an element to be initially hidden,
	// but we only hide them if the user has javascript
	$('.jshide').addClass('hide');
	
	//icon for sub nav box
	$('.page-sub-nav').append('<dd class="subnav-icon"><img src="images/sub-nav-icon.png" width="54" height="100" alt="sub nav icon" /></dd>');
	
	//jcIR
	//check if images are enabled then run replacement
	$('<img src="http://www.google.com/intl/en_ALL/images/logo.gif'+ '#' + Math.random() + '"/>').load(function() {
		$('.jcir').jcIR({
			image_dir: 'titles',//no slashes
			image_ext: '.png',//file extention of replacement image
			elem_width: '692',//width of element being replaced
			elem_height: '54'//height of el;ement being replaces
		});
	}); 

	//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').addClass('js');
	$('q').each( function (i) {
		$(this).prepend('<span>&ldquo;</span>').append(' <span>&rdquo;</span>');
	});

		
	//png fix
	$(document).pngFix();
	
	//reflections
	$(".reflect").reflect({
		height: '.15',
		opacity: '.2'
	});

	//clear form fields
	$('.clearme').one("focus", function() {
			$(this).val("");
	});
		
	
	// Open external links in new windows
	$('a[@href^="http://"]').addClass('external').attr('target', '_blank');
	
	// Open pdf links in new windows
	$('a[@href$=".pdf"]').addClass('pdf').attr('target', '_blank');
	
	// add 'back to top' link when the content is taller than the window
	// this has to be done after flash replacement because the content height changes
	if ($('#content').height() > $(window).height()) {
	$('#footer-wrapper').append('<p class="top-link"><a href="#">Back to top &uarr;</a></p>');
	}
	
	//Teeth for life
	$('.anatomy-of-a-tooth-link').click(function() {
		$('#anatomy-of-a-tooth').slideToggle("slow");
	});
	$('.flash-know-your-teeth-link').click(function() {
		$('#flash-know-your-teeth').slideToggle("slow");
	});

	//Ortho Dictionary
	$('.parts-of-braces-link').click(function() {
		$('#parts-of-braces').slideToggle("slow");
	});
	$('.ortho-procedures-link').click(function() {
		$('#ortho-procedures').slideToggle("slow");
	});

 	//toggle hidden form elements
	$("#Found").change(onSelectChange);
	

	function onSelectChange(){  
		var selected = $("#Found option:selected");       
		if(selected.val() == 'Other'){  
            //show the hidden field
            $("#found-other").show("slow");
		} else {
			//otherwise, hide it 
            $("#found-other").hide("fast");		
		} 
	}  
 
	// wrap img.caption in a div and use the title attr as a caption  
	$("#content img.caption").each(function (i) {
		var $this = $(this);
		var caption = $this.attr('title');
		var width = $this.attr('width') + 10;
		$this.wrap('<div class="inset" style="width:'+width+'px;"></div>').after("<p>" + caption + "</p>");
	});

	//form validation
	//additional 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: {
				Name: {
					required:true,
					minlength: 5
				},
				Doctor_Name: {
					required:true,
					minlength: 5
				},
				Patient_Name: {
					required:true,
					minlength: 5
				},
				Patient_Patient_Referring: {
					required:true,
					minlength: 5
				},
				Doctor_Patient_Referring: {
					required:true,
					minlength: 5
				},
				Doctor_Email: {
					required: true,
					email:true
				},
				Email: {
					required: true,
					email:true
				},
				Daytime_Phone: {
					required: true,
					phone: true	
				},
				Patient_Phone: {
					required: true,
					phone: true	
				},
				Message: {
					required:true,
					minlength: 12
				},
				Would_like_to: {
					required: true
				},
				txtNumber: {
					required:true,
					minlength: 5
				}
			}
		});
	});

	var flashModules = {
	
	defaults: {
	  // Define the configuation values applied to each module.
	  // Each module in flashModules can override these values.
	  
	  width: 500,
	  height: 300,
	  wmode: 'transparent',
	  flashvars: {
	    autoPlay: 'false', // change value to true to play on start
	    thisColor: '0x' + '3899eb' // 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:295, height:275}},
	  {name: 'braces-diagram', config: {height: 375}},
	  {name: 'brace-painter', config: {height: 430}},
	  
	  	
	  {name: 'brushing-and-flossing',
	    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: 'true',
	        missing: 'true',
	        underbite: 'true',
	        spacing: 'true',
	        overbite: 'true',
	        nonBraces: 'true',
	        phaseI: 'true'
	      }
	    }
	  },
	  
	  {name: 'damon-system-comparison', config: {width:250, height:165, wmode:'opaque'}},
	  
	  {name: 'emergency-care',
	    config: {
	      flashvars: {
	        pokingWire: 'true',
	        bracket: 'true',
	        looseWire: 'true',
	        appliance: 'true',
	        headgear: 'true',
	        soreness: 'true'
	      }
	    }
	  },
	  
	  {name: 'ibraces-logo', config: {width:200, height:135, wmode:'opaque'}},
	  
	  {name: 'know-your-teeth', config: {width:500, height:400}},
	  
	  {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: 'true',
	        herbst: 'true',
	        palatal: 'true',
	        positioners: 'true',
	        separators: 'true'
	      }
	    }
	  },
	  
	  {name: 'types-of-braces',
	    config: {
	      flashvars: {
	        metal: 'true',
	        gold: 'true',
	        ceramic: 'true',
	        invisible: 'true',
	        lingual: 'true'
	      }
	    }
	  },
	  
	  {name: 'office-tour',
	    config: {width:500, height:375,	 
		  flashvars: { 
			caption01: '',
			caption02: '',
			caption03: '',
			caption04: '',
			caption05: '',
			caption06: '',		  
			caption07: '',		  
			caption08: '',		  
			caption09: '',		  
			caption10: ''		  
	      }	  
	    }
	  },
	
	  {name: 'palatal-expander', config: {width: 250, height: 200}},
	  {name: 'patient-care', config: {height: 375}}
	]
	};
	
	for (var j=0; j < flashModules.modules.length; j++) {
	var module = flashModules.modules[j];
	// combine default config settings with 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);
	}
  


	var flashVideos = {
	
		defaults: {
		  // Define the configuation values applied to each module.
		  // Each module in flashModules can override these values.
		  
		  src: 'video/flvPlayer.swf',
		  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 
		  },
		  pluginOptions: {version: 9}
		},
	
		videos: [
			{name: 'the-damon-system',config:{}},
			{name: 'in-ovation',config:{}},
			{name: 'ibraces-1',config:{}},
			{name: 'ibraces-2', config: {width: 352}},
			{name: 'ibraces-3', config: {width: 352}},
			{name: 'suresmile-01', config: {height: 206}}
		]
	};
	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 = video.name + '.flv';
	vidConfig.flashvars.startImage = 'video/' + video.name + '.jpg';
	$('#video-' + video.name).flash(vidConfig, flashVideos.defaults.pluginOptions);
	}

// game room
$(function() {
	// list the games that we want activated on click
	var games = Array('asteroids', 'frogger', 'pong', 'simon', 'snake', 'space-invaders', 'tetris', 'tic-tac-toe');
	
	// set the click behavior for a game link
	var setGameClick = function(game){
	$("a." + game).click(function(){
	  $('#sesame-game').flash(  // #sesame-game is the empty div that will contain the active game
	    {
	    src: 'games/' + game + '.swf',
	    width: 400,
	    height: 300,
	    wmode: 'transparent'
	    },
	    { version: 8 }
	  );
	});
	};
	
	// loop through the games array and
	// set the click behavior for each game link
	for (var j=0; j<games.length; j++){
	setGameClick(games[j]);
	};
});

});
