//
// Copyright(c) 2010 in-vitro.jp. All rights reserved.
//

// *******************************************************************************************************************************************
// Salesforce Commands
// *******************************************************************************************************************************************
// apex
CmdUtils.CreateCommand({
  names: ["sf apex"],
  arguments: [ {role: 'object', nountype: noun_arb_text, label: 'Query'} ],
  description: ("Search Force.com Apex Code Developer's Guide"),
  homepage: "http://www.in-vitro.jp/software/salesforce/command_ubiquity.html",
  author: "in-vitro.jp",
  license: "Apache License Version 2.0",
  icon: "http://www.salesforce.com/favicon.ico",
  preview: function(previewBlock, args) {
    previewBlock.innerHTML = '';
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    matchApexKeyword(query, previewBlock);
    searchAndPreview(query, 'www.salesforce.com%2Fus%2Fdeveloper%2Fdocs%2Fapexcode%2F', previewBlock);
  },
  execute: function(args) {
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    var referenceUrl = matchApexKeyword(query);
    if(referenceUrl != null) {
      Utils.openUrlInBrowser(referenceUrl);
    } else {
      search(query, 'www.salesforce.com/us/developer/docs/apexcode/');
    }
  }
});
// visualforce
CmdUtils.CreateCommand({
  names: ["sf visualforce", "sf vf"],
  arguments: [ {role: 'object', nountype: noun_arb_text, label: 'Query'} ],
  description: ("Search Force.com Visualforce Developer's Guide"),
  homepage: "http://www.in-vitro.jp/software/salesforce/command_ubiquity.html",
  author: "in-vitro.jp",
  license: "Apache License Version 2.0",
  icon: "http://www.salesforce.com/favicon.ico",
  preview: function(previewBlock, args) {
    previewBlock.innerHTML = '';
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    matchVfKeyword(query, previewBlock);
    searchAndPreview(query, 'www.salesforce.com%2Fus%2Fdeveloper%2Fdocs%2Fpages%2F', previewBlock);
  },
  execute: function(args) {
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    var referenceUrl = matchVfKeyword(query);
    if(referenceUrl != null) {
      Utils.openUrlInBrowser(referenceUrl);
    } else {
      search(query, 'www.salesforce.com/us/developer/docs/pages/');
    }
  }
});
// webapi
CmdUtils.CreateCommand({
  names: ["sf webapi", "sf api"],
  arguments: [ {role: 'object', nountype: noun_arb_text, label: 'Query'} ],
  description: ("Search Web Services API Developer's Guide"),
  homepage: "http://www.in-vitro.jp/software/salesforce/command_ubiquity.html",
  author: "in-vitro.jp",
  license: "Apache License Version 2.0",
  icon: "http://www.salesforce.com/favicon.ico",
  preview: function(previewBlock, args) {
    previewBlock.innerHTML = '';
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    searchAndPreview(query, 'www.salesforce.com%2Fus%2Fdeveloper%2Fdocs%2Fapi%2F', previewBlock);
  },
  execute: function(args) {
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    search(query, 'www.salesforce.com/us/developer/docs/api/');
  }
});
// metadataapi
CmdUtils.CreateCommand({
  names: ["sf metadataapi", "sf metaapi"],
  arguments: [ {role: 'object', nountype: noun_arb_text, label: 'Query'} ],
  description: ("Search Metadata API Developer's Guide"),
  homepage: "http://www.in-vitro.jp/software/salesforce/command_ubiquity.html",
  author: "in-vitro.jp",
  license: "Apache License Version 2.0",
  icon: "http://www.salesforce.com/favicon.ico",
  preview: function(previewBlock, args) {
    previewBlock.innerHTML = '';
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    searchAndPreview(query, 'www.salesforce.com%2Fus%2Fdeveloper%2Fdocs%2Fapi_meta%2F', previewBlock);
  },
  execute: function(args) {
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    search(query, 'www.salesforce.com/us/developer/docs/api_meta/');
  }
});
// bulkapi
CmdUtils.CreateCommand({
  names: ["sf bulkapi"],
  arguments: [ {role: 'object', nountype: noun_arb_text, label: 'Query'} ],
  description: ("Search Bulk API Developer's Guide"),
  homepage: "http://www.in-vitro.jp/software/salesforce/command_ubiquity.html",
  author: "in-vitro.jp",
  license: "Apache License Version 2.0",
  icon: "http://www.salesforce.com/favicon.ico",
  preview: function(previewBlock, args) {
    previewBlock.innerHTML = '';
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    searchAndPreview(query, 'www.salesforce.com%2Fus%2Fdeveloper%2Fdocs%2Fapi_asynch%2F', previewBlock);
  },
  execute: function(args) {
    var query = args.object.text;
    if(query == null || query == '') {
      return;
    }
    search(query, 'www.salesforce.com/us/developer/docs/api_asynch/');
  }
});
// status
CmdUtils.CreateCommand({
  names: ["sf status"],
  description: ("Open Salesforce System Status"),
  homepage: "http://www.in-vitro.jp/software/salesforce/command_ubiquity.html",
  author: "in-vitro.jp",
  license: "Apache License Version 2.0",
  icon: "http://www.salesforce.com/favicon.ico",
  preview: function(previewBlock) {
    previewBlock.innerHTML = '<iframe src="http://trust.salesforce.com/opencms/status-data/status.jsp" width="475" height="470"/>';
  },
  execute: function() {
    Utils.openUrlInBrowser('http://trust.salesforce.com/trust/status/');
  }
});
// salesforce
CmdUtils.CreateCommand({
  names: ["salesforce", "sf", "sfdc"],
  arguments: [ {role: 'object', 
                       nountype: [
                                         // Personal Setup
                                         "personalinformation", "me", 
                                         // App Setup - Customize
                                         "home", "activity", "campaign", "lead", "account", "contact", "opportunity", "quote", "forecast", "case", 
                                         "selfservice", "callcenteredition", "contract", "solutions", "products", "partnerportal", "pp", 
                                         "customerportal", "cp", "ideas", "answers", "asset", "usercustomize", "agentconsolesetup", "console", 
                                         "contentdistribution", "tagging", "tags", "reportsanddashboards", "reports", "dashboards", "search", 
                                         "collaboration", "chatter", "userinterface", "ui", 
                                         // App Setup - Create
                                         "applications", "externalstrings", "customlabels", "labels", "customobjects", "objects", "package", "tabs", 
                                         // App Setup - Develop
                                         "classes", "apexclasses", "triggers", "apextriggers", "components", "customsettings", "pages", 
                                         "visualforcepages", "sites", "staticresource", 
                                         // App Setup - Deploy
                                         "deploystatus", "monitordeployments", 
                                         // App Setup - View Installed Packages
                                         "importedpackage", "packages installed", 
                                         // Administration Setup - Manage Users
                                         "users", "roles", "profiles", "publicgroups", "groups", "queues", 
                                         // Administration Setup - Company Profile
                                         "companyprofile", 
                                         // Administration Setup - Security Controls
                                         "securitysharing", "sharing", "fieldaccessibility", "networkaccess", 
                                         // Administration Setup - Monitoring
                                         "debuglogs", "scheduledjobs", "asyncapexjobs", "apexjobs", "asyncapijobstatus", "apijobstatus", 
                                         "bulkdataloadjobs"
                       ], 
                       label: 'target'} ],
  description: ("Salesforce Setup"),
  homepage: "http://www.in-vitro.jp/software/salesforce/command_ubiquity.html",
  author: "in-vitro.jp",
  license: "Apache License Version 2.0",
  icon: "http://www.salesforce.com/favicon.ico",
  execute: function(args) {
    var sfdcDomain = retrieveSalesforceDomain();
    if(sfdcDomain == null) {
      return;
    }
    switch (args.object.text) {
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Personal Setup
      // -------------------------------------------------------------------------------------------------------------------------------------
      // My Personal Information
      case "personalinformation":
      case "me":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                        Utils.paramsToString({ setupid: "PersonalInfo" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // App Setup - Customize
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Home
      case "home":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Home" }));
        break;
      // Activities
      case "activity":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Activity" }));
        break;
      // Campaigns
      case "campaign":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Campaign" }));
        break;
      // Leads
      case "lead":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Lead" }));
        break;
      // Accounts
      case "account":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Account" }));
        break;
      // Contacts
      case "contact":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Contact" }));
        break;
      // Opportunities
      case "opportunity":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Opportunity" }));
        break;
      // Quotes
      case "quote":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Quote" }));
        break;
      // Forecasts
      case "forecast":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Forecast" }));
        break;
      // Cases
      case "case":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Case" }));
        break;
      // Self-Service
      case "selfservice":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "SelfService" }));
        break;
      // Call Center
      case "callcenteredition":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "CallCenterEdition" }));
        break;
      // Contracts
      case "contract":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Contract" }));
        break;
      // Solutions
      case "solutions":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Solutions" }));
        break;
      // Products
      case "products":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Products" }));
        break;
      // Partners
      case "partnerportal":
      case "pp":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "PartnerPortal" }));
        break;
      // Customer Portal
      case "customerportal":
      case "cp":
        var destLocation = sfdcDomain + "/_ui/core/portal/CustomerSuccessPortalSetup/d";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "CustomerSuccessPortalSettings" }));
        break;
      // Ideas
      case "ideas":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Ideas" }));
        break;
      // Answers
      case "answers":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Answers" }));
        break;
      // Assets
      case "asset":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Asset" }));
        break;
      // Users
      case "usercustomize":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "UserCustomize" }));
        break;
      // Console
      case "agentconsolesetup":
      case "console":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "AgentConsoleSetup" }));
        break;
      // Content Deliveries
      case "contentdistribution":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ContentDistribution" }));
        break;
      // Tags
      case "tagging":
      case "tags":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Tagging" }));
        break;
      // Reports & Dashboards
      case "reportsanddashboards":
      case "reports":
      case "dashboards":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ReportsAndDashboards" }));
        break;
      // Search
      case "search":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Search" }));
        break;
      // Chatter
      case "collaboration":
      case "chatter":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Collaboration" }));
        break;
      // User Interface
      case "userinterface":
      case "ui":
        var destLocation = sfdcDomain + "/ui/setup/org/UserInterfaceUI";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "UserInterface" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // App Setup - Create
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Applications
      case "applications":
        var destLocation = sfdcDomain + "/02u";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "TabSet" }));
        break;
      // Custom Labels
      case "externalstrings":
      case "customlabels":
      case "labels":
        var destLocation = sfdcDomain + "/101";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ExternalStrings" }));
        break;
      // Objects
      case "customobjects":
      case "objects":
        var destLocation = sfdcDomain + "/setup/ui/customobjects.jsp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "CustomObjects" }));
        break;
      // Packages
      case "package":
        var destLocation = sfdcDomain + "/0A2";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Package" }));
        break;
      // Tabs
      case "tabs":
        var destLocation = sfdcDomain + "/setup/ui/customtabs.jsp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "CustomTabs" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // App Setup - Develop
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Apex Classes
      case "classes":
      case "apexclasses":
        var destLocation = sfdcDomain + "/01p";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ApexClasses" }));
        break;
      // Apex Triggers
      case "triggers":
      case "apextriggers":
        var destLocation = sfdcDomain + "/setup/build/allTriggers.apexp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ApexTriggers" }));
        break;
      // Components
      case "components":
        var destLocation = sfdcDomain + "/apexpages/setup/listApexComponent.apexp";
        Utils.currentTab.load(destLocation);
        break;
      // Custom Settings
      case "customsettings":
        var destLocation = sfdcDomain + "/setup/ui/listCustomSettings.apexp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "CustomSettings" }));
        break;
      // Pages
      case "pages":
      case "visualforcepages":
        var destLocation = sfdcDomain + "/apexpages/setup/listApexPage.apexp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ApexPages" }));
        break;
      // Sites
      case "sites":
        var destLocation = sfdcDomain + "/0DM/o";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "CustomDomain" }));
        break;
      // Static Resource
      case "staticresource":
        var destLocation = sfdcDomain + "/apexpages/setup/listStaticResource.apexp";
        Utils.currentTab.load(destLocation);
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // App Setup - Deploy
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Monitor Deployments
      case "deploystatus":
      case "monitordeployments":
        var destLocation = sfdcDomain + "/04s/o";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "DeployStatus" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // App Setup - View Installed Packages
      // -------------------------------------------------------------------------------------------------------------------------------------
      // View Installed Packages
      case "importedpackage":
      case "packages installed":
        var destLocation = sfdcDomain + "/0A3";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ImportedPackage" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Manage Users
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Users
      case "users":
        var destLocation = sfdcDomain + "/005";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ManageUsers" }));
        break;
      // Roles
      case "roles":
        var destLocation = sfdcDomain + "/ui/setup/user/RoleViewPage";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Roles" }));
        break;
      // Profiles
      case "profiles":
        var destLocation = sfdcDomain + "/setup/ui/profilelist.jsp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Profiles" }));
        break;
      // Public Groups
      case "publicgroups":
      case "groups":
        var destLocation = sfdcDomain + "/p/own/OrgPublicGroupsPage/d";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "PublicGroups" }));
        break;
      // Queues
      case "queues":
        var destLocation = sfdcDomain + "/p/own/OrgQueuesPage/d";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "Queues" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Company Profile
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Company Profile
      case "companyprofile":
        var destLocation = sfdcDomain + "/ui/setup/Setup";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "CompanyProfile" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Security Controls
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Sharing Settings
      case "securitysharing":
      case "sharing":
        var destLocation = sfdcDomain + "/p/own/OrgSharingDetail";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "SecuritySharing" }));
        break;
      // Field Accessibility
      case "fieldaccessibility":
        var destLocation = sfdcDomain + "/setup/layout/flslayoutjump.jsp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "FieldAccessibility" }));
        break;
      // Network Access
      case "networkaccess":
        var destLocation = sfdcDomain + "/05G";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "NetworkAccess" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Communication Templates
      // -------------------------------------------------------------------------------------------------------------------------------------

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Translation Workbench
      // -------------------------------------------------------------------------------------------------------------------------------------

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Data Management
      // -------------------------------------------------------------------------------------------------------------------------------------

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Monitoring
      // -------------------------------------------------------------------------------------------------------------------------------------
      // Debug Logs
      case "debuglogs":
        var destLocation = sfdcDomain + "/setup/ui/listApexTraces.apexp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ApexDebugLogs" }));
        break;
      // Scheduled Jobs
      case "scheduledjobs":
        var destLocation = sfdcDomain + "/08e";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "ScheduledJobs" }));
        break;
      // Apex Jobs
      case "asyncapexjobs":
      case "apexjobs":
        var destLocation = sfdcDomain + "/apexpages/setup/listAsyncApexJobs.apexp";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "AsyncApexJobs" }));
        break;
      // Bullk Data Load Jobs
      case "asyncapijobstatus":
      case "apijobstatus":
      case "bulkdataloadjobs":
        var destLocation = sfdcDomain + "/750";
        Utils.currentTab.load(destLocation + 
                                           Utils.paramsToString({ setupid: "AsyncApiJobStatus" }));
        break;

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Mobile Administration
      // -------------------------------------------------------------------------------------------------------------------------------------

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Desktop Administration
      // -------------------------------------------------------------------------------------------------------------------------------------

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Email Administration
      // -------------------------------------------------------------------------------------------------------------------------------------

      // -------------------------------------------------------------------------------------------------------------------------------------
      // Administration Setup - Google Apps
      // -------------------------------------------------------------------------------------------------------------------------------------
    }
  }
});

// *******************************************************************************************************************************************
// Shared functions
// *******************************************************************************************************************************************
// matchApexKeyword
function matchApexKeyword(query, previewBlock) {
  if(query == null || query == '') {
    return;
  }
  for(i = 0; i < APEX_KEYWORDS.length; i++) {
    var keyword = APEX_KEYWORDS[i];
    var re = new RegExp('[^@]*' + query.replace(/\$/ig, '\\$') + '[^@]*@@', "i");
    if(keyword.match(re)) {
      var splitKeyword = keyword.split('@@');
      var titleAndUrl = splitKeyword[splitKeyword.length - 1];
      var splitTitleAndUrl = titleAndUrl.split('##');
      var title = splitTitleAndUrl[0];
      var url = splitTitleAndUrl[1];
      if(previewBlock != null) {
        previewBlock.innerHTML += '<div style="margin-bottom:0.5em;"><div style="font-size:small;"><a href="' + url + '">' + title + '</a></div></div>';
      } else {
        return url;
      }
    }
  }
}
// matchVfKeyword
function matchVfKeyword(query, previewBlock) {
  if(query == null || query == '') {
    return;
  }
  for(i = 0; i < VF_KEYWORDS.length; i++) {
    var keyword = VF_KEYWORDS[i];
    var re = new RegExp('.*' + query.replace(/\$/ig, '\\$') + '[^@]*@@', "i");
    if(keyword.match(re)) {
      var splitKeyword = keyword.split('@@');
      var title = splitKeyword[0];
      var url = splitKeyword[1];
      if(previewBlock != null) {
        previewBlock.innerHTML += '<div style="margin-bottom:0.5em;"><div style="font-size:small;"><a href="' + url + '">' + title + '</a></div></div>';
      } else {
        return url;
      }
    }
  }
}
// searchByGoogle
function searchAndPreview(query, site, previewBlock) {
  for(page = 0; page < 3; page++) {
    var googleUrl = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=small&start=' + page + '&hl=ja&q=' + query + '+site%3A' + site;
    CmdUtils.previewAjax(previewBlock, {
      type: "GET",
      url: googleUrl,
      error: function(){
      },
      success: function(json){
        var responseData = eval('(' + json + ')').responseData;
        for(i = 0; i < responseData.results.length; i++) {
          var result = responseData.results[i];
          var title = result.titleNoFormatting;
          previewBlock.innerHTML += '<div style="margin-bottom:0.5em;"><div style="font-size:small;"><a href="' + result.unescapedUrl + '">' + title + '</a></div><div style="font-size:x-small;padding-left:2em;">' + result.content + '</div></div>';
        }
      }
    });
  }
  return preview;
}
// search
function search(query, site) {
  var googleUrl = 'http://www.google.co.jp/search';
  Utils.openUrlInBrowser(
    googleUrl +
    Utils.paramsToString({ q: query + ' site:' + site, ie: 'utf-8', oe: 'utf-8', hl: 'ja' }));
}
// retrieveSalesforceDomain
function retrieveSalesforceDomain() {
    var win = CmdUtils.getWindow();
    var currentLocation = win.location.href;
    if(currentLocation == null) {
      return;
    }
    var currentDomain = currentLocation.match(/http.*:\/\/[^/]+force\.com/i);
    return currentDomain;
}

var APEX_KEYWORDS = new Array();
APEX_KEYWORDS.push('Database.LeadConvert@@Database.LeadConvertResult@@ConvertLead Operation##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dml_convertLead.htm');
APEX_KEYWORDS.push('Database.DeleteResult@@Delete Operation##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dml_delete.htm');
APEX_KEYWORDS.push('Database.UndeleteResult@@Undelete Operation##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dml_undelete.htm');
APEX_KEYWORDS.push('Database.SaveResult@@Update Operation##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dml_update.htm');
APEX_KEYWORDS.push('Database.UpsertResult@@Upsert Operation##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dml_upsert.htm');
APEX_KEYWORDS.push('Blob@@Blob Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_blob.htm');
APEX_KEYWORDS.push('Boolean@@Boolean Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_boolean.htm');
APEX_KEYWORDS.push('Date@@Date Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_date.htm');
APEX_KEYWORDS.push('Datetime@@Datetime Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_datetime.htm');
APEX_KEYWORDS.push('Decimal@@System.RoundingMode@@Decimal Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_decimal.htm');
APEX_KEYWORDS.push('Double@@Double Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_double.htm');
APEX_KEYWORDS.push('Integer@@Integer Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_integer.htm');
APEX_KEYWORDS.push('Long@@Long Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_long.htm');
APEX_KEYWORDS.push('String@@String Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_string.htm');
APEX_KEYWORDS.push('Time@@Time Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_time.htm');
APEX_KEYWORDS.push('List@@List Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_list.htm');
APEX_KEYWORDS.push('Map@@Map Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_map.htm');
APEX_KEYWORDS.push('Set@@Set Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_set.htm');
APEX_KEYWORDS.push('Enum@@Enum Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_enum.htm');
APEX_KEYWORDS.push('Schema@@Schema.DataCategoryGroupSobjectTypePair@@Schema.DescribeDataCategoryGroupResult@@Schema.DescribeDataCategoryGroupStructureResult@@Schema.DataCategory@@Schema Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_schema.htm');
APEX_KEYWORDS.push('sObject@@sObject Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_sobject.htm');
APEX_KEYWORDS.push('Schema.DescribeSObjectResult@@Schema.ChildRelationship@@Schema.RecordTypeInfo@@sObject Describe Result Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_sobject_describe.htm');
APEX_KEYWORDS.push('Schema.DescribeFieldResult@@Schema.DisplayType@@Schema.PicklistEntry@@Schema.sObjectField@@Schema.sObjectType@@Schema.SOAPType@@Describe Field Result Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_fields_describe.htm');
APEX_KEYWORDS.push('CustomSettings@@Custom Settings Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_custom_settings.htm');
APEX_KEYWORDS.push('ApexPages@@ApexPages Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_apexpages.htm');
APEX_KEYWORDS.push('Approval@@Approval Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_approval.htm');
APEX_KEYWORDS.push('Database@@Database Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_database.htm');
APEX_KEYWORDS.push('Database.QueryLocator@@Database Batch Apex Objects and Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_database_batch.htm');
APEX_KEYWORDS.push('Database.DMLOptions@@Database DMLOptions Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_database_dmloptions.htm');
APEX_KEYWORDS.push('Database.EmptyRecycleBinResult@@Database EmptyRecycleBinResult Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_database_EmptyRecycleBinResult.htm');
APEX_KEYWORDS.push('Database.Error@@Database Error Object Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_database_error.htm');
APEX_KEYWORDS.push('Limits@@Limits Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_limits.htm');
APEX_KEYWORDS.push('Math@@Math Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_math.htm');
APEX_KEYWORDS.push('Package@@Package Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_package.htm');
APEX_KEYWORDS.push('Search@@Search Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_search.htm');
APEX_KEYWORDS.push('System@@System.LoggingLevel@@System.ApplicationReadWriteMode@@System.Schedule@@System.ResetPasswordResult@@System Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_system.htm');
APEX_KEYWORDS.push('Test@@Test Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_test.htm');
APEX_KEYWORDS.push('UserInfo@@UserInfo Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_userinfo.htm');
APEX_KEYWORDS.push('System.Exception@@System.AsyncException@@System.CalloutException@@System.DmlException@@System.EmailException@@System.InvalidParameterValueException@@System.ListException@@System.MathException@@System.NoAccessException@@System.NoDataFoundException@@System.NoSuchElementException@@System.NullPointerException@@System.QueryException@@System.SearchException@@System.SecurityException@@System.SerializationException@@System.SObjectException@@System.StringException@@System.TypeException@@System.VisualforceException@@System.XmlException@@Using Exception Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_exception_methods.htm');
APEX_KEYWORDS.push('Messaging@@Outbound Email##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound.htm');
APEX_KEYWORDS.push('Messaging.EmailMessage@@Base Email Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound_base.htm');
APEX_KEYWORDS.push('Messaging.SingleEmailMessage@@Single Email Message Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound_single.htm');
APEX_KEYWORDS.push('Messaging.MassEmailMessage@@Mass Email Message Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound_mass.htm');
APEX_KEYWORDS.push('EmailFileAttachment@@EmailFileAttachment Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound_attachment.htm');
APEX_KEYWORDS.push('SendEmailResult@@SendEmailResult Object Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound_sendemailresult.htm');
APEX_KEYWORDS.push('SendEmailError@@SendEmailError Object Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound_sendemailerror.htm');
APEX_KEYWORDS.push('InboundEmail@@InboundEmail Object##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_inbound.htm');
APEX_KEYWORDS.push('InboundEmail.Header@@InboundEmail.Header Object##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_header.htm');
APEX_KEYWORDS.push('InboundEmail.BinaryAttachment@@InboundEmail.BinaryAttachment Object##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_binary.htm');
APEX_KEYWORDS.push('InboundEmail.TextAttachment@@InboundEmail.TextAttachment Object##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_text.htm');
APEX_KEYWORDS.push('InboundEmailResult@@InboundEmailResult Object##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_result.htm');
APEX_KEYWORDS.push('InboundEnvelope@@InboundEnvelope Object##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound_envelope.htm');
APEX_KEYWORDS.push('ApexPages.Action@@Action Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_action.htm');
APEX_KEYWORDS.push('ApexPages.IdeaStandardController@@IdeaStandardController Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_ideastandardcontroller.htm');
APEX_KEYWORDS.push('ApexPages.IdeaStandardSetController@@IdeaStandardSetController Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_ideastandardsetcontroller.htm');
APEX_KEYWORDS.push('ApexPages.Message@@ApexPages.Severity@@Message Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_message.htm');
APEX_KEYWORDS.push('PageReference@@PageReference Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_pagereference.htm');
APEX_KEYWORDS.push('SelectOption@@SelectOption Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_selectoption.htm');
APEX_KEYWORDS.push('ApexPages.StandardController@@StandardController Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_standardcontroller.htm');
APEX_KEYWORDS.push('ApexPages.StandardSetController@@StandardSetController Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_pages_standardsetcontroller.htm');
APEX_KEYWORDS.push('Pattern@@Pattern Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_pattern_and_matcher_pattern_methods.htm');
APEX_KEYWORDS.push('Matcher@@Matcher Methods##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_pattern_and_matcher_matcher_methods.htm');
APEX_KEYWORDS.push('Http@@Http Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http_http.htm');
APEX_KEYWORDS.push('HttpRequest@@HttpRequest Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http_httprequest.htm');
APEX_KEYWORDS.push('HttpResponse@@HttpResponse Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http_httpresponse.htm');
APEX_KEYWORDS.push('Crypt@@Crypt Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_crypto.htm');
APEX_KEYWORDS.push('EncodingUtil@@EncodingUtil Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_encodingUtil.htm');
APEX_KEYWORDS.push('XmlStreamReader@@XmlStreamReader Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_xml_XmlStream_reader.htm');
APEX_KEYWORDS.push('XmlStreamWriter@@XmlStreamWriter Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_xml_XmlStream_writer.htm');
APEX_KEYWORDS.push('Dom.Document@@Document Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_xml_dom_document.htm');
APEX_KEYWORDS.push('Dom.XmlNode@@XmlNode Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_xml_dom_xmlnode.htm');
APEX_KEYWORDS.push('Approval.ProcessRequest@@ProcessRequest Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_ProcessRequest.htm');
APEX_KEYWORDS.push('Approval.ProcessResult@@ProcessResult Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_ProcessResult.htm');
APEX_KEYWORDS.push('Approval.ProcessSubmitRequest@@ProcessSubmitRequest Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_ProcessSubmitRequest.htm');
APEX_KEYWORDS.push('Approval.ProcessWorkitemRequest@@ProcessWorkitemRequest Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_ProcessWorkitemRequest.htm');
APEX_KEYWORDS.push('BusinessHours@@Business Hours Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_businesshours.htm');
APEX_KEYWORDS.push('Answers@@Answers Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_answers.htm');
APEX_KEYWORDS.push('Ideas@@Ideas Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_ideas.htm');
APEX_KEYWORDS.push('Site@@Site Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_sites.htm');
APEX_KEYWORDS.push('Cookie@@Cookie Class##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_sites_cookie.htm');
APEX_KEYWORDS.push('Site.UrlRewriter@@Site.UrlRewriter##http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_site_urlRewriter.htm');

var VF_KEYWORDS = new Array();
VF_KEYWORDS.push('apex:actionFunction@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_actionFunction.htm');
VF_KEYWORDS.push('apex:actionPoller@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_actionPoller.htm');
VF_KEYWORDS.push('apex:actionRegion@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_actionRegion.htm');
VF_KEYWORDS.push('apex:actionStatus@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_actionStatus.htm');
VF_KEYWORDS.push('apex:actionSupport@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_actionSupport.htm');
VF_KEYWORDS.push('apex:attribute@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_attribute.htm');
VF_KEYWORDS.push('apex:column@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_column.htm');
VF_KEYWORDS.push('apex:commandButton@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_commandButton.htm');
VF_KEYWORDS.push('apex:commandLink@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_commandLink.htm');
VF_KEYWORDS.push('apex:component@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_component.htm');
VF_KEYWORDS.push('apex:componentBody@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_componentBody.htm');
VF_KEYWORDS.push('apex:composition@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_composition.htm');
VF_KEYWORDS.push('apex:dataList@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_dataList.htm');
VF_KEYWORDS.push('apex:dataTable@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_dataTable.htm');
VF_KEYWORDS.push('apex:define@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_define.htm');
VF_KEYWORDS.push('apex:detail@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_detail.htm');
VF_KEYWORDS.push('apex:enhancedList@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_enhancedList.htm');
VF_KEYWORDS.push('apex:facet@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_facet.htm');
VF_KEYWORDS.push('apex:flash@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_flash.htm');
VF_KEYWORDS.push('apex:form@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_form.htm');
VF_KEYWORDS.push('apex:iframe@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_iframe.htm');
VF_KEYWORDS.push('apex:image@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_image.htm');
VF_KEYWORDS.push('apex:include@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_include.htm');
VF_KEYWORDS.push('apex:includeScript@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_includeScript.htm');
VF_KEYWORDS.push('apex:inputCheckbox@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputCheckbox.htm');
VF_KEYWORDS.push('apex:inputField@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputField.htm');
VF_KEYWORDS.push('apex:inputFile@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputFile.htm');
VF_KEYWORDS.push('apex:inputHidden@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputHidden.htm');
VF_KEYWORDS.push('apex:inputSecret@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputSecret.htm');
VF_KEYWORDS.push('apex:inputText@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputText.htm');
VF_KEYWORDS.push('apex:inputTextarea@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_inputTextarea.htm');
VF_KEYWORDS.push('apex:insert@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_insert.htm');
VF_KEYWORDS.push('apex:listViews@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_listViews.htm');
VF_KEYWORDS.push('apex:message@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_message.htm');
VF_KEYWORDS.push('apex:messages@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_messages.htm');
VF_KEYWORDS.push('apex:outputField@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_outputField.htm');
VF_KEYWORDS.push('apex:outputLabel@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_outputLabel.htm');
VF_KEYWORDS.push('apex:outputLink@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_outputLink.htm');
VF_KEYWORDS.push('apex:outputPanel@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_outputPanel.htm');
VF_KEYWORDS.push('apex:outputText@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_outputText.htm');
VF_KEYWORDS.push('apex:page@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_page.htm');
VF_KEYWORDS.push('apex:pageBlock@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageBlock.htm');
VF_KEYWORDS.push('apex:pageBlockButtons@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageBlockButtons.htm');
VF_KEYWORDS.push('apex:pageBlockSection@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageBlockSection.htm');
VF_KEYWORDS.push('apex:pageBlockSectionItem@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageBlockSectionItem.htm');
VF_KEYWORDS.push('apex:pageBlockTable@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageBlockTable.htm');
VF_KEYWORDS.push('apex:pageMessage@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageMessage.htm');
VF_KEYWORDS.push('apex:pageMessages@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_pageMessages.htm');
VF_KEYWORDS.push('apex:panelBar@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_panelBar.htm');
VF_KEYWORDS.push('apex:panelBarItem@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_panelBarItem.htm');
VF_KEYWORDS.push('apex:panelGrid@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_panelGrid.htm');
VF_KEYWORDS.push('apex:panelGroup@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_panelGroup.htm');
VF_KEYWORDS.push('apex:param@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_param.htm');
VF_KEYWORDS.push('apex:relatedList@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_relatedList.htm');
VF_KEYWORDS.push('apex:repeat@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_repeat.htm');
VF_KEYWORDS.push('apex:scontrol@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_scontrol.htm');
VF_KEYWORDS.push('apex:sectionHeader@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_sectionHeader.htm');
VF_KEYWORDS.push('apex:selectCheckboxes@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_selectCheckboxes.htm');
VF_KEYWORDS.push('apex:selectList@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_selectList.htm');
VF_KEYWORDS.push('apex:selectOption@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_selectOption.htm');
VF_KEYWORDS.push('apex:selectOptions@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_selectOptions.htm');
VF_KEYWORDS.push('apex:selectRadio@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_selectRadio.htm');
VF_KEYWORDS.push('apex:stylesheet@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_stylesheet.htm');
VF_KEYWORDS.push('apex:tab@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_tab.htm');
VF_KEYWORDS.push('apex:tabPanel@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_tabPanel.htm');
VF_KEYWORDS.push('apex:toolbar@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_toolbar.htm');
VF_KEYWORDS.push('apex:toolbarGroup@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_toolbarGroup.htm');
VF_KEYWORDS.push('apex:variable@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_variable.htm');
VF_KEYWORDS.push('apex:vote@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_vote.htm');
VF_KEYWORDS.push('ideas:detailOutputLink@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_ideas_detailOutputLink.htm');
VF_KEYWORDS.push('ideas:listOutputLink@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_ideas_listOutputLink.htm');
VF_KEYWORDS.push('ideas:profileListOutputLink@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_ideas_profileListOutputLink.htm');
VF_KEYWORDS.push('knowledge:articleList@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_knowledge_articleList.htm');
VF_KEYWORDS.push('knowledge:articleTypeList@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_knowledge_articleTypeList.htm');
VF_KEYWORDS.push('knowledge:categoryList@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_knowledge_categoryList.htm');
VF_KEYWORDS.push('messaging:attachment@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_messaging_attachment.htm');
VF_KEYWORDS.push('messaging:emailHeader@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_messaging_emailHeader.htm');
VF_KEYWORDS.push('messaging:emailTemplate@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_messaging_emailTemplate.htm');
VF_KEYWORDS.push('messaging:htmlEmailBody@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_messaging_htmlEmailBody.htm');
VF_KEYWORDS.push('messaging:plainTextEmailBody@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_messaging_plainTextEmailBody.htm');
VF_KEYWORDS.push('site:googleAnalyticsTracking@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_site_googleAnalyticsTracking.htm');
VF_KEYWORDS.push('site:previewAsAdmin@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_site_previewAsAdmin.htm');
VF_KEYWORDS.push('$Action@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor817');
VF_KEYWORDS.push('$Api@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor819');
VF_KEYWORDS.push('$Component@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor821');
VF_KEYWORDS.push('$componentLabel@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor823');
VF_KEYWORDS.push('$CurrentPage@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor825');
VF_KEYWORDS.push('$Label@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor827');
VF_KEYWORDS.push('$Label.Site@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor829');
VF_KEYWORDS.push('$ObjectType@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor831');
VF_KEYWORDS.push('$Organization@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor833');
VF_KEYWORDS.push('$Page@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor835');
VF_KEYWORDS.push('$Profile@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor837');
VF_KEYWORDS.push('$Resource@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor839');
VF_KEYWORDS.push('$SControl@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor841');
VF_KEYWORDS.push('$Site@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor843');
VF_KEYWORDS.push('$System.OriginDateTime@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor845');
VF_KEYWORDS.push('$User@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor847');
VF_KEYWORDS.push('$User.UITheme@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor849');
VF_KEYWORDS.push('$User.UIThemeDisplayed@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor849');
VF_KEYWORDS.push('$UserRole@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_global.htm#kanchor853');
VF_KEYWORDS.push('FUNCTION DATE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e578');
VF_KEYWORDS.push('FUNCTION DATEVALUE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e578');
VF_KEYWORDS.push('FUNCTION DAY@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e578');
VF_KEYWORDS.push('FUNCTION MONTH@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e578');
VF_KEYWORDS.push('FUNCTION NOW@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e578');
VF_KEYWORDS.push('FUNCTION TODAY@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e578');
VF_KEYWORDS.push('FUNCTION YEAR@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e578');
VF_KEYWORDS.push('FUNCTION BLANKVALUE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e923');
VF_KEYWORDS.push('FUNCTION ISBLANK@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e923');
VF_KEYWORDS.push('FUNCTION NULLVALUE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e923');
VF_KEYWORDS.push('FUNCTION PRIORVALUE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e923');
VF_KEYWORDS.push('FUNCTION AND@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION CASE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION IF@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION ISCHANGED@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION ISNEW@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION ISNUMBER@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION NOT@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION OR@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1097');
VF_KEYWORDS.push('FUNCTION ABS@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION CEILING@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION EXP@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION FLOOR@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION LN@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION LOG@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION MAX@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION MIN@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION MOD@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION ROUND@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION SQRT@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1527');
VF_KEYWORDS.push('FUNCTION BEGINS@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION BR@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION CONTAINS@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION FIND@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION GETSESSIONID@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION HTMLENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION HYPERLINK@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION IMAGE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION INCLUDES@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION ISPICKVAL@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION JSENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION JSINHTMLENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION LEFT@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION LEN@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION LOWER@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION LPAD@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION MID@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION RIGHT@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION RPAD@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION SUBSTITUTE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION TEXT@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION TRIM@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION UPPER@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION URLENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION VALUE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e1925');
VF_KEYWORDS.push('FUNCTION GETRECORDIDS@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e2960');
VF_KEYWORDS.push('FUNCTION INCLUDE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e2960');
VF_KEYWORDS.push('FUNCTION LINKTO@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e2960');
VF_KEYWORDS.push('FUNCTION REGEX@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e2960');
VF_KEYWORDS.push('FUNCTION REQUIRESCRIPT@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e2960');
VF_KEYWORDS.push('FUNCTION URLFOR@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e2960');
VF_KEYWORDS.push('FUNCTION VLOOKUP@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e2960');
VF_KEYWORDS.push('FUNCTION HTMLENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e3342');
VF_KEYWORDS.push('FUNCTION JSENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e3342');
VF_KEYWORDS.push('FUNCTION JSINHTMLENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e3342');
VF_KEYWORDS.push('FUNCTION URLENCODE@@http://www.salesforce.com/us/developer/docs/pages/Content/pages_variables_functions.htm#d7990e3342');

