/* toggle visibility of an element by its id * & set current visibility status in a cookie * XXX whenever used outside of preferences, don't forget to * move me in a more appropriate place */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(formid){varform=jQuery('#'+formid);vardom=DIV({'class':'critical'},_("please correct errors below"));jQuery(form).find('div.formsg').empty().append(dom);// clearPreviousMessages()jQuery(form).find('span.error').next().focus();}functionsubmitSucces(url,formid){varform=jQuery('#'+formid);setCurrentValues(form);vardom=DIV({'class':'msg'},_("changes applied"));jQuery(form).find('div.formsg').empty().append(dom);jQuery(form).find('input').removeClass('changed');checkValues(form,true);return;}functionclearPreviousMessages(){jQuery('div#appMsg').addClass('hidden');jQuery('div.formsg').empty();}functionclearPreviousErrors(formid){jQuery('#err-value:'+formid).remove();}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('input.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();});