jQuery.fn.editInPlace=function(options){var settings={url:"",editfieldclass:"editme",buttonclass:"buttons",hidden_param:"",server_duplicate:"",server_duplicate_msg:"Duplicate name not allowed",update_alt_tag:null,params:"",field_type:"text",select_options:"",textarea_cols:"25",textarea_rows:"10",textfield_size:"10",textfield_maxlength:"30",bg_over:"#ffc",bg_out:"transparent",bg_class_over:"",bg_class_out:"",saving_text:"Saving...",saving_image:"",default_text:"(Click here to add text)",select_text:"Choose new value",value_required:null,element_id:"element_id",update_value:"update_value",original_html:"original_html",save_button:"",save_button_container:"inplace_save_container",cancel_button:"",cancel_button_container:"inplace_cancel_container",callback:null,success:null,error:function(request){alert("Failed to save value: "+request.responseText||'Unspecified Error')}};if(options){jQuery.extend(settings,options)}if(settings.saving_image!=""){var loading_image=new Image();loading_image.src=settings.saving_image}String.prototype.trim=function(){return this.replace(/^\s+/,'').replace(/\s+$/,'')};String.prototype.escape_html=function(){return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")};return this.each(function(){if(jQuery(this).find("."+settings.editfieldclass).html()=="")jQuery(this).find("."+settings.editfieldclass).html(settings.default_text);var editing=false;var original_element=jQuery(this);var click_count=0;jQuery(this).mouseover(function(){if(settings.bg_class_over==""){jQuery(this).find("."+settings.editfieldclass).css("background",settings.bg_over)}else{jQuery(this).find("."+settings.editfieldclass).removeClass(settings.bg_class_out).addClass(settings.bg_class_over)}}).mouseout(function(){if(settings.bg_class_out==""){jQuery(this).find("."+settings.editfieldclass).css("background",settings.bg_out)}else{jQuery(this).find("."+settings.editfieldclass).removeClass(settings.bg_class_over).addClass(settings.bg_class_out)}}).click(function(){click_count++;if(!editing){editing=true;var original_html=jQuery(this).html();var original_edit_html=jQuery(this).find("."+settings.editfieldclass).html();var save_button_code=cancel_button_code="";if(settings.save_button==""){save_button_code='<input type="button" class="inplace_save" value="Save"/>'}else{save_button_code='<input type="image" src="'+settings.save_button+'" class="inplace_save" value="Save"/>'}if(settings.cancel_button==""){cancel_button_code='<input type="button" class="inplace_cancel" value="Cancel"/>'}else{cancel_button_code='<input type="image" src="'+settings.cancel_button+'" class="inplace_cancel" value="Cancel"/>'}if(original_edit_html==settings.default_text)jQuery(this).find("."+settings.editfieldclass).html('');if(settings.field_type=="textarea"){var use_field_type='<textarea class="inplace_value" name="inplace_value" rows="'+settings.textarea_rows+'" cols="'+settings.textarea_cols+'">'+jQuery(this).find("."+settings.editfieldclass).text().trim().escape_html()+'</textarea>'}else if(settings.field_type=="text"){var use_field_type='<input size="'+settings.textfield_size+'" type="text" class="inplace_value" name="inplace_value" value="'+jQuery(this).find("."+settings.editfieldclass).text().trim().escape_html()+'" />'}else if(settings.field_type=="select"){var optionsArray=settings.select_options.split(',');var use_field_type='<select class="inplace_value" name="inplace_value"><option value="">'+settings.select_text+'</option>';for(var i=0;i<optionsArray.length;i++){var optionsValuesArray=optionsArray[i].split(':');var use_value=optionsValuesArray[1]||optionsValuesArray[0];var selected=use_value==original_edit_html?'selected="selected" ':'';use_field_type+='<option '+selected+'value="'+use_value.trim().escape_html()+'">'+optionsValuesArray[0].trim().escape_html()+'</option>'}use_field_type+='</select>'}jQuery(this).find("."+settings.editfieldclass).html(use_field_type);if(jQuery(this).find("."+settings.buttonclass+" ."+settings.save_button_container).size()==0){jQuery(this).find("."+settings.buttonclass).append('<span class="'+settings.save_button_container+'"></span>')}if(jQuery(this).find("."+settings.buttonclass+" ."+settings.cancel_button_container).size()==0){jQuery(this).find("."+settings.buttonclass).append('<span class="'+settings.cancel_button_container+'"></span>')}jQuery(this).find("."+settings.buttonclass+" ."+settings.save_button_container).html(save_button_code);jQuery(this).find("."+settings.buttonclass+" ."+settings.cancel_button_container).html(cancel_button_code)}if(click_count==1){original_element.find(".inplace_cancel").click(function(){editing=false;click_count=0;original_element.html(original_html);if(settings.bg_class_out==""){original_element.find("."+settings.editfieldclass).css("background",settings.bg_out)}else{original_element.find("."+settings.editfieldclass).removeClass(settings.bg_class_over).addClass(settings.bg_class_out)}return false});original_element.find(".inplace_save").click(function(){if(settings.bg_class_out==""){original_element.find("."+settings.editfieldclass).css("background",settings.bg_out)}else{original_element.find("."+settings.editfieldclass).removeClass(settings.bg_class_over).addClass(settings.bg_class_out)}var new_html=original_element.find(".inplace_value").val();if(settings.saving_image!=""){var saving_message='<img src="'+settings.saving_image+'" alt="Saving..." />'}else{var saving_message=settings.saving_text}original_element.find("."+settings.editfieldclass).html(saving_message);original_element.find("."+settings.buttonclass+" ."+settings.save_button_container).html("");original_element.find("."+settings.buttonclass+" ."+settings.cancel_button_container).html("");if(settings.params!=""){settings.params="&"+settings.params}var hiddenParams="";if(settings.hidden_param!=""){if(original_element.find("."+settings.hidden_param).val()!=""){hiddenParams+="&"+original_element.find("."+settings.hidden_param).val()}}if(settings.callback){html=settings.callback(original_element.attr("id"),new_html,original_edit_html,settings.params);editing=false;click_count=0;if(html){original_element.html(html||new_html)}else{alert("Failed to save value: "+new_html);original_element.html(original_html)}}else if(settings.value_required&&new_html==""){editing=false;click_count=0;original_element.html(original_html);alert("Error: You must enter a value to save this field")}else{jQuery.ajax({url:settings.url,type:"POST",data:settings.update_value+'='+new_html+'&'+settings.element_id+'='+original_element.attr("id")+settings.params+'&'+settings.original_html+'='+original_edit_html+hiddenParams,dataType:"html",complete:function(request){editing=false;click_count=0},success:function(html){var new_text=html||settings.default_text;if(settings.server_duplicate!=""&&new_text==settings.server_duplicate){original_element.html(original_html);alert(settings.server_duplicate_msg)}else{original_element.find("."+settings.editfieldclass).html(new_text);if(settings.update_alt_tag&&settings.update_alt_tag==true){original_element.find("."+settings.editfieldclass).attr({alt:new_text,title:new_text})}if(settings.success)settings.success(html,original_element)}},error:function(request){original_element.html(original_html);if(settings.error)settings.error(request,original_element)}})}return false})}})})};