/* informedia combine engine v.1.2.11 * file: * link: bottom.js * hash: 1381411913-505a5b23e4131bc36c4fe485cfb8c903.js */ window.matchMedia=window.matchMedia||function(a){"use strict";var c,d=a.documentElement,e=d.firstElementChild||d.firstChild,f=a.createElement("body"),g=a.createElement("div");return g.id="mq-test-1",g.style.cssText="position:absolute;top:-100em",f.style.background="none",f.appendChild(g),function(a){return g.innerHTML='',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document); (function(a){"use strict";function x(){u(!0)}var b={};if(a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,!b.mediaQueriesSupported){var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var b=m.shift();v(b.href,function(c){p(c,b.href,b.media),h[b.href]=!0,a.setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(b){var h="clientWidth",k=d[h],m="CSS1Compat"===c.compatMode&&k||c.body[h]||k,n={},o=l[l.length-1],p=(new Date).getTime();if(b&&q&&i>p-q)return a.clearTimeout(r),r=a.setTimeout(u,i),void 0;q=p;for(var v in e)if(e.hasOwnProperty(v)){var w=e[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?t||s():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?t||s():1)),w.hasquery&&(z&&A||!(z||m>=x)||!(A||y>=m))||(n[w.media]||(n[w.media]=[]),n[w.media].push(f[w.rules]))}for(var C in g)g.hasOwnProperty(C)&&g[C]&&g[C].parentNode===j&&j.removeChild(g[C]);for(var D in n)if(n.hasOwnProperty(D)){var E=c.createElement("style"),F=n[D].join("\n");E.type="text/css",E.media=D,j.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(c.createTextNode(F)),g.push(E)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)}})(this); function ValidForm(strFormId, strMainAlert) { this.id = strFormId; this.elements = {}; this.pages = []; this.valid = false; this.validator = new ValidFormValidator(this.id); this.validator.mainAlert = strMainAlert; this.events = []; this.cachedEvents = []; this.conditions = []; this.customEvents = [ "beforeSubmit", "beforeNextPage", "afterNextPage", "beforePreviousPage", "afterPreviousPage", "beforeAddPreviousButton", "afterAddPreviousButton", "beforeShowPage", "afterShowPage", "beforeAddPageNavigation", "afterAddPageNavigation", "beforeDynamicChange", "afterDynamicChange", "afterValidate" ]; this.labels = {}; this.__continueExecution = true; // Initialize ValidForm class this._init(); }; ValidForm.prototype._init = function() { var self = this; // Handle disabled elements and make sure all sub-elements are disabled as well. this.traverseDisabledElements(); // This is where the magic happens: onSubmit; validate form. jQuery("#" + self.id).bind("submit", function(){ jQuery("#" + this.id).trigger("VF_BeforeSubmit", [{ValidForm: self}]); if (typeof self.events.beforeSubmit == "function") { self.events.beforeSubmit(self); } if (self.__continueExecution) { if (self.pages.length > 1) { // Validation has been done on each page individually. // No need to re-validate here. return true; } else { return self.validate(); } } else { return false; } }); // Dynamic duplication logic. self.dynamicDuplication(); }; ValidForm.prototype.initialize = function () { var self = this; for (var i = 0; i <= self.conditions.length; i++) { if (typeof self.conditions[i] !== "undefined") { self.conditions[i]._init(); } } }; ValidForm.prototype.addCondition = function (objCondition) { this.conditions.push(new ValidFormCondition(this, objCondition)); }; ValidForm.prototype.showAlerts = function (objFields) { var __this = this; //*** Remove open alerts first. __this.removeAlerts(); try { if ($(objFields).length > 0) { $(objFields).each(function () { var objFieldError = this; for (var fieldName in objFieldError) { if (objFieldError.hasOwnProperty(fieldName)) { var objField = __this.getElement(fieldName); if (objField !== null) { // Field found in current form objField.validator.showAlert(objFieldError[fieldName]); } } } }); $("#" + __this.id).trigger("VF_ShowAlerts", [{ValidForm: __this, invalidFields: objFields}]); } } catch (e) { try { console.error("Show alerts failed: ", e.message, e); // Log error } catch (e) {} // Or die trying } }; ValidForm.prototype.removeAlerts = function() { for (var strElement in this.elements) { var objElement = this.elements[strElement]; if (objElement !== null) { objElement.validator.removeAlert(); } } }; ValidForm.prototype.setLabel = function (key, value) { if (typeof value !== "undefined") { this.labels[key] = value; } else { throw new Error("Cannot set empty label in ValidForm.setLabel('" + key + "', '" + value + "')"); } }; ValidForm.prototype.matchfields = function (strSecondFieldId, strFirstFieldId, strMatchError) { var objElement = this.getElement(jQuery("#" + strSecondFieldId).attr("name")); objElement.validator.matchWith = this.getElement(jQuery("#" + strFirstFieldId).attr("name")); objElement.validator.matchError = strMatchError; }; ValidForm.prototype.traverseDisabledElements = function () { var __this = this; jQuery("#" + this.id + " fieldset.vf__disabled").each(function(){ var fieldset = this; jQuery("input, select, textarea", fieldset).attr("disabled", "disabled"); jQuery(".vf__dynamic a", fieldset).addClass("vf__disabled"); jQuery("legend input", fieldset) .removeAttr("disabled"); }); __this.attachAreaEvents(jQuery("legend input")); }; ValidForm.prototype.dynamicDuplication = function () { var __this = this; // Bind click event to duplicate button jQuery(".vf__dynamic a").bind("click", function() { var $anchor = jQuery(this); //*** Call custom event if set. jQuery("#" + this.id).trigger("VF_BeforeDynamicChange", [{ValidForm: __this, objAnchor: $anchor}]); if (typeof __this.events.beforeDynamicChange == "function") { __this.events.beforeDynamicChange(__this, $anchor); } if (!jQuery(this).parent().prev().hasClass("vf__disabled")) { //*** Update dynamic field counter. var $original = $anchor.parent().prev(); var copy = $original.clone(); var counter; // Counter placeholder //*** Clear values. var names = jQuery(this).data("target-name").split("|"); var ids = jQuery(this).data("target-id").split("|"); copy.find("input[name$='_dynamic']").remove(); jQuery.each(names, function(index, fieldname){ //*** Fix every field in an area or multifield. var objOriginal = __this.getElement(fieldname); counter = $("#" + fieldname + "_dynamic"); // Set value to number '0' if value is NaN if (isNaN(parseInt(counter.val()))) { counter.val(0); } counter.val(parseInt(counter.val()) + 1); var search = (parseInt(counter.val()) == 1) ? fieldname : fieldname + "_" + (parseInt(counter.val()) - 1); copy.find("[name='" + search + "']").each(function(){ if (jQuery(this).attr("type") == "radio" || jQuery(this).attr("type") == "checkbox") { //*** Radio buttons and checkboxes have to be treated differently. var fieldId; if (counter.val() == 1) { fieldId = jQuery(this).attr("id"); } else { var arrFieldId = jQuery(this).attr("id").split("_"); arrFieldId.pop(); fieldId = arrFieldId.join("_"); } jQuery(this) .removeAttr("checked") .attr("name", fieldname + "_" + counter.val()) .attr("id", fieldId + "_" + counter.val()) .parent("label").attr("for", fieldId + "_" + counter.val()); } else { //*** Normal fields (input, textarea) are easy. jQuery(this) .attr("value", objOriginal.validator.hint) // = hint or empty .attr("name", fieldname + "_" + counter.val()) .attr("id", ids[index] + "_" + counter.val()) .prev("label").attr("for", ids[index] + "_" + counter.val()); jQuery(this) .bind("focus", function() { if (jQuery(this).val() == objOriginal.validator.hint) { jQuery(this).val(""); jQuery(this).parent().removeClass("vf__hint"); } }) .bind("blur", function() { if (jQuery(this).val() == "" && objOriginal.validator.required) { jQuery(this).val(objOriginal.validator.hint); jQuery(this).parent().addClass("vf__hint"); } }); } }); //*** Add fields to the form collection. if (objOriginal !== null) { // objOriginal is null if there is a paragraph in the area. var objCopy = jQuery.extend(new ValidFormElement(), objOriginal); objCopy.id = ids[index] + "_" + counter.val(); objCopy.name = fieldname + "_" + counter.val(); objCopy.validator = jQuery.extend(new ValidFormFieldValidator(), objOriginal.validator); objCopy.validator.id = objCopy.id; objCopy.validator.required = false; __this.addElement(objCopy); } }); //*** Remove 'required' styling. copy .find(".vf__required") .removeClass("vf__required") .addClass("vf__optional") copy .removeClass("vf__required") .removeClass("vf__error") .addClass("vf__optional") .addClass("vf__clone"); // For now, we remove the ID attribute from clones copy.removeAttr("id"); copy.find("p.vf__error").remove(); copy.find(".vf__error").removeClass("vf__error"); jQuery(this).parent().before(copy); //*** Fix click event on active areas. if (copy.hasClass("vf__area")) { var copiedTrigger = jQuery("legend :checkbox", copy); var originalTrigger = jQuery("legend :checkbox", $original); if (copiedTrigger.length > 0) { var counter = $("#" + copiedTrigger.attr("name") + "_dynamic"); // +1 on the counter counter.val(parseInt(counter.val()) + 1); copiedTrigger.attr("id", copiedTrigger.attr("id") + "_" + counter.val()); copiedTrigger.attr("name", copiedTrigger.attr("name") + "_" + counter.val()); copiedTrigger.parent("label").attr("for", copiedTrigger.attr("id")); if (originalTrigger.attr("checked") == "checked") { copiedTrigger.attr("checked", "checked"); } __this.attachAreaEvents(copiedTrigger); } } //*** Call custom event if set. jQuery("#" + __this.id).trigger("VF_AfterDynamicChange", [{ValidForm: __this, objAnchor: $anchor, objCopy: copy}]); if (typeof __this.events.afterDynamicChange == "function") { __this.events.afterDynamicChange({ValidForm: __this, objAnchor: $anchor, objCopy: copy}); } } return false; }); }; ValidForm.prototype.attachAreaEvents = function(objActiveTrigger) { var __this = this; objActiveTrigger.unbind("click").bind("click", function(){ var fieldset = jQuery(objActiveTrigger).parentsUntil(".vf__area").parent(".vf__area"); if (this.checked) { // Enable active area jQuery("input, select, textarea", fieldset).removeAttr("disabled"); jQuery(".vf__dynamic a", fieldset).removeClass("vf__disabled"); jQuery(fieldset).removeClass("vf__disabled"); var $dynamicTrigger = jQuery(fieldset).data("vf__dynamicTrigger"); if (typeof $dynamicTrigger === "object") { $dynamicTrigger.show(); } $("#" + __this.id).trigger("VF_EnableActiveArea", [{ValidForm: __this, objArea: fieldset}]); } else { // Disable active area & remove error's var inputNames = []; jQuery("div > input, select, textarea", fieldset) .attr("disabled", "disabled") .each(function () { inputNames.push($(this).attr("name")); }); jQuery(".vf__dynamic a", fieldset).addClass("vf__disabled"); jQuery("legend input", fieldset).removeAttr("disabled"); jQuery(fieldset).addClass("vf__disabled"); // Get the dynamic trigger, if available var $dynamicTrigger = $("[data-target-id='" + inputNames.join("|") + "']"); if ($dynamicTrigger.length > 0) { $dynamicTrigger.hide(); // And store it in a data attribute of the current fieldset for later reference. jQuery(fieldset).data("vf__dynamicTrigger", $dynamicTrigger); } //*** Remove errors. jQuery("div.vf__error", fieldset).each(function(){ jQuery(this).removeClass("vf__error").find("p.vf__error").remove(); }); $("#" + __this.id).trigger("VF_DisableActiveArea", [{ValidForm: __this, objArea: fieldset}]); } }); }; ValidForm.prototype.inArray = function(arrToSearch, value) { for (var i=0; i < arrToSearch.length; i++) { if (arrToSearch[i] === value) { return true; } } return false; }; ValidForm.prototype.addElement = function() { var objAddedElement = null; if (arguments.length > 0 && typeof(arguments[0]) == "object") { objAddedElement = this.elements[arguments[0].name] = arguments[0]; } else { var typeError = ""; var required = false; var requiredError = ""; var hint = null; var hintError = ""; var minLength = null; var minLengthError = ""; var maxLength = null; var maxLengthError = ""; if (arguments.length > 0) { var strElementId = arguments[0]; } else { return false; } if (arguments.length > 1) { var strElementName = arguments[1]; } else { return false; } if (arguments.length > 2) { var strValidation = arguments[2]; } else { return false; } if (arguments.length > 3) { required = arguments[3]; } if (arguments.length > 4) { maxLength = arguments[4]; } if (arguments.length > 5) { minLength = arguments[5]; } if (arguments.length > 6) { hint = arguments[6]; } if (arguments.length > 7) { typeError = arguments[7]; } if (arguments.length > 8) { requiredError = arguments[8]; } if (arguments.length > 9) { hintError = arguments[9]; } if (arguments.length > 10) { minLengthError = arguments[10]; } if (arguments.length > 11) { maxLengthError = arguments[11]; } objAddedElement = this.elements[strElementName] = new ValidFormElement(this.id, strElementName, strElementId, strValidation, required, maxLength, minLength, hint, typeError, requiredError, hintError, minLengthError, maxLengthError); } // Store the element in a data property in the DOM element. $("[name='" + strElementName + "']", "#" + this.id).data("vf__field", objAddedElement); return objAddedElement; }; ValidForm.prototype.getElement = function(strElementName){ var objReturn = null; for (var strElement in this.elements) { if (strElement == strElementName) { objReturn = this.elements[strElement]; break; } } return objReturn; }; ValidForm.prototype.addEvent = function(strEvent, callback){ if (this.inArray(this.customEvents, strEvent)) { this.events[strEvent] = callback; for(var i in this.cachedEvents) { if (this.cachedEvents.hasOwnProperty(i)) { var objCachedEvent = this.cachedEvents[i]; for (var eventName in objCachedEvent) { if (objCachedEvent.hasOwnProperty(eventName)) { if (strEvent == eventName) { this.events[strEvent](objCachedEvent[eventName]); } } } } } } else { jQuery("#" + this.id).bind(strEvent, callback); } }; ValidForm.prototype.reset = function() { this.validator.removeMain(); for (var strElement in this.elements) { var objElement = this.elements[strElement]; // Only reset if this is an element that can be reset. if (typeof objElement.reset == "function") { objElement.reset(); } } }; ValidForm.prototype.validate = function(strSelector) { this.valid = true; var objDOMForm = null; var blnReturn = false; strSelector = strSelector || null; //*** Set the form object. try { objDOMForm = jQuery("#" + this.id); } catch(e) { alert("An error occured while calling the Form.\nMessage: " + e.message); this.valid = false; } if (objDOMForm) { //*** Reset main error notifications. this.validator.removeMain(); this.validator.removePage(); for (var strElement in this.elements) { var objElement = this.elements[strElement]; if (((strSelector !== null) && (jQuery(strSelector).has(jQuery("[name='" + objElement.name + "']")).length > 0)) || (strSelector == null)) { //*** Check if the element is part of an area. var objArea = jQuery("[name='" + objElement.name + "']").parentsUntil(".vf__area").parent(".vf__area"); if (objArea.length > 0) { var objChecker = jQuery("legend :checkbox", objArea); if (objChecker.length > 0) { if (objChecker.get(0).checked) { if (!objElement.validate()) { this.valid = false; } } } else { if (!objElement.validate()) { this.valid = false; } } } else { if (!objElement.validate()) { this.valid = false; } } } } } else { alert("An error occured while calling the Form.\nMessage: " + e.message); this.valid = false; } if (!this.valid) { this.validator.showMain(); } blnReturn = this.valid; jQuery("#" + this.id).trigger("VF_AfterValidate", [{ValidForm: this, selector: strSelector}]); if (typeof this.events.afterValidate == "function") { varReturn = this.events.afterValidate(this, strSelector); if (typeof varReturn !== "undefined") { blnReturn = varReturn; } } return blnReturn; }; function ValidFormComparison (objForm, subject, comparison, value) { this.subject = this._setSubject(objForm, subject); if (this.subject !== null) { this.comparison = comparison; this.value = value || null; this.isMet = false; this._deferred = $.Deferred(); this.uid = "com_" + Math.floor(Math.random()*9999); return this._init(); } else { return false; } }; ValidFormComparison.prototype._init = function () { try { var self = this , $objSubject = (this.subject instanceof jQuery) ? this.subject : $("[name='" + this.subject.name + "']"); //*** Set event listeners. Trigger 'change' event if ($objSubject.is("input") || $objSubject.is("textarea")) { if ($objSubject.attr("type") !== "checkbox" && $objSubject.attr("type") !== "radio") { var delay; $objSubject.on("keyup", function () { var $self = $(this); clearTimeout(delay); delay = setTimeout(function () { $self.trigger("change"); }, 300); }); } } $objSubject .on("change", function () { self._deferred.notifyWith(self, [self.check()]); }) .trigger("change"); // make sure conditions are met onload } catch (e) { throw new Error("Failed to initialize ValidFormComparison: " + e.message, 1); } this.promise = this._deferred.promise(); return this; }; ValidFormComparison.prototype._setSubject = function (objForm, strSubject) { var varReturn; if (typeof objForm !== "object" || !objForm instanceof ValidForm) { throw new Error("ValidForm element not set in ValidFormCondition."); } try { varReturn = objForm.getElement(strSubject); if (varReturn === null) { // Element not found in ValidForm internal collection, // this is probably a fieldset, area or paragraph element. varReturn = $("#" + strSubject); if (varReturn.length <= 0) { varReturn = null; // Reset subject //throw new Error("Could not find subject element with id or name '" + strSubject + "'.", 1); } } } catch (e) { throw new Error("Failed to set subject: " + e.message, 1); } return varReturn; }; ValidFormComparison.prototype.check = function () { var blnReturn = false , self = this , strValue = (self.subject instanceof jQuery) ? self.subject.val() : self.subject.getValue(); switch (self.comparison) { case "equal": if (strValue == self.value) { // Comparison met. blnReturn = true; } break; case "notequal": if (strValue != self.value) { // Comparison met. blnReturn = true; } break; case "empty": if (strValue === "") { blnReturn = true; } break; case "notempty": if (strValue != "") { blnReturn = true; } break; case "lessthan": var intCurrentValue = parseInt(strValue) , varCurrentValue = (isNaN(intCurrentValue)) ? strValue : intCurrentValue; if (varCurrentValue < self.value) { blnReturn = true; } break; case "greaterthan": var intCurrentValue = parseInt(strValue) , varCurrentValue = (isNaN(intCurrentValue)) ? strValue : intCurrentValue; if (varCurrentValue > self.value) { blnReturn = true; } break; case "lessthanorequal": var intCurrentValue = parseInt(strValue) , varCurrentValue = (isNaN(intCurrentValue)) ? strValue : intCurrentValue; if (varCurrentValue <= self.value) { blnReturn = true; } break; case "greaterthanorequal": var intCurrentValue = parseInt(strValue) , varCurrentValue = (isNaN(intCurrentValue)) ? strValue : intCurrentValue; if (varCurrentValue >= self.value) { blnReturn = true; } break; case "contains": if (strValue.toString().toLowerCase().indexOf(self.value.toString().toLowerCase()) !== -1) { blnReturn = true; } break; case "startswith": if (strValue.indexOf(self.value) === 0) { blnReturn = true; } break; case "endswith": if (strValue.slice(-self.value.length) == self.value) { blnReturn = true; } break; } self.isMet = blnReturn; return blnReturn; }; function ValidFormCondition (objForm, objCondition) { if (typeof objCondition !== "object" || objCondition == null) { throw new Error("Invalid condition object supplied in ValidFormCondition construct."); } if (typeof objForm === "undefined" || !(objForm instanceof ValidForm)) { throw new Error("Form object undefined or not an instance of ValidForm in ValidFormCondition construct."); } try { this.validform = objForm; this.subject = this._setSubject(objCondition.subject); this.property = objCondition.property; this.value = objCondition.value; this.comparisonType = objCondition.comparisonType; this.comparisons = []; this.condition = objCondition; } catch (e) { throw new Error("Failed to set default values in ValidFormCondition construct: " + e.message); } return this; }; ValidFormCondition.prototype._init = function () { try { var self = this , objComparisons = this.condition.comparisons; if (typeof objComparisons === "object" && objComparisons.length > 0) { for (var i = 0; i < objComparisons.length; i++) { var Comparison = objComparisons[i]; if (this.validform.getElement(Comparison.subject) !== null) { this.addComparison(new ValidFormComparison(this.validform, Comparison.subject, Comparison.comparison, Comparison.value)); } } } self.isMet() .progress(function (blnResult) { self.set(blnResult); }); } catch (e) { throw new Error("Failed to initialize Condition: " + e.message, 1); } return this; }; ValidFormCondition.prototype._setSubject = function (strSubject) { var varReturn; if (typeof this.validform !== "object" || !this.validform instanceof ValidForm) { throw new Error("ValidForm element not set in ValidFormCondition."); } try { varReturn = this.validform.getElement(strSubject); if (varReturn === null) { // Element not found in ValidForm internal collection, // this is probably a fieldset, area or paragraph element. varReturn = $("#" + strSubject); if (varReturn.length <= 0) { throw new Error("Could not find subject element with id or name '" + strSubject + "'.", 1); } } } catch (e) { throw new Error("Failed to set subject: " + e.message, 1); } return varReturn; }; ValidFormCondition.prototype.set = function (blnResult) { var self = this; var getDynamicCount = function ($objSubject) { $("input[name$='" + + "']", $objSubject); } //*** Utility functions var Util = { "visible": function (blnValue) { var $objSubject = (self.subject instanceof jQuery) ? self.subject : $("[name='" + self.subject.name + "']"); if (blnValue) { $objSubject.show(); if (!$objSubject.is("div") && !$objSubject.is("fieldset")) { $objSubject.parent().show(); } if ($objSubject.attr("type") == "checkbox" || $objSubject.attr("type") == "radio") { $objSubject.parent().parent().parent().show(); } if ($objSubject.next().hasClass("vf__dynamic")) { $objSubject.next().show(); } $objSubject.nextAll(".vf__clone, .vf__dynamic").show(); // Set enabled back to default state Util.enabled(null, true); // Set required back to default state Util.required(null, true); } else { $objSubject.hide(); if (!$objSubject.is("div") && !$objSubject.is("fieldset")) { $objSubject.parent().hide(); } if ($objSubject.attr("type") == "checkbox" || $objSubject.attr("type") == "radio") { $objSubject.parent().parent().parent().hide(); } if ($objSubject.next().hasClass("vf__dynamic")) { $objSubject.next().hide(); } $objSubject.nextAll(".vf__clone, .vf__dynamic").hide(); // Set enabled back to default state Util.enabled(false); // Set required back to default state Util.required(false); } $("#" + self.validform.id).trigger("VF_ConditionSet", [{"condition": "visible", "value": blnValue, "subject": self.subject}]); }, "enabled": function (blnValue, blnDefaultState) { blnDefaultState = blnDefaultState || false; if (self.subject instanceof ValidFormElement) { blnValue = (blnDefaultState) ? self.subject.getEnabled(true) : blnValue; self.subject.setEnabled(blnValue); } else { // Iterate over sub elements $("input, textarea, select", self.subject).each(function () { var objElement = self.validform.getElement($(this).attr("name")); if (objElement !== null) { blnValue = (blnDefaultState) ? objElement.getEnabled(true) : blnValue; objElement.setEnabled(blnValue); } }); } $("#" + self.validform.id).trigger("VF_ConditionSet", [{"condition": "enabled", "value": blnValue, "subject": self.subject}]); }, "required": function (blnValue, blnDefaultState) { blnDefaultState = blnDefaultState || false; if (self.subject instanceof ValidFormElement) { blnValue = (blnDefaultState) ? self.subject.getRequired(true) : blnValue; self.subject.setRequired(blnValue); } else { // Iterate over sub elements $("input, textarea, select", self.subject).each(function () { var objElement = self.validform.getElement($(this).attr("name")); if (objElement !== null) { blnValue = (blnDefaultState) ? objElement.getRequired(true) : blnValue; objElement.setRequired(blnValue); } }); } $("#" + self.validform.id).trigger("VF_ConditionSet", [{"condition": "required", "value": blnValue, "subject": self.subject}]); } } // Set the condition Util[self.property]((blnResult == !!self.value)); }; ValidFormCondition.prototype.addComparison = function (objComparison) { var self = this; if (!objComparison instanceof ValidFormComparison) { throw new Error("Invalid argument: objComparison is no ValidFormComparison type in ValidFormCondition.addCondition()", 1); } this.comparisons.push(objComparison); }; ValidFormCondition.prototype.isMet = function () { var self = this , def = $.Deferred(); // Count met comparisons var _checkComparisons = function () { var success = 0; for (var i = 0; i < self.comparisons.length; i++) { if (self.comparisons[i].isMet) { if (success < self.comparisons.length) { success++; } else { if (success > 0) { success--; } } } } return success; } // comparison match all var _matchAll = function () { return _checkComparisons() === self.comparisons.length; } // comparison match any var _matchAny = function () { return _checkComparisons() > 0; } for (var i = 0; i < self.comparisons.length; i++) { if (self.comparisonType === "all") { self.comparisons[i].promise.progress(function (blnResult) { if (_matchAll()) { def.notify(true); } else { def.notify(false); } }); } else { self.comparisons[i].promise.progress(function (blnResult) { if (_matchAny()) { def.notify(true); } else { def.notify(false); } }); } } return def.promise(); }; function ValidFormElement(strFormId, strElementName, strElementId, strValidation) { this.formId = strFormId; this.id = strElementId; this.name = strElementName; this.disabled = !!($("#" + strElementId).attr("disabled") === "disabled"); this.validator = new ValidFormFieldValidator(strElementId, strElementName); this.validator.check = strValidation; this.validator.required = false; this.validator.minLength = null; this.validator.maxLength = null; // Rewritten 'ValidFormElement.arguments' to just 'arguments' -Robin // http://aptana.com/reference/api/Arguments.html if (arguments.length > 4) { this.validator.required = arguments[4]; } if (arguments.length > 5) { this.validator.maxLength = arguments[5]; } if (arguments.length > 6) { this.validator.minLength = arguments[6]; } if (arguments.length > 7) { this.validator.hint = arguments[7]; var __this = this; if (this.validator.hint != "") { jQuery("#" + this.id) .bind("focus", function(){ if (jQuery(this).val() == __this.validator.hint) { jQuery(this).val(""); jQuery(this).parent().removeClass("vf__hint"); } }) .bind("blur", function(){ if (jQuery(this).val() == "" && __this.validator.required) { jQuery(this).val(__this.validator.hint); jQuery(this).parent().addClass("vf__hint"); } }); } } if (arguments.length > 8) { this.validator.typeError = arguments[8]; } if (arguments.length > 9) { this.validator.requiredError = arguments[9]; } if (arguments.length > 10) { this.validator.hintError = arguments[10]; } if (arguments.length > 11) { this.validator.minLengthError = arguments[11]; } if (arguments.length > 12) { this.validator.maxLengthError = arguments[12]; } // Keep the original values in a local cache for future reference. this._defaultstate = { "required": this.validator.required, "enabled": !this.disabled } }; ValidFormElement.prototype.validate = function() { return this.validator.validate(); }; ValidFormElement.prototype.getValue = function () { var $field = jQuery("[name='" + this.name + "']") , value; switch ($field.attr("type")) { case "radio": // Single value value = jQuery("[name='" + this.name + "']:checked").val(); break; case "checkbox": value = jQuery("[name='" + this.name + "']:checked").map(function () {return this.value;}).get().join(", "); break; default: value = $field.val(); } return value; }; ValidFormElement.prototype.setRequired = function (blnValue) { var self = this; this.validator.required = blnValue; // The state has changed, remove it's alert. this.validator.removeAlert(); var $parent = $("#" + this.id).parent(); if ($parent.hasClass("vf__multifielditem")) { // Multifield item $parent = $parent.parent(); } if (blnValue) { // Required == true $parent.removeClass("vf__optional").addClass("vf__required"); } else { // Required == false $parent.addClass("vf__optional").removeClass("vf__required"); } $parent.find("input, select").each(function () { var field = $(this).data("vf__field"); if (typeof field !== "undefined") { if (field.validator.required) { $parent.removeClass("vf__optional").addClass("vf__required"); } } }); }; ValidFormElement.prototype.getRequired = function (blnDefaultState) { return (!!blnDefaultState) ? this._defaultstate.required : this.validator.required; }; ValidFormElement.prototype.setEnabled = function (blnValue) { this.disabled = !blnValue; if (blnValue) { // Enabled == true, e.g. disabled = false $("#" + this.id) // .addClass("vf__optional") // .removeClass("vf__required") .removeClass("vf__disabled") .removeAttr("disabled"); $("#" + this.id).parent().addClass("vf__optional").removeClass("vf__required"); } else { // Enabled == false, e.g. disabled = true $("#" + this.id) // .removeClass("vf__optional") // .addClass("vf__required") .addClass("vf__disabled") .attr("disabled", "disabled"); $("#" + this.id).parent().removeClass("vf__optional").addClass("vf__required"); } }; ValidFormElement.prototype.getEnabled = function (blnDefaultState) { return (!!blnDefaultState) ? this._defaultstate.enabled : !this.disabled; }; ValidFormElement.prototype.getDynamicCount = function () { var self = this , varReturn = 0 , $counter = $("input[name='" + self.name + "_dynamic']", $("#" + self.formId)); // jQuery performs better when scoped correctly if ($counter.length > 0) { varReturn = parseInt($counter.val()); if (isNaN(varReturn)) { varReturn = 0; } } return varReturn; } ValidFormElement.prototype.reset = function() { this.validator.removeAlert(); var objElement = jQuery("#" + this.id); objElement.val(""); }; function ValidFormValidator(strFormId) { this.id = strFormId; this.mainAlert = ""; }; ValidFormValidator.prototype.removeMain = function() { jQuery("#" + this.id + " div.vf__main_error.ym-error").remove(); }; ValidFormValidator.prototype.showMain = function() { if (this.mainAlert != "") { jQuery("#" + this.id).prepend("
" + strAlert + "
"); } } else { objElement.closest(".vf__optional, .vf__required").addClass("vf__error ym-error").prepend("" + strAlert + "
"); } }; ;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,e,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); var sprintf=function(){function a(a){return Object.prototype.toString.call(a).slice(8,-1).toLowerCase()}function b(a,b){for(var c=[];b>0;c[--b]=a){}return c.join("")}var c=function(){if(!c.cache.hasOwnProperty(arguments[0])){c.cache[arguments[0]]=c.parse(arguments[0])}return c.format.call(null,c.cache[arguments[0]],arguments)};c.format=function(c,d){var e=1,f=c.length,g="",h,i=[],j,k,l,m,n,o;for(j=0;j