////////////////////////////////////////////////////////////////////////////////
// Constants
////////////////////////////////////////////////////////////////////////////////

// <script language="javascript">
// Copyright (c) Home Automation, Inc. All rights reserved.          
// Copyright (c) HomeRun Software Systems LLC. All rights reserved.

var S_OK      = 0;
var E_FAIL    = -1;
var E_NOTIMPL = -2;		// Not Implemented Error

var DIR_UP   = 1;		// Navigation Direction Up (Scroll Down)
var DIR_DOWN = 0;		// Navigation Direction Down (Scroll Up)

////////////////////////////////////////////////////////////////////////////////
// SETTINGS
////////////////////////////////////////////////////////////////////////////////
var DEMO_MODE			      = false;	// Run in demo mode
var HOME_PAGE_EVENTS_DISPLAY  = 5;		// Number of events to display on the home page
var EVENT_PAGE_EVENTS_DISPLAY = 100;	// Number of events to display on the events page
var EVENT_NOTIFY_POPUP_TIME   = 10000;	// Milliseconds to display event notification popup

////////////////////////////////////////////////////////////////////////////////
// Product Information
////////////////////////////////////////////////////////////////////////////////
var PI_LongName  = "HAI Home Control for Windows Media Center";
var PI_ShortName = "HAI Home Control";

////////////////////////////////////////////////////////////////////////////////
// Pages
////////////////////////////////////////////////////////////////////////////////
var PAGE_HOME					= 110;	// Home page
var PAGE_CONTROL				= 1;	// Lights list page
var PAGE_CONTROL_COMMAND		= 11;	// Lights command page
var PAGE_CONTROL_OUTPUTS		= 12;	// Appliances list page
var PAGE_CONTROL_COMMAND_APLNC	= 13;	// Appliances command page
var PAGE_SECURITY				= 2;	// Security Overview page
var PAGE_SECURITY_ZONES			= 21;	// Security Zones List page
var PAGE_SECURITY_ZONE			= 22;	// Security Individual Zone control page
var PAGE_TEMPERATURE			= 3;	// Temperature Overview page
var PAGE_TEMPERATURE_THERMOSTAT = 31;	// Thermostat control page
var PAGE_TEMPERATURE_TEMP		= 32;	// Temperature Sensor control page
var PAGE_TEMPERATURE_PESM		= 33;	// Temperature PESM control page
var PAGE_TEMPERATURE_HUMIDITY	= 34;	// Humidity sensor control page
var PAGE_BUTTON					= 4;	// Button list page
var PAGE_EVENT					= 5;	// Event list page
var PAGE_MESSAGE				= 6;
var PAGE_STATUS					= 88;
var PAGE_UPDATES				= 89;
var PAGE_SETTINGS_MAIN			= 90;	// Main Settings Page
var PAGE_SETTINGS_CONTROLLER	= 93;	// Controller Settings Page
var PAGE_WELCOME				= 91;	// Welcome page
var PAGE_LOGIN					= 92;	// Login page
var PAGE_CTRLR_WIZ_CONNECTION   = 100;	// Controller Wizard - Connection
var PAGE_CTRLR_WIZ_SETUP_NAMES  = 101;	// Controller Wizard - Setup & Names Download
var PAGE_CTRLR_WIZ_TIME_SYNC	= 102;	// Controller Wizard - Update controller time
var PAGE_CTRLR_WIZ_SERIAL		= 103;	// Controller Wizard - Serial port/baud rate
var PAGE_CTRLR_WIZ_ADDRESS_PORT = 104;	// Controller Wizard - Network IP Address & Port
var PAGE_CTRLR_WIZ_NWRK_ENCRYPT	= 105;	// Controller Wizard - Network Encryption Key
var PAGE_CTRLR_WIZ_CODE			= 106;	// Controller Wizard - Code
var PAGE_CTRLR_WIZ_FINISH		= 108;	// Controller Wizard - Finish Page
var PAGE_SYNC_PREFERENCES		= 107;	// Sync Settings Page
var PAGE_NO_CONTROLLER			= 109;	// No Controller Page
var PAGE_HELP					= 111;	// Help Page
var PAGE_RULES_LIST				= 120;	// Video Rules List
var PAGE_RULES_VIDEO_PROPERTIES	= 121;	// Video Rules Video Properties
var PAGE_RULES_CONDITION		= 122;	// Video Rules Condition (Event)
var PAGE_RULES_ALARM			= 123;	// Video Rules Alarm Config
var PAGE_RULES_SECURITY			= 124;	// Video Rules Security Arming Config
var PAGE_RULES_UNIT				= 125;	// Video Rules Unit Config
var PAGE_RULES_ZONE				= 126;	// Video Rules Zone Config
var PAGE_RULES_NAME				= 127;	// Video Rules Name
var PAGE_RULES_EDIT				= 128;	// Video Rules Edit
var PAGE_SRVRLOG				= 129;	// Server log file

////////////////////////////////////////////////////////////////////////////////
// Error Messages
////////////////////////////////////////////////////////////////////////////////
var ERR_UNKNOWN = "80004005:An unknown error has occurred.";
var ERR_COMMSERVER_INIT_FAILURE = "101:HAI Home Control is unable to communicate with the HAI controller.  You must enter valid connection information to establish communications with the controller.  Press OK to verify and change settings.";
var ERR_INVALID_LOGIN = "102:An invalid user code was specified. Verify a proper user code is specified and try again.";
var ERR_INVALID_CREDENTIALS = "103:The logon credentials are no longer valid. Please login and try again.";
var ERR_FAILURE_GETTING_USERS = "104:Unable to obtain a list of users from the controller.";
var ERR_XSL_LOAD_FAILURE = "105:Unable to load valid page format details for the specified page.";
var ERR_INVALID_PAGE = "106:An invalid page was requested to be displayed.";
var ERR_NOT_IMPLEMENTED = "107:This function is not yet implemented (NYI).";
var ERR_XML_DATA_LOAD_FAILURE = "109: Could not load data for the specified page.";
var ERR_DEMO_COMMANDS = "110: Issuing commands is not enabled when running in demo mode.";
var ERR_NYI = "111: This feature is not yet implemented (NYI)";
var ERR_COMMSERVER_NOT_LOADED = "112:The Communications Service is not loaded. Verify the Communications Service is running and try again.";
var ERR_INVALID_IP = "113:The specified IP address is invalid.";
var ERR_INVALID_PORT = "114:The specified port number is invalid.";
var ERR_INVALID_ENCRYPTION_KEY = "115:The specified encryption key is invalid.";
var ERR_INVALID_ACCESS_CODE = "116:The specified Access Code is invalid.";
var ERR_INVALID_COMMAND = "117:The specified command is invalid.";
var ERR_ACCESS_DENIED = "118:An invalid user code was specified. The command was not issued.";
var ERR_HELP_LOAD_FAILURE = "119:Unable to load the help file.";
var ERR_EVENTMGR_CREATION_FAILURE  = "120:Unable to create Event Management Object. Verify a valid installation exists.";
var ERR_NO_VIDEO_HANDLER = "121:Unable to create the MCE Video Event Handler. Verify a valid installation exists.";
var ERR_RULE_SAVE_FAILURE = "122:Unable to save the rule. Verify a valid installation exists."
var ERR_UNSUPPORTED_REQUIRES_MCE = "123:This command is only available when running from within Windows Media Center";
var ERR_DEMO_RULE_EDIT = "124: Editing Rules is not enabled when running in demo mode.";

////////////////////////////////////////////////////////////////////////////////
// General Messages
////////////////////////////////////////////////////////////////////////////////
var MSG_CHOOSE_TEST_CONNECTION = "Before completing the wizard you must first verify the settings by choosing the 'Connect' button.";
var MSG_DOWNLOAD_DATA = "Retrieving data may take several minutes. Do not exit until the retrieval completes. Choose OK to begin retrieval.";
var MSG_TEST_CONNECTION = "Connecting may take several minutes. Do not exit until the connection completes. Choose OK to begin connection.";

////////////////////////////////////////////////////////////////////////////////
// Sounds
////////////////////////////////////////////////////////////////////////////////
var SOUND_SELECT = "select.wav";
var SOUND_FOCUS  = "focus.wav";
var SOUND_BONK   = "bonk.wav";		// Play for a negative action
var SOUND_NAVIGATE = "navigate.wav";
var SOUND_EVENT  = "event_notification.wav";
var SOUND_WELCOME = "welcome.wav";

////////////////////////////////////////////////////////////////////////////////
// Images
////////////////////////////////////////////////////////////////////////////////
var IMG_ONNOTSECURE				= "images/icon_security_open_red.png";
var IMG_STATUSNOTOK				= "images/icon_security_trouble_yellow.png";
var IMG_OFFNOTSECURE			= "images/icon_security_open_green.png";
var IMG_ONSECURE				= "images/icon_security_closed_red.png";
var IMG_BYPASSED				= "images/icon_security_closed_blue.png";
var IMG_SECURITYONSECURE		= "images/icon_security_closed_red.png";
var IMG_SECURITYOFFNOTSECURE	= "images/icon_security_open_green.png";

////////////////////////////////////////////////////////////////////////////////
// MCE Defines
////////////////////////////////////////////////////////////////////////////////
var MCE_PAGE_RECORDED_TV	= "{42c5a65e-35d4-48c8-8828-df636825e091}";

////////////////////////////////////////////////////////////////////////////////
// Controller Data Client Constants
////////////////////////////////////////////////////////////////////////////////

// Temperature Format
var tfFarenheit		= 1;
var tfCelsius		= 2;

// Automation Object Type
var autoTypeUnit = 1;
var autoTypeRelay = 2;
var autoTypeFlag = 3;
var autoTypeZone = 4;
var autoTypeArea = 5;
var autoTypeButton = 6;
var autoTypeMessage = 7;
var autoTypeThermostat = 8;
var autoTypeTemperatureSensor = 9;
var autoTypeVideo = 10;
var autoTypePESM = 11;
var autoTypeRule = 12;
var autoTypeChannel = 13;
var autoTypeServerLog = 14;
var autoTypeVidLibrary = 15;
var autoTypeHumidity = 16;

// Commands
var control_off = 1;							// Control Command OFF
var control_on = 2;								// Control Command ON
var control_level = 3;							// Control Command LEVEL
var control_bright = 4;							// Control Command BRIGHTEN
var control_dim = 5;							// Control Command DIM
var control_all_on = 6;							// Control Command ALL ON
var control_all_off = 7;						// Control Command ALL OFF
var control_ramp = 8;							// Control Command RAMP
var control_set = 9;							// Control Command SET
var control_inc = 10;							// Control Command INCREMENT
var control_dec = 11;							// Control Command DECREMENT
var control_scene = 12;							// Control Command SCENE
var duration_Indefinitely = 0;					// Indefinite Duration for commands
var duration_Seconds = 1;						// Seconds Duration for commands
var duration_Minutes = 2;						// Minutes Duration for commands
var duration_Hours = 3;							// Hours Duration for commands
var rule_enable = 20;							// Rule Enable
var rule_disable = 21;							// Rule Disable
var rule_add = 22;								// Rule Add
var rule_delete = 23;							// Rule Delete
var rule_edit = 24;								// Rule Edit
var button_execute = 30;						// Button execution
var message_show = 40;							// Message Show 
var message_say = 41;							// Message Say
var message_log = 42;							// Message Log
var message_clear = 43;							// Message Clear
var message_custom = 44;						// Message Custom 
var message_clear_all = 45;						// Message Clear All
var video_start_encoder = 50;					// Start video encoder
var video_stop_encoder = 51;					// Stop video encoder
var video_record_start = 52;					// Start Recording to file
var video_record_stop = 53;						// Stop Recording from file
var video_channel_jump = 54;					// Change channel to a specific number
var video_channel_add = 55;						// Add a new channel
var video_channel_delete = 56;					// Delete a channel
var video_channel_edit = 57;					// Edit an existing channel
var video_request_status = 58;					// Request Video Status
var security_armday = 60;						// Arm security Day
var security_disarm = 61;						// Disarm security
var security_armnight = 62;						// Arm security Day
var security_armaway = 63;						// Arm security Day
var security_armvacation = 64;					// Arm security Day
var security_armdayinstant = 65;				// Arm security Day
var security_armnightdelayed = 66;				// Arm security Day
var security_bypass = 67;						// Bypass zone
var security_restore = 68;						// Restore zone
var security_restoreallzones = 69;				// Restore all zones
var security_restoreallareas = 70;				// Restore all areas
var security_armallareas = 120;					// Arm all areas
var security_disarmallareas = 121;				// Disarm all areas
var temperature_setpoint_heat = 71;				// Heat Setpoint
var temperature_setpoint_cool = 72;				// Cool Setpoint
var temperature_setpoint_low = 73;				// Low Setpoint
var temperature_setpoint_high = 74;				// High Setpoint
var temperature_mode_system = 75;				// System Mode
var temperature_mode_fan = 76;					// Fan Mode
var temperature_mode_hold = 77;					// Hold Mode
var temperature_heat = 78;						// System Mode Heat
var temperature_cool = 79;						// System Mode Cool
var temperature_auto = 80;						// Fan Mode Auto/Thermostat Auto
var temperature_on = 81;						// Fan Mode On
var temperature_hold = 82;						// Hold Mode Hold
var temperature_off = 83;						// Hold Mode Off/Thermostat Off
var temperature_pesm_on					 = 84;	// PESM On
var temperature_pesm_off				 = 85;	// PESM Off
var temperature_therm_heat_inc			 = 86;	// Increment Heat Temperature
var temperature_therm_heat_dec			 = 87;	// Decrement Heat Temperature
var temperature_therm_cool_inc			 = 88;	// Increment Cool Temperature
var temperature_therm_cool_dec			 = 89;	// Decrement Cool Temperature
var temperature_temp_low_inc			 = 90;	// Increment Heat Temperature
var temperature_temp_low_dec			 = 91;	// Decrement Heat Temperature
var temperature_temp_high_inc			 = 92;	// Increment Cool Temperature
var temperature_temp_high_dec			 = 93;	// Decrement Cool Temperature
var temperature_temp_setpoint_low_humid  = 94;	// Humidity Sensor Low Setpoint
var temperature_temp_setpoint_high_humid = 95;	// Humidity Sensor High Setpoint
var log_clear_server_log				 = 100;	// Clear server log
var vid_library_delete					 = 110;	// Delete file from video library
var vid_library_play					 = 111;	// Play file from video library

// Event Conditions
var EC_ALARM = 1;
var EC_ALL_ON_OFF = 2;
var EC_ANY = 3;
var EC_BATTERY = 4;
var EC_DCM = 5;
var EC_ENERGY = 6;
var EC_BUTTON = 7;
var EC_PHONE = 8;
var EC_POWER = 9;
var EC_SECURITY = 10;
var EC_UNIT = 11;
var EC_X10 = 12;
var EC_ZONE = 13;
var EC_SCENE = 15;


////////////////////////////////////////////////////////////////////////////////
// Controller Data Server Constants
////////////////////////////////////////////////////////////////////////////////
// Unit Status Flags
var unitstatX10LastCmdOff 				= 0;
var unitstatX10LastCmdOn 				= 1;
var unitstatX10LastCmdDimMASK 			= 16;
var unitstatX10LastCmdBrightMASK 		= 20;
var unitstatX10LastCmdLevelSTART 		= 34;
var unitstatVoltageOff					= 0;
var unitstatVoltageOn					= 1;

// Expansion Status Flags
var expstatACPowerOff 					= 1;
var expstatBatteryLow 					= 2;
var expstatCommFailure 					= 128;

// Area Arm Mode
var areamodeOff							= 0;
var areamodeDay							= 1;
var areamodeNight						= 2;
var areamodeAway						= 3;
var areamodeVacation					= 4;
var areamodeDayInstant					= 5;
var areamodeNightDelayed				= 6;
var areamodeAny							= -1;

// Thermostat Status Flags
var tsfCommFailure						= 1;
var tsfFreezeAlarm						= 2;

// Thermostat System Modes
var tsmOff								= 0;
var tsmHeat								= 1;
var tsmCool								= 2;
var tsmAuto								= 3;
var tsmEmergencyHeat					= 4;

// Thermostat Fan Modes
var tfmAuto								= 0;
var tfmOn								= 1;

// Thermostat Hold Status
var thsOff								= 0;
var thsHold								= 255;

// Server Status
var ssStarting							= 1;
var ssLoadingSetup						= 2;
var ssLoadingNames						= 3;
var ssLoadingExtensions					= 4;
var ssInitializing						= 5;
var ssInteractive						= 16;
var ssStopping							= 17;
var ssStopped							= 18;
var ssFailure							= 128;

// Event Types
var eZoneBypass							= 4;
var eZoneRestored						= 5;
var eAllAreaZonesRestored				= 6;
var eAreaDisarmed						= 48;
var eAreaArmedDay						= 49;
var eAreaArmedNight						= 50;
var eAreaArmedAway						= 51;
var eAreaArmedVacation					= 52;
var eAreaArmedDayInstant				= 53;
var eAreaArmedNightDelayed				= 54;
var eZoneTripped						= 128;
var eZoneTrouble						= 129;
var eRemotePhoneAccess					= 130;
var eRemotePhoneLockout					= 131;
var eZoneAutoBypass						= 132;
var eZoneTroubleCleared					= 133;
var ePCAccess							= 134;
var eAreaAlarmActivated					= 135;
var eAreaAlarmReset						= 136;
var eSystemReset						= 137;
var eMessageLogged						= 138;

// Bypass Event
var bmBypass							= 0;
var bmAutoBypass						= 1;

// Trouble Event
var ttTripped							= 0;
var ttTrouble							= 1;
var ttTroubleCleared					= 2;

// Expansion Types
var etNotUsed							= 0;
var etHardwireExpander					= 1;
var etAMPLighting						= 2;
var etHMSLink							= 3;
var etSSHLink							= 3; 
var etOmniLink							= 3; 
var etProLink							= 4;

// System Event Types
var sePhoneLineDead						= 1;
var sePhoneLineRing						= 2;
var sePhoneLineOffHook					= 3;
var sePhoneLineOnHook					= 4;
var seACPowerOff						= 5;
var seACPowerRestored					= 6;
var seBatteryLow						= 7;
var seBatteryOK							= 8;
var seDCMTrouble						= 9;
var seDCMOK								= 10;
var seEnergyCostLow						= 11;
var seEnergyCostMid						= 12;
var seEnergyCostHigh					= 13;
var seEnergyCostCritical				= 14;
var seUserMacroButton					= 15;
var seAlarmActivation					= 16;
var seZoneStateChange					= 17;
var seUnitStateChange					= 18;
var seX10CodeReceived					= 19;
var seSecurityArming					= 20;
var seAllOnOff							= 21;

// Alarm Types
var atAny								= 0;
var atBurglary							= 1;
var atFire								= 2;
var atGas								= 3;
var atAuxiliary							= 4;
var atFreeze							= 5;
var atWater								= 6;
var atDuress							= 7;
var atTemperature						= 8;

// Temperature Sensor Types
var tstEnergySaver						= 0;
var tstOutdoorTemperature				= 1;
var tstTemperature						= 2;
var tstTemperatureAlarm					= 3;
var tstHumidity							= 4;

// Thermostat Type
var ttNotUsed							= 0;
var ttAutoHeatCool						= 1;
var ttHeatCool							= 2;
var ttHeatOnly							= 3;
var ttCoolOnly							= 4;
var ttSetpointOnly						= 5;

// Unit Types
var utX10								= 0;
var utVoltage							= 1;
var utExpansionEncl						= 2;
var utCounter							= 3;

// Zone Types
var ztEntryExit							= 0;
var ztPerimeter							= 1;
var ztNightInterior						= 2;
var ztAwayInterior						= 3;
var zt2XEntryDelay						= 4;
var zt4XEntryDelay						= 5;
var ztLatchPerimeter					= 6;
var ztLatchNightInterior				= 7;
var ztLatchAwayInterior					= 8;
var ztPanic								= 16;
var ztPoliceEmergency					= 17;
var ztSilentDuress						= 18;
var ztTamper							= 19;
var ztLatchTamper						= 20;
var ztFire								= 32;
var ztFireEmergency						= 33;
var ztGas								= 34;
var ztAuxEmergency						= 48;
var ztTrouble							= 49;
var ztFreeze							= 54;
var ztWater								= 55;
var ztFireTamper						= 56;
var ztAuxiliary							= 64;
var ztKeySwitch							= 65;
var ztEnergySaver						= 80;
var ztOutdoorTemperature				= 81;
var ztTemperature						= 82;
var ztTemperatureAlarm					= 83;
var ztUnknown							= 255;

// Zone Current Condition
var zoneSecure							= 0;
var zoneNotReady						= 1;
var zoneTrouble							= 2;

// Zone Alarm Status
var alarmSecure							= 0;
var alarmTripped						= 1;
var alarmReset							= 2;

// Zone Arming Status
var armingDisarmed						= 0;
var armingArmed							= 1;
var armingUserBypass					= 2;
var armingSystemBypass					= 3;

// System Time
var Atantic								= 4;
var tzEastern							= 5;
var tzCentral							= 6;
var tzMountain							= 7;
var tzPacific							= 8;
var tzYukon								= 9;
var tzAlaskaHawaii						= 10;
var tzBering							= 11;

// Temperature Format
var tfFarenheit							= 1;
var tfCelsius							= 2;

// Temperature Sensor Status
var tssOff								= 0;
var tssOn								= 1;

// User Variables
var uvUserName							= 0;
var uvSessionID							= 1;
var uvWebLinkID							= 2;
var uvUserCode							= 3;

// Download Types
var DL_SETUP							= 0;	// Setup
var DL_NAMES							= 1;	// Names

//</script>
