/* Global Items */
$(document).ready(function(){
						   
//unify the height of all elements regardless of length	
	$('body:not(".main") #primary_navigation1>ul>li>a').each(function(){
			//if an element's height is higher than 45px we'll gradually increase the width til it comes down to size.
			
			while ($(this).height() > 45){
				$(this).width($(this).width() + 5);
			}
			//set the height to 45 to blow out the active area to fill the bar.
			$(this).css('height','45px');
	});

	//lets load us some offdomain js
	(function() {
    var addth = document.createElement('script'); 
    addth.async = true;
    addth.src = /*document.location.protocol + */ 'http://s7.addthis.com/js/250/addthis_widget.js#username=ubshare&domready=1';
    document.getElementsByTagName('head')[0].appendChild(addth);
    }());
	
	//hide some things that we'll show dynamically later
	$(".jshide").hide();
	//footer hover
	//myUB login validation]
	var errcontain = $("#errorspan");
	var validator = $("#myublogin").validate({
			//debug:true,
			errorLabelContainer: errcontain,
			messages:{
				uname:{
					required: "Please use your email address to log in",
					email: "Please enter a valid email address"
				},
				password:{
					required: "Please enter your password"
				}
			},
			errorClass:"error"
	});
	//AddThis					   
	$(function() {
    var delay = 400;
    
    function hideMenu() {
        //if (!$('.custom_button').data('in') && !$('.hover_menu').data('in') && !$('.hover_menu').data('hidden')) {
if (!$('.custom_button').hasClass('active') && !$('.hover_menu').hasClass('active')){

            $('.hover_menu').fadeOut('fast');
            $('.custom_button').removeClass('active');
            $('.hover_menu').data('hidden', true);
        }
    }
    $('.custom_button, .hover_menu').hover(
		function(e){
			//in

			 $('.hover_menu').fadeIn('fast');
        	 $('.custom_button').addClass('active');
$('.hover_menu').addClass('active');
        	 //$(this).data('in', true);
        	 $('.hover_menu').data('hidden', false);
		},
		function(e){
			//out

$('.custom_button').removeClass('active');
$('.hover_menu').removeClass('active');
			 $(this).data('in', false);
        	 setTimeout(hideMenu, delay);
		}
	);

    /*$('.custom_button, .hover_menu').mouseenter(function() {
        $('.hover_menu').fadeIn('fast');
        $('.custom_button').addClass('active');
        $(this).data('in', true);
        $('.hover_menu').data('hidden', false);
    }).mouseleave(function() {
        $(this).data('in', false);
        setTimeout(hideMenu, delay);
    });    */
    
});
	
	// Add appropriate helper text to input fields
	$(".search_input1").each(function() {
		var helpTxt = $(this).attr("title");
		
		$(this).val(helpTxt);
		
		$(this).blur(function () {
			if($(this).val() === '') { $(this).val(helpTxt) };
		});
		$(this).focus(function() {
			if($(this).val() == helpTxt) { $(this).val("") };
		});

	});
	
	// Add rel=external functionality to anchors
	//$("a[rel=external]").attr('target','_blank').addClass("external_link");
	
	// basic jquery classes added to every site
	
	$(":text").addClass("text");
	$(":password").addClass("password");
	$(":image").addClass("image");
	$(":submit").addClass("submit");
	$(":checkbox").addClass("checkbox");
	$(":radio").addClass("radio");
	$(":file").addClass("file");
	
	$('ul').each(function(){
		$('li:first', this).addClass('first');
  		$('li:last', this).addClass('last');
	});
	$('table').each(function(){
  		$('tr:first', this).addClass('first');
  		$('tr:last', this).addClass('last');
	});
	$('tr').each(function(){
  		$('th:first', this).addClass('first');
  		$('th:last', this).addClass('last');
  		$('td:first', this).addClass('first');
  		$('td:last', this).addClass('last');
	});
	
	$("table tr:nth-child(odd)").addClass("odd");
	$("table tr:nth-child(even)").addClass("even");

	
	if($.browser.mozilla){ $("form").attr("autocomplete", "off");};
	
	// primary nav hover
	$("#primary_navigation1 ul li ul li, .post_wrap1,.social1 li,.social2 li").hover(
	  function () {
		$(this).addClass('hover');
	  }, 
	  function () {
		$(this).removeClass('hover');
	  }
	);
		$("#primary_navigation1 li ul").each(function() {
		$(this).hide();
	});
		
	// hover intent
		function danOver(){
		$(this).addClass('hover');
		$(this).children('ul').stop(false,true).fadeIn(100);
		$(this).css('zIndex', "200");
	  }
	  
	function danOut() {
		$(this).removeClass('hover');
		$(this).children('ul').stop(false,true).fadeOut(100);
	  }
	var config = {
		over: danOver,
		timeout:350,
		out: danOut
	};
	
	$("#primary_navigation1 ul > li").hoverIntent(config);
	

	
	// address H1 overlap issue
	$h1_width = $("h1").width();
	if($h1_width > 662)	{
		$('#main_heading1 .mh_wrap2').css("background-image", "none");
	}
	if($h1_width > 663)	{
		$('#main_heading1 h1').css("width", "668px");
	}
	
	
	// hide all blue dropdowns
	function hideDropdowns(){
		$('.dropdown1:visible,.dropdown2:visible').each(function(){
			// toggling #navset1 adjusts for its positioning issues induced by shadow spacing 
			$(this).slideUp();
			$("#fill").stop(false,true).animate({height:'267px'},400);
			$('#navset1').removeClass('plus_dd1');		
			$('#drop_myub').removeClass('open');			
		});
	}
	
	$('.close1').click(function(){
		hideDropdowns();
	});
	
	// show search results...
	$("#search1 form").submit(function(ev){
		//check for myub login or searchscope being open
		if ($("#drop_myub, #searchscope").is(":visible")){
			hideDropdowns();
		}
		// stop form action
		ev.preventDefault();
		
		//here is probably where you'd want to write the search results into the dropdown before opening it.

		var aa= $(".search_input1");
		//console.debug(aa.val());
		
		if(($('input[name=scope]:checked').val())){
		var chk= ($('input[name=scope]:checked').val());
		//console.debug(chk);
		}
		else
		{
		var chk= "default_collection";
		//console.debug(chk);
		}	   	
			$.ajax({
				type: "POST",
				url: "/_resources/cfm/search.cfm?q="+aa.val()+"&site="+chk,
				dataType: "xml",
				success: function(xml) {
					var i=0;
					var complete_html="";
					var s_num=$(xml).find('number').text();
					var more_link="http://search.ubalt.edu/search?coutput=xml_no_dtd&btnG=Search&output=xml_no_dtd&oe=UTF-8&ie=UTF-8&client=default_frontend&proxystylesheet=default_frontend&site=default_collection&q="+aa.val();
					$('#search_info').html('Your search for the phrase <em>'+aa.val()+'</em> returned the following '+s_num+' results: ');
					$('.more4').replaceWith('<div class="more4"><a href="'+more_link+'">More Results</a></div>');
					$('#results_list').html('');
						$(xml).find('collection').each(function(){
							var url = $(this).find('links').text();
							var title = $(this).find('title').text();
							var description = $(this).find('description').text();
							
							//$('<div class="items" id="link">'+url+'</div>').html('<a href="#">'+title+'</a>').appendTo('#page-wrap');
							//console.debug(url);
							var title_html = '<a href="'+url+'"><h3>'+title+'</h3></a>';
							var description_html = '<div class="result_snippet1">'+description+'</div>';
							var link_html = '<div class="result_url1"><a href="'+url+'">'+url+'</a></div>';
							complete_html= complete_html+title_html+description_html+link_html;
							$('#results_list').append('<li>'+title_html+description_html+link_html+'</li>');
							i++;
							if(i>3)
								{
									return false;								
								}
						});
						//$('#results_list').replaceWith(complete_html);
					
				},
				error: function(request,error){
					$('#page-wrap').after('<p> Error Occurred: '+error+' with request:'+request+'</p>');
					}
			});
		
				$("#drop_search_results").slideDown();
		$("#fill").stop(false,true).animate({height: ($("#main_heading1").height()+20)},400);
		$('#navset1').addClass('plus_dd1');		
		
			
	});

/* ---------------------------------   OU   -------------------------------------------	
	$("#search1 form").submit(function(ev){
		//check for myub login or searchscope being open
		if ($("#drop_myub, #searchscope").is(":visible")){
			hideDropdowns();
		}
		// stop form action
		ev.preventDefault();
		
		//here is probably where you'd want to write the search results into the dropdown before opening it.
			   	$(document).ready(function(){
			$.ajax({
				type: "POST",
				url: "/_resources/cfm/search.cfm?q=ub",
				dataType: "text",
				success: function(xml) {
					var i=0;
					
						$(#search_results1).inside();
						$(xml).find('collection').each(function(){
							//var title = '<h3>'+$(this).find('title').text()+'</h3>';
							//var description = '<div class="result_snippet1">'+$(this).find('description').text()+'</div>';
							//var link = '<div class="result_url1"><a href="'+$(this).find('link').text()+'">'+$(this).find('link').text()+'</a></div>';
							//$('<div class="items" id="link">'+url+'</div>').html('<a href="#">'+title+'</a>').appendTo('#page-wrap');
							//console.debug(i);
							//$(#result_list).inside('<li>'+title+description+link+'</li>');
							i++;
							if(i>4)
								{
									return false;								
								}
//console.debug(i);
						});
					
				},
				error: function(request,error){
					$('#page-wrap').after('<p> Error Occurred: '+error+' with request:'+request+'</p>');
					}
			});
		});
		$("#drop_search_results").slideDown();
		$("#fill").stop(false,true).animate({height: ($("#main_heading1").height()+20)},400);
		$('#navset1').addClass('plus_dd1');		
	});
--------------------------------  OU ------------------------------------------------*/
	// hide/show My UB dropdown
	$('#top_global_navigation1 li#my_ub1').click(function(){
		if ( $("#drop_search_results").is(':visible')){
			$("#drop_search_results").slideUp().removeClass('open');;
			$('#navset1').removeClass('plus_dd1');
		}
		if($('#searchscope').is(':visible')){
				hideDropdowns();
		}
			$('#navset1').addClass('plus_dd1');
			$('#drop_myub').slideDown().addClass('open');
	});
	
	//show search scope dropdown
	$("#content1 .wrap1, #searchscope").mouseover(function(){mouseovr = true;}).mouseout(function(){mouseovr = false;});
																   
	$("#cse-search-box input.search_input1").focus(function(){
			if ($("#searchscope").is(':visible')){return;} 
			else {
				hideDropdowns();
				$("#searchscope").stop(false,true).animate({height:'toggle'},100);}
	});
	$("#cse-search-box input.search_input1, .searchscope").blur(function(event){
			if(mouseovr){return;}
			hideDropdowns();
	});
	$("#close_searchscope").click(function(){
			hideDropdowns();
	});
	
	// FAQ list
	$('ul.type2 .answer1').each(function(){
		$(this).addClass('faqhidden');
	});
	$('ul.type2 li .question1').click(function(){
		$(this).parent().toggleClass('minus1');
		$(this).parent().find('.answer1').toggleClass('faqhidden');
	});
	
	//accordion
	
	$('ul.type2 .accord_content').each(function(){
		$(this).data('height',$(this).height());
		$(this).addClass('accordhide');
	});
	$('ul.type2 li .accord_title').click(function(tar){
		var animatethis = $(this).parent().find('.accord_content');
		//if target wasn't open, check if its siblings were open - HIDE
		if(!$(this).parent().hasClass('minus1')){
			$(this).parent().parent().find('.minus1').each(function(){
				$(this).removeClass('minus1');
				$(this).find('.accord_content').animate({height:'0px'},{duration: 500, complete:function(){
							$(this).hide();		
				}
														});
			});
		}
		//if target was open HIDE
		if($(this).parent().hasClass('minus1')){
			$(this).parent().removeClass('minus1');
			animatethis.animate({height:'0px'},{duration: 500, complete:function(){
				animatethis.hide();
			}
								});
		}
		
		// SHOW
		else{
			animatethis.animate({height:animatethis.data('height')},500);
			$(this).parent().addClass('minus1');
		}
	});
	// photostack
	if($('div.gallery1').length !== 0)	{
		$('div.gallery1').photostack({
			'speed': 400,
			'float': 'right'
		});
	}
	
	// tabs
	//we need to except the library pages since they have some custom tab code
	$(".tabs1 .tab:nth-child(1)").addClass("first");
	// make the "on" tab show and calculate box height
	function showTheOnTab()	{
		$('body[class!=lib] .tabs1 .tab.on .tab_content1').show();
		tab_height = $('.tabs1 .tab.on .tab_content1').height();
		tabs_container_height = (tab_height + 30) + 'px';
		$('.tabs1').css('height',tabs_container_height);
		//Cufon.refresh('.tabs1 h2');
	}
	// on page load hide tabs then show the 'on' tab...
	
	$('body[class!=lib] .tabs1 .tab_content1').hide();
	showTheOnTab();
	// handle tab clicking
	$('body[class!=lib] .tab h2').click(function(){
		$(".tabs1 .tab.on").removeClass('on');
		$(this).parent().addClass('on');
		//Cufon('.tab h2');
		$(".tabs1 .tab .tab_content1").hide();
		showTheOnTab();
	});
	// add CSS controls for ie7
	$(".tabs1 .tab:nth-child(1) h2").addClass("one");
	$(".tabs1 .tab:nth-child(2) h2").addClass("two");
	$(".tabs1 .tab:nth-child(3) h2").addClass("three");
	
	
	// home page background images
	var bg_array = $("#bg1 li a").map(function() {
	  return $(this).attr("href");
	});

	$('.feature_total').text(bg_array.length);
	//build array that we'll change the color of the h1 based on img class of bg1
	var bg_class = $("#bg1 img").map(function() {
		if ($(this).hasClass("dark")){
			return "dark";
		} else {
			return "null";
		}
	});
	
	pic = 0;
//console.log(bg_class);
	
	$('.more3 a').addClass('more_link');
	// background controls
	if (bg_class[0] == "dark"){
		$("#main_heading2").addClass('dark_text1');
		$('#bg1_controls li.first, .main_home #bg1_controls li.first').addClass('dark_text1').find('h1').addClass('dark_text1').find('.more3 a').addClass('dark_text1');
	}
	$('#bg1_controls li.first').addClass('active');
	$('#bg2_controls li.first').addClass('active');
	
	//we've created a special event called imgpreload since some browsers wont fire a load event when loading an image from cache.
	
	var bg_new_index = 0;
	var bg_old_index = 0;
	var image_holder = $("#imnext");
	//ADD LOGIC TO CHECK IF #imnext has loaded OR place the #imnext in before load is bound.
	$(image_holder).load(function(ev){			
		if ( $(this).attr('src') !== '' ) {
			$("#loadwheel").hide();
			$("#bg1 ul").hide();
			$("#bg1 ul").css('background-image','url(' + $(image_holder).attr('src') +')');
			$("#bg1 ul").fadeIn(1000, function(){
				$("body").css('background-image','url(' + $(image_holder).attr('src') +')');
				$(this).hide();
			});
			if (bg_class[bg_new_index] == "dark"){
//console.log("this should be dark text");
				$("#main_heading2, .main_home #bg1_controls li h1, .main_home #bg1_controls li").addClass('dark_text1');
				$(this).addClass('dark_text1').find('h1').addClass('dark_text1');
			}
			else { 
//console.log("this should not be dark text");
				$("#main_heading2, .main_home #bg1_controls li h1, .main_home #bg1_controls li").removeClass('dark_text1');
			}
			$('#bg1_controls li').removeClass('active');
			$('#bg2_controls li').removeClass('active');
			$('#bg1_controls li:eq(' + bg_new_index +')').addClass('active');
			$('#bg2_controls li:eq(' + bg_new_index +')').addClass('active');
			// // $(this).unbind();
		};
	});
	
	//pageload background stuff.  sets the first image [0] to appear.
	$('#bg1 ul').each(function(){
		$(image_holder).attr('src', bg_array[bg_new_index]);
		body_height = $(document).height();
		$(this).height(body_height);
$('.feature_current').text(bg_new_index+1);
	});

$('#bg1_controls li .controls1 a').click(function(ev){
		ev.preventDefault();
	
		// $("#bg1 ul").height($(document).height());
		bg_new_index = $('#bg1_controls li .controls1>a').index(this) ;
		bg_old_index = ( ( $("#bg1_controls").find('li.active').index() ) || 0 );
		if ( !$('#bg1 ul').is(":animated") && (bg_new_index !== bg_old_index) ) {
			$("#loadwheel").show();
			$(image_holder).attr('src', bg_array[bg_new_index]);	
		}
		
	});

//ADDED for redesign
$('a.feature_next').click(function(e){
    e.preventDefault();
    bg_new_index = bg_old_index+1;
//loop around
if(bg_new_index+1 > bg_array.length){
    bg_new_index = 0;
}
    if ( !$('#bg1 ul').is(":animated")) {
        $("#loadwheel").show();
        $(image_holder).attr('src', bg_array[bg_new_index]);
        $('.feature_current').text(bg_new_index+1);	
    }
    bg_old_index = bg_new_index;
});

$('a.feature_prev').click(function(e){
    e.preventDefault();
    bg_new_index = bg_old_index-1;
//loop around
if(bg_new_index < 0){
    bg_new_index = bg_array.length-1;
}
    if ( !$('#bg1 ul').is(":animated")) {
        $("#loadwheel").show();
        $(image_holder).attr('src', bg_array[bg_new_index]);
        $('.feature_current').text(bg_new_index+1);	
    }
    bg_old_index = bg_new_index;
});

//END bg code	
	
	
	// social list item class to control margin
	$(".post_wrap2 .post2:nth-child(3)").addClass("third");
	
	// stop the IE load glitching by setting CSS of these items to display:none then make them appear after layout is finished
	$("#carousel1, #search1, .breadcrumb1").show();
	
	// ie6 problem with display:none on primary nav so we use visibilty:hidden which needs to be set back to visible on page load
	$(".ie6 #primary_navigation1 ul ul").css('visibility','visible');
	
//we need to connect the scope form to the search box	
	$("#scopeform input:radio").click(function(){
		 var scopeVal = $("#scopeform input:radio:checked").val();
		$("#cse-search-box input#scope").val(scopeVal);

	});
	


	// show carousel caption on hover
	//$('#carousel1 li .carousel_text1').hide();
	$('#carousel1 li').hover(function() {
		$(this).find('.carousel_text1').show();
	}, function() {
		$(this).find('.carousel_text1').hide();
	});
	
});



/*  create html elements so IE will display HTML5 properly  */
document.createElement('header');
document.createElement('section');
document.createElement('footer');
document.createElement('nav');


/*
 * Special event for image load events
 * Needed because some browsers does not trigger the event on cached images.

 * MIT License
 * Paul Irish     | @paul_irish | www.paulirish.com
 * Andree Hansson | @peolanha   | www.andreehansson.se
 * 2010.
 */
/*(function ($) {
	$.event.special.load = {
		add: function (hollaback) {
			if ( this.nodeType === 1 && this.tagName.toLowerCase() === 'img' && this.src !== '' ) {
				// Image is already complete, fire the hollaback (fixes browser issues were cached
				// images isn't triggering the load event)
				if ( this.complete || this.readyState === 4 ) {
					hollaback.handler.apply(this);
				}

				// Check if data URI images is supported, fire 'error' event if not
				else if ( this.readyState === 'uninitialized' && this.src.indexOf('data:') === 0 ) {
					$(this).trigger('error');
				}

				else {
					$(this).bind('load', hollaback.handler);
				}
			}
		}
	};
}(jQuery));
*/

function launchIepp(){
 // iepp v1.5.1 MIT @jon_neal
 /*@cc_on@if(@_jscript_version<9)(function(p,e){function q(a,b){if(g[a])g[a].styleSheet.cssText+=b;else{var c=r[l],d=e[j]("style");d.media=a;c.insertBefore(d,c[l]);g[a]=d;q(a,b)}}function s(a,b){for(var c=new RegExp("\\b("+m+")\\b(?!.*[;}])","gi"),d=function(k){return".iepp_"+k},h=-1;++h<a.length;){b=a[h].media||b;s(a[h].imports,b);q(b,a[h].cssText.replace(c,d))}}function t(){for(var a,b=e.getElementsByTagName("*"),c,d,h=new RegExp("^"+m+"$","i"),k=-1;++k<b.length;)if((a=b[k])&&(d=a.nodeName.match(h))){c=new RegExp("^\\s*<"+d+"(.*)\\/"+d+">\\s*$","i");i.innerHTML=a.outerHTML.replace(/\r|\n/g," ").replace(c,a.currentStyle.display=="block"?"<div$1/div>":"<span$1/span>");c=i.childNodes[0];c.className+=" iepp_"+d;c=f[f.length]=[a,c];a.parentNode.replaceChild(c[1],c[0])}s(e.styleSheets,"all")}function u(){for(var a=-1,b;++a<f.length;)f[a][1].parentNode.replaceChild(f[a][0],f[a][1]);for(b in g)r[l].removeChild(g[b]);g={};f=[]}for(var r=e.documentElement,i=e.createDocumentFragment(),g={},m="abbr|article|aside|audio|canvas|command|datalist|details|figure|figcaption|footer|header|hgroup|keygen|mark|meter|nav|output|progress|section|source|summary|time|video",n=m.split("|"),f=[],o=-1,l="firstChild",j="createElement";++o<n.length;){e[j](n[o]);i[j](n[o])}i=i.appendChild(e[j]("div"));p.attachEvent("onbeforeprint",t);p.attachEvent("onafterprint",u)})(this,document);@end@*/
}
//Before printing we inject the IE print protector script which allows for rendering HTML5 content whilest printing. We do this only before printing because it messes up some multimedia pages otherwise. (coverflow/gallery).
window.onbeforeprint=launchIepp;



/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);

//DONT PUT ANY CODE BELOW JQUERY VALIDATE due to funky stuff going on with their regex.

/*
 * jQuery validation plug-in 1.7
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 *
 * Copyright (c) 2006 - 2008 J�rn Zaefferer
 *
 * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return;}var validator=$.data(this[0],'validator');if(validator){return validator;}validator=new $.validator(options,this[0]);$.data(this[0],'validator',validator);if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true;});if(validator.settings.submitHandler){this.find("input, button").filter(":submit").click(function(){validator.submitButton=this;});}this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){if(validator.submitButton){var hidden=$("<input type='hidden'/>").attr("name",validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);}validator.settings.submitHandler.call(validator,validator.currentForm);if(validator.submitButton){hidden.remove();}return false;}return true;}if(validator.cancelSubmit){validator.cancelSubmit=false;return handle();}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;return false;}return handle();}else{validator.focusInvalid();return false;}});}return validator;},valid:function(){if($(this[0]).is('form')){return this.validate().form();}else{var valid=true;var validator=$(this[0].form).validate();this.each(function(){valid&=validator.element(this);});return valid;}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(index,value){result[value]=$element.attr(value);$element.removeAttr(value);});return result;},rules:function(command,argument){var element=this[0];if(command){var settings=$.data(element.form,'validator').settings;var staticRules=settings.rules;var existingRules=$.validator.staticRules(element);switch(command){case"add":$.extend(existingRules,$.validator.normalizeRule(argument));staticRules[element.name]=existingRules;if(argument.messages)settings.messages[element.name]=$.extend(settings.messages[element.name],argument.messages);break;case"remove":if(!argument){delete staticRules[element.name];return existingRules;}var filtered={};$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];delete existingRules[method];});return filtered;}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);if(data.required){var param=data.required;delete data.required;data=$.extend({required:param},data);}return data;}});$.extend($.expr[":"],{blank:function(a){return!$.trim(""+a.value);},filled:function(a){return!!$.trim(""+a.value);},unchecked:function(a){return!a.checked;}});$.validator=function(options,form){this.settings=$.extend(true,{},$.validator.defaults,options);this.currentForm=form;this.init();};$.validator.format=function(source,params){if(arguments.length==1)return function(){var args=$.makeArray(arguments);args.unshift(source);return $.validator.format.apply(this,args);};if(arguments.length>2&&params.constructor!=Array){params=$.makeArray(arguments).slice(1);}if(params.constructor!=Array){params=[params];}$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n);});return source;};$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(element){this.lastActive=element;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass,this.settings.validClass);this.errorsFor(element).hide();}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){this.element(element);}},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement){this.element(element);}},onclick:function(element){if(element.name in this.submitted)this.element(element);else if(element.parentNode.name in this.submitted)this.element(element.parentNode);},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass);},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass);}},setDefaults:function(settings){$.extend($.validator.defaults,settings);},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.validator.format("Please enter no more than {0} characters."),minlength:$.validator.format("Please enter at least {0} characters."),rangelength:$.validator.format("Please enter a value between {0} and {1} characters long."),range:$.validator.format("Please enter a value between {0} and {1}."),max:$.validator.format("Please enter a value less than or equal to {0}."),min:$.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var groups=(this.groups={});$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key;});});var rules=this.settings.rules;$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value);});function delegate(event){var validator=$.data(this[0].form,"validator"),eventType="on"+event.type.replace(/^validate/,"");validator.settings[eventType]&&validator.settings[eventType].call(validator,this[0]);}$(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",delegate).validateDelegate(":radio, :checkbox, select, option","click",delegate);if(this.settings.invalidHandler)$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler);},form:function(){this.checkForm();$.extend(this.submitted,this.errorMap);this.invalid=$.extend({},this.errorMap);if(!this.valid())$(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid();},checkForm:function(){this.prepareForm();for(var i=0,elements=(this.currentElements=this.elements());elements[i];i++){this.check(elements[i]);}return this.valid();},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);this.currentElements=$(element);var result=this.check(element);if(result){delete this.invalid[element.name];}else{this.invalid[element.name]=true;}if(!this.numberOfInvalids()){this.toHide=this.toHide.add(this.containers);}this.showErrors();return result;},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]});}this.successList=$.grep(this.successList,function(element){return!(element.name in errors);});}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors();},resetForm:function(){if($.fn.resetForm)$(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass);},numberOfInvalids:function(){return this.objectLength(this.invalid);},objectLength:function(obj){var count=0;for(var i in obj)count++;return count;},hideErrors:function(){this.addWrapper(this.toHide).hide();},valid:function(){return this.size()==0;},size:function(){return this.errorList.length;},focusInvalid:function(){if(this.settings.focusInvalid){try{$(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin");}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name;}).length==1&&lastActive;},elements:function(){var validator=this,rulesCache={};return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in rulesCache||!validator.objectLength($(this).rules()))return false;rulesCache[this.name]=true;return true;});},clean:function(selector){return $(selector)[0];},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext);},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=$([]);this.toHide=$([]);this.currentElements=$([]);},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers);},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(element);},check:function(element){element=this.clean(element);if(this.checkable(element)){element=this.findByName(element.name)[0];}var rules=$(element).rules();var dependencyMismatch=false;for(method in rules){var rule={method:method,parameters:rules[method]};try{var result=$.validator.methods[method].call(this,element.value.replace(/\r/g,""),element,rule.parameters);if(result=="dependency-mismatch"){dependencyMismatch=true;continue;}dependencyMismatch=false;if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));return;}if(!result){this.formatAndAdd(element,rule);return false;}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id
+", check the '"+rule.method+"' method",e);throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true;},customMetaMessage:function(element,method){if(!$.metadata)return;var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();return meta&&meta.messages&&meta.messages[method];},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method]);},findDefined:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==undefined)return arguments[i];}return undefined;},defaultMessage:function(element,method){return this.findDefined(this.customMessage(element.name,method),this.customMetaMessage(element,method),!this.settings.ignoreTitle&&element.title||undefined,$.validator.messages[method],"<strong>Warning: No message defined for "+element.name+"</strong>");},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method),theregex=/\$?\{(\d+)\}/g;if(typeof message=="function"){message=message.call(this,rule.parameters,element);}else if(theregex.test(message)){message=jQuery.format(message.replace(theregex,'{$1}'),rule.parameters);}this.errorList.push({message:message,element:element});this.errorMap[element.name]=message;this.submitted[element.name]=message;},addWrapper:function(toToggle){if(this.settings.wrapper)toToggle=toToggle.add(toToggle.parent(this.settings.wrapper));return toToggle;},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass,this.settings.validClass);this.showLabel(error.element,error.message);}if(this.errorList.length){this.toShow=this.toShow.add(this.containers);}if(this.settings.success){for(var i=0;this.successList[i];i++){this.showLabel(this.successList[i]);}}if(this.settings.unhighlight){for(var i=0,elements=this.validElements();elements[i];i++){this.settings.unhighlight.call(this,elements[i],this.settings.errorClass,this.settings.validClass);}}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show();},validElements:function(){return this.currentElements.not(this.invalidElements());},invalidElements:function(){return $(this.errorList).map(function(){return this.element;});},showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message);}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper){label=label.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();}if(!this.labelContainer.append(label).length)this.settings.errorPlacement?this.settings.errorPlacement(label,$(element)):label.insertAfter(element);}if(!message&&this.settings.success){label.text("");typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label);}this.toShow=this.toShow.add(label);},errorsFor:function(element){var name=this.idOrName(element);return this.errors().filter(function(){return $(this).attr('for')==name;});},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:element.id||element.name);},checkable:function(element){return/radio|checkbox/i.test(element.type);},findByName:function(name){var form=this.currentForm;return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null;});},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case'select':return $("option:selected",element).length;case'input':if(this.checkable(element))return this.findByName(element.name).filter(':checked').length;}return value.length;},depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true;},dependTypes:{"boolean":function(param,element){return param;},"string":function(param,element){return!!$(param,element.form).length;},"function":function(param,element){return param(element);}},optional:function(element){return!$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch";},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;this.pending[element.name]=true;}},stopRequest:function(element,valid){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();this.formSubmitted=false;}else if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=false;}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",{old:null,valid:true,message:this.defaultMessage(element,"remote")});}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className);},classRules:function(element){var rules={};var classes=$(element).attr('class');classes&&$.each(classes.split(' '),function(){if(this in $.validator.classRuleSettings){$.extend(rules,$.validator.classRuleSettings[this]);}});return rules;},attributeRules:function(element){var rules={};var $element=$(element);for(method in $.validator.methods){var value=$element.attr(method);if(value){rules[method]=value;}}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength)){delete rules.maxlength;}return rules;},metadataRules:function(element){if(!$.metadata)return{};var meta=$.data(element.form,'validator').settings.meta;return meta?$(element).metadata()[meta]:$(element).metadata();},staticRules:function(element){var rules={};var validator=$.data(element.form,'validator');if(validator.settings.rules){rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{};}return rules;},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];return;}if(val.param||val.depends){var keepRule=true;switch(typeof val.depends){case"string":keepRule=!!$(val.depends,element.form).length;break;case"function":keepRule=val.depends.call(element,element);break;}if(keepRule){rules[prop]=val.param!==undefined?val.param:true;}else{delete rules[prop];}}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter;});$.each(['minlength','maxlength','min','max'],function(){if(rules[this]){rules[this]=Number(rules[this]);}});$.each(['rangelength','range'],function(){if(rules[this]){rules[this]=[Number(rules[this][0]),Number(rules[this][1])];}});if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];delete rules.min;delete rules.max;}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];delete rules.minlength;delete rules.maxlength;}}if(rules.messages){delete rules.messages;}return rules;},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true;});data=transformed;}return data;},addMethod:function(name,method,message){$.validator.methods[name]=method;$.validator.messages[name]=message!=undefined?message:$.validator.messages[name];if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name));}},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case'select':var val=$(element).val();return val&&val.length>0;case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return $.trim(value).length>0;}},remote:function(value,element,param){if(this.optional(element))return"dependency-mismatch";var previous=this.previousValue(element);if(!this.settings.messages[element.name])this.settings.messages[element.name]={};previous.originalMessage=this.settings.messages[element.name].remote;this.settings.messages[element.name].remote=previous.message;param=typeof param=="string"&&{url:param}||param;if(previous.old!==value){previous.old=value;var validator=this;this.startRequest(element);var data={};data[element.name]=value;$.ajax($.extend(true,{url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){validator.settings.messages[element.name].remote=previous.originalMessage;var valid=response===true;if(valid){var submitted=validator.formSubmitted;validator.prepareElement(element);validator.formSubmitted=submitted;validator.successList.push(element);validator.showErrors();}else{var errors={};var message=(previous.message=response||validator.defaultMessage(element,"remote"));errors[element.name]=$.isFunction(message)?message(value):message;validator.showErrors(errors);}previous.valid=valid;validator.stopRequest(element,valid);}},param));return"pending";}else if(this.pending[element.name]){return"pending";}return previous.valid;},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param;},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param;},rangelength:function(value,element,param){var length=this.getLength($.trim(value),element);return this.optional(element)||(length>=param[0]&&length<=param[1]);},min:function(value,element,param){return this.optional(element)||value>=param;},max:function(value,element,param){return this.optional(element)||value<=param;},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1]);},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);},url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value));},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value);},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(var n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);var nDigit=parseInt(cDigit,10);if(bEven){if((nDigit*=2)>9)nDigit-=9;}nCheck+=nDigit;bEven=!bEven;}return(nCheck%10)==0;},accept:function(value,element,param){param=typeof param=="string"?param.replace(/,/g,'|'):"png|jpe?g|gif";return this.optional(element)||value.match(new RegExp(".("+param+")$","i"));},equalTo:function(value,element,param){var target=$(param).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){$(element).valid();});return value==target.val();}}});$.format=$.validator.format;})(jQuery);;(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));var port=settings.port;if(settings.mode=="abort"){if(pendingRequests[port]){pendingRequests[port].abort();}return(pendingRequests[port]=ajax.apply(this,arguments));}return ajax.apply(this,arguments);};})(jQuery);;(function($){if(!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){this.addEventListener(original,handler,true);},teardown:function(){this.removeEventListener(original,handler,true);},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments);}};function handler(e){e=$.event.fix(e);e.type=fix;return $.event.handle.call(this,e);}});};$.extend($.fn,{validateDelegate:function(delegate,type,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate)){return handler.apply(target,arguments);}});}});})(jQuery);

// JavaScript Document

