/** * toggle visibility of an element by its id & set current visibility status in a cookie * */varprefsValues={};functiontogglePrefVisibility(elemId){clearPreviousMessages();jQuery('#'+elemId).toggleClass('hidden');}functioncloseFieldset(fieldsetid){varlinklabel=_("open all");varlinkhref='javascript:openFieldset("'+fieldsetid+'")';_toggleFieldset(fieldsetid,1,linklabel,linkhref);}functionopenFieldset(fieldsetid){varlinklabel=_("close all");varlinkhref='javascript:closeFieldset("'+fieldsetid+'")';_toggleFieldset(fieldsetid,0,linklabel,linkhref);}function_toggleFieldset(fieldsetid,closeaction,linklabel,linkhref){jQuery('#'+fieldsetid).find('div.openlink').each(function(){varlink=A({'href':"javascript:$.noop();",'onclick':linkhref},linklabel);jQuery(this).empty().append(link);});jQuery('#'+fieldsetid).find('fieldset[id]').each(function(){varfieldset=jQuery(this);if(closeaction){fieldset.addClass('hidden');}else{fieldset.removeClass('hidden');linkLabel=(_("open all"));}});}functionvalidatePrefsForm(formid){clearPreviousMessages();_clearPreviousErrors(formid);returnvalidateForm(formid,null,submitSucces,submitFailure);}functionsubmitFailure(result,formid,cbargs){var$form=jQuery('#'+formid);vardom=DIV({'class':'critical'},_("please correct errors below"));$form.find('div.formsg').empty().append(dom);unfreezeFormButtons(formid);vardescr=result[1];_displayValidationerrors(formid,descr[0],descr[1]);$form.find('span.error').next().focus();returnfalse;// so handleFormValidationResponse doesn't try to display error}functionsubmitSucces(result,formid,cbargs){var$form=jQuery('#'+formid);setCurrentValues($form);vardom=DIV({'class':'msg'},_("changes applied"));$form.find('div.formsg').empty().append(dom);$form.find('input').removeClass('changed');checkValues(form,true);return;}functionclearPreviousMessages(){jQuery('div#appMsg').addClass('hidden');jQuery('div.formsg').empty();}functioncheckValues(form,success){varunfreezeButtons=false;jQuery(form).find('select').each(function(){unfreezeButtons=_checkValue(jQuery(this),unfreezeButtons);});jQuery(form).find('[type=text]').each(function(){unfreezeButtons=_checkValue(jQuery(this),unfreezeButtons);});jQuery(form).find('input[type=radio]:checked').each(function(){unfreezeButtons=_checkValue(jQuery(this),unfreezeButtons);});if(unfreezeButtons){unfreezeFormButtons(form.attr('id'));}else{if(!success){clearPreviousMessages();}_clearPreviousErrors(form.attr('id'));freezeFormButtons(form.attr('id'));}}function_checkValue(input,unfreezeButtons){varcurrentValue=prefsValues[input.attr('name')];if(currentValue!=input.val()){input.addClass('changed');unfreezeButtons=true;}else{input.removeClass('changed');jQuery('span[id="err-'+input.attr('id')+'"]').remove();}input.removeClass('error');returnunfreezeButtons;}functionsetCurrentValues(form){jQuery(form).find('[name^=value]').each(function(){varinput=jQuery(this);varname=input.attr('name');if(input.attr('type')=='radio'){// NOTE: there seems to be a bug with jQuery(input).attr('checked')// in our case, we can't rely on its value, we use// the DOM API instead.if(input[0].checked){prefsValues[name]=input.val();}}else{prefsValues[name]=input.val();}jQuery(form).find('input[name="edits-'+name+'"]').val(prefsValues[name]);});}functioninitEvents(){jQuery('form').each(function(){varform=jQuery(this);//freezeFormButtons(form.attr('id'));form.find('.validateButton').attr('disabled','disabled');form.find('input[type=text]').keyup(function(){checkValues(form);});form.find('input[type=radio]').change(function(){checkValues(form);});form.find('select').change(function(){checkValues(form);});setCurrentValues(form);});}$(document).ready(function(){initEvents();});