function sam_rowAdd(params){this.handleFormSuccess=function(o){params.waitPanel.hide();var result=ParseXmlRpcSuccess(o);if(result!=XMLRPC_NO_ERROR){PageAddMessage("error","Bad result sent by server");return}var data=params.callback.data(o);if(data==null){PageAddMessage("error","Unexpected result sent by server");return}params.datatable.addRow(data,0);PageAddMessage("success",sprintf("<strong>%s</strong> was added",eval("data."+params.fieldName)))};this.handleFormFailure=function(o){params.waitPanel.hide();var result=ParseXmlRpcFailure(o);if(typeof result=="string"){PageAddMessage("error",sprintf("Cannot add <strong>%s</strong>: %s",document.getElementById(params.fieldName).innerHTML,result));return}switch(result){case XMLRPC_ERROR_FORM_VALIDATION_ERROR:ProcessXmlRpcFieldErrors(o);params.dialog.show();break;case XMLRPC_ERROR_FORM_REQUEST_ERROR:case XMLRPC_ERROR_OTHER:ProcessXmlRpcMessages(o,true);break;default:PageAddMessage("error",sprintf("Cannot add <strong>%s</strong>: %s",document.getElementById(params.fieldName).value,GetXmlRpcServerError(result)));break}};this.handleFormUpload=function(o){return(GetXmlRpcType(o)=="ok"?this.success(o):this.failure(o))};var form=document.getElementById(params.dialog.id).getElementsByTagName("form")[0];form.action=params.url;FormRenderAddMode(form.id);params.dialog.setValidate(params.callback.validate);params.dialog.setCallback({success:this.handleFormSuccess,failure:this.handleFormFailure,upload:this.handleFormUpload});setText(params.dialog.oFormDialog.header,params.dialogTitle);params.dialog.show()}function sam_rowEdit(params){params.waitPanel.show();this.handleGetDataSuccess=function(o){var data=params.callback.data(o);if(data==null){params.waitPanel.hide();PageAddMessage("error","Cannot edit item: Unexcepted result sent by server");return}params.datatable.updateRow(params.row,data);params.callback.fillform(data);params.waitPanel.hide();params.dialog.show()};this.handleFormSuccess=function(o){params.waitPanel.hide();var result=ParseXmlRpcSuccess(o);if(result!=XMLRPC_NO_ERROR){PageAddMessage("error","Bad result sent by server");return}var data=params.callback.data(o);if(data==null){PageAddMessage("error","Unexpected result sent by server");return}params.datatable.updateRow(params.row,data);PageAddMessage("success",sprintf("<strong>%s</strong> was edited",eval("data."+params.fieldName)))};this.handleFormFailure=function(o){params.waitPanel.hide();var result=ParseXmlRpcFailure(o);if(typeof result=="string"){PageAddMessage("error",sprintf("Cannot edit <strong>%s</strong>: %s",document.getElementById(params.fieldName).innerHTML,result));return}switch(result){case XMLRPC_ERROR_FORM_VALIDATION_ERROR:ProcessXmlRpcFieldErrors(o);params.dialog.show();break;case XMLRPC_ERROR_FORM_REQUEST_ERROR:case XMLRPC_ERROR_OTHER:ProcessXmlRpcMessages(o,true);break;default:PageAddMessage("error",sprintf("Cannot edit <strong>%s</strong>: %s",document.getElementById(params.fieldName).value,GetXmlRpcServerError(result)));break}};this.handleFormUpload=function(o){return(GetXmlRpcType(o)=="ok"?this.success(o):this.failure(o))};var form=document.getElementById(params.dialog.id).getElementsByTagName("form")[0];form.action=params.url;FormRenderEditMode(form.id);params.dialog.setValidate(params.callback.validate);params.dialog.setCallback({success:this.handleFormSuccess,failure:this.handleFormFailure,upload:this.handleFormUpload});setText(params.dialog.oFormDialog.header,params.dialogTitle);sam_getData({datatable:params.datatable,row:params.row,url:params.urlGet,callback:{success:this.handleGetDataSuccess},waitPanel:params.waitPanel,fieldId:params.fieldId,fieldName:params.fieldName})}function sam_getData(d){var b=d.datatable.getRecord(d.row);var a=d.fieldId+"="+b.getData(d.fieldId);var e={success:function(f){d.callback.success(f)},failure:function(g){d.waitPanel.hide();var f=ParseXmlRpcFailure(g);if(typeof f=="string"){PageAddMessage("error",sprintf("Cannot retrieve <strong>%s</strong> data: %s",b.getData(d.fieldName),f));return}switch(f){case XMLRPC_ERROR_FORM_VALIDATION_ERROR:ProcessXmlRpcFieldErrors(g);d.dialog.show();break;case XMLRPC_ERROR_FORM_REQUEST_ERROR:case XMLRPC_ERROR_OTHER:ProcessXmlRpcMessages(g,true);break;default:PageAddMessage("error",sprintf("Cannot retrieve <strong>%s</strong> data: %s",b.getData(d.fieldName),GetXmlRpcServerError(f)));break}}};var c=YAHOO.util.Connect.asyncRequest("POST",d.url,e,a)}function sam_rowDelete(g){var e=g.datatable.getRecord(g.row);var f=e.getData();var b=g.datatable.getRecordIndex(g.row);var d=function(){this.hide();g.datatable.deleteRow(g.row);var h=g.fieldId+"="+e.getData(g.fieldId);var j={success:function(k){PageAddMessage("success",sprintf("<strong>%s</strong> was deleted",e.getData(g.fieldName)))},failure:function(l){g.datatable.addRow(f,b);var k=ParseXmlRpcFailure(l);if(typeof k=="string"){PageAddMessage("error",sprintf("Cannot delete <strong>%s</strong>: %s",e.getData(g.fieldName),k));return}switch(k){case XMLRPC_ERROR_FORM_REQUEST_ERROR:case XMLRPC_ERROR_OTHER:ProcessXmlRpcMessages(l,true);break;default:PageAddMessage("error",sprintf("Cannot delete <strong>%s</strong>: %s",e.getData(g.fieldName),GetXmlRpcServerError(k)));break}}};var i=YAHOO.util.Connect.asyncRequest("POST",g.url,j,h)};var a=function(){this.hide()};var c=new samConfirmDialog({dialog_id:"confirm_dialog1",container:"container",handler:{yes:d,no:a},title:"Please confirm the deletion",text:"Are you sure you want to delete <strong>"+e.getData(g.fieldName)+"</strong> ?",default_button:"no",icon:YAHOO.widget.SimpleDialog.ICON_HELP});c.show()}function sam_rowSetDisabled(f){var b=f.datatable.getRecord(f.row);var d=b.getData();var c=(f.disabled?1:0);if(d.disabled==c){return}d.disabled=c;f.datatable.updateRow(f.row,d);var a=f.fieldId+"="+b.getData(f.fieldId)+"&disabled="+c;var g={success:function(h){PageAddMessage("success",sprintf((f.disabled?"<strong>%s</strong> was disabled":"<strong>%s</strong> was enabled"),b.getData(f.fieldName)))},failure:function(i){d.disabled=(f.disabled?0:1);f.datatable.updateRow(f.row,d);var h=ParseXmlRpcFailure(i);if(typeof h=="string"){PageAddMessage("error",sprintf((f.disabled?"Cannot disable <strong>%s</strong>: %s":"Cannot enable <strong>%s</strong>: %s"),b.getData(f.fieldName),h));return}switch(h){case XMLRPC_ERROR_FORM_REQUEST_ERROR:case XMLRPC_ERROR_OTHER:ProcessXmlRpcMessages(i,true);break;default:PageAddMessage("error",sprintf((f.disabled?"Cannot disable <strong>%s</strong>: %s":"Cannot enable <strong>%s</strong>: %s"),b.getData(f.fieldName),GetXmlRpcServerError(h)));break}}};var e=YAHOO.util.Connect.asyncRequest("POST",f.url,g,a)}function ParseXmlRpcSuccess(b){var a=null;if(b.responseXML!=null){if(b.responseXML.documentElement.tagName=="result"){a=parseInt(getText(b.responseXML.getElementsByTagName("code")[0]))}}return a}function ParseXmlRpcFailure(b){var a=null;if(b.responseXML!=null){if(b.responseXML.documentElement.tagName=="result"){a=parseInt(getText(b.responseXML.getElementsByTagName("code")[0]))}}if(a==null||(b.status!=400&&b.status!=undefined)||a==400){return GetXmlRpcStatusError(b.status)}return a}function ProcessXmlRpcFieldErrors(d){try{var b=d.responseXML.getElementsByTagName("field");for(var a=0;a<b.length;a++){FormSetError(b[a].getAttribute("id"),GetXmlRpcServerFieldError(parseInt(getText(b[a]))))}}catch(c){}}function ProcessXmlRpcMessages(e,a){try{var c=e.responseXML.getElementsByTagName("message");for(var b=0;b<c.length;b++){PageAddMessage(c[b].getAttribute("type"),GetXmlRpcServerMessage(parseInt(getText(c[b]))),(a==true))}}catch(d){}}function GetXmlRpcType(b){var a=null;if(b.responseXML!=null){if(b.responseXML.documentElement.tagName=="result"){a=getText(b.responseXML.getElementsByTagName("type")[0])}}return a}var XMLRPC_NO_ERROR=0;var XMLRPC_ERROR_TEST=1000;var XMLRPC_ERROR_FORM_VALIDATION_ERROR=1150;var XMLRPC_ERROR_FORM_REQUEST_ERROR=1151;var XMLRPC_ERROR_DATABASE_ITEM_NOT_FOUND=1210;var XMLRPC_ERROR_DATABASE_QUERY_ERROR=1211;var XMLRPC_ERROR_OTHER=1298;var XMLRPC_ERROR_UNKNOWN=1299;function GetXmlRpcServerError(a){switch(a){case XMLRPC_ERROR_TEST:return"Test error";case XMLRPC_ERROR_FORM_VALIDATION_ERROR:return"Validation error";case XMLRPC_ERROR_FORM_REQUEST_ERROR:return"Request to server error";case XMLRPC_ERROR_DATABASE_ITEM_NOT_FOUND:return"Not found in database";case XMLRPC_ERROR_DATABASE_QUERY_ERROR:return"Database query error";case XMLRPC_ERROR_OTHER:return"Unspecified error";case XMLRPC_ERROR_UNKNOWN:return"Unknown error";default:return sprintf('Unhandled <acronym title="Extensible Markup Language">XML</acronym>-<acronym title="Remote Procedure Call">RPC</acronym> failure error (code %s)',a)}}function GetXmlRpcServerFieldError(a){switch(a){case 3000:return"This is an erroneous field (TESTING)";case 3100:return"Incomplete field";case 3101:return"Undefined field";case 3110:return"Invalid field";case 3111:return"Invalid date";case 3112:return"Invalid time";case 3113:return"Invalid e-mail address";case 3180:return"Invalid file type";case 3181:return"Invalid file size";case 3182:return"File size exceeded upload limit";case 3190:return"Invalid image dimension";case 3700:return"This username is already used";case 3701:return"This date is already used";case 3702:return"This e-mail address is already used";case 3703:return"This URL is already used";case 3704:return"This URL is already used at this date";case 3900:return"Invalid username or password";case 3901:return"User is deactivated";case 3902:return"User is banned";case 3910:return"Password check failed";case 3911:return"Password don't match confirmation";case 3912:return"Password is too short";case 3913:return"Password is too weak";case 3914:return"Password is too common or too easy to guess";case 3915:return"Username is part of the password";case 3998:return"Unspecified error";case 3999:return"Unknown error";default:return sprintf("Unhandled field error sent by server (code %s)",a)}}function GetXmlRpcServerMessage(a){switch(a){case 2000:return"This is a server message (TESTING)";case 2280:return"Cannot edit root administrator";case 2281:return"Cannot delete root administrator";case 2300:return"Upload limit exceed";case 2520:return"Cannot create directory";case 2530:return"Cannot extract archive";case 2970:return"There is no photos";default:return sprintf("Unhandled message sent by server (code %s)",a)}}function GetXmlRpcStatusError(a){switch(a){case 0:return"No response returned from the server";case 400:return'Error while communicating to the server: Bad request sent to <acronym title="Extensible Markup Language">XML</acronym>-<acronym title="Remote Procedure Call">RPC</acronym> page (error 400)';case 403:return"You are not allowed to request this from the server";case 404:return'Error while communicating to the server: <acronym title="Extensible Markup Language">XML</acronym>-<acronym title="Remote Procedure Call">RPC</acronym> page not found (error 404)';case 410:return'Error while communicating to the server: <acronym title="Extensible Markup Language">XML</acronym>-<acronym title="Remote Procedure Call">RPC</acronym> page not found (error 410)';case 500:return"Error while communicating to the server: An internal error occured on the server (error 500)";case 503:return"Error while communicating to the server: Temporary overloading or maintenance downtime (error 503)";default:return sprintf("Error while communicating to the server: Unhandled error (error %s)",a)}};