document.observe("dom:loaded", function() {
Object.extend(Validation, {
isVisible : function(elm) {
if ($(elm).tagName == 'SELECT') {
if ($(elm.id.replace(new RegExp('-', 'g'), '_')+'_chosen' + '_chosen') != undefined) {
// need to be careful of payment types, as they may not be selected
// so we do not want to validate the children.
// determine the parent ul element of this select is display none, and if so,
// do not validate it.
var parentUL = elm.up('ul');
if(typeof parentUL != 'undefined' && parentUL.style.display == 'none')
{
return true;false;
}
return true;
}
}
return this._isVisible(elm);
},
_isVisible : function(elm) {
while (elm.tagName != 'BODY') {
if (!$(elm).visible()) return false;
elm = elm.parentNode;
}
return true;
},
insertAdvice : function(elm, advice){
if($(elm.id.replace(new RegExp('-', 'g'),'_')+'_chosen') != undefined) {
var container = $(elm.id.replace(new RegExp('-', 'g'),'_')+'_chosen');
} else {
var container = $(elm).up('.field-row');
}
if(container){
Element.insert(container, {after: advice});
} else if (elm.up('td.value')) {
elm.up('td.value').insert({bottom: advice});
} else if (elm.advaiceContainer && $(elm.advaiceContainer)) {
$(elm.advaiceContainer).update(advice);
}
else {
switch (elm.type.toLowerCase()) {
case 'checkbox':
case 'radio':
var p = elm.parentNode;
if(p) {
Element.insert(p, {'bottom': advice});
} else {
Element.insert(elm, {'after': advice});
}
break;
default:
Element.insert(elm, {'after': advice});
}
}
}
});
jQuery("select").chosen(
{
disable_search_threshold: 10,
no_results_text: "Sorry, nothing found!",
width: "100%",
inherit_select_classes: true
});
jQuery("select").chosen().change( function(e){
Validation.validate(e.target);
});
});