1 define([],
  2 function() {
  3 	        /**
  4 		 * A Collection Framework class contains all basic classes like Stack, Queue, HashMap, ArrayList, Set
  5 		 * @name CONSTANT
  6 		 * @class CONSTANT
  7 		 * @example require('CONSTANT')
  8 		 * @exports CONSTANT
  9 		 * @version 1.0
 10 		 * @module CONSTANT
 11 		 **/
 12 	var NEXCEL_APP_CONSTANT = {
 13 			/**
 14 			 * Object types provided by CONSTANT 
 15 			 * @name ObjectType
 16 			 * @class ObjectType
 17 			 * @example require('CONSTANT').ObjectType.EXP_CONST
 18 			 * @example require('CONSTANT').ObjectType.EXP_VAR
 19 			 * @example require('CONSTANT').ObjectType.EXP_CELL
 20 			 * @example require('CONSTANT').ObjectType.EXP_ABS_CELL
 21 			 * @example require('CONSTANT').ObjectType.EXP_SHEET_CELL
 22 			 * @example require('CONSTANT').ObjectType.EXP_RANGE_CELL
 23 			 * @example require('CONSTANT').ObjectType.EXP_RANGE_NAME
 24 			 * @example require('CONSTANT').ObjectType.EXP_OP
 25 			 * @example require('CONSTANT').ObjectType.VARIABLE
 26 			 * @example require('CONSTANT').ObjectType.RANGE
 27 			 * @example require('CONSTANT').ObjectType.IF
 28 			 * @example require('CONSTANT').ObjectType.CONSTANT_VAL
 29 			 * @example require('CONSTANT').ObjectType.CONSTANT_NAM
 30 			 * @example require('CONSTANT').ObjectType.BIN_OP
 31 			 * @example require('CONSTANT').ObjectType.BIN_REL
 32 			 * @example require('CONSTANT').ObjectType.OPER_EQUAL
 33 			 * @example require('CONSTANT').ObjectType.FACT
 34 			 * @example require('CONSTANT').ObjectType.CLAUSE_TYPE_BODY
 35 			 * @example require('CONSTANT').ObjectType.CLAUSE_TYPE_NO_BODY
 36 			 * @example require('CONSTANT').ObjectType.CEELBASE_TYPE_1
 37 			 * @example require('CONSTANT').ObjectType.CEELBASE_TYPE_2
 38 			 * @example require('CONSTANT').ObjectType.CEELBASE_TYPE_3
 39 			 * @example require('CONSTANT').ObjectType.CEELBASE_TYPE_4
 40 			 * @example require('CONSTANT').ObjectType.FACT_LIST
 41 			 * @example require('CONSTANT').ObjectType.CONSTR_EQ_LIST
 42 			 * @example require('CONSTANT').ObjectType.BIN_REL_LIST
 43 			 * @example require('CONSTANT').ObjectType.NEG_FACT_LIST
 44 			 * @example require('CONSTANT').ObjectType.NEXCEL_RT_PROGRAM
 45 			 * @example require('CONSTANT').ObjectType.RUNTIME_TABLE
 46 			 * @exports CONSTANT.ObjectType
 47 			 * @version 1.0
 48 			 * @module CONSTANT.ObjectType
 49 			 * @memberOf CONSTANT
 50 			 * @field
 51 			 **/
 52 			ObjectType:{ //MAX: 23 EXP_ABS_CELL
 53 				EXP_CONST :1,
 54 				EXP_VAR:2,
 55 				EXP_CELL:3,
 56 				EXP_ABS_CELL:23,
 57 				EXP_SHEET_CELL:15,
 58 				EXP_RANGE_CELL:4,
 59 				EXP_RANGE_NAME:22,
 60 				EXP_OP:5,	//RANGE_NAME( EXPS )
 61 				VARIABLE:6,
 62 				RANGE : 7,
 63 				IF : 8,
 64 				CONSTANT_VAL:9,
 65 				CONSTANT_NAM:10,
 66 				BIN_OP:11,
 67 				BIN_REL:12,
 68 				OPER_EQUAL:13,
 69 				//RANGE:14, //A1:__
 70 				FACT:14,
 71 				CLAUSE_TYPE_BODY:16,
 72 				CLAUSE_TYPE_NO_BODY:17,
 73 				CEELBASE_TYPE_1:18, // A1
 74 				CEELBASE_TYPE_2:19, // A_
 75 				CEELBASE_TYPE_3:20, //_A
 76 				CEELBASE_TYPE_4:21,  //_ _
 77 				//23 Completed
 78 				//CONSTANTS FOR FACT, CONSTR_EQ, BIN_REL 
 79 				FACT_LIST:101,
 80 				CONSTR_EQ_LIST:102,
 81 				BIN_REL_LIST:103,
 82 				NEG_FACT_LIST:104,
 83 				
 84 				
 85 				NEXCEL_RT_PROGRAM:111,
 86 				RUNTIME_TABLE:112,
 87 			},
 88 		
 89 			/**
 90 			 * Object types provided by CONSTANT 
 91 			 * @name ProgramType
 92 			 * @class ProgramType
 93 			 * @example require('CONSTANT').ProgramType.NEXCEL
 94 			 * @example require('CONSTANT').ProgramType.EXCEL
 95 			 * @example require('CONSTANT').ProgramType.RUNTIME_TABLE
 96 			 * @exports CONSTANT.ProgramType
 97 			 * @version 1.0
 98 			 * @module CONSTANT.ProgramType
 99 			 * @memberOf CONSTANT
100 			 * @field
101 			 **/
102 			ProgramType : {
103 				NEXCEL:1001,
104 				EXCEL:1002,
105 				RUNTIME_TABLE:1003,
106 			},
107 			/**
108 			 * Object types provided by CONSTANT 
109 			 * @name BinOperation
110 			 * @class BinOperation
111 			 * @example require('CONSTANT').BinOperation.OP_EQUAL
112 			 * @example require('CONSTANT').BinOperation.OP_NOT_EQUAL
113 			 * @example require('CONSTANT').BinOperation.OP_PLUS
114 			 * @example require('CONSTANT').BinOperation.OP_MINUS
115 			 * @example require('CONSTANT').BinOperation.OP_MULTIPLY
116 			 * @example require('CONSTANT').BinOperation.OP_DIV
117 			 * @example require('CONSTANT').BinOperation.OP_EXP
118 			 * @exports CONSTANT.BinOperation
119 			 * @version 1.0
120 			 * @module CONSTANT.BinOperation
121 			 * @memberOf CONSTANT
122 			 * @field
123 			 **/
124 			BinOperation : {
125 				OP_EQUAL:'=',
126 				OP_NOT_EQUAL:'!=',
127 				OP_PLUS:'\+',
128 				OP_MINUS:'-',
129 				OP_MULTIPLY:'\*',
130 				OP_DIV:'/',
131 				OP_EXP:'^',
132 			},
133 			/**
134 			 * Object types provided by CONSTANT 
135 			 * @name BinRelation
136 			 * @class BinRelation
137 			 * @example require('CONSTANT').BinRelation.EQUAL
138 			 * @example require('CONSTANT').BinRelation.NOT_EQUAL
139 			 * @example require('CONSTANT').BinRelation.GREATER_THAN_OR_EQUAL
140 			 * @example require('CONSTANT').BinRelation.GREATER_THAN
141 			 * @example require('CONSTANT').BinRelation.LESS_THAN_OR_EQUAL
142 			 * @example require('CONSTANT').BinRelation.LESS_THAN
143 			 * @exports CONSTANT.BinRelation
144 			 * @version 1.0
145 			 * @module CONSTANT.BinRelation
146 			 * @memberOf CONSTANT
147 			 * @field
148 			 **/
149 			BinRelation:{
150 				EQUAL:"=",
151 				NOT_EQUAL:"!=",
152 				GREATER_THAN_OR_EQUAL:">=",
153 				GREATER_THAN:">",
154 				LESS_THAN_OR_EQUAL:"<=",
155 				LESS_THAN:"<"
156 			},
157 			/**
158 			 * Object types provided by CONSTANT 
159 			 * @name ResultType
160 			 * @class ResultType
161 			 * @example require('CONSTANT').ResultType.GROUP
162 			 * @example require('CONSTANT').ResultType.SINGLE
163 			 * @exports CONSTANT.ResultType
164 			 * @version 1.0
165 			 * @module CONSTANT.ResultType
166 			 * @memberOf CONSTANT
167 			 * @field
168 			 **/
169 			ResultType : {
170 				GROUP:2001,
171 				SINGLE:2002,
172 			},
173 			/**
174 			 * Object types provided by CONSTANT 
175 			 * @name DEP_SOURCE_TYPE
176 			 * @class DEP_SOURCE_TYPE
177 			 * @example require('CONSTANT').DEP_SOURCE_TYPE.GROUP
178 			 * @example require('CONSTANT').DEP_SOURCE_TYPE.CELL
179 			 * @exports CONSTANT.ResultType
180 			 * @version 1.0
181 			 * @module CONSTANT.DEP_SOURCE_TYPE
182 			 * @memberOf CONSTANT
183 			 * @field
184 			 **/			
185 			DEP_SOURCE_TYPE : {
186 				CELL:3001,
187 				GROUP:3002,
188 			},
189 			
190 			TARGET_TYPE : {// Used in Dependency Controller to check which kind of depenndency it have
191 				CELL:3101,
192 				GROUP:3102,
193 			},
194 			/**
195 			 * Object types provided by CONSTANT 
196 			 * @name SORTING
197 			 * @class SORTING
198 			 * @example require('CONSTANT').SORTING.ASC
199 			 * @example require('CONSTANT').SORTING.DESC
200 			 * @example require('CONSTANT').SORTING.NO
201 			 * @exports CONSTANT.SORTING
202 			 * @version 1.0
203 			 * @module CONSTANT.SORTING
204 			 * @memberOf CONSTANT
205 			 * @field
206 			 **/
207 			SORTING : {
208 				ASC:1,
209 				DESC:-1,
210 				NO:0
211 			},
212 			
213 			FunctionType : {
214 				GROUP:2100
215 			},
216 			
217 			ExplanationNodeType : {
218 					GOAL:1,
219 					PARTIAL_SOL:2//Partial Solution
220 			},
221 			
222 			TreeNodeType : {
223 				SINGLE_VAL:3200,
224 				MULTI_VAL:3201
225 			}
226 	};
227 	return NEXCEL_APP_CONSTANT;
228 });
229