function refresh_new_app(){$get("0_Name").value="";$get("0_Description").value="";$get("0_isPublic").checked=false;$get("0_isPublicRow").style.visibility="visible";$get("new_app_0_refreshIcon").className="edit-refresh";$get("0_Name").focus();$get("0_Name").focus();populatePopupComplete("new_app_0")}function new_app(context){app={};app.name=$get("0_Name").value;app.description=$get("0_Description").value;var isPublic=$get("0_isPublic").checked;CloudDB.Web.Services.CDBridge.SaveApplication(token,app,save_app_complete,showError,"new_"+context+"_"+isPublic.toString())}function save_app_complete(resp,context){if(resp.Outcome.Succeeded){refreshApps();var action=parseContext(context)[0],panelID=new String;if(action=="edit")panelID="edit_app_"+resp.Result.id;else{var addEveryone=parseContext(context)[2];addEveryone=="true"&&CloudDB.Web.Services.CDBridge.ChangePermission(token,0,resp.Result.id,3,0,0,0,AddEveryoneRoleToNewApp,showError,context);$get("0_isPublicRow").style.visibility="hidden";panelID="new_app_0"}populatePopupComplete(panelID);hidePopup(panelID);action=="new"&&parseContext(context)[1]=="withPopup"&&createPopup("new_entity_"+resp.Result.id,500,resp.Result.id,resp.Result.name.cleanTitle())}else showError(resp.Outcome.Message)}function AddEveryoneRoleToNewApp(resp){!resp.Succeeded&&alert(resp.Message)}function refresh_edit_app(appID){$get("edit_app_"+appID+"_refreshIcon").className="edit-refresh-spinning";var nameTB=$get(appID+"_Name");nameTB&&nameTB.focus();CloudDB.Web.Services.CDBridge.GetApplicationByID(token,appID,false,false,refresh_app_complete,showError)}function refresh_app_complete(resp){$get(resp.Result.id+"_Name").value=resp.Result.name;$get(resp.Result.id+"_Description").value=resp.Result.description;$get("edit_app_"+resp.Result.id+"_refreshIcon").className="edit-refresh";populatePopupComplete("edit_app_"+resp.Result.id)}function edit_app(appID){app={};app.id=appID;app.name=$get(appID+"_Name").value;app.description=$get(appID+"_Description").value;var isPublic=false;CloudDB.Web.Services.CDBridge.SaveApplication(token,app,save_app_complete,showError,"edit")}function refresh_copy_app(appID){$get("copy_app_"+appID+"_refreshIcon").className="edit-refresh";var nameTB=$get(appID+"_NewName");if(nameTB){$get(appID+"_NewDescription").value="";$get(appID+"_IncludeData").checked=false;nameTB.value="";nameTB.focus()}}function copy_app(appID){$get("copy_app_"+appID+"_refreshIcon").className="edit-refresh-spinning";app={};app.id=appID;var name=$get(appID+"_NewName").value,description=$get(appID+"_NewDescription").value,includeData=$get(appID+"_IncludeData").checked,context={};context.appID=appID;var button=$get("copy_app_"+appID+"_button");if(button!=null){button.disabled=true;button.value="Copying . . .";context.button=button}CloudDB.Web.Services.CDBridge.CopyApplication(token,app,name,description,includeData,false,copy_app_complete,showError,context)}function copy_app_complete(resp,context){$get("copy_app_"+context.appID+"_refreshIcon").className="edit-refresh";if(resp.Outcome.Succeeded){hidePopup("copy_app_"+context.appID);refreshApps()}if(context.button){context.button.value="Copy App";context.button.disabled=false}}function refresh_transfer_app(appID){$get("transfer_app_"+appID+"_refreshIcon").className="edit-refresh";var emailTB=$get(appID+"_RecipientsEmail");if(emailTB){emailTB.value="";emailTB.focus()}}function transfer_app(appID){$get("transfer_app_"+appID+"_refreshIcon").className="edit-refresh-spinning";var context={};context.appID=appID;var button=$get("transfer_app_"+appID+"_button");if(button!=null){button.disabled=true;button.value="Transferring . . .";context.button=button}var email=null,emailTB=$get(appID+"_RecipientsEmail");if(emailTB!=null)email=emailTB.value;if(email==null)alert("Please enter an email address");else CloudDB.Web.Services.CDBridge.GetUserByEmail(email,false,getuserfortransfer_app_complete,showError,context)}function getuserfortransfer_app_complete(resp,context){if(resp.Outcome.Succeeded){var app={};app.id=context.appID;CloudDB.Web.Services.CDBridge.TransferApplicationOwnership(token,app,resp.Result.ID,resp.Result.Email,transfer_app_complete,showError,context)}else alert(resp.Outcome.Message);if(context.button){context.button.value="Transfer";context.button.disabled=false}}function transfer_app_complete(resp,context){$get("transfer_app_"+context.appID+"_refreshIcon").className="edit-refresh";if(resp.Succeeded){hidePopup("transfer_app_"+context.appID);refreshApps()}}function refresh_delete_app(appID){var SM=$get("delete_app_"+appID+"_SM");if(SM!=null){SM.innerHTML="<div style='padding:10px; color:red;'>Are you sure?</div>";SM.style.height="50px"}}function delete_app(appID){CloudDB.Web.Services.CDBridge.DeleteApplication(token,{id:appID},delete_app_complete,showError,appID)}function delete_app_complete(resp,context){if(resp.Succeeded){hidePopup("delete_app_"+context);hideDependantPopups("app",context);refreshApps()}else showError(resp.Message)}function refresh_new_entity(appID){$get("new_entity_"+appID+"_refreshIcon").className="edit-refresh-spinning";$get(appID+"_ColumnsHeader").style.display="none";$get(appID+"_EntAliasRow").style.visibility="hidden";$get(appID+"_Columns").style.display="none";$get(appID+"_EntName").value="";$get(appID+"_EntName").focus();$get(appID+"_EntName").focus();$get(appID+"_EntDescription").value="";$get("new_entity_"+appID+"_refreshIcon").className="edit-refresh";populatePopupComplete("new_entity_"+appID)}function new_entity(appID,withPopup){var ent={};ent.name=$get(appID+"_EntName").value;ent.description=$get(appID+"_EntDescription").value;var context={appID:appID,withPopup:withPopup};CloudDB.Web.Services.CDBridge.SaveEntity(token,{id:appID},ent,save_new_entity_complete,showError,context)}function save_new_entity_complete(resp,context){if(resp.Outcome.Succeeded){popupID="new_entity_"+context.appID;populatePopupComplete(popupID);hidePopup(popupID);populateEntityList(context.appID);if(context.withPopup=="cols")createPopup("edit_entity_"+resp.Result.id,400,context.appID,"Add Columns");else context.withPopup=="ent"&&createPopup(popupID,400,context.appID,"Add Columns")}else showError(resp.Outcome.Message)}function refresh_edit_entity(entID,appID,aliasOnly){$get("edit_entity_"+entID+"_refreshIcon").className="edit-refresh-spinning";var app={};app.id=appID;var context={appID:appID,entID:entID,aliasOnly:aliasOnly};CloudDB.Web.Services.CDBridge.GetEntityByID(token,app,entID,false,get_entity_complete,showError,context)}function get_entity_complete(resp,context){if(context.aliasOnly!=true){$get(context.entID+"_EntName").value=resp.Result.name;$get(context.entID+"_EntDescription").value=resp.Result.description;var headerHTML="<div id=\"{0}_NewColumn\" class=\"newEntity\" onclick=\"createPopup('new_column_{0}', 450, '{1}_{0}', 'In "+resp.Result.name.cleanTitle()+"')\">New</div>";$get(context.entID+"_ColumnsHeader").innerHTML+=String.format(headerHTML,context.entID,context.appID);var columnsHTML="<li><div id='{0}_noColumns' class=\"appLinks\" onClick=\"createPopup('new_column_{0}', 450, '{1}_{0}', 'In "+resp.Result.name.cleanTitle()+"')\">Loading columns... Click to add a column.</div></li>";$get(context.entID+"_Columns").innerHTML=String.format(columnsHTML,context.entID,context.appID);populateColList(context.appID,context.entID)}$get(context.entID+"_EntAlias").value=resp.Result.Alias;populatePopupComplete("edit_entity_"+context.entID)}function edit_entity(context){var contextParts=parseContext(context),ent={};ent.id=contextParts[0];ent.name=$get(ent.id+"_EntName").value;ent.description=$get(ent.id+"_EntDescription").value;var newAlias=$get(ent.id+"_EntAlias").value;if(ent.name=="")alert("The entity name must be specified.");else if(newAlias=="")alert("The alias cannont be blank. Please enter field names surrounded by percent signs. ex: %LName%, %FName%");else{ent.Alias=newAlias;CloudDB.Web.Services.CDBridge.SaveEntity(token,{id:contextParts[1]},ent,save_entity_complete,showError,contextParts[1])}}function save_entity_complete(resp,appID){if(resp.Outcome.Succeeded){popupID="edit_entity_"+resp.Result.id;populatePopupComplete(popupID);hidePopup(popupID);populateEntityList(appID)}else showError(resp.Outcome.Message)}function refresh_delete_entity(entID){var deleteSM=$get("delete_entity_"+entID+"_SM");deleteSM.innerHTML="<div style='padding:10px; color:red;'>Are you sure?</div>";deleteSM.style.height="50px"}function delete_entity(appID,entID){var context={appID:appID,entID:entID};CloudDB.Web.Services.CDBridge.DeleteEntity(token,{id:appID},{id:entID},delete_entity_complete,showError,context)}function delete_entity_complete(resp,context){if(resp.Succeeded){hidePopup("delete_entity_"+context.entID);hideDependantPopups("entity"+context.entID);populateEntityList(context.appID)}else showError(resp.Message)}function refresh_new_column(entID,context){context={appID:parseContext(context)[0],entID:entID,action:"new"};CloudDB.Web.Services.Internal.GetColumnKinds(false,get_column_kinds_complete,showError,context);$get(entID+"_ColName").disabled=false;$get(entID+"_ColDescription").disabled=false;$get(entID+"_ColName").value="";$get(entID+"_ColDescription").value="";$get(entID+"_ColName").focus();$get(entID+"_ColName").focus();populatePopupComplete("new_column_"+entID)}function new_column(context){var contextParts=parseContext(context),newColName=$get(contextParts[1]+"_ColName").value;if(newColName){var ent={};ent.id=contextParts[1];ent.appID=contextParts[0];var col={};col.name=$get(contextParts[1]+"_ColName").value;col.description=$get(contextParts[1]+"_ColDescription").value;var colKind=$get(contextParts[1]+"_ColKind").value,context={appID:contextParts[0],entID:contextParts[1]};if(colKind.charAt(0)=="e"){var rel={},primaryEntity={};primaryEntity.appID=contextParts[0];primaryEntity.id=eval(colKind.split("_")[1]);rel.foreignEntity=ent;rel.primaryEntity=primaryEntity;rel.fk=col;CloudDB.Web.Services.CDBridge.AddRelationship(token,rel,save_new_column_complete,showError,context)}else{col.kind=colKind;CloudDB.Web.Services.CDBridge.SaveColumn(token,{id:contextParts[0]},ent,col,save_new_column_complete,showError,context)}}else alert("Please enter a column name.")}function save_new_column_complete(resp,context){if(resp.Outcome.Succeeded){populatePopupComplete("new_column_"+context.entID);hidePopup("new_column_"+context.entID);focusPopup("edit_entity_"+context.entID);populateColList(context.appID,context.entID,true)}else showError(resp.Outcome.Message)}function refresh_edit_column(colID,context){$get("edit_column_"+colID+"_refreshIcon").className="edit-refresh-spinning";var contextParts=parseContext(context),context={appID:contextParts[0],entID:contextParts[1]};CloudDB.Web.Services.CDBridge.GetColumnByID(token,{id:contextParts[0]},{id:contextParts[1]},colID,get_column_complete,showError,context)}function get_column_complete(resp,context){$get(resp.Result.id+"_ColName").disabled=false;$get(resp.Result.id+"_ColDescription").disabled=false;$get(resp.Result.id+"_ColName").focus();$get(resp.Result.id+"_ColName").value=resp.Result.name;$get(resp.Result.id+"_ColDescription").value=resp.Result.description;context.context=resp.Result;context.action="edit";CloudDB.Web.Services.Internal.GetColumnKinds(false,get_column_kinds_complete,showError,context)}function edit_column(appID,entID,colID){var col={};col.name=$get(colID+"_ColName").value;col.description=$get(colID+"_ColDescription").value;col.kind=$get(colID+"_ColKind").value;if(col.kind.charAt(0)=="e"&&col.kind.charAt(1)=="n")col.kind="foreignKey";col.id=colID;var context={appID:appID,entID:entID,colID:colID};if(col.name=="")alert("The column name must be specified.");else CloudDB.Web.Services.CDBridge.SaveColumn(token,{id:appID},{id:entID},col,save_column_complete,showError,context)}function save_column_complete(resp,context){if(resp.Outcome.Succeeded){populatePopupComplete("edit_column_"+context.colID);hidePopup("edit_column_"+context.colID);focusPopup("edit_entity_"+context.entID);populateColList(context.appID,context.entID)}else showError(resp.Outcome.Message)}function get_column_kinds_complete(resp,context){if(context.action=="edit")context.contextID=context.context.id;else if(context.action=="new")context.contextID=context.entID;var ddlKind=$get(context.contextID+"_ColKind");ddlKind.options.length=0;for(k in resp)if(resp[k].id!=64)ddlKind.options[k]=new Option(resp[k].name,resp[k].id);ddlKind.disabled=false;CloudDB.Web.Services.CDBridge.GetEntities(token,{id:context.appID},get_entity_list,showError,context)}function get_entity_list(resp,context){var ddlKind=$get(context.contextID+"_ColKind");for(i in resp.Results)if(resp.Results[i].id!=context.entID)ddlKind.options[ddlKind.options.length]=new Option(resp.Results[i].name,"entity_"+resp.Results[i].id);if(context.action=="edit"){if(context.context.kind<64)ddlKind.value=context.context.kind;else ddlKind.value="entity_"+context.context.foreignKeyEntityID;ddlKind.disabled=true;$get("edit_column_"+context.context.id+"_refreshIcon").className="edit-refresh"}else $get("new_column_"+context.entID+"_refreshIcon").className="edit-refresh";populatePopupComplete(context.action+"_column_"+context.contextID)}function refresh_delete_column(colID){var deleteSM=$get("delete_column_"+colID+"_SM");deleteSM.innerHTML="<div style='padding:10px; color:red;'>Are you sure?</div>";deleteSM.style.height="50px"}function delete_column(appID,entID,colID){var context={appID:appID,entID:entID,colID:colID};CloudDB.Web.Services.CDBridge.DeleteColumn(token,{id:appID},{id:entID},{id:colID},delete_column_complete,showError,context)}function delete_column_complete(resp,context){if(resp.Succeeded){hidePopup("delete_column_"+context.colID);focusPopup("edit_entity_"+context.entID);populateColList(context.appID,context.entID);hideDependantPopups("column",context.colID)}else showError(resp.Message)}function refresh_new_row(entID,context){var x=0,arr=eval("FormInfo_0x"+entID),currControl,isElementEnabled=false;while(!isElementEnabled&&x<arr.length){currControl=$get(arr[x].InputName);isElementEnabled=!currControl.disabled;x++}currControl&&currControl.disabled!=true&&currControl.focus();populatePopupComplete(String.format("new_row_{0}",entID))}function refresh_edit_row(rowAndEnt){populatePopupComplete("edit_row_"+rowAndEnt)}function refresh_delete_row(rowAndEnt){var deleteSM=$get("delete_row_"+rowAndEnt+"_SM");if(deleteSM!=null){deleteSM.innerHTML="<div style='padding:10px; color:red;'>Are you sure?</div>";deleteSM.style.height="50px"}}function remove_row(rowID,entID,appID){var context={appID:appID,entID:entID,rowID:rowID};CloudDB.Web.Services.CDBridge.DeleteRow(token,{id:appID},{id:entID},rowID,remove_row_complete,showError,context)}function remove_row_complete(resp,context){if(resp.Succeeded){populatePopup("view_entity_"+context.entID,context.appID+"_"+context.entID);hidePopup("delete_row_"+context.rowID+"x"+context.entID)}else showError(resp.Message)}function refresh_edit_webservices(appID){$get("edit_webservices_"+appID+"_refreshIcon").className="edit-refresh-spinning";$get(appID+"WebServiceName").focus();populateServicesList(null,appID)}function populateServicesList(resp,context){if(resp){e={};if(resp.Outcome){if(resp.Outcome.Succeeded==false){e._message=resp.Outcome.Message;showError(e)}}else{hidePopup("delete_webservices_"+context);context=context.split("x")[1];if(resp.Succeeded==false){e._message=resp.Message;showError(e)}}}CloudDB.Web.Services.CDBridge.GetApplicationServices(token,{id:context},get_application_services_complete,showError,context)}function get_application_services_complete(resp,appID){if(resp.Outcome.Succeeded){var servicesList=new String;if(resp.Results.length>0)for(i in resp.Results)servicesList+=String.format(servicesListMask,resp.Results[i].iteration,resp.Results[i].iterationName,resp.Results[i].url,appID);else servicesList="<li><div id='"+appID+'_noColumns\' class="appLinks">No Web Service Instances Defined</div></li>';$get(appID+"ServicesList").innerHTML=servicesList;sizePanelToScreen("edit_webservices_"+appID);$get("edit_webservices_"+appID+"_refreshIcon").className="edit-refresh"}else{alert(resp.Outcome.Message);hidePopup("edit_webservices_"+appID)}}function refresh_delete_webservices(context){var deleteSM=$get("delete_webservices_"+context+"_SM");deleteSM.innerHTML="<div style='padding:10px; color:red;'>Are you sure?</div>";deleteSM.style.height="50px"}function delete_webservices(context){var contextItems=context.split("x");CloudDB.Web.Services.CDBridge.DeleteApplicationService(token,{id:contextItems[1]},{iteration:contextItems[0]},populateServicesList,showError,context)}function new_webservices(appID){var serviceName=$get(appID+"WebServiceName").value;CloudDB.Web.Services.CDBridge.CreateApplicationServices(token,serviceName,{id:appID},populateServicesList,showError,appID)}function refresh_edit_import(appID){$get("edit_import_"+appID+"_refreshIcon").className="edit-refresh";if(!$get(appID+"_server").disabled){$get(appID+"_server").focus();$get(appID+"_server").focus()}}function edit_import(appID){$get("edit_import_"+appID+"_refreshIcon").className="edit-refresh-spinning";var importButton=$get("ImportButton_"+appID);importButton.value="Importing . . .";importButton.disabled=true;var tablesToImport=[],allTables=getTablesList(appID);for(t in allTables){allTables[t].ColumnNames=null;if($get("importTable_"+t+"_"+appID).checked){var importData=$get("importData_"+t+"_"+appID);if(importData)allTables[t].includeData=importData.checked;else allTables[t].includeData=false;tablesToImport.push(allTables[t])}}var svrTB=$get(appID+"_server"),dbTB=$get(appID+"_database"),uidTB=$get(appID+"_uid"),pwdTB=$get(appID+"_pwd");CloudDB.Web.Services.CDBridge.ImportRemoteTablesSQL(token,{id:appID},svrTB.value,dbTB.value,uidTB.value,pwdTB.value,tablesToImport,import_remote_tables_complete,showErrorForImportTables,appID)}function import_remote_tables_complete(resp,appID){var importButton=$get("ImportButton_"+appID);importButton.value="Import";importButton.disabled=false;hidePopup("edit_import_"+appID);populateEntityList(appID)}function Connect(appID){$get("edit_import_"+appID+"_refreshIcon").className="edit-refresh-spinning";var connetButton=$get("ConnectButton"+appID),svrTB=$get(appID+"_server"),dbTB=$get(appID+"_database"),uidTB=$get(appID+"_uid"),pwdTB=$get(appID+"_pwd");if(!svrTB.disabled){connetButton.value="Connecting . . . ";connetButton.disabled=true;var svr=svrTB.value,db=dbTB.value,uid=uidTB.value,pwd=pwdTB.value;CloudDB.Web.Services.CDBridge.ListRemoteTablesSQL(token,svr,db,uid,pwd,list_remote_tables_complete,showErrorForListTables,appID)}else{$get("ConnectButton"+appID).value="Connect";svrTB.disabled=dbTB.disabled=uidTB.disabled=pwdTB.disabled=false;$get(appID+"_Tables").innerHTML="<li class='appLinks' style='cursor:default; width:1px; left:8px; right:50px;white-space:nowrap;'>Please connect to a database first</li>";$get("checkAllImports"+appID).disabled=$get("checkAllData"+appID).disabled=true;$get("edit_import_"+appID+"_refreshIcon").className="edit-refresh"}}function showErrorForListTables(error,appID){var connetButton=$get("ConnectButton"+appID);connetButton.value="Connect";connetButton.disabled=false;showError(error)}function showErrorForImportTables(error,appID){var importButton=$get("edit_import_"+appID);importButton.value="Import Selected Tables";importButton.disabled=false;showError(error)}var publicTablesArray=[];function list_remote_tables_complete(resp,appID){var tableListHTML="";eval("var tablesList"+appID+" = new Array();");for(t in resp.tables){t.checkBoxID=resp.tables[t];(eval("tablesList"+appID))[t]=resp.tables[t];if(resp.tables[t].CanImportData)tableListHTML+=String.format(tablesMask,t,resp.tables[t].TblNm,resp.tables[t].ColumnNames,appID);else tableListHTML+=String.format(tablesMaskNoData,t,resp.tables[t].TblNm,resp.tables[t].ColumnNames,appID)}$get(appID+"_Tables").innerHTML=tableListHTML;$get(appID+"_server").disabled=$get(appID+"_database").disabled=$get(appID+"_uid").disabled=$get(appID+"_pwd").disabled=true;$get("checkAllImports"+appID).disabled=$get("checkAllData"+appID).disabled=false;var connetButton=$get("ConnectButton"+appID);connetButton.value="Disconnect";connetButton.disabled=false;$get("edit_import_"+appID+"_refreshIcon").className="edit-refresh";var tablesListContext={appID:appID,tablesList:eval("tablesList"+appID)};publicTablesArray=[];publicTablesArray.push(tablesListContext)}function refresh_new_activate(){$get("activatePassword").value="";$get("activateConfirmPassword").value="";$get("activateEmail").value="";$get("new_activate_0_refreshIcon").className="edit-refresh";$get("activateEmail").focus();$get("activateEmail").focus()}function new_activate(inviteCode){var activatePassword=$get("activatePassword").value,activateConfirmPassword=$get("activateConfirmPassword").value;if(activatePassword==activateConfirmPassword&&activatePassword.length!=0){var username=$get("activateEmail").value;CloudDB.Web.Services.CDBridge.ActivateUser(inviteCode,username,activatePassword,activateUserComplete,showError)}else alert("Please anter two matching passwords for your new account")}function activateUserComplete(resp){if(!resp.Outcome.Succeeded)showError(resp.Outcome.Message);else{Login(resp.Result.Email,$get("activatePassword").value);hidePopup("new_activate");alert(resp.Outcome.Message);document.location="/"}}function refresh_edit_security(objID,context){$get("edit_security_"+objID+"_refreshIcon").className="edit-refresh-spinning";var newContext={};newContext.objID=objID;if(context=="_"){newContext.appID=objID;call_list_object_principals_or_permissions(objID,list_object_principals_complete,newContext)}else{var contextParts=parseContext(context);if(contextParts.length==3){newContext.entID=contextParts[0];newContext.appID=contextParts[1];newContext.rowID=contextParts[2];call_list_object_principals_or_permissions(objID,list_object_principals_complete,newContext)}else{newContext.appID=contextParts[0];call_list_object_principals_or_permissions(objID,list_object_principals_complete,newContext)}}}function refresh_delete_security(objID){$get("delete_security_"+objID+"_SM").innerHTML="<div style='padding:10px; color:red;'>Are you sure you want to remove the permissions for this User or Role?</div>"}function remove_userOrRole(objID,userOrRoleID,isRole,appID){$get("edit_security_"+objID+"_refreshIcon").className="edit-refresh-spinning";var objIDParts=objID.split("x");if(objIDParts.length==2)CloudDB.Web.Services.CDBridge.ChangeRowPermission(token,userOrRoleID,{id:appID},{id:objIDParts[1]},objIDParts[0],0,0,4095,4095,remove_userOrRole_complete,showError,{objID:objID,userOrRoleID:userOrRoleID,isRole:isRole,appID:appID,rowID:objIDParts[0],entID:objIDParts[1]});else CloudDB.Web.Services.CDBridge.ChangePermission(token,userOrRoleID,objID,0,0,4095,4095,remove_userOrRole_complete,showError,{objID:objID,userOrRoleID:userOrRoleID,isRole:isRole,appID:appID})}function remove_userOrRole_complete(resp,context){hidePopup("delete_security_"+context.objID);if(context.userOrRoleID==$get(context.objID+"SelectedRoleOrUser").value){$get(context.objID+"SelectedRoleOrUser").value="";$get(context.objID+"PrivList").innerHTML="<li style=\"display:none\"></li><li onmouseover='showControls(this);' onmouseout='hideControls(this);' style='height:23px;'><div class='appLinks' style='width:90%; position:absolute;white-space:nowrap;'>Please Select a Role or User to Manage Above.</div></li>";setSavedChangesHash("edit_security_"+context.objID,"")}call_list_object_principals_or_permissions(context.objID,list_object_principals_complete,context)}function call_list_object_principals_or_permissions(objID,callBack,context){if(context.rowID)CloudDB.Web.Services.CDBridge.ListRowPermissions(token,{id:context.appID},{id:context.entID},context.rowID,callBack,showError,context);else CloudDB.Web.Services.CDBridge.ListObjectPermissions(token,objID,callBack,showError,context)}function list_object_principals_complete(resp,context){var userAndRoleList=$get(context.objID+"RolesUsers");if(resp.DirectResults.length==0&&resp.InheritedResults.length==0)userOrRoleHTML="<li onmouseover='showControls(this);' onmouseout='hideControls(this);' style='height:23px;'><div class='appLinks' style='width:90%; position:absolute;white-space:nowrap;'>There are currently no permisison applied to this object.</div></li>";else{var userOrRole=resp.DirectResults,userOrRoleHTML=new String,isRole,curUserOrRole,listedRoles=[];for(var p in userOrRole){curUserOrRole=userOrRole[p].role;isRole=curUserOrRole.applicationID!=0;if(!context.rowID)userOrRoleHTML+=String.format(appliedRoleMaskWithDelete,context.objID,curUserOrRole.id,isRole,curUserOrRole.name,context.appID);else userOrRoleHTML+=String.format(appliedRoleMaskWithDelete,context.objID,curUserOrRole.id,isRole,curUserOrRole.name,context.appID+"_"+context.entID+"_"+context.rowID);Array.add(listedRoles,curUserOrRole.id)}var curIPerm;for(var ip in resp.InheritedResults){curIPerm=resp.InheritedResults[ip].role;if(!Array.contains(listedRoles,curIPerm.id)){isRole=curIPerm.applicationID!=0;if(!context.rowID)userOrRoleHTML+=String.format(appliedRoleMask,context.objID,curIPerm.id,isRole,curIPerm.name+" (inherited only)",context.appID);else userOrRoleHTML+=String.format(appliedRoleMask,context.objID,curIPerm.id,isRole,curIPerm.name+" (inherited only)",context.appID+"_"+context.entID+"_"+context.rowID);Array.add(listedRoles,curIPerm.id)}}}userAndRoleList.innerHTML=userOrRoleHTML;context.permResults=resp;sizePanelToScreen("edit_security_"+context.objID);if(context.appID=="")context.appID=context.objID;CloudDB.Web.Services.CDBridge.ListRoles(token,{id:context.appID},list_roles_for_dropdown_complete,showError,context)}function list_roles_for_dropdown_complete(resp,context){var addManageRolesHTML=true,listHTML="<select id='"+context.objID+"AddToObjectRole'>",everyoneRolePresent=false;for(i=0;i<context.permResults.DirectResults.length;++i)if(context.permResults.DirectResults[i].role.id==0){everyoneRolePresent=true;break}for(i=0;i<context.permResults.InheritedResults.length;++i)if(context.permResults.InheritedResults[i].role.id==0){everyoneRolePresent=true;break}if(!everyoneRolePresent)listHTML+="<option value='0'>Everyone</option>";for(var r in resp.Results){appliedAlready=false;for(i=0;i<context.permResults.DirectResults.length;++i)if(resp.Results[r].id==context.permResults.DirectResults[i].role.id){appliedAlready=true;break}for(i=0;i<context.permResults.InheritedResults.length;++i)if(resp.Results[r].id==context.permResults.InheritedResults[i].role.id){appliedAlready=true;break}if(!appliedAlready){addManageRolesHTML=false;listHTML+="<option value="+resp.Results[r].id+">"+resp.Results[r].name+"</option>"}}listHTML+="</select>";if(addManageRolesHTML&&everyoneRolePresent){listHTML='<a href="#" onclick="createPopup(\'edit_role_'+context.appID+"', 510, null, 'Edit Roles');\">Manage Roles</a>";$get(context.objID+"AddRoleToObject").disabled=true}else $get(context.objID+"AddRoleToObject").disabled=false;$get(context.objID+"AddRoleToObjectTD").innerHTML=listHTML;$get("edit_security_"+context.objID+"_refreshIcon").className="edit-refresh"}function AddUserOrRoleToObjectClick(objID,ctrlID,context){var userOrRoleID=$get(objID+"AddToObject"+ctrlID).value,newContext={userOrRoleID:userOrRoleID,objID:objID};newContext.objID=objID;if(context=="_"){var contextParts="";newContext.appID=objID}else{var contextParts=parseContext(context);newContext.appID=contextParts[0]}if(ctrlID=="Role")if(objID.indexOf("x")>=0){newContext.rowID=objID.split("x")[0];newContext.entID=contextParts[0];newContext.appID=contextParts[1];AddUserOrRoleToRow(newContext)}else if(contextParts.length==2){newContext.appID=contextParts[1];AddUserOrRoleToObject(newContext)}else contextParts.length==0&&AddUserOrRoleToObject(newContext);else if(userOrRoleID!=""){if(context=="_")newContext.appID=objID;else newContext.appID=contextParts[1];newContext.entID=contextParts[0];CloudDB.Web.Services.CDBridge.GetUserByEmail(userOrRoleID,false,AddUserByEmailForRole,showError,newContext)}}function AddUserByEmailForRole(resp,context){$get("edit_security_"+context.objID+"_refreshIcon").className="edit-refresh-spinning";if(resp.Outcome.Succeeded){$get(context.objID+"AddToObjectUser").value="";context.userOrRoleID=resp.Result.ID;if(context.objID.indexOf("x")>0)AddUserOrRoleToRow(context);else AddUserOrRoleToObject(context)}else{var numInvites=getCrumbValue("invites");if(numInvites>0){$get("edit_security_"+context.objID+"_refreshIcon").className="edit-refresh";if(confirm(resp.Outcome.Message+"\r\n \r\nClick OK to invite this user, or Cancel to enter a different user.")){$get("InviteEmail").value=$get(context.objID+"AddToObjectUser").value;$get("InviteMessage").focus();tabClick({target:$get("InvitePanelLink")})}}else showError(resp.Outcome.Message)}}function AddUserOrRoleToRow(context){$get("edit_security_"+context.objID+"_refreshIcon").className="edit-refresh-spinning";context.rowID=context.objID.split("x")[0];CloudDB.Web.Services.CDBridge.ChangeRowPermission(token,context.userOrRoleID,{id:context.appID},{id:context.entID},context.rowID,3,0,0,0,AddUserOrRoleToObjectComplete,showError,context)}function AddUserOrRoleToObject(context){$get("edit_security_"+context.objID+"_refreshIcon").className="edit-refresh-spinning";CloudDB.Web.Services.CDBridge.ChangePermission(token,context.userOrRoleID,context.objID,3,0,0,0,AddUserOrRoleToObjectComplete,showError,context)}function AddUserOrRoleToObjectComplete(resp,context){call_list_object_principals_or_permissions(context.objID,list_object_principals_complete,context)}function show_permissions_for_principal(objID,userOrRoleID,isRole,context){$get("edit_security_"+objID+"_refreshIcon").className="edit-refresh-spinning";var panelID="edit_security_"+objID,contextParts=parseContext(context);if(contextParts.length>1)context={objID:objID,userOrRoleID:userOrRoleID,isRole:isRole,appID:contextParts[0],entID:contextParts[1],rowID:contextParts[2]};else context={objID:objID,userOrRoleID:userOrRoleID,isRole:isRole};if(getSavedChangesHash(panelID))if(getSavedChangesHash(panelID)!=calcSavedChangesHash(panelID)){var discardChanges=confirm("This action will discard your changes for the selected role or user.");discardChanges&&call_list_object_principals_or_permissions(objID,list_object_permissions_complete,context)}else call_list_object_principals_or_permissions(objID,list_object_permissions_complete,context);else call_list_object_principals_or_permissions(objID,list_object_permissions_complete,context)}var permNames=["RS","Read Schema","RD","Read Data","IS","Insert Schema","ID","Insert Data","CS","Change Schema","CD","Change Data","DS","Delete Schema","DD","Delete Data","RT","Relate To","M","Move","CA","Copy With Database","CC","Create Column"];function list_object_permissions_complete(resp,context){var perms=resp.DirectResults,iPerms=resp.InheritedResults,permHTML=new String;inhAllow=0;inhDeny=0;for(var p in iPerms)if(context.userOrRoleID==iPerms[p].role.id){var bitValue=1;inhAllow|=iPerms[p].allow;inhDeny|=iPerms[p].deny}matchingOne=-1;for(var p in perms)if(context.userOrRoleID==perms[p].role.id)matchingOne=p;var bitValue=1,userOrRoleIDInput=$get(context.objID+"SelectedRoleOrUser");if(userOrRoleIDInput.value!="")$get(context.objID+"_"+userOrRoleIDInput.value).className="";userOrRoleIDInput.value=context.userOrRoleID;$get(context.objID+"_"+userOrRoleIDInput.value).className="selectedRowBackground";permHTML+='<li style="display:none"></li>';for(i=0;i<12;++i){permName=permNames[i*2+1];var allowCheckedHTML=new String,denyCheckedHTML=new String;if(matchingOne==-1){allowCheckedHTML=((inhAllow&bitValue)>0?' checked="checked"':"")+((inhDeny&bitValue)>0||(inhAllow&bitValue)>0?' disabled="disabled title="This permission is being inherited and can only be changed on the parent object."':"");denyCheckedHTML=(inhDeny&bitValue)>0?' checked="checked" disabled="disabled" title="This permission is being inherited and can only be changed on the parent object."':""}else{allowCheckedHTML=((perms[matchingOne].allow&bitValue)>0||(inhAllow&bitValue)>0?' checked="checked"':"")+((inhAllow&bitValue)>0||(inhDeny&bitValue)>0?' disabled="disabled"':"");denyCheckedHTML=((perms[matchingOne].deny&bitValue)>0||(inhDeny&bitValue)>0?' checked="checked"':"")+((inhDeny&bitValue)>0?' disabled="disabled"':"")}permHTML+=String.format(appliedPermMask,permNames[i*2],context.objID,context.userOrRoleID,permName,allowCheckedHTML,denyCheckedHTML);bitValue<<=1}var permsDiv=$get(context.objID+"PrivList");permsDiv.innerHTML=permHTML;var newPanelID="edit_security_"+context.objID;sizePanelToScreen(newPanelID);setSavedChangesHash(newPanelID,calcSavedChangesHash(newPanelID));$get("edit_security_"+context.objID+"_refreshIcon").className="edit-refresh"}function apply_security(context){change_permission(context,false)}function edit_security(context){change_permission(context,true)}function change_permission(context,closePopup){var contextParts=parseContext(context),objID,appID=contextParts[1];if(contextParts.length==3)objID=contextParts[2]+"x"+contextParts[0];else objID=contextParts[0];var userOrRoleID=$get(objID+"SelectedRoleOrUser").value;$get("edit_security_"+objID+"_refreshIcon").className="edit-refresh-spinning";if(userOrRoleID!=""){var bitValue=1,addAllow=0,addDeny=0,removeAllow=0,removeDeny=0;for(i=0;i<12;++i){var checkBoxMask="{0}_{1}_{2}_{3}",aCb=$get(String.format(checkBoxMask,"allow",permNames[i*2],objID,userOrRoleID)),dCb=$get(String.format(checkBoxMask,"deny",permNames[i*2],objID,userOrRoleID));if(!aCb.disabled)if(aCb.checked)addAllow+=bitValue;else removeAllow+=bitValue;if(!dCb.disabled)if(dCb.checked)addDeny+=bitValue;else removeDeny+=bitValue;bitValue<<=1}if(contextParts.length==3){rowID=contextParts[2];context={closePopup:closePopup,objID:objID,appID:appID,userOrRoleID:userOrRoleID,rowID:contextParts[2]};CloudDB.Web.Services.CDBridge.ChangeRowPermission(token,userOrRoleID,{id:appID},{id:contextParts[0]},rowID,addAllow,addDeny,removeAllow,removeDeny,change_permission_complete,showError,context)}else{context={closePopup:closePopup,objID:objID,appID:appID,userOrRoleID:userOrRoleID};CloudDB.Web.Services.CDBridge.ChangePermission(token,userOrRoleID,objID,addAllow,addDeny,removeAllow,removeDeny,change_permission_complete,showError,context)}}else closePopup&&hidePopup("edit_security_"+objID)}function change_permission_complete(resp,context){!resp.Succeeded&&alert(resp.Message);setSavedChangesHash("edit_security_"+context.objID,calcSavedChangesHash("edit_security_"+context.objID));if(context.closePopup)hidePopup("edit_security_"+context.objID);else $get("edit_security_"+context.objID+"_refreshIcon").className="edit-refresh"}function refresh_edit_role(appID){$get("edit_role_"+appID+"_refreshIcon").className="edit-refresh-spinning";list_roles(null,appID)}function list_roles(resp,appID,callBackText){CloudDB.Web.Services.CDBridge.ListRoles(token,{id:appID},list_roles_complete,showError,{appID:appID,callBackText:callBackText})}function list_roles_complete(resp,context){var rolesList=$get(context.appID+"RolesList"),rolesListHTML=new String;if(resp.Results.length==0)rolesListHTML=String.format("<li id='{0}' onmouseover='showControls(this);' onmouseout='hideControls(this);' style='height:23px;'><div class='appLinks' style='cursor:default; width:1px; left:20px; right:50px; position:absolute;white-space:nowrap;'>{2}</div></li>",context.appID+"noRoles",null,"There are currently no roles in this database");for(var r in resp.Results)rolesListHTML+=String.format(roleMask,resp.Results[r].id,context.appID,resp.Results[r].name.cleanTitle());rolesList.innerHTML=rolesListHTML;eval(context.callBackText);$get("edit_role_"+context.appID+"_refreshIcon").className="edit-refresh";sizePanelToScreen("edit_role_"+context.appID)}function new_role(appID){$get("edit_role_"+appID+"_refreshIcon").className="edit-refresh-spinning";var newRoleName=$get(appID+"NewRoleName").value;CloudDB.Web.Services.CDBridge.AddRole(token,{id:appID},newRoleName,new_role_complete,showError,appID)}function new_role_complete(resp,appID){if(resp.Outcome.Succeeded){list_roles(resp,appID,"show_users_for_role("+appID+", "+resp.Result.id+", '"+resp.Result.name+"')");$get(appID+"NewRoleName").value=""}else{$get("edit_role_"+appID+"_refreshIcon").className="edit-refresh";alert(resp.Outcome.Message)}}function remove_role(appID,roleID){CloudDB.Web.Services.CDBridge.DeleteRole(token,{id:appID},{id:roleID},remove_role_complete,showError,{appID:appID,roleID:roleID})}function remove_role_complete(resp,context){list_roles(resp,context.appID);hidePopup("delete_role_"+context.roleID);if($get(context.appID+"SelectedRole").value==context.roleID){$get(context.appID+"AddUserEmail").disabled=$get(context.appID+"AddUserEmailButton").disabled=true;$get(context.appID+"UsersInRoleList").innerHTML=String.format("<li id='{0}' onmouseover='showControls(this);' onmouseout='hideControls(this);' style='height:23px;'><div class='appLinks' style='cursor:default; width:1px; left:20px; right:50px; position:absolute;white-space:nowrap;'>{2}</div></li>",context.appID+"noUsers",null,"Role has been deleted. Please select a role.")}}function new_user_inrole(appID){var userEmail=$get(appID+"AddUserEmail").value;CloudDB.Web.Services.CDBridge.GetUserByEmail(userEmail,false,get_user_compelete,showError,appID)}function get_user_compelete(resp,appID){if(resp.Outcome.Succeeded){var roleID=$get(appID+"SelectedRole").value;CloudDB.Web.Services.CDBridge.AddRoleMember(token,{id:appID},{id:roleID},resp.Result.ID,role_member_added_complete,showError,{appID:appID,roleID:roleID})}else{var numInvites=getCrumbValue("invites");if(numInvites>0){if(confirm(resp.Outcome.Message+"\r\n \r\nClick OK to invite this user, or Cancel to enter a different user.")){$get("InviteEmail").value=$get(appID+"AddUserEmail").value;$get("InviteMessage").focus();tabClick({target:$get("InvitePanelLink")});$get("edit_role_"+appID+"_refreshIcon").className="edit-refresh"}}else showError(resp.Outcome.Message)}}function role_member_added_complete(resp,context){$get(context.appID+"AddUserEmail").value="";show_users_for_role(context.appID,context.roleID,null)}function show_users_for_role(appID,roleID,roleName){var selectedRoleID=$get(appID+"SelectedRole").value;if(roleName)$get(appID+"SelectedRole").value=roleID;$get(roleID.toString()).className="selectedRowBackground";if(selectedRoleID.toString()!="")$get(selectedRoleID.toString()).className="";$get(appID+"AddUserEmail").disabled=$get(appID+"AddUserEmailButton").disabled=false;CloudDB.Web.Services.CDBridge.ListRoleMembers(token,{id:roleID},true,show_users_for_role_complete,showError,{appID:appID,roleID:roleID,roleName:roleName,selectedRoleID:selectedRoleID})}function show_users_for_role_complete(resp,context){$get(context.appID+"SelectedRole").value;if(context.roleName)$get(context.appID+"UsersIn").innerHTML=context.roleName;var userList=$get(context.appID+"UsersInRoleList"),userListHTML=new String;if(resp.Results.length==0)userListHTML=String.format("<li id='{0}' onmouseover='showControls(this);' onmouseout='hideControls(this);' style='height:23px;'><div class='appLinks' style='cursor:default; width:1px; left:20px; right:50px; position:absolute;white-space:nowrap;'>{2}</div></li>",context.appID+"noUsers",null,"There are currently no users in this role");for(var u in resp.Results){if(resp.Results[u].name=="")resp.Results[u].name="No User Name Set (User ID:"+resp.Results[u].id+")";else resp.Results[u].name=resp.Results[u].name.cleanTitle();userListHTML+=String.format(roleMemberMask,context.appID,context.roleID,resp.Results[u].id,resp.Results[u].name)}userList.innerHTML=userListHTML;sizePanelToScreen("edit_role_"+context.appID)}function remove_rolemember(context){var contextParts=parseContext(context);CloudDB.Web.Services.CDBridge.RemoveRoleMember(token,{id:contextParts[0]},{id:contextParts[1]},contextParts[2],remove_rolemember_complete,showError,contextParts)}function remove_rolemember_complete(resp,context){show_users_for_role(context[0],context[1],null);hidePopup("delete_rolemember_"+context[1]+context[2])}function refresh_delete_rolemember(userID,context){var contextParts=parseContext(context);$get("delete_rolemember_"+contextParts[1]+contextParts[2]+"_SM").innerHTML="<div style='padding:10px; color:red;'>Are you sure?</div>";$get("delete_rolemember_"+contextParts[1]+contextParts[2]+"_SM").style.height="50px"}function refresh_delete_role(roleID){$get("delete_role_"+roleID+"_SM").innerHTML="<div style='padding:10px; color:red;'>Are you sure?</div>";$get("delete_role_"+roleID+"_SM").style.height="50px"}function refresh_delete_favorite(appID){$get("delete_favorite_"+appID+"_SM").innerHTML="<div style='padding:10px; color:red;'>Are you sure you want to remove this database as a favorite?</div>"}function remove_favorite(appID){CloudDB.Web.Services.CDBridge.RemoveFavoriteApplication(token,{id:appID},remove_favorite_complete,showError,appID)}function remove_favorite_complete(resp,appID){var panelID="delete_favorite_"+appID;populatePopupComplete(panelID);hidePopup(panelID);refreshApps()};