/*
 * Show Wufoo form instructions in IE lte 6
 * Not a "plugin" as such
 * 
 * Added 1/14/07 by steve.johnson@virginia.edu
 * See also wufoo.css
 *
 */

$(function() {
	if( $('#myForm') && $('#myForm').length )  {
	 	$('#myForm li').mouseover(function(){$(this).addClass('active' );}).mouseout(function(){$(this).removeClass('active' );});
	}
});

/*
 * Form Validation: jQuery form validation plug-in v1.1.2
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 *
 * Copyright (c) 2006 Jörn Zaefferer
 *
 * $Id: jquery.validate.js 4126 2007-12-12 21:32:07Z 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
 */

/**
 * Validates a single form.
 *
 * The normal behaviour is to validate a form when a submit button is clicked or
 * the user presses enter when an input of that form is focused.
 *
 * It is also possible to validate each individual element of that form, eg. on blur or keyup.
 *
 * @example $("#myform").validate();
 * @before <form id="myform">
 *   <input name="firstname" class="{required:true}" />
 * </form>
 * @desc Validates a form on submit. Rules are read from metadata.
 *
 * @example $("input").validate({
 * 		event: "blur",
 *		success: "valid"
 * });
 * @desc Validates all input elements on blur event (when the element looses focus).
 * Adds a class "valid" to all error labels when the elements are valid and keeps showing
 * them.
 *
 * @example $("#myform").validate({
 *   submitHandler: function(form) {
 *   	$(form).ajaxSubmit();
 *   }
 * });
 * @desc Uses form plugin's ajaxSubmit method to handle the form submit, while preventing
 * the default submit.
 *
 * @example $("#myform").validate({
 *  event: "keyup"
 * 	rules: {
 * 		"first-name": "required",
 * 		age: {
 *			required: "#firstname:blank",
 * 			number: true,
 * 			minValue: 3
 * 		},
 * 		password: {
 * 			required: function() {
 * 				return $("#age").val() < 18;
 * 			},
 * 			minLength: 5,
 * 			maxLength: 32
 * 		}
 * 	},
 *  messages: {
 * 		password: {
 * 			required: function(element, validator) {
 * 				return "Your password is required because with " + $("#age").val() + ", you are not old enough yet."
 * 			},
 * 			minLength: "Please enter a password at least 5 characters long.",
 * 			maxLength: "Please enter a password no longer then 32 characters long."
 * 		},
 *		age: "Please specify your age as a number (at least 3)."
 * 	}
 * });
 * @desc Validate a form on submit and each element on keyup. Rules are specified
 * for three elements, and a message is customized for the "password" and the
 * "age" elements. Inline rules are ignored. The password is only required when the age is lower
 * then 18. The age is only required when the firstname is blank. Note that "first-name" is quoted, because
 * it isn't a valid javascript identifier. "first-name": "required" also uses a shortcut replacement for
 * { required: true }. That works for all trivial validations that expect no more then a boolean-true argument.
 * The required-message for password is specified as a function to use runtime customization.
 *
 * @example $("#myform").validate({
 *   errorClass: "invalid",
 *   errorLabelContainer: $("#messageBox"),
 *   wrapper: "li"
 * });
 * @before <ul id="messageBox"></ul>
 * <form id="myform" action="/login" method="post">
 *   <label>Firstname</label>
 *   <input name="fname" class="{required:true}" />
 *   <label>Lastname</label>
 *   <input name="lname" title="Your lastname, please!" class="{required:true}" />
 * </form>
 * @result <ul id="messageBox">
 *   <li><label for="fname" class="invalid">Please specify your firstname!</label></li>
 *   <li><label for="lname" class="invalid">Your lastname, please!</label></li>
 * </ul>
 * <form id="myform" action="/login" method="post">
 *   <label>Firstname</label>
 *   <input name="fname" class="{required:true} invalid" />
 *   <label>Lastname</label>
 *   <input name="lname" title="Your lastname, please!" class="{required:true} invalid" />
 * </form>
 * @desc Validates a form on submit. The class used to search, create and display
 * error labels is changed to "invalid". This is also added to invalid elements.
 *
 * All error labels are displayed inside an unordered list with the ID "messageBox", as
 * specified by the jQuery object passed as errorContainer option. All error elements
 * are wrapped inside an li element, to create a list of messages.
 *
 * To ease the setup of the form, debug option is set to true, preventing a submit
 * of the form no matter of being valid or not.
 *
 *
 * @example $("#myform").validate({
 * 	errorPlacement: function(error, element) {
 * 		error.appendTo( element.parent("td").next("td") );
 * 	},
 * 	success: function(label) {
 * 		label.text("ok!").addClass("success");
 * 	}
 * });
 * @before <form id="myform" action="/login" method="post">
 * 	<table>
 * 		<tr>
 * 			<td><label>Firstname</label>
 * 			<td><input name="fname" class="{required:true}" value="Pete" /></td>
 * 			<td></td>
 * 		</tr>
 * 		<tr>
 * 			<td><label>Lastname</label></td>
 * 			<td><input name="lname" title="Your lastname, please!" class="{required:true}" /></td>
 * 			<td></td>
 * 		</tr>
 * 	</table>
 * </form>
 * @result <form id="myform" action="/login" method="post">
 * 	<table>
 * 		<tr>
 * 			<td><label>Firstname</label>
 * 			<td><input name="fname" class="{required:true}" value="Pete" /></td>
 * 			<td><label for="fname" class="invalid success">ok!</label></td>
 * 		</tr>
 * 		<tr>
 * 			<td><label>Lastname</label></td>
 * 			<td><input name="lname" title="Your lastname, please!" class="{required:true}" /></td>
 * 			<td><label for="lname" class="invalid">Your lastname, please!</label></td>
 * 		</tr>
 * 	</table>
 * </form>
 * @desc Validates a form on submit. Customizes the placement of the generated labels
 * by appending them to the next table cell. Displays "ok!" for valid elements and adds a class
 * "success" to the message (the class "invalid" is kept to identify the error label).
 *
 * @example $("#myform").validate({
 *   errorContainer: $("#messageBox1, #messageBox2"),
 *   errorLabelContainer: $("#messageBox1 ul"),
 *   wrapper: "li",
 * });
 * @before <div id="messageBox1">
 *   <h3>The are errors in your form!</h3>
 *   <ul></ul>
 * </div>
 * <form id="myform" action="/login" method="post">
 *   <label>Firstname</label>
 *   <input name="fname" class="{required:true}" />
 *   <label>Lastname</label>
 *   <input name="lname" title="Your lastname, please!" class="{required:true}" />
 * </form>
 * <div id="messageBox2">
 *   <h3>The are errors in your form, see details above!</h3>
 * </div>
 * @result <ul id="messageBox">
 *   <li><label for="fname" class="error">Please specify your firstname!</label></li>
 *   <li><label for="lname" class="error">Your lastname, please!</label></li>
 * </ul>
 * <form id="myform" action="/login" method="post">
 *   <label>Firstname</label>
 *   <input name="fname" class="{required:true} error" />
 *   <label>Lastname</label>
 *   <input name="lname" title="Your lastname, please!" class="{required:true} error" />
 * </form>
 * @desc Validates a form on submit. Similar to the above example, but with an additional
 * container for error messages. The elements given as the errorContainer are all shown
 * and hidden when errors occur. But the error labels themselve are added to the element(s)
 * given as errorLabelContainer, here an unordered list. Therefore the error labels are
 * also wrapped into li elements (wrapper option).
 *
 * @param Map options Optional settings to configure validation
 * @option String errorClass Use this class to look for existing error labels and add it to
 *		invalid elements. Default: "error"
 * @option String wrapper Wrap error labels with the specified element, eg "li". Default: none
 * @option Boolean debug If true, the form is not submitted and certain errors are display on the console (requires Firebug or Firebug lite). Default: none
 * @option Boolean focusInvalid Focus the last active or first invalid element on submit or via validator.focusInvalid(). Default: true
 * @option Function submitHandler Callback for handling the actual
 *		submit when the form is valid. Gets the form as the only argmument. Default: normal form submit
 * @option Map<String, Object> messages Key/value pairs defining custom messages.
 *		Key is the name of an element, value the message to display for that element. Instead of
 *		a plain message	another map with specific messages for each rule can be used.
 *		Can be specified for one or more elements. Overrides the title attribute of an element.
 *		Each message can be a String or a Function. The Function is called with the element
 * 		as the first and the validator as the second argument and must return a String to display as the message
 * 		for that element.
 *      Default: none, the default message for the method is used.
 * @option Map<String, Object> rules Key/value pairs defining custom rules.
 *		Key is the ID or name (for radio/checkbox inputs) of an element,
 *		value is an object consisting of rule/parameter pairs, eg. {required: true, min: 3}.
 *   	Once specified, metadata rules are completely ignored.
 *		Default: none, rules are read from metadata via metadata plugin
 * @option Boolean onsubmit Validate the form on submit. Set to false to use only other
 *		events for validation (option event). Default: true
 * @option String meta In case you use metadata for other plugins, too, you
 *		want to wrap your validation rules
 *		into their own object that can be specified via this option. Default: none
 * @option jQuery errorContainer Hide and show this container when validating. Default: none
 * @option jQuery errorLabelContainer Search and append error labels to this container, and show and hide it accordingly. Default: none
 * @option Function showErrors A custom message display handler. Gets the map of errors as the
 *		first argument and a refernce to the validator object as the second.
 * 		You can trigger (in addition to your own messages) the default behaviour by calling
 * 		the defaultShowErrors() method of the validator.
 * 		Default: none, uses built-in message disply.
 * @option Function errorPlacement Used to customize placement of created error labels.
 *		First argument: jQuery object containing the created error label
 *		Second argument: jQuery object containing the invalid element
 *		Default: Places the error label after the invalid element
 * @option String errorElement The element to use for generated error messages. Default: "label"
 * @option String|Function If specified, the error label is displayed to show a valid element. If 
 * 		a String is given, its added as a class to the label. If a Function is given, its called with
 *		the label (as a jQuery object) as its only argument. That can be used to add a text like "ok!".
 *		Default: none
 * @option Boolean focusCleanup If enabled, removes the errorClass from the invalid elements and hides
 * 		all errors messages whenever the element is focused. Avoid combination with focusInvalid. Default: false
 * @option String|Element ignore Elements to ignore when validating, simply filtering them out. jQuery's not-method
 * 		is used, there everything that is accepted by not() can be passed as this option. Default: None, though inputs of type
 *		submit and reset are always ignored.
 * @opton Boolean onblur Validate elements on blur. If nothing is entered, all rules are skipped, 
 * 		except when the field was already marked as invalid. Default: true
 *
 * @name validate
 * @type $.validator
 * @cat Plugins/Validate
 */

jQuery.extend(jQuery.fn,{validate:function(options){var validator=new jQuery.validator(options,this[0]);var validator=jQuery.data(this[0],'validator');if(validator){return validator}validator=new jQuery.validator(options,this[0]);jQuery.data(this[0],'validator',validator);if(validator.settings.onsubmit){this.find("input.cancel:submit").click(function(){validator.cancelSubmit=true});this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){validator.settings.submitHandler.call(validator,validator.currentForm);return false}return true}if(validator.cancelSubmit){validator.cancelSubmit=false;return handle()}if(validator.form()){return handle()}else{validator.focusInvalid();return false}})}return validator},push:function(t){return this.setArray(jQuery.merge(this.get(),t))}});jQuery.extend(jQuery.expr[":"],{blank:"!jQuery.trim(a.value)",filled:"!!jQuery.trim(a.value)",unchecked:"!a.checked"});jQuery.format=function(source,params){if(arguments.length==1)return function(){var args=jQuery.makeArray(arguments);args.unshift(source);return jQuery.format.apply(this,args)};if(arguments.length>2&&params.constructor!=Array){params=jQuery.makeArray(arguments).slice(1)}if(params.constructor!=Array){params=[params]}jQuery.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n)});return source};jQuery.validator=function(options,form){this.settings=jQuery.extend({},jQuery.validator.defaults,options);this.currentForm=form;this.labelContainer=jQuery(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||jQuery(form);this.containers=jQuery(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.invalid={};this.reset();this.refresh()};jQuery.extend(jQuery.validator,{defaults:{messages:{},errorClass:"error",errorElement:"label",focusInvalid:true,errorContainer:jQuery([]),errorLabelContainer:jQuery([]),onsubmit:true,ignore:[],onblur:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.required(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)}},setDefaults:function(settings){jQuery.extend(jQuery.validator.defaults,settings)},messages:{required:"This field is required.",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).",dateDE:"Bitte geben Sie ein gültiges Datum ein.",number:"Please enter a valid number.",numberDE:"Bitte geben Sie eine Nummer ein.",digits:"Please enter only digits",creditcard:"Please enter a valid credit card.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxLength:jQuery.format("Please enter a value no longer than {0} characters."),minLength:jQuery.format("Please enter a value of at least {0} characters."),rangeLength:jQuery.format("Please enter a value between {0} and {1} characters long."),rangeValue:jQuery.format("Please enter a value between {0} and {1}."),maxValue:jQuery.format("Please enter a value less than or equal to {0}."),minValue:jQuery.format("Please enter a value greater than or equal to {0}.")},prototype:{form:function(){this.prepareForm();for(var i=0;this.elements[i];i++){this.check(this.elements[i])}jQuery.extend(this.submitted,this.errorMap);this.invalid=jQuery.extend({},this.errorMap);this.settings.invalidHandler&&this.settings.invalidHandler.call(this);this.showErrors();return this.valid()},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);var result=this.check(element);if(result){delete this.invalid[element.name]}else{this.invalid[element.name]=true}if(!this.numberOfInvalids()){this.toHide.push(this.containers)}this.showErrors();return result},showErrors:function(errors){if(errors){jQuery.extend(this.errorMap,errors);this.errorList=[];for(name in errors){this.errorList.push({message:errors[name],element:jQuery("[@name='"+name+"']:first",this.currentForm)[0]})}this.successList=jQuery.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(jQuery.fn.resetForm)jQuery(this.currentForm).resetForm();this.prepareForm();this.hideErrors();this.elements.removeClass(this.settings.errorClass)},numberOfInvalids:function(){var count=0;for(i in this.invalid)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{jQuery(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus()}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&jQuery.grep(this.errorList,function(n){return n.element.name==lastActive.name}).length==1&&lastActive},refresh:function(){var validator=this;validator.rulesCache={};function focused(){validator.lastActive=this;if(validator.settings.focusCleanup&&!validator.blockFocusCleanup){jQuery(this).removeClass(validator.settings.errorClass);validator.errorsFor(this).hide()}}this.elements=jQuery(this.currentForm).find("input, select, textarea").not(":submit, :reset").not("[@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 validator.rulesCache||!validator.rules(this).length)return false;validator.rulesCache[this.name]=validator.rules(this);return true});this.elements.focus(focused);validator.settings.onblur&&validator.elements.blur(function(){validator.settings.onblur.call(validator,this)});validator.settings.onkeyup&&validator.elements.keyup(function(){validator.settings.onkeyup.call(validator,this)});if(validator.settings.onclick){var checkables=jQuery([]);validator.elements.each(function(){if(validator.checkable(this))checkables.push(validator.checkableGroup(this))});checkables.click(function(){validator.settings.onclick.call(validator,this)})}},clean:function(selector){return jQuery(selector)[0]},errors:function(){return jQuery(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=jQuery([]);this.toHide=jQuery([])},prepareForm:function(){this.reset();this.toHide=this.errors().push(this.containers)},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(this.clean(element))},check:function(element){element=this.clean(element);jQuery(element).removeClass(this.settings.errorClass);var rules=this.rulesCache[element.name];for(var i=0;rules[i];i++){var rule=rules[i];try{var result=jQuery.validator.methods[rule.method].call(this,jQuery.trim(element.value),element,rule.parameters);if(result===-1)break;if(!result){jQuery(element).addClass(this.settings.errorClass);this.formatAndAdd(rule,element);return false}}catch(e){this.settings.debug&&window.console&&console.warn("exception occured when checking element "+element.id+", check the '"+rule.method+"' method");throw e;}}if(rules.length&&this.settings.success)this.successList.push(element);return true},configuredMessage:function(id,method){var m=this.settings.messages[id];return m&&(m.constructor==String?m:m[method])},defaultMessage:function(element,method){return this.configuredMessage(element.name,method)||element.title||jQuery.validator.messages[method]||"<strong>Warning: No message defined for "+element.name+"</strong>"},formatAndAdd:function(rule,element){var message=this.defaultMessage(element,rule.method);if(typeof message=="function")message=message.call(this,rule.parameters,element);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.push(toToggle.parents(this.settings.wrapper));return toToggle},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.showLabel(error.element,error.message)}if(this.errorList.length){this.toShow.push(this.containers)}for(var i=0;this.successList[i];i++){this.showLabel(this.successList[i])}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);if(this.settings.overrideErrors||label.attr("generated")){label.html(message)}}else{label=jQuery("<"+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,jQuery(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.push(label)},errorsFor:function(element){return this.errors().filter("[@for='"+this.idOrName(element)+"']")},idOrName:function(element){return this.checkable(element)?element.name:element.id||element.name},rules:function(element){var data=this.data(element);if(!data)return[];var rules=[];if(typeof data=="string"){var transformed={};transformed[data]=true;data=transformed}jQuery.each(data,function(key,value){rules[rules.length]={method:key,parameters:value}});return rules},data:function(element){return this.settings.rules?this.settings.rules[element.name]:this.settings.meta?jQuery(element).metadata()[this.settings.meta]:jQuery(element).metadata()},checkable:function(element){return/radio|checkbox/i.test(element.type)},checkableGroup:function(element){return jQuery(element.form||document).find('[@name="'+element.name+'"]')},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case'select':return jQuery("option:selected",element).length;case'input':if(this.checkable(element))return this.checkableGroup(element).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!!jQuery(param,element.form).length},"function":function(param,element){return param(element)}},required:function(element){return!jQuery.validator.methods.required.call(this,jQuery.trim(element.value),element)}},methods:{required:function(value,element,param){if(!this.depend(param,element))return-1;switch(element.nodeName.toLowerCase()){case'select':var options=jQuery("option:selected",element);return options.length>0&&(element.type=="select-multiple"||(jQuery.browser.msie&&!(options[0].attributes['value'].specified)?options[0].text:options[0].value).length>0);case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return value.length>0}},minLength:function(value,element,param){return this.required(element)||this.getLength(value,element)>=param},maxLength:function(value,element,param){return this.required(element)||this.getLength(value,element)<=param},rangeLength:function(value,element,param){var length=this.getLength(value,element);return this.required(element)||(length>=param[0]&&length<=param[1])},minValue:function(value,element,param){return this.required(element)||value>=param},maxValue:function(value,element,param){return this.required(element)||value<=param},rangeValue:function(value,element,param){return this.required(element)||(value>=param[0]&&value<=param[1])},email:function(value,element){return this.required(element)||/^[^\s,;]+@([^\s.,;]+\.)+[\w-]{2,}$/i.test(value)},url:function(value,element){return this.required(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.required(element)||!/Invalid|NaN/.test(new Date(value))},dateISO:function(value,element){return this.required(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value)},dateDE:function(value,element){return this.required(element)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value)},number:function(value,element){return this.required(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value)},numberDE:function(value,element){return this.required(element)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value)},digits:function(value,element){return this.required(element)||/^\d+$/.test(value)},creditcard:function(value,element){if(this.required(element))return true;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(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:"png|jpe?g|gif";return this.required(element)||value.match(new RegExp(".("+param+")$","i"))},equalTo:function(value,element,param){return value==jQuery(param).val()}},addMethod:function(name,method,message){jQuery.validator.methods[name]=method;jQuery.validator.messages[name]=message}});
/*
 * jQuery Cycle Plugin (with Transition Definitions)
 * Examples and documentation at: http://malsup.com/jquery/cycle/
 * Copyright (c) 2007 M. Alsup
 * Version: 2.03
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 */

// override these globally if you like 
/*
$.fn.cycle.defaults = { 
    fx:           'fade', // one of: fade, shuffle, zoom, slideX, slideY, scrollUp/Down/Left/Right 
    timeout:       4000,  // milliseconds between slide transitions (0 to disable auto advance) 
    speed:         1000,  // speed of the transition (any valid fx speed value) 
    speedIn:       null,  // speed of the 'in' transition 
    speedOut:      null,  // speed of the 'out' transition 
    click:         null,  // @deprecated; please use the 'next' option 
    next:          null,  // id of element to use as click trigger for next slide 
    prev:          null,  // id of element to use as click trigger for previous slide 
    prevNextClick: null,  // callback fn for prev/next clicks:  function(isNext, zeroBasedSlideIndex, slideElement) 
    pager:         null,  // id of element to use as pager container 
    pagerClick:    null,  // callback fn for pager clicks:  function(zeroBasedSlideIndex, slideElement) 
    pagerAnchorBuilder: null, // callback fn for building anchor links 
    before:        null,  // transition callback (scope set to element to be shown) 
    after:         null,  // transition callback (scope set to element that was shown) 
    easing:        null,  // easing method for both in and out transitions 
    easeIn:        null,  // easing for "in" transition 
    easeOut:       null,  // easing for "out" transition 
    shuffle:       null,  // coords for shuffle animation, ex: { top:15, left: 200 } 
    animIn:        null,  // properties that define how the slide animates in 
    animOut:       null,  // properties that define how the slide animates out 
    cssBefore:     null,  // properties that define the initial state of the slide before transitioning in 
    cssAfter:      null,  // properties that defined the state of the slide after transitioning out 
    fxFn:          null,  // function used to control the transition 
    height:       'auto', // container height 
    startingSlide: 0,     // zero-based index of the first slide to be displayed 
    sync:          1,     // true if in/out transitions should occur simultaneously 
    random:        0,     // true for random, false for sequence (not applicable to shuffle fx) 
    fit:           0,     // force slides to fit container 
    pause:         0,     // true to enable "pause on hover" 
    autostop:      0,     // true to end slideshow after X transitions (where X == slide count) 
    delay:         0      // additional delay (in ms) for first transition (hint: can be negative) 
};
*/


eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(3($){9 k=\'2.2g\';$.l.m=3(j){J 6.Z(3(){4(j&&j.1U==1Q){2S(j){1K\'2F\':4(6.S)1G(6.S);6.S=0;J;1K\'1D\':6.11=1;J;1K\'2d\':6.11=0;J;2c:j={1b:j}}}9 b=$(6),$N=b.2a(),u=$N.2R();4(u.C<2)J;9 c=$.2H({},$.l.m.21,j||{},$.1Z?b.1Z():$.2B?b.2z():{});4(c.1F)c.1Y=c.2s||u.C;c.r=c.r?[c.r]:[];c.V=c.V?[c.V]:[];c.V.2i(3(){c.1B=0});9 d=6.2f;9 w=1z((d.1y(/w:(\\d+)/)||[])[1])||c.B;9 h=1z((d.1y(/h:(\\d+)/)||[])[1])||c.D;c.G=1z((d.1y(/t:(\\d+)/)||[])[1])||c.G;4(b.y(\'1u\')==\'2b\')b.y(\'1u\',\'29\');4(w)b.B(w);4(h&&h!=\'1s\')b.D(h);4(c.U>=u.C)c.U=0;9 e=c.U||0;$N.y(\'1u\',\'2O\').1o().Z(3(i){9 z=e?i>=e?u.C-(i-e):e-i:u.C-i;$(6).y(\'z-23\',z)});$(u[e]).H();4(c.1a&&w)$N.B(w);4(c.1a&&h&&h!=\'1s\')$N.D(h);4(c.1D)b.2G(3(){6.11=1},3(){6.11=0});9 f=$.l.m.F[c.1b];4($.20(f))f(b,$N,c);$N.Z(3(){9 a=$(6);6.Q=(c.1a&&h)?h:a.D();6.R=(c.1a&&w)?w:a.B()});c.v=c.v||{};c.s=c.s||{};c.x=c.x||{};$N.1l(\':1m(\'+e+\')\').y(c.v);4(c.M)$($N[e]).y(c.M);4(c.G){4(c.L.1U==1Q)c.L={2p:2o,2n:2m}[c.L]||2j;4(!c.1k)c.L=c.L/2;1C((c.G-c.L)<2h)c.G+=c.L}4(c.1A)c.1j=c.1i=c.1A;4(!c.1d)c.1d=c.L;4(!c.1c)c.1c=c.L;c.2e=u.C;c.P=e;4(c.10){c.q=c.P;1C(c.q==c.P)c.q=1h.1W(1h.10()*u.C)}19 c.q=c.U>=(u.C-1)?0:c.U+1;9 g=$N[e];4(c.r.C)c.r[0].1g(g,[g,g,c,1V]);4(c.V.C>1)c.V[1].1g(g,[g,g,c,1V]);4(c.Y&&!c.K)c.K=c.Y;4(c.K)$(c.K).1x(\'Y\',3(){J 1w(u,c,c.18?-1:1)});4(c.1v)$(c.1v).1x(\'Y\',3(){J 1w(u,c,c.18?1:-1)});4(c.17)1T(u,c);4(c.G)6.S=1S(3(){16(u,c,0,!c.18)},c.G+(c.1R||0))})};3 16(a,b,c,d){4(b.1B)J;9 p=a[0].1t,X=a[b.P],K=a[b.q];4(p.S===0&&!c)J;4(!c&&!p.11&&b.1F&&(--b.1Y<=0))J;4(c||!p.11){4(b.r.C)$.Z(b.r,3(i,o){o.1g(K,[X,K,b,d])});9 e=3(){$.Z(b.V,3(i,o){o.1g(K,[X,K,b,d])})};4(b.q!=b.P){b.1B=1;4(b.1q)b.1q(X,K,b,e);19 4($.20($.l.m[b.1b]))$.l.m[b.1b](X,K,b,e);19 $.l.m.1P(X,K,b,e)}4(b.10){b.P=b.q;1C(b.q==b.P)b.q=1h.1W(1h.10()*a.C)}19{9 f=(b.q+1)==a.C;b.q=f?0:b.q+1;b.P=f?a.C-1:b.q-1}4(b.17)$(b.17).1O(\'a\').28(\'1r\').27(\'a:1m(\'+b.P+\')\').26(\'1r\')}4(b.G)p.S=1S(3(){16(a,b,0,!b.18)},b.G)};3 1w(a,b,c){9 p=a[0].1t,G=p.S;4(G){1G(G);p.S=0}b.q=b.P+c;4(b.q<0)b.q=a.C-1;19 4(b.q>=a.C)b.q=0;4(b.1p&&1N b.1p==\'3\')b.1p(c>0,b.q,a[b.q]);16(a,b,1,c>=0);J 24};3 1T(b,c){9 d=$(c.17);$.Z(b,3(i,o){9 a=(1N c.1M==\'3\')?$(c.1M(i,o)):$(\'<a 2N="#">\'+(i+1)+\'</a>\');4(a.2K(\'2J\').C==0)a.2I(d);a.1x(\'Y\',3(){c.q=i;9 p=b[0].1t,G=p.S;4(G){1G(G);p.S=0}4(1N c.1J==\'3\')c.1J(c.q,b[c.q]);16(b,c,1,!c.18);J 24})});d.1O(\'a\').27(\'a:1m(\'+c.U+\')\').26(\'1r\')};$.l.m.1P=3(a,b,c,d){9 e=$(a),$n=$(b);$n.y(c.v);9 f=3(){$n.1n(c.s,c.1d,c.1j,d)};e.1n(c.x,c.1c,c.1i,3(){4(c.I)e.y(c.I);4(!c.1k)f()});4(c.1k)f()};$.l.m.F={22:3(a,b,c){b.1l(\':1m(\'+c.U+\')\').y(\'1e\',0);c.r.E(3(){$(6).H()});c.s={1e:1};c.x={1e:0};c.I={T:\'O\'}}};$.l.m.2E=3(){J k};$.l.m.21={1b:\'22\',G:2D,L:2C,1d:A,1c:A,Y:A,K:A,1v:A,1p:A,17:A,1J:A,1M:A,r:A,V:A,1A:A,1j:A,1i:A,1f:A,s:A,x:A,v:A,I:A,1q:A,D:\'1s\',U:0,1k:1,10:0,1a:0,1D:0,1F:0,1R:0}})(5);5.l.m.F.2A=3(d,e,f){d.y(\'W\',\'14\');f.r.E(3(a,b,c){5(6).H();c.v.7=b.13;c.x.7=0-a.13});f.M={7:0};f.s={7:0};f.I={T:\'O\'}};5.l.m.F.2y=3(d,e,f){d.y(\'W\',\'14\');f.r.E(3(a,b,c){5(6).H();c.v.7=0-b.13;c.x.7=a.13});f.M={7:0};f.s={7:0};f.I={T:\'O\'}};5.l.m.F.2x=3(d,e,f){d.y(\'W\',\'14\');f.r.E(3(a,b,c){5(6).H();c.v.8=b.12;c.x.8=0-a.12});f.M={8:0};f.s={8:0}};5.l.m.F.2w=3(d,e,f){d.y(\'W\',\'14\');f.r.E(3(a,b,c){5(6).H();c.v.8=0-b.12;c.x.8=a.12});f.M={8:0};f.s={8:0}};5.l.m.F.2v=3(f,g,h){f.y(\'W\',\'14\').B();h.r.E(3(a,b,c,d){5(6).H();9 e=a.12,1H=b.12;c.v=d?{8:1H}:{8:-1H};c.s.8=0;c.x.8=d?-e:e;g.1l(a).y(c.v)});h.M={8:0};h.I={T:\'O\'}};5.l.m.F.2u=3(f,g,h){f.y(\'W\',\'14\');h.r.E(3(a,b,c,d){5(6).H();9 e=a.13,1E=b.13;c.v=d?{7:-1E}:{7:1E};c.s.7=0;c.x.7=d?e:-e;g.1l(a).y(c.v)});h.M={7:0};h.I={T:\'O\'}};5.l.m.F.2t=3(a,b,c){c.s={B:\'H\'};c.x={B:\'1o\'}};5.l.m.F.2r=3(a,b,c){c.s={D:\'H\'};c.x={D:\'1o\'}};5.l.m.F.1f=3(f,g,h){9 w=f.y(\'W\',\'2q\').B();g.y({8:0,7:0});h.r.E(3(){5(6).H()});h.L=h.L/2;h.10=0;h.1f=h.1f||{8:-w,7:15};h.u=[];1L(9 i=0;i<g.C;i++)h.u.E(g[i]);1L(9 i=0;i<h.U;i++)h.u.E(h.u.1X());h.1q=3(a,b,c,d){9 e=5(a);e.1n(c.1f,c.1d,c.1j,3(){c.u.E(c.u.1X());1L(9 i=0,1I=c.u.C;i<1I;i++)5(c.u[i]).y(\'z-23\',1I-i);e.1n({8:0,7:0},c.1c,c.1i,3(){5(6).1o();4(d)d()})})}};5.l.m.F.2L=3(d,e,f){f.r.E(3(a,b,c){5(6).H();c.v.7=b.Q;c.s.D=b.Q});f.M={7:0};f.v={D:0};f.s={7:0};f.x={D:0};f.I={T:\'O\'}};5.l.m.F.2M=3(d,e,f){f.r.E(3(a,b,c){5(6).H();c.s.D=b.Q;c.x.7=a.Q});f.M={7:0};f.v={7:0,D:0};f.x={D:0};f.I={T:\'O\'}};5.l.m.F.2l=3(d,e,f){f.r.E(3(a,b,c){5(6).H();c.v.8=b.R;c.s.B=b.R});f.v={B:0};f.s={8:0};f.x={B:0};f.I={T:\'O\'}};5.l.m.F.2k=3(d,e,f){f.r.E(3(a,b,c){5(6).H();c.s.B=b.R;c.x.8=a.R});f.v={8:0,B:0};f.s={8:0};f.x={B:0};f.I={T:\'O\'}};5.l.m.F.2P=3(d,e,f){f.M={7:0,8:0};f.I={T:\'O\'};f.r.E(3(a,b,c){5(6).H();c.v={B:0,D:0,7:b.Q/2,8:b.R/2};c.s={7:0,8:0,B:b.R,D:b.Q};c.x={B:0,D:0,7:a.Q/2,8:a.R/2}})};5.l.m.F.2Q=3(d,e,f){f.r.E(3(a,b,c){c.v={B:0,D:0,1e:1,8:b.R/2,7:b.Q/2,25:1};c.s={7:0,8:0,B:b.R,D:b.Q}});f.x={1e:0};f.I={25:0}};',62,179,'|||function|if|jQuery|this|top|left|var||||||||||||fn|cycle||||nextSlide|before|animIn||els|cssBefore||animOut|css||null|width|length|height|push|transitions|timeout|show|cssAfter|return|next|speed|cssFirst|slides|none|currSlide|cycleH|cycleW|cycleTimeout|display|startingSlide|after|overflow|curr|click|each|random|cyclePause|offsetWidth|offsetHeight|hidden||go|pager|rev|else|fit|fx|speedOut|speedIn|opacity|shuffle|apply|Math|easeOut|easeIn|sync|not|eq|animate|hide|prevNextClick|fxFn|activeSlide|auto|parentNode|position|prev|advance|bind|match|parseInt|easing|busy|while|pause|nextH|autostop|clearTimeout|nextW|len|pagerClick|case|for|pagerAnchorBuilder|typeof|find|custom|String|delay|setTimeout|buildPager|constructor|true|floor|shift|countdown|metadata|isFunction|defaults|fade|index|false|zIndex|addClass|filter|removeClass|relative|children|static|default|resume|slideCount|className|03|250|unshift|400|turnRight|turnLeft|200|fast|600|slow|visible|slideY|autostopCount|slideX|scrollVert|scrollHorz|scrollRight|scrollLeft|scrollDown|data|scrollUp|meta|1000|4000|ver|stop|hover|extend|appendTo|body|parents|turnUp|turnDown|href|absolute|zoom|fadeZoom|get|switch'.split('|'),0,{}))

/*
 * jQuery corner plugin
 *  http://www.methvin.com/jquery/jq-corner.html
 *
 * version 1.91 (9/21/2007)
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

/**
 * The corner() method provides a simple way of styling DOM elements.  
 *
 * corner() takes a single string argument:  $().corner("effect corners width")
 *
 *   effect:  The name of the effect to apply, such as round or bevel. 
 *            If you don't specify an effect, rounding is used.
 *
 *   corners: The corners can be one or more of top, bottom, tr, tl, br, or bl. 
 *            By default, all four corners are adorned. 
 *
 *   width:   The width specifies the width of the effect; in the case of rounded corners this 
 *            will be the radius of the width. 
 *            Specify this value using the px suffix such as 10px, and yes it must be pixels.
 *
 * For more details see: http://methvin.com/jquery/jq-corner.html
 * For a full demo see:  http://malsup.com/jquery/corner/
 *
 *
 * @example $('.adorn').corner();
 * @desc Create round, 10px corners 
 *
 * @example $('.adorn').corner("25px");
 * @desc Create round, 25px corners 
 *
 * @example $('.adorn').corner("notch bottom");
 * @desc Create notched, 10px corners on bottom only
 *
 * @example $('.adorn').corner("tr dog 25px");
 * @desc Create dogeared, 25px corner on the top-right corner only
 *
 * @example $('.adorn').corner("round 8px").parent().css('padding', '4px').corner("round 10px");
 * @desc Create a rounded border effect by styling both the element and its parent
 * 
 * @name corner
 * @type jQuery
 * @param String options Options which control the corner style
 * @cat Plugins/Corner
 * @return jQuery
 * @author Dave Methvin (dave.methvin@gmail.com)
 * @author Mike Alsup (malsup@gmail.com)
 */
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(p($){$.1o.K=p(o){p D(s){7 s=r(s).1J(16);6(s.1K<2)?\'0\'+s:s};p Z(u){P(;u&&u.1I.1t()!=\'1H\';u=u.O){7 v=$.t(u,\'1h\');k(v.1F(\'y\')>=0){k($.M.1G&&v==\'1L(0, 0, 0, 0)\')1M;7 y=v.C(/\\d+/g);6\'#\'+D(y[0])+D(y[1])+D(y[2])}k(v&&v!=\'1i\')6 v}6\'#1R\'};p 1r(i){1Q(1g){8\'b\':6 5.b(4*(1-5.x(5.V(i/4))));8\'1c\':6 5.b(4*(1+5.x(5.V(i/4))));8\'X\':6 5.b(4*(1-5.x(5.1P(i/4))));8\'11\':6 5.b(4*(5.x(5.V((4-i-1)/4))));8\'1b\':6 5.b(4*(5.1B(i,4/i)));8\'Y\':6 5.b(4*(5.1B(4,(4-i-1))));8\'17\':6 5.b(4*(5.1N(i)));8\'18\':6 5.b(4*(5.x(i)));8\'1A\':6 5.b(4*(5.1O(i)));8\'1C\':6 5.b(4*(5.1S(i)));8\'1x\':6 5.b(4*(5.1E((4-i-1),4)));8\'1f\':6(i&1)?(i+1):4;8\'1j\':6(i&2)?(i+1):4;8\'1y\':6(i&3)?(i+1):4;8\'19\':6(i%2)*4;8\'1q\':6 4;8\'1v\':6 i+1}};o=(o||"").1t();7 S=/S/.A(o);7 Q=((o.C(/Q:(#[0-1u-f]+)/)||[])[1]);7 U=((o.C(/U:(#[0-1u-f]+)/)||[])[1]);7 4=r((o.C(/(\\d+)h/)||[])[1])||10;7 1n=/b|1v|1q|11|1c|X|1b|Y|17|18|19|1A|1x|1C|1y|1j|1f/;7 1g=((o.C(1n)||[\'b\'])[0]);7 W={T:0,B:1};7 a={H:/1s|1D/.A(o),E:/1s|1V/.A(o),G:/J|2g/.A(o),F:/J|2h/.A(o)};k(!a.H&&!a.E&&!a.G&&!a.F)a={H:1,E:1,G:1,F:1};7 n=14.13(\'12\');n.c.2i=\'2f\';n.c.1d=\'2e\';n.c.1h=U||\'1i\';n.c.1a=\'I\';6 9.2b(p(2c){7 m={T:r($.t(9,\'2k\'))||0,R:r($.t(9,\'2j\'))||0,B:r($.t(9,\'2p\'))||0,L:r($.t(9,\'2q\'))||0};k($.M.1w)9.c.2n=1;k(!S)9.c.2l=\'z\';n.c.1T=Q||Z(9.O);7 15=$.2d(9,\'1d\');P(7 j 29 W){7 q=W[j];k((q&&(a.G||a.F))||(!q&&(a.H||a.E))){n.c.1a=\'z \'+(a[j+\'R\']?\'I\':\'z\')+\' z \'+(a[j+\'L\']?\'I\':\'z\');7 d=14.13(\'12\');$(d).1Z(\'1m-K\');7 l=d.c;q?9.1k(d):9.1l(d,9.1p);k(q&&15!=\'20\'){k($.t(9,\'N\')==\'2a\')9.c.N=\'1Y\';l.N=\'1X\';l.J=l.1U=l.1W=l.1z=\'0\';k($.M.1w)l.21(\'4\',\'9.O.22\');1e l.4=\'27%\'}1e{l.1z=!q?\'-\'+m.T+\'h -\'+m.R+\'h \'+(m.T-4)+\'h -\'+m.L+\'h\':(m.B-4)+\'h -\'+m.R+\'h -\'+m.B+\'h -\'+m.L+\'h\'}P(7 i=0;i<4;i++){7 w=5.26(0,1r(i));7 e=n.25(23);e.c.24=\'0 \'+(a[j+\'R\']?w:0)+\'h 0 \'+(a[j+\'L\']?w:0)+\'h\';q?d.1k(e):d.1l(e,d.1p)}}}})};$.1o.28=p(o){6 $(\'.1m-K\',9).2o()}})(2m);',62,151,'||||width|Math|return|var|case|this|opts|round|style|||||px|||if|ds|pad|strip||function|bot|parseInt||css|node|||cos|rgb|none|test||match|hex2|TR|BR|BL|TL|solid|bottom|corner||browser|position|parentNode|for|cc||keep||sc|asin|edges|sharp|jut|gpc||bite|div|createElement|document|cssHeight||curl|tear|fray|borderStyle|slide|cool|height|else|dog|fx|backgroundColor|transparent|dog2|appendChild|insertBefore|jquery|re|fn|firstChild|notch|getW|top|toLowerCase|9a|bevel|msie|sculpt|dog3|margin|wicked|atan2|long|tl|log|indexOf|safari|html|nodeName|toString|length|rgba|continue|atan|tan|acos|switch|ffffff|sqrt|borderColor|left|tr|padding|absolute|relative|addClass|auto|setExpression|offsetWidth|false|borderWidth|cloneNode|max|100|uncorner|in|static|each|index|curCSS|1px|hidden|bl|br|overflow|paddingRight|paddingTop|border|jQuery|zoom|remove|paddingBottom|paddingLeft'.split('|'),0,{}))
