CS_LOCALE = "en";
CS_TEXT_ALPHA      = "A-Za-z\u00c0-\u00d6\u00d8-\u01a5\u01a7-\u01a9\u01ab-\u01b9\u01bc-\u01bd\u01cd-\u01f0\u01f4-\u01f5\u01fa-\u0293\u0299-\u02a0\u0386\u0388-\u038f\u0391-\u03ce\u03e2-\u03ef\u0401-\u0481\u0490-\u04bf\u04c1-\u04c4\u04c7-\u04c8\u04cb-\u04cc\u04d0-\u04eb\u04ee-\u04f5\u04f8-\u04f9\u0531-\u0556\u0561-\u0586\u05d0-\u05ea\u0621-\u063a\u0641-\u064a\u0671-\u06d3\u06d5\u06fa-\u06fc\u0710\u0712-\u072c\u0780-\u07a5\u0905-\u0939\u093d\u0950\u0958-\u0961\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u10a0-\u10c5\u1e00-\u1e9b\u1ea0-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59-\u1fbc\u1fc2-\u1fcc\u1fd0-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ffc\u3041-\u3094\u30a1-\u30fa\u30fc-\u30fe\u3105-\u312c\u3131-\u318e\u31a0-\u31b7\u3400-\u34ff\u4d00-\u4db5\u4e00-\u9fa5\uac00-\ud7a3\ufa00-\ufa2d\uff21-\uff3a\uff61-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
CS_TEXT_NUM        = "0-9\uff10-\uff19";
CS_TEXT_ALNUM      = "0-9A-Za-z\u00c0-\u00d6\u00d8-\u01a5\u01a7-\u01a9\u01ab-\u01b9\u01bc-\u01bd\u01cd-\u01f0\u01f4-\u01f5\u01fa-\u0293\u0299-\u02a0\u0386\u0388-\u038f\u0391-\u03ce\u03e2-\u03ef\u0401-\u0481\u0490-\u04bf\u04c1-\u04c4\u04c7-\u04c8\u04cb-\u04cc\u04d0-\u04eb\u04ee-\u04f5\u04f8-\u04f9\u0531-\u0556\u0561-\u0586\u05d0-\u05ea\u0621-\u063a\u0641-\u064a\u0671-\u06d3\u06d5\u06fa-\u06fc\u0710\u0712-\u072c\u0780-\u07a5\u0905-\u0939\u093d\u0950\u0958-\u0961\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u10a0-\u10c5\u1e00-\u1e9b\u1ea0-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59-\u1fbc\u1fc2-\u1fcc\u1fd0-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ffc\u3041-\u3094\u30a1-\u30fa\u30fc-\u30fe\u3105-\u312c\u3131-\u318e\u31a0-\u31b7\u3400-\u34ff\u4d00-\u4db5\u4e00-\u9fa5\uac00-\ud7a3\ufa00-\ufa2d\uff10-\uff19\uff21-\uff3a\uff61-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
CS_TEXT_UPPER      = "A-Z\u00c0-\u00d6\u00d8-\u00de\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0139\u013b\u013d\u013f\u0141\u0143\u0145\u0147\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178-\u0179\u017b\u017d\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018b\u018e-\u0191\u0193-\u0194\u0196-\u0198\u019c-\u019d\u019f-\u01a0\u01a2\u01a4\u01a7\u01a9\u01ac\u01ae-\u01af\u01b1-\u01b3\u01b5\u01b7-\u01b8\u01bc\u01cd\u01cf\u01d1\u01d3\u01d5\u01d7\u01d9\u01db\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f4\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0386\u0388-\u038f\u0391-\u03ab\u03e2\u03e4\u03e6\u03e8\u03ea\u03ec\u03ee\u0401-\u042f\u0460\u0462\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a\u047c\u047e\u0480\u0490\u0492\u0494\u0496\u0498\u049a\u049c\u049e\u04a0\u04a2\u04a4\u04a6\u04a8\u04aa\u04ac\u04ae\u04b0\u04b2\u04b4\u04b6\u04b8\u04ba\u04bc\u04be\u04c1\u04c3\u04c7\u04cb\u04d0\u04d2\u04d4\u04d6\u04d8\u04da\u04dc\u04de\u04e0\u04e2\u04e4\u04e6\u04e8\u04ea\u04ee\u04f0\u04f2\u04f4\u04f8\u0531-\u0556\u05d0-\u05ea\u0621-\u063a\u0641-\u064a\u0671-\u06d3\u06d5\u06fa-\u06fc\u0710\u0712-\u072c\u0780-\u07a5\u0905-\u0939\u093d\u0950\u0958-\u0961\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u10a0-\u10c5\u1e00\u1e02\u1e04\u1e06\u1e08\u1e0a\u1e0c\u1e0e\u1e10\u1e12\u1e14\u1e16\u1e18\u1e1a\u1e1c\u1e1e\u1e20\u1e22\u1e24\u1e26\u1e28\u1e2a\u1e2c\u1e2e\u1e30\u1e32\u1e34\u1e36\u1e38\u1e3a\u1e3c\u1e3e\u1e40\u1e42\u1e44\u1e46\u1e48\u1e4a\u1e4c\u1e4e\u1e50\u1e52\u1e54\u1e56\u1e58\u1e5a\u1e5c\u1e5e\u1e60\u1e62\u1e64\u1e66\u1e68\u1e6a\u1e6c\u1e6e\u1e70\u1e72\u1e74\u1e76\u1e78\u1e7a\u1e7c\u1e7e\u1e80\u1e82\u1e84\u1e86\u1e88\u1e8a\u1e8c\u1e8e\u1e90\u1e92\u1e94\u1ea0\u1ea2\u1ea4\u1ea6\u1ea8\u1eaa\u1eac\u1eae\u1eb0\u1eb2\u1eb4\u1eb6\u1eb8\u1eba\u1ebc\u1ebe\u1ec0\u1ec2\u1ec4\u1ec6\u1ec8\u1eca\u1ecc\u1ece\u1ed0\u1ed2\u1ed4\u1ed6\u1ed8\u1eda\u1edc\u1ede\u1ee0\u1ee2\u1ee4\u1ee6\u1ee8\u1eea\u1eec\u1eee\u1ef0\u1ef2\u1ef4\u1ef6\u1ef8\u1f08-\u1f0f\u1f18-\u1f1d\u1f28-\u1f2f\u1f38-\u1f3f\u1f48-\u1f4d\u1f59-\u1f5f\u1f68-\u1f6f\u1f88-\u1f8f\u1f98-\u1f9f\u1fa8-\u1faf\u1fb8-\u1fbc\u1fc8-\u1fcc\u1fd8-\u1fdb\u1fe8-\u1fec\u1ff8-\u1ffc\u3041-\u3094\u30a1-\u30fa\u30fc-\u30fe\u3105-\u312c\u3131-\u318e\u31a0-\u31b7\u3400-\u34ff\u4d00-\u4db5\u4e00-\u9fa5\uac00-\ud7a3\ufa00-\ufa2d\uff21-\uff3a\uff61-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
CS_TEXT_LOWER      = "a-z\u00df-\u00ff\u0101\u0103\u0105\u0107\u0109\u010b\u010d\u010f\u0111\u0113\u0115\u0117\u0119\u011b\u011d\u011f\u0121\u0123\u0125\u0127\u0129\u012b\u012d\u012f\u0131\u0133\u0135\u0137-\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148-\u0149\u014b\u014d\u014f\u0151\u0153\u0155\u0157\u0159\u015b\u015d\u015f\u0161\u0163\u0165\u0167\u0169\u016b\u016d\u016f\u0171\u0173\u0175\u0177\u017a\u017c\u017e-\u0180\u0183\u0185\u0188\u018c-\u018d\u0192\u0195\u0199-\u019b\u019e\u01a1\u01a3\u01a5\u01a8\u01ab\u01ad\u01b0\u01b4\u01b6\u01b9\u01bd\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc-\u01dd\u01df\u01e1\u01e3\u01e5\u01e7\u01e9\u01eb\u01ed\u01ef-\u01f0\u01f5\u01fb\u01fd\u01ff\u0201\u0203\u0205\u0207\u0209\u020b\u020d\u020f\u0211\u0213\u0215\u0217-\u0293\u0299-\u02a0\u03ac-\u03ce\u03e3\u03e5\u03e7\u03e9\u03eb\u03ed\u03ef\u0430-\u045f\u0461\u0463\u0465\u0467\u0469\u046b\u046d\u046f\u0471\u0473\u0475\u0477\u0479\u047b\u047d\u047f\u0481\u0491\u0493\u0495\u0497\u0499\u049b\u049d\u049f\u04a1\u04a3\u04a5\u04a7\u04a9\u04ab\u04ad\u04af\u04b1\u04b3\u04b5\u04b7\u04b9\u04bb\u04bd\u04bf\u04c2\u04c4\u04c8\u04cc\u04d1\u04d3\u04d5\u04d7\u04d9\u04db\u04dd\u04df\u04e1\u04e3\u04e5\u04e7\u04e9\u04eb\u04ef\u04f1\u04f3\u04f5\u04f9\u0561-\u0586\u1e01\u1e03\u1e05\u1e07\u1e09\u1e0b\u1e0d\u1e0f\u1e11\u1e13\u1e15\u1e17\u1e19\u1e1b\u1e1d\u1e1f\u1e21\u1e23\u1e25\u1e27\u1e29\u1e2b\u1e2d\u1e2f\u1e31\u1e33\u1e35\u1e37\u1e39\u1e3b\u1e3d\u1e3f\u1e41\u1e43\u1e45\u1e47\u1e49\u1e4b\u1e4d\u1e4f\u1e51\u1e53\u1e55\u1e57\u1e59\u1e5b\u1e5d\u1e5f\u1e61\u1e63\u1e65\u1e67\u1e69\u1e6b\u1e6d\u1e6f\u1e71\u1e73\u1e75\u1e77\u1e79\u1e7b\u1e7d\u1e7f\u1e81\u1e83\u1e85\u1e87\u1e89\u1e8b\u1e8d\u1e8f\u1e91\u1e93\u1e95-\u1e9b\u1ea1\u1ea3\u1ea5\u1ea7\u1ea9\u1eab\u1ead\u1eaf\u1eb1\u1eb3\u1eb5\u1eb7\u1eb9\u1ebb\u1ebd\u1ebf\u1ec1\u1ec3\u1ec5\u1ec7\u1ec9\u1ecb\u1ecd\u1ecf\u1ed1\u1ed3\u1ed5\u1ed7\u1ed9\u1edb\u1edd\u1edf\u1ee1\u1ee3\u1ee5\u1ee7\u1ee9\u1eeb\u1eed\u1eef\u1ef1\u1ef3\u1ef5\u1ef7\u1ef9-\u1f07\u1f10-\u1f15\u1f20-\u1f27\u1f30-\u1f37\u1f40-\u1f45\u1f50-\u1f57\u1f60-\u1f67\u1f70-\u1f87\u1f90-\u1f97\u1fa0-\u1fa7\u1fb0-\u1fb7\u1fc2-\u1fc7\u1fd0-\u1fd7\u1fe0-\u1fe7\u1ff2-\u1ff7";
CS_TEXT_SPACE      = "	 \u00a0\u115f-\u1160\u2000-\u200d\u3000\u3164";
CS_TEXT_ALPHASPL   = "\\!-\\/\\:-@\\[-`\\{-~\u0080\u00a1-\u00bf\u00d7\u00f7\u01c4-\u01cc\u02a3-\u02a8\u0374-\u0375\u037e\u0384-\u0385\u0387\u0482-\u0486\u04a4-\u04a5\u04d4-\u04d5\u055a-\u055f\u0589-\u058a\u0591-\u05c4\u05f0-\u05f2\u064b\u0660-\u066d\u06f0-\u06f9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be7-\u0bf2\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e3f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f33\u1040-\u1049\u1369-\u137c\u17e0-\u17e9\u1810-\u1819\u1fbd-\u1fc1\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd-\u1ffe\u2010-\u2027\u2030-\u2046\u2048-\u204d\u2070-\u207e\u2080-\u208e\u20a0-\u20af\u2100-\u213a\u2160-\u2182\u2190-\u21f3\u2200-\u22f1\u2300-\u237b\u237d-\u239a\u2400-\u2426\u2440-\u244a\u2460-\u24e9\u2500-\u2595\u25a0-\u25f7\u2600-\u2613\u2619-\u2671\u2701-\u2704\u2706-\u2709\u270c-\u2727\u2729-\u274b\u274d\u274f-\u2752\u2756\u2758-\u275e\u2761-\u2767\u2776-\u2794\u3001-\u3029\u3030-\u303a\u30fb\u3200-\u321c\u3220-\u3243\u3260-\u327b\u3280-\u32b0\u32d0-\u32fe\u3300-\u3357\u3371-\u3376\u3380-\u33dd\ufb00-\ufb06\ufb1f\ufbea-\ufbfb\ufc00-\ufd3d\ufd50-\ufdfb\ufe20-\ufe23\ufe49-\ufe52\ufe54-\ufe66\ufe68-\ufe6b\ufe70-\ufe7f\ufef5-\ufefc\uff01-\uff0f\uff1a-\uff20\uff3b-\uff40\uff5b-\uff5e\uff61-\uff65\uffe0-\uffe6";
CS_TEXT_NUMSPL     = "\\!-\\/\\:-@\\[-`\\{-~\u0080\u00a1-\u00bf\u00d7\u00f7\u01c4-\u01cc\u02a3-\u02a8\u0374-\u0375\u037e\u0384-\u0385\u0387\u0482-\u0486\u04a4-\u04a5\u04d4-\u04d5\u055a-\u055f\u0589-\u058a\u0591-\u05c4\u05f0-\u05f2\u064b\u0660-\u066d\u06f0-\u06f9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be7-\u0bf2\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e3f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f33\u1040-\u1049\u1369-\u137c\u17e0-\u17e9\u1810-\u1819\u1fbd-\u1fc1\u1fdd-\u1fdf\u1fed-\u1fef\u1ffd-\u1ffe\u2010-\u2027\u2030-\u2046\u2048-\u204d\u2070-\u207e\u2080-\u208e\u20a0-\u20af\u2100-\u213a\u2160-\u2182\u2190-\u21f3\u2200-\u22f1\u2300-\u237b\u237d-\u239a\u2400-\u2426\u2440-\u244a\u2460-\u24e9\u2500-\u2595\u25a0-\u25f7\u2600-\u2613\u2619-\u2671\u2701-\u2704\u2706-\u2709\u270c-\u2727\u2729-\u274b\u274d\u274f-\u2752\u2756\u2758-\u275e\u2761-\u2767\u2776-\u2794\u3001-\u3029\u3030-\u303a\u30fb\u3200-\u321c\u3220-\u3243\u3260-\u327b\u3280-\u32b0\u32d0-\u32fe\u3300-\u3357\u3371-\u3376\u3380-\u33dd\ufb00-\ufb06\ufb1f\ufbea-\ufbfb\ufc00-\ufd3d\ufd50-\ufdfb\ufe20-\ufe23\ufe49-\ufe52\ufe54-\ufe66\ufe68-\ufe6b\ufe70-\ufe7f\ufef5-\ufefc\uff01-\uff0f\uff1a-\uff20\uff3b-\uff40\uff5b-\uff5e\uff61-\uff65\uffe0-\uffe6";
CS_TEXT_PUNC       = "\\!-#%-*\\--\\/\\:-\\;\\?-@\\[-]_\\{-}\u00a1\u00a6-\u00a7\u00a9\u00ab-\u00ae\u00b0\u00b5-\u00b7\u00bb\u00bf\u0294-\u0298\u0374-\u0375\u037e\u055a\u055c-\u055f\u0589\u05f3-\u05f4\u060c\u061b\u061f\u06ea-\u06ed\u10fb\u2010-\u2029\u2030-\u2044\u3001-\u3003\u3008-\u3011\u3014-\u301b\u301d-\u301f\u3031-\u3035\u30fb\ufd3e-\ufd3f\ufe35-\ufe44\ufe49-\ufe52\ufe54-\ufe66\ufe68-\ufe6b\uff01-\uff0f\uff1a-\uff20\uff3b-\uff3d\uff5b-\uff5e\uff61-\uff65";
CS_TEXT_RETURN     = "\\r\\n";
CSTXT_ERR_AL="alpha";
CSTXT_ERR_ALSL="special";
CSTXT_ERR_AND="and";
CSTXT_ERR_INVLDCHAR1_STR="Invalid character";
CSTXT_ERR_INVLDCHAR2_STR="Invalid character(s).  This field only allows %1 characters.";
CSTXT_ERR_LENTOOLONG1_STR="There are too many characters entered in this field";
CSTXT_ERR_LENTOOLONG2_STR="The maximum field length is %s characters";
CSTXT_ERR_LENTOOLONG3_STR="The field value '%s' exceeds the maximum field length of %s characters";
CSTXT_ERR_LENTOOSHORT1_STR="Not enough characters entered";
CSTXT_ERR_LENTOOSHORT2_STR="This field requires at least %s characters";
CSTXT_ERR_NUM="numeric";
CSTXT_ERR_NUMSL="special";
CSTXT_ERR_SPACE="space";
CS_ACROBAT40_WARN="This form requires Adobe Acrobat 5.05 or later or Adobe Reader 5.05 or later. To view it or fill it out, you will need to upgrade Adobe Acrobat or download a new copy of Adobe Reader from Adobe.com.";
CS_ACTION_BUTTON_TOOLTIP="Perform the action selected in the Action List.";
CS_ACTION_LIST="[Preview]";
CS_ACTION_LIST_TOOLTIP="Select an action to perform.";
CS_BACK_BUTTON="&lt;&lt;";
CS_BARCODE_LOADING="Barcode Loading...";
CS_CAL_CANCEL="Cancel";
CS_CAL_CLOSE="Close";
CS_CAL_FRI="Fri";
CS_CAL_FRIDAY="Friday";
CS_CAL_GOTO="Go to";
CS_CAL_GOTO_MONTH="Any month";
CS_CAL_GOTO_TODAY="Today's date";
CS_CAL_GOTO_YEAR="Any year";
CS_CAL_MON="Mon";
CS_CAL_MONDAY="Monday";
CS_CAL_SAT="Sat";
CS_CAL_SATURDAY="Saturday";
CS_CAL_SELECT_MONTH="Select a month";
CS_CAL_SHOW_CAL="Show calendar";
CS_CAL_SUN="Sun";
CS_CAL_SUNDAY="Sunday";
CS_CAL_THU="Thu";
CS_CAL_THURSDAY="Thursday";
CS_CAL_TUE="Tue";
CS_CAL_TUESDAY="Tuesday";
CS_CAL_WED="Wed";
CS_CAL_WEDNESDAY="Wednesday";
CS_CAL_YEAR_INSTRUCTION_A="Type a four digit year.";
CS_CAL_YEAR_INSTRUCTION_B="Press the Enter key when finished.";
CS_CHOOSE_COMBO_STR="->Choose an item";
CS_CONTINUOUS_MODE="Continuous";
CS_CSERR_ERR_SUCCESS_STR="Success";
CS_CSERR_ERR_UNDEFINED_STR="Undefined Error";
CS_CSFMT_ERR_INVLDFMTOBJ_STR="Invalid Format Object";
CS_CSFMT_ERR_INVLDFMTTYPE_STR="Invalid Format Type";
CS_DATETIME_APR="Apr";
CS_DATETIME_APRIL="April";
CS_DATETIME_AUG="Aug";
CS_DATETIME_AUGUST="August";
CS_DATETIME_DEC="Dec";
CS_DATETIME_DECEMBER="December";
CS_DATETIME_FEB="Feb";
CS_DATETIME_FEBRUARY="February";
CS_DATETIME_JAN="Jan";
CS_DATETIME_JANUARY="January";
CS_DATETIME_JLY="Jly";
CS_DATETIME_JUL="Jul";
CS_DATETIME_JULY="July";
CS_DATETIME_JUN="Jun";
CS_DATETIME_JUNE="June";
CS_DATETIME_MAR="Mar";
CS_DATETIME_MARCH="March";
CS_DATETIME_MAY="May";
CS_DATETIME_NOV="Nov";
CS_DATETIME_NOVEMBER="November";
CS_DATETIME_OCT="Oct";
CS_DATETIME_OCTOBER="October";
CS_DATETIME_SEP="Sep";
CS_DATETIME_SEPT="Sept";
CS_DATETIME_SEPTEMBER="September";
CS_DIGITAL_APPROVE_CLEAR_MSG="This will clear this signature and unlock any associated fields. Continue?";
CS_DIGITAL_APPROVE_CLICK="I, %1, on %2, hereby affirm that %3\nRole: %4\nForm: %5\nSignature Field: %6\nSignature Description: %7";
CS_DIGITAL_APPROVE_SUBMIT="Signing this field will submit the form. Continue?";
CS_DIGITAL_APPROVE_USER="(Anonymous)";
CS_DTOBJ_ERR_DATE_OUTOFRANGE_A_STR="Date must be after or equal to %s";
CS_DTOBJ_ERR_DATE_OUTOFRANGE_B_STR="Date must be before or equal to %s";
CS_DTOBJ_ERR_DATE_OUTOFRANGE_R_STR="Date must be between or equal to %s and %s";
CS_DTOBJ_ERR_DATE_OUTOFRANGE_STR="Date is out of range";
CS_DTOBJ_ERR_DAY_OUTOFRANGE_STR="Day is out of range";
CS_DTOBJ_ERR_FORMAT_INVALID_STR="Format is invalid, format the value like this %s";
CS_DTOBJ_ERR_HOUR_OUTOFRANGE_STR="Hour is out of range";
CS_DTOBJ_ERR_MINUTE_OUTOFRANGE_STR="Minutes are out of range";
CS_DTOBJ_ERR_MONTH_OUTOFRANGE_STR="Month is out of range";
CS_DTOBJ_ERR_MONTH_UNRECOGNIZABLE_STR="Month is Unrecognizable";
CS_DTOBJ_ERR_SECOND_OUTOFRANGE_STR="Seconds are out of range";
CS_DTOBJ_ERR_TEMPLATE_INVALID_STR="Template is invalid";
CS_DTOBJ_ERR_YEAR_OUTOFRANGE_STR="Year is out of range";
CS_ERR_CALC_LENGTH_STR="%s exceeds the maximum length of %d characters for the calculation result field '%s'";
CS_ERR_CALC_RANGE_STR="The value of the calculation result field '%s' is invalid:\r";
CS_ERR_ENTRY_REQUIRED_STR="A required field was found empty!";
CS_ERR_NEED50ORGREATER_STR="This PDF document requires Acrobat (or Reader) 5.0 or greater.";
CS_ERR_NOTPUBLISHED="This action requires the form to be published to a LiquidOffice server.";
CS_GO="Go";
CS_INFOPATH_BACK_BUTTON="<<";
CS_INFOPATH_CONFIRM_CANCEL="Cancel";
CS_INFOPATH_CONFIRM_OK="OK";
CS_INFOPATH_CONFIRM_TITLE="LiquidOffice confirmation dialog";
CS_INFOPATH_DOCUMENTS="My Documents";
CS_INFOPATH_NO_TASKPANE_MESSAGE1="Custom TaskPane not supported in preview mode with InfoPath Service Pack 1.";
CS_INFOPATH_NO_TASKPANE_MESSAGE2="This does not affect the publishing of forms.";
CS_INFOPATH_PRINTABLE="All Pages (printable)";
CS_INFOPATH_REDIRECT="Processing your submission. Please wait...";
CS_INFOPATH_REDIRECT_MESSAGE1="If InfoPath does not immediately redirect, please click here to continue.";
CS_INFOPATH_REDIRECT_MESSAGE2="To return to your InfoPath form, please use the controls on the LiquidOffice Task Pane to select a different page.";
CS_INFOPATH_REDIRECT_MESSAGE3="Please wait...";
CS_INFOPATH_REDIRECT_MESSAGE4="Your form is being submitted...";
CS_INFOPATH_SIGNATURE_INFO="Info";
CS_INFOPATH_SIGNATURE_INFO_TITLE="Signature info";
CS_INFOPATH_SIGNATURE_SIGN="Click to Sign Now";
CS_INFOPATH_SIGNATURE_UNSIGN="Signed by %1 \nClick to Unsign Now";
CS_INK_LOADING="Ink picture loading...";
CS_INVALIDFIELD="Please check field '%s', it was invalid before submitting.";
CS_IV_AJAX_FAILED="Ajax failed.";
CS_IV_CLICK_SET_FOCUS="Click to set focus";
CS_IV_IMAGE_FAILED="Image failed to load.";
CS_IV_LOADING="Loading...";
CS_IV_NO_IMAGES="No images";
CS_IV_PAGE_NAV="Page Navigation";
CS_IV_PAGE_PAN="Page Panning";
CS_IV_ZOOM="Zoom";
CS_LOOKUP_LIST="[lookup]";
CS_MSXML_WARN="This browser requires MSXML for some features of this form to work correctly. If you have trouble installing this control, please contact your system administrator.";
CS_NEXT_BUTTON=">>";
CS_NUMBEROBJ_ERR_CHAR_LENGTH="%s exceeds the field's maximum length of %d characters";
CS_NUMBEROBJ_ERR_FORMAT_INVALID_STR="Format is invalid, format with numeric characters only";
CS_NUMBEROBJ_ERR_OUTOFRANGE_B_STR="Value must be between or equal to %s and %s";
CS_NUMBEROBJ_ERR_OUTOFRANGE_E_STR="Value must be equal to %s";
CS_NUMBEROBJ_ERR_OUTOFRANGE_G_STR="Value must be greater than or equal to %s";
CS_NUMBEROBJ_ERR_OUTOFRANGE_L_STR="Value must be less than or equal to %s";
CS_NUMBEROBJ_ERR_OUTOFRANGE_STR="Value is out of range";
CS_OBJ_ERR_SUCCESS_STR="Success";
CS_OBJ_ERR_UNDEFINED_STR="Undefined Error";
CS_OFFLINE="Offline";
CS_OFFLINE_ERR_OFFLINE="This form is currently offline. You must reconnect first";
CS_OFFLINE_ERR_SAVE="Did not save offline:";
CS_OFFLINE_ERR_USER="Unable to reconnect with a different user";
CS_OFFLINE_MSG_PREVIEW="Warning: preview forms saved offline do not submit";
CS_OFFLINE_RECONNECT="Reconnect";
CS_OFFLINE_RECONNECT_TT="Reestablish a connection to the LiquidOffice server";
CS_OFFLINE_SAVE="Save";
CS_OFFLINE_SAVE_AS="Save As";
CS_OFFLINE_SAVE_TT="Save your form to disk";
CS_OFFLINE_WARN_NEED_CERT="Did not reconnect to secure server. You may need to install the certificate and try again.";
CS_OFFLINE_WARN_RECONNECT="Did not reconnect. Please close all browser windows, re-open form and try again.";
CS_OFFLINE_WORK_OFFLINE="Save Offline";
CS_OFFLINE_WORK_OFFLINE_TT="Save your form to disk and work offline";
CS_ONLINE="Online";
CS_OTHER_COMBO_STR="[Other...]";
CS_PAGED_MODE="Paged";
CS_PAGE_BREAK_LBL_TEXT="Page will break here when printed.";
CS_POP_CLICKTODRAG="Click to drag";
CS_PRINT_BUTTON="Printable Version";
CS_PRINT_BUTTON_TT="Open a new window with all pages displayed, suitable for printing";
CS_SIGNATURE="Warning: this form uses digital signature technology that is not supported in HTML, and will not be able to accept digital signatures without Adobe Acrobat.";
CS_SIG_VERIFY_FAILED="Signed data has been changed since signing. Do you want to restore the original signed values?";
CS_SIG_VERIFY_FAILED_TITLE="Validation Failed";
CS_SIG_VERIFY_OK="Signed data has not been changed since signing.";
CS_TABLE_ADD_ROW="add row";
CS_TABLE_REMOVE_ROW="remove row";
CS_TEMPLATEOBJ_ERR_FORMAT_INVALID_STR="Format is invalid, format the value like this %s";
CS_WARN_BLANK_FORM_STR="Your form did not load properly. Press Refresh in your Browser to retry.";
CS_WARN_SUBMIT_PENDING_STR="A lookup or validation is still pending.\nDo you wish to wait?";
CS_XMLHTTP_INVALID="The server provided an invalid response";










function CS_isCharIn( c, seps )
{
var ret = false;
var i;
for (i = 0; i < seps.length; i++) {
if (seps.charAt( i ) == c) {
ret = true;
break;
}
}
return ret;
}

CS_REGEXPLITS = "/\\.*+?|()[]{}^$ ";
function CS_EscapeRegExpLiterals( s )
{
var ret = "";
var i;
for (i = 0; i < s.length; i++) {
if (CS_isCharIn( s.charAt( i ), CS_REGEXPLITS ))
ret += "\\";
ret += s.charAt( i );
}
return ret;
}

var CS_IntZeroMatch = /^0*(\d)/;
function CS_ParseInt( str )
{
if (typeof( str ) == "number")
return str;
var ret = str.replace( CS_IntZeroMatch, "$1" );
if (ret == "")
ret = "0";
ret = parseInt( ret );
return ret;
}

function CS_ParseIntEx( str )
{
if (typeof( str ) == "string" && str != "")
return CS_ParseInt( str );
if (typeof( str ) == "number")
return str;
}
var CS_FloatMatch = /^-?[0-9]*(\.[0-9]+)?$/;
function CS_ParseFloat( str )
{
if (typeof( str ) == "number")
return str;
var ret = str.match( CS_FloatMatch );
if (ret != null)
ret = parseFloat( ret[0] );
return ret;
}

function CS_ParseFloatEx( str )
{
if (typeof( str ) == "string" && str != "")
return CS_ParseFloat( str );
if (typeof( str ) == "number")
return str;
}

function CS_NumberForceLengthPrepend( num, length )
{
if (num == null)
num = 0;
var ret = "";
var ter = "";
var tmp = num.toString();
var i = 0;
for (i = 0; i < length; i++) {
if (i >= tmp.length) {
ter += "0";
} else {
ter += tmp.charAt( tmp.length - i - 1 );
}
}
for (i = 0; i < ter.length; i++)
ret += ter.charAt( ter.length - i - 1);
return ret;
}

function CS_NumberForceLengthAppend( num, length )
{
var ret = "";
var tmp = num.toString();
var i = 0;
if (tmp.length < length) {
ret = tmp;
for (i = 0; i < length - tmp.length; i++)
ret += "0";
} else {
ret = tmp.slice( 0, length );
}
return ret;
}

function CS_ReverseString( s )
{
var ret = "";
var l = s.length;
for (var i = l - 1; i >= 0; i--)
ret += s.charAt( i );
return ret;
}

function CS_NumToString( n, dp, dps, ss, cs, app, rnd )
{
var ret = "";
var nn = n < 0 ? n * -1 : n;
var e = Math.floor( (Math.LOG10E * Math.log( nn )) + 0.000000000000001 ); 
var nm = nn * Math.pow( 10, -e );  
if (rnd) {
nm = CS_Round( nm, dp + e );
if (nm == 10) {  
nm = 1;
e += 1;
}
}
var nms = nm.toString();
var nmsl = nms.length;
var ns = "";



for (var i = 0; i < nmsl; i++)
ns += nms.charAt( i ) != "." ? nms.charAt( i ) : "";
var nsl = ns.length;
if (e == (-1/0) || e < 0) {  
var ct = 1 + 1 + dp; 



var nsidx = 0;
ret += "0";
if (dp != 0)
ret += dps;
for (var i = 2; i < ct; i++) {
nsidx = i - 1 + e; 
if (nsidx >= 0 && nsidx < nsl) {
ret += ns.charAt( nsidx );
} else {
ret += "0";
}
}
} else {
var ct = dp + e + 1; 
var cnt = 0;
var nsidx = 0;
var emc = 0;
for (var i = 0; i < ct; i++) {
nsidx = cnt;
emc = e - cnt;
if (nsidx >= 0 && nsidx < nsl) {
ret += ns.charAt( nsidx );
} else {
ret += "0";
}
cnt++;
if (emc == 0 && dp != 0)
ret += dps;
if (emc > 0 && (emc % 3) == 0)
ret += ss;
}
}
var r = "";
if (n < 0)
r += "-";
if (!app) {
r += cs + ret;
} else {
r += ret + cs
}

return r;
}

function CS_Round( num, dp )
{
var fudge = Math.pow(10, dp);
var sg = num >= 0 ? 1 : -1;
num *= sg;
num *= fudge;
num = Math.round(num);
num /= fudge;
return num *= sg;
}

function CS_CharFilter( string, filter )
{
if (filter == null)
return true;
var t = "[^" + filter + "]";
var pattern = new RegExp( t );
return !pattern.test( string );
}

function CS_ObjectProperties( obj, bVal )
{
var names = "";
for (var i in obj) {
names += typeof( obj[ i ] ) + " " + i;
if (bVal)
names += " = " + obj[ i ];
names += "\n";
}
return names;
}


var CS_DLRSGN   = "<dlrsgn>";
var CS_DLRSGNRX = /<dlrsgn>/g;
function CS_InsertString( srcStr, insStr )
{






var p = /\%s/;
var ds = /\$/g;
var rpl = insStr.replace( ds, CS_DLRSGN );
var ret = srcStr.replace( p, rpl );
ret = ret.replace( CS_DLRSGNRX, "$" );
return ret;
}



function CS_Dec_Chop( numb, places )
{
if (places<0)
return 0;

var numbStr = numb.toString();
var decLoc = numbStr.indexOf(".");
if (places==0) {
if (decLoc==-1)
return numbStr;
else
return numbStr.substr(0, decLoc);
} else {
if (decLoc==-1) {
numbStr += ".";
decLoc = numbStr.length - 1;
}


for( var idx=0; idx < places; idx++)
numbStr += "0";

return numbStr.substr( 0, decLoc + places + 1 );
}
}

function CS_FormatMessage( msg ) {



var args = CS_FormatMessage.arguments;
var result = msg;
for ( var idx=1; idx < args.length; idx++) {
var rx = new RegExp( "%" + idx, "g" );
result = result.replace( rx, args[idx] );
}
return result;
}
var CS_TrimTailWSRgx = /\s*\s$/;
var CS_TrimLeadWSRgx = /^\s*\s/;
var CS_NormalizeSRgx = /\ {2,}/g;
function CS_ReplaceStr( str, regExp, rpl )
{
var r = "";
if (typeof( str ) == "string") {
r = str.replace( regExp, rpl );
}
return r;
}
function CS_TrimWS( str )
{
return CS_ReplaceStr( CS_ReplaceStr( str, CS_TrimLeadWSRgx, "" ), CS_TrimTailWSRgx, "" );
}
function CS_TrimLeadWS( str )
{
return CS_ReplaceStr( str, CS_TrimLeadWSRgx, "" );
}
function CS_TrimTailWS( str )
{
return CS_ReplaceStr( str, CS_TrimTailWSRgx, "" );
}
function CS_NormalizeSpaces( str )
{
return CS_ReplaceStr( str, CS_NormalizeSRgx, " " );
}
function CS_Array_Push( a, e )
{
a[a.length] = e;
return a.length;
}
function CS_Array_Pop( a )
{
var ret = a[a.length-1];
if (a.length > 0)
a.length--;
return ret;
}










var CS_CHK = 1;
var CS_SEP = 2;
var CS_KWD = 3;
var CS_BRK = 4; 

var CS_BRKCH  = "!";
var CS_ESCCH  = "\\";




function CSChunk_toString()
{
return this.chunk + ": " + this.type;
}
function CSChunk()
{
this.chunk = "";
this.type  = 0;
}
CSChunk.prototype.toString = CSChunk_toString;




function CS_findChunks( templ, seps )
{
var ret = null;
var t = templ;
var arr = new Array();
do {
if (t == null)
break;
var len   = t.length;
var i     = 0;
var j     = -1;
var type  = 0;
var last  = 0;
var c;
var bSep;
while (i < len) {
c = t.charAt( i ); 
bSep = CS_isCharIn( c, seps ) || c == CS_ESCCH;
type = bSep ? CS_SEP : CS_CHK;
if (c == CS_BRKCH)
type = CS_BRK;
if (type != last) {
arr[++j] = new CSChunk();
arr[j].type = type;
}
if (c == CS_ESCCH && i + 1 < len) {
arr[j].chunk += t.charAt( ++i );
} else {
arr[j].chunk += c;
}
i++;
last = type;
}
ret = arr;
} while (false);
return ret;
}

function CS_findKeywords( chunk, rgxkwd ) {
var ret = null;
var res = null;
var chunkstr = chunk;
var arr = new Array();
var j = 0;


while ((res = rgxkwd.exec( chunkstr )) != null && chunkstr.length > 0) {
arr[j] = new CSChunk();
arr[j].chunk = res[0];
arr[j].type  = CS_KWD;
chunkstr = chunkstr.substr( res[0].length );
rgxkwd.lastIndex = 0;
++j;
}
if (arr.length > 0)
ret = arr;
return ret;
}

function CS_buildTokenArray( templ, seps, rgxkwd )
{
var ret = null;
var arr = new Array();
do {
var chunks = CS_findChunks( templ, seps );
if (chunks == null)
break;
var len = chunks.length;
var toks = null;
var i = 0, j = 0, k = 0;
for (i = 0; i < len; i++) {
if (chunks[i].type == CS_CHK) {
toks = CS_findKeywords( chunks[i].chunk, rgxkwd );
if (toks == null)
continue;
for (j = 0; j < toks.length; j++) {
arr[k++] = toks[j];
}
} else {
arr[k++] = chunks[i];
}
}
ret = arr;
} while (false);
return ret;
}













CSErr.ERR_FAM               = 0x0000;

CSErr.ERR_SUCCESS           = CSErr.ERR_FAM | 0x0000;
CSErr.ERR_UNDEFINED         = CSErr.ERR_FAM | 0x0001;

CSErr.ERR_SUCCESS_STR       = CS_CSERR_ERR_SUCCESS_STR;
CSErr.ERR_UNDEFINED_STR     = CS_CSERR_ERR_UNDEFINED_STR;

function CSErr_getErrorStringStat( no, ex )
{
var ret = CSErr.ERR_UNDEFINED_STR;
if (no == CSErr.ERR_SUCCESS)
ret = CSErr.ERR_SUCCESS_STR;
return ret;
}

function CSErr_getErrorString()
{
return CSErr_getErrStrStat( this );
}

function CSErr_getErrStrStat( err )
{
return CSErr_getErrorStringStat( err.no, err.ex );
}

function CSErr_toString()
{
return "no: " + this.no + "\rex: " + this.ex;
}

function CSErr( no, ex )
{
this.no = no;
this.ex = ex;
}

CSErr.prototype.toString        = CSErr_toString;
CSErr.prototype.getErrorString  = CSErr_getErrorString;
CSErr.getErrorString            = CSErr_getErrStrStat;
















var CS_DATETIMEDAYARRAY = [ 31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; 


var CS_DATEKWDS    = "Y+|M+|D+|H+|h+|m+|s+|T|t";
var CS_DATESEPS    = "/-.:_, ";
var CS_DATERGXSEPS = "\\/\\-\\.\\:\\_\\,\\ ";




CSDate.ERR_FAM                   = 0x2000;

CSDate.ERR_YEAR_OUTOFRANGE       = CSDate.ERR_FAM | 0x0002;
CSDate.ERR_MONTH_OUTOFRANGE      = CSDate.ERR_FAM | 0x0004;
CSDate.ERR_DAY_OUTOFRANGE        = CSDate.ERR_FAM | 0x0008;
CSDate.ERR_HOUR_OUTOFRANGE       = CSDate.ERR_FAM | 0x0010;
CSDate.ERR_MINUTE_OUTOFRANGE     = CSDate.ERR_FAM | 0x0020;
CSDate.ERR_SECOND_OUTOFRANGE     = CSDate.ERR_FAM | 0x0040;
CSDate.ERR_TEMPLATE_INVALID      = CSDate.ERR_FAM | 0x0080;
CSDate.ERR_FORMAT_INVALID        = CSDate.ERR_FAM | 0x0100;
CSDate.ERR_MONTH_UNRECOGNIZABLE  = CSDate.ERR_FAM | 0x0200;
CSDate.ERR_DATE_OUTOFRANGE       = CSDate.ERR_FAM | 0x0400;

CSDate.ERR_YEAR_OUTOFRANGE_STR   = CS_DTOBJ_ERR_YEAR_OUTOFRANGE_STR
CSDate.ERR_MONTH_OUTOFRANGE_STR  = CS_DTOBJ_ERR_MONTH_OUTOFRANGE_STR;
CSDate.ERR_DAY_OUTOFRANGE_STR    = CS_DTOBJ_ERR_DAY_OUTOFRANGE_STR;
CSDate.ERR_HOUR_OUTOFRANGE_STR   = CS_DTOBJ_ERR_HOUR_OUTOFRANGE_STR;
CSDate.ERR_MINUTE_OUTOFRANGE_STR = CS_DTOBJ_ERR_MINUTE_OUTOFRANGE_STR;
CSDate.ERR_SECOND_OUTOFRANGE_STR = CS_DTOBJ_ERR_SECOND_OUTOFRANGE_STR;
CSDate.ERR_TEMPLATE_INVALID_STR  = CS_DTOBJ_ERR_TEMPLATE_INVALID_STR;
CSDate.ERR_FORMAT_INVALID_STR    = CS_DTOBJ_ERR_FORMAT_INVALID_STR;
CSDate.ERR_MONTH_UNRECOGNIZABLE_STR = CS_DTOBJ_ERR_MONTH_UNRECOGNIZABLE_STR;
CSDate.ERR_DATE_OUTOFRANGE_STR   = CS_DTOBJ_ERR_DATE_OUTOFRANGE_STR;
CSDate.ERR_DATE_OUTOFRANGE_R_STR = CS_DTOBJ_ERR_DATE_OUTOFRANGE_R_STR;
CSDate.ERR_DATE_OUTOFRANGE_A_STR = CS_DTOBJ_ERR_DATE_OUTOFRANGE_A_STR;
CSDate.ERR_DATE_OUTOFRANGE_B_STR = CS_DTOBJ_ERR_DATE_OUTOFRANGE_B_STR;

function CSDate_getErrorStringStat( num, ex ) 
{
var ret = CSErr.ERR_UNDEFINED_STR;
if (num == CSDate.ERR_YEAR_OUTOFRANGE) {
ret = CSDate.ERR_YEAR_OUTOFRANGE_STR;
} else if (num == CSDate.ERR_MONTH_OUTOFRANGE) {
ret = CSDate.ERR_MONTH_OUTOFRANGE_STR;
} else if (num == CSDate.ERR_MONTH_UNRECOGNIZABLE) {
ret = CSDate.ERR_MONTH_UNRECOGNIZABLE_STR;
} else if (num == CSDate.ERR_DAY_OUTOFRANGE) {
ret = CSDate.ERR_DAY_OUTOFRANGE_STR;
} else if (num == CSDate.ERR_HOUR_OUTOFRANGE) {
ret = CSDate.ERR_HOUR_OUTOFRANGE_STR;
} else if (num == CSDate.ERR_MINUTE_OUTOFRANGE) {
ret = CSDate.ERR_MINUTE_OUTOFRANGE_STR;
} else if (num == CSDate.ERR_SECOND_OUTOFRANGE) {
ret = CSDate.ERR_SECOND_OUTOFRANGE_STR;
} else if (num == CSDate.ERR_TEMPLATE_INVALID) {
ret = CSDate.ERR_TEMPLATE_INVALID_STR;
} else if (num == CSDate.ERR_FORMAT_INVALID) {
ret = CSDate.ERR_FORMAT_INVALID_STR;
if (ex != null)
ret = ret.replace( /\%s/, ex );
} else if (num == CSDate.ERR_DATE_OUTOFRANGE) {
if (ex.b != null && ex.e != null) {
ret = CSDate.ERR_DATE_OUTOFRANGE_R_STR.replace( /\%s/, ex.b);
ret = ret.replace( /\%s/, ex.e );
} else if (ex.b != null && ex.e == null) {
ret = CSDate.ERR_DATE_OUTOFRANGE_A_STR.replace( /\%s/, ex.b);
} else if (ex.b == null && ex.e != null) {
ret = CSDate.ERR_DATE_OUTOFRANGE_B_STR.replace( /\%s/, ex.e);
} else {
ret = CSDate.ERR_DATE_OUTOFRANGE_STR;
}
}
return ret;
}

function CSDate_getErrorString() 
{
return CSDate_getErrStrStat( this.err );
}

function CSDate_getErrStrStat( err ) 
{
return CSDate_getErrorStringStat( err.no, err.ex );
}

function CSDate( Y, M, D, h, m, s )
{
this.reset( Y, M, D, h, m, s );
}
CSDate.Init = function()
{
CS_DATEKWDSRGX = new RegExp( CS_DATEKWDS, "g" );
CS_DATETMPRGX  = new RegExp( "(\\d\\d\\d\\d)[\\-\\/](\\d\\d)[\\-\\/](\\d\\d)\\ (\\d\\d)\\:(\\d\\d)\\:(\\d\\d)" );
CS_DTTMRGX     = /((\d{4})\-(\d{2})\-(\d{2}))?T?((\d{2})\:(\d{2})\:(\d{2}))?/;
}

















var CS_DATETIMEMONTHARRAY = [ [CS_DATETIME_JAN, 1],
[CS_DATETIME_FEB, 2],
[CS_DATETIME_MAR, 3],
[CS_DATETIME_APR, 4],
[CS_DATETIME_MAY, 5],
[CS_DATETIME_JUN, 6],
[CS_DATETIME_JUL, 7],
[CS_DATETIME_AUG, 8],
[CS_DATETIME_SEP, 9],
[CS_DATETIME_OCT, 10],
[CS_DATETIME_NOV, 11],
[CS_DATETIME_DEC, 12],
[CS_DATETIME_JANUARY, 1],
[CS_DATETIME_FEBRUARY, 2],
[CS_DATETIME_MARCH, 3],
[CS_DATETIME_APRIL, 4],
[CS_DATETIME_JUNE, 6],
[CS_DATETIME_JULY, 7],
[CS_DATETIME_AUGUST, 8],
[CS_DATETIME_SEPTEMBER, 9],
[CS_DATETIME_OCTOBER, 10],
[CS_DATETIME_NOVEMBER, 11],
[CS_DATETIME_DECEMBER, 12],
[CS_DATETIME_SEPT, 9],
[CS_DATETIME_JLY, 7] ];


function CSDate_buildRegExpFromTokens( tokens, strict )
{
var ret = null;
var rgx = null;
do {
if (tokens == null) {
this.err =  new CSErr( CSDate.ERR_TEMPLATE_INVALID );
break;
}
if (strict == null)
strict = false;
var len = tokens.length;
var i = 0;
rgx = "^";
for (i = 0; i < len; i++) {
var tok = tokens[i];
if (tok.type == CS_KWD) {
switch (tokens[i].chunk) {
case "D":
case "M":
case "m":
case "s":
case "h":
case "H":
rgx += "(\\d{1,2})";
break;
case "hh":
case "HH":
rgx += (strict ? "(\\d{2})" : "(\\d{1,2})");
break;
case "DD":
case "MM":
case "mm":
case "ss":
rgx += "(\\d{2})";
break;
case "MMM":
rgx += "([A-Za-z]{1,12})";
break;
case "YY":
rgx += "(\\d{2})";
break;
case "YYYY":
rgx += (strict ? "(\\d{4})" : "(\\d{2,4})");
break;
case "t":
case "T":
rgx += "([AaMmPp]{0,2})";
break;
default:
break;
}
} else if (tok.type == CS_SEP) {
rgx += "([" + CS_DATERGXSEPS + "]*)";
}
}
rgx += "$";
ret = rgx;
} while (false);
return ret;
}

function CSDate_monthNumberLookupStat( str )
{
var ret = -2;
var i   = 0;
for (i = 0; i < CS_DATETIMEMONTHARRAY.length; i++) {
if (str.toUpperCase() == CS_DATETIMEMONTHARRAY[i][0].toUpperCase()) {
ret = CS_DATETIMEMONTHARRAY[i][1];
break;
}
}
return ret;
}

function CSDate_monthNameLookupStat( num )
{
if (num < 1 || num > CS_DATETIMEMONTHARRAY.length)
return "";
return CS_DATETIMEMONTHARRAY[num - 1][0];
}

function CSDate_yearHorizonStat( year )
{
ret = parseInt( year, 10 );
if (year.length == 2 && ret >= 50 && ret < 100) {
ret += 1900;
} else if (year.length == 2 && ret >= 0 && ret < 50) {
ret += 2000;
}
return ret;
}







function CSDate_buildDateObj( tokens, rgxres )
{
do {
if (tokens == null) {
this.err = new CSErr( CSDate.ERR_TEMPLATE_INVALID );
break;
}
if (rgxres == null) {
var de = new CSDate( 2001, 12, 31, 16, 45, 30 );
var r = de.formatDate( tokens, true );
this.err = new CSErr( CSDate.ERR_FORMAT_INVALID, r[0] );
break;
}
var i = 0;
var j = 0;
var ap = "";
for (i = 0; i < tokens.length; i++) {
if (tokens[i].type == CS_SEP ) {
j++;
} else if (tokens[i].type == CS_KWD) {
j++;
switch (tokens[i].chunk) {
case "D":
case "DD":
this.day = parseInt( rgxres[j], 10 );
break;
case "M":
case "MM":
this.month = parseInt( rgxres[j], 10 );
break;
case "MMM":
this.month = CSDate_monthNumberLookupStat( rgxres[j] );
break;
case "YY":
case "YYYY":
this.year = CSDate_yearHorizonStat( rgxres[j] );
break;
case "H":
case "HH":
case "h":
case "hh":
this.hour = parseInt( rgxres[j], 10 );
break;
case "m":
case "mm":
this.minute = parseInt( rgxres[j], 10 );
break;
case "s":
case "ss":
this.second = parseInt( rgxres[j], 10 );
break;
case "t":
case "T":
ap = rgxres[j].toUpperCase();
if (ap == "PM" || ap == "P") {
ap = "PM";
} else if (ap == "AM" || ap == "A") {
ap = "AM";
}
break;
}
}
}
if (ap == "PM" && this.hour <= 11 && this.hour >= 0) {
this.hour += 12;
} else if (ap == "AM" && this.hour == 12) {
this.hour = 0;
}
this.verify();
} while (false);
}




function CSDate_validateRange( dt, b, e, tokenArray )
{
var ret = true;
if ((b != null && dt < b) || (e != null && dt > e)) {
this.err = new CSErr( CSDate.ERR_DATE_OUTOFRANGE, new Object() );
this.err.ex.b = b != null ? b.formatDate( tokenArray, true )[0] : null;
this.err.ex.e = e != null ? e.formatDate( tokenArray, true )[0] : null;
ret = false;
}
return ret;
}

function CSDate_verifyDateObj()
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (this.year < 0 && this.year != null ) {
this.err = new CSErr( CSDate.ERR_YEAR_OUTOFRANGE );
break;
}
if (this.month == -2) {
this.err = new CSErr( CSDate.ERR_MONTH_UNRECOGNIZABLE );
break;
}
if ((this.month < 1 || this.month > 12) && this.month != null) {
this.err = new CSErr( CSDate.ERR_MONTH_OUTOFRANGE );
break;
}





if ((this.month != null || this.year != null) && typeof this.day == "undefined") {
this.day = 1;
}

if ((this.day < 1 || this.day > CS_DATETIMEDAYARRAY[ this.month ]) && this.day != null ) {
this.err = new CSErr( CSDate.ERR_DAY_OUTOFRANGE );
break;
}



if (this.year > 0 && this.month == 2) {  
if (!(this.year % 4 == 0 && (this.year % 100 == 0 ? this.year % 400 == 0 : true))) { 
if (this.day > 28 && this.day != null) { 
this.err = new CSErr( CSDate.ERR_DAY_OUTOFRANGE );
break;
}
}
}
if ((this.hour < 0 || this.hour > 23) && this.hour != null) {
this.err = new CSErr( CSDate.ERR_HOUR_OUTOFRANGE );
break;
}
if ((this.minute < 0 || this.minute > 59) && this.minute != null) {
this.err = new CSErr( CSDate.ERR_MINUTE_OUTOFRANGE );
break;
}
if ((this.second < 0 || this.second > 59) && this.second != null) {
this.err = new CSErr( CSDate.ERR_SECOND_OUTOFRANGE );
break;
}

this.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = this.err.no;
return ret;
}

function CSDate_formatDateObj( tokens, bSeps )
{
var ret = null;
do {
if (tokens == null)
break;
if (bSeps == null)
bSeps = true;
j = 1;
ret = new Array;
ret[0] = ret[j] = "";
var i = 0;
var v = "";
for (i = 0; i < tokens.length; i++) {
v = "";
if (tokens[i].type == CS_SEP) {
v = tokens[i].chunk;
} else if (tokens[i].type == CS_BRK) {
j++;
ret[j] = "";
} else if (tokens[i].type == CS_KWD) {
switch (tokens[i].chunk) {
case "D":
v = this.day.toString();
break;
case "DD":
v = CS_NumberForceLengthPrepend( this.day, 2 );
break;
case "M":
v = this.month.toString();
break;
case "MM":
v = CS_NumberForceLengthPrepend( this.month, 2 );
break;
case "MMM":
v = CSDate_monthNameLookupStat( this.month );
break;
case "YY":
v = CS_NumberForceLengthPrepend( this.year, 2 );
break;
case "YYYY":
v = CS_NumberForceLengthPrepend( this.year, 4 );
break;
case "H":
v = this.hour.toString();
break;
case "HH":
v = CS_NumberForceLengthPrepend( this.hour.toString(), 2 );
break;
case "h":
v = ((this.hour + 11) % 12 + 1).toString();
break;
case "hh":
v = CS_NumberForceLengthPrepend( ((this.hour + 11) % 12 + 1).toString(), 2 );
break;
case "m":
v = this.minute.toString();
break;
case "mm":
v = CS_NumberForceLengthPrepend( this.minute, 2 );
break;
case "s":
v = this.second.toString();
break;
case "ss":
v = CS_NumberForceLengthPrepend( this.second, 2 );
break;
case "t":
v = this.hour < 12 ? "am" : "pm";
break;
case "T":
v = this.hour < 12 ? "AM" : "PM";
break;
}
}
ret[0] += v;
if (tokens[i].type != CS_SEP)
ret[j] += v;
}
} while (false);
this.res = ret;
return ret;
}

function CSDate_parseTemplate( templ )
{
return CS_buildTokenArray( templ, CS_DATESEPS, CS_DATEKWDSRGX );
}

function CSDate_buildRegExp( tok, strict )
{
var regexp = null;
do {
var rgx = CSDate_buildRegExpFromTokens( tok, strict );
if (rgx == null) {
this.err = new CSErr( CSDate.ERR_TEMPLATE_INVALID );
break;
}
regexp = new RegExp( rgx );
if (regexp == null) {
this.err = new CSErr( CSDate.ERR_TEMPLATE_INVALID );
break;
}
} while (false);
return regexp;
}





function CSDate_evalutate( rgx, toks, val )
{
var ret = null;
var res = CS_DATETMPRGX.exec( val );
if (res != null) {
var d = !(res[1] == 0 && res[2] == 0 && res[3] == 0);
var t = !(res[4] == 0 && res[5] == 0 && res[6] == 0);
this.reset( d ? res[1] : null,
d ? res[2] : null,
d ? res[3] : null,
t ? res[4] : null,
t ? res[5] : null,
t ? res[6] : null );
this.verify();
} else {
res = rgx.exec( val );
this.build( toks, res );
}
if (this.err.no == CSErr.ERR_SUCCESS) {
ret = new CSDate( this.year,
this.month,
this.day,
this.hour,
this.minute,
this.second );
}
return ret;
}

function CSDate_concatKWDChunks( toks )
{
var s = ""
if (toks == null)
return s;
for (var i in toks) {
if (toks[i].type == CS_KWD)
s += toks[i].chunk;
}
return s;
}
CSDate_MatchDateKWDs = /[M|D|Y]/;
CSDate_MatchTimeKWDs = /[H|h|m|s]/;
function CSDate_areDateTokens( toks )
{
var s = CSDate_concatKWDChunks( toks );
return s.search( CSDate_MatchDateKWDs ) > -1;
}

function CSDate_areTimeTokens( toks )
{
var s = CSDate_concatKWDChunks( toks );
return s.search( CSDate_MatchTimeKWDs ) > -1;
}

function CSDate_isDateTemplate( template )
{
return CSDate_areDateTokens( CSDate_parseTemplate( template ) );
}

function CSDate_isTimeTemplate( template )
{
return CSDate_areTimeTokens( CSDate_parseTemplate( template ) );
}





function CSDate_format( dt, tokenArray, bSps )
{
if (dt == null) {
this.err = new CSErr( CSErr.ERR_SUCCESS );
return new Array( "" );
}
var ret = dt.formatDate( tokenArray, bSps );
this.err = dt.err;
return ret;
}
function CSDate_toString()
{
return   "year:   " + this.year   + "\r"
+ "month:  " + this.month  + "\r"
+ "day:    " + this.day    + "\r"
+ "hour:   " + this.hour   + "\r"
+ "minute: " + this.minute + "\r"
+ "second: " + this.second + "\r"
+ "err:\r  " + this.err    + "\r"
+ "errstr: " + this.getErrorString();
}

function CSDate_valueOf()
{
var Y = this.year   == null ? 0 : this.year;
var M = this.month  == null ? 0 : this.month;
var D = this.day    == null ? 0 : this.day;
var h = this.hour   == null ? 0 : this.hour;
var m = this.minute == null ? 0 : this.minute;
var s = this.second == null ? 0 : this.second;

return s + (m * 60) + (h * 3600) + (D * 86400) + (M * 2678400) + (Y * 980294400);
}

function CSDate_isDate()
{
return (this.year != null || this.month != null || this.day != null);
}

function CSDate_isTime()
{
return (this.hour != null || this.minute != null || this.second != null);
}
CSDate.today = function()
{
var dt = new Date();

return new CSDate( dt.getFullYear(), dt.getMonth() + 1, dt.getDate() );
}
CSDate.now = function()
{
var dt = new Date();

return new CSDate( null, null, null, dt.getHours(), dt.getMinutes(), dt.getSeconds() );
}
function CSDate_reset( Y, M, D, h, m, s )
{
var i = 0;
for (i = 0; arguments[i] != null; i++);
if (i == 1) {
var r = CS_DTTMRGX.exec( Y );
if (r == null || r == "" || !r[0]) {
r = new Array();
if (Y != null)
r[2] = Y;
}
Y = r[2]; M = r[3]; D = r[4]; h = r[6]; m = r[7]; s = r[8];
}
this.year     = CS_ParseIntEx( Y );
this.month    = CS_ParseIntEx( M );
this.day      = CS_ParseIntEx( D );
this.hour     = CS_ParseIntEx( h );
this.minute   = CS_ParseIntEx( m );
this.second   = CS_ParseIntEx( s );
this.err      = new CSErr( CSErr.ERR_UNDEFINED );
this.res      = null;
}

CSDate.prototype.reset          = CSDate_reset;
CSDate.prototype.parseTemplate  = CSDate_parseTemplate;
CSDate.prototype.buildRegExp    = CSDate_buildRegExp;
CSDate.prototype.evaluate       = CSDate_evalutate;
CSDate.prototype.build          = CSDate_buildDateObj;
CSDate.prototype.format         = CSDate_format;
CSDate.prototype.formatDate     = CSDate_formatDateObj;
CSDate.prototype.verify         = CSDate_verifyDateObj;
CSDate.prototype.validateRange  = CSDate_validateRange;
CSDate.prototype.getErrorString = CSDate_getErrorString;
CSDate.prototype.isDate         = CSDate_isDate;
CSDate.prototype.isTime         = CSDate_isTime;
CSDate.prototype.toString       = CSDate_toString;
CSDate.prototype.valueOf        = CSDate_valueOf;
CSDate.getErrorString           = CSDate_getErrStrStat;















CSNum.ERR_FAM             = 0x3000;

CSNum.ERR_OUTOFRANGE      = CSNum.ERR_FAM | 0x0004;
CSNum.ERR_INVLDFMT        = CSNum.ERR_FAM | 0x0008;

CSNum.ERR_OUTOFRANGE_B_STR   = CS_NUMBEROBJ_ERR_OUTOFRANGE_B_STR;
CSNum.ERR_OUTOFRANGE_G_STR   = CS_NUMBEROBJ_ERR_OUTOFRANGE_G_STR;
CSNum.ERR_OUTOFRANGE_L_STR   = CS_NUMBEROBJ_ERR_OUTOFRANGE_L_STR;
CSNum.ERR_OUTOFRANGE_E_STR   = CS_NUMBEROBJ_ERR_OUTOFRANGE_E_STR;
CSNum.ERR_FORMAT_INVALID_STR = CS_NUMBEROBJ_ERR_FORMAT_INVALID_STR;

function CSNum_getErrorStringStat( num, ex )
{
var ret = CSErr.ERR_UNDEFINED_STR;
if (num == CSNum.ERR_OUTOFRANGE) {
if (ex.min != null && ex.max != null) {
if (ex.min == ex.max) {
ret = CS_InsertString( CSNum.ERR_OUTOFRANGE_E_STR, ex.min );
} else {
var tmp = CS_InsertString( CSNum.ERR_OUTOFRANGE_B_STR, ex.min )
ret = CS_InsertString( tmp, ex.max );
}
} else if (ex.min != null && ex.max == null) {
ret = CS_InsertString( CSNum.ERR_OUTOFRANGE_G_STR, ex.min );
} else if (ex.min == null && ex.max != null) {
ret = CS_InsertString( CSNum.ERR_OUTOFRANGE_L_STR, ex.max );
} else {
ret = CSNum.ERR_OUTOFRANGE_STR;
}
} else if (num == CSNum.ERR_INVLDFMT) {
ret = CSNum.ERR_FORMAT_INVALID_STR;
}
return ret;
}

function CSNum_getErrorString()
{
return CSNum_getErrStrStat( this.err );
}

function CSNum_getErrStrStat( err )
{
return CSNum_getErrorStringStat( err.no, err.ex );
}

function CSNum_insertPlaces( str, p )
{
var i = 0
var ret = ""
if (p == null)
p = ",";



str = str.replace( /^0*/, "" )
var tmp = str.charAt( str.length - 1 )
for (i = 2; i <= str.length; i++ ) {
if (i % 3 == 1 && str.charAt( str.length - i ) != "") {
tmp += p + str.charAt( str.length - i )
} else {
tmp += str.charAt( str.length - i )
}
}



for (i = 0; i < tmp.length; i++) {
ret += tmp.charAt( tmp.length - i - 1 )
}
if (ret == "")
ret = "0";
return ret
}

function CSNum_evaluate( uval, cs, ds, ss, dp, app )
{
var ret = null;
this.err = new CSErr( CSErr.ERR_UNDEFINED );
do {
cs = (cs == null) ? "" : cs;
dp = (dp == null) ? 0 : dp;
if (ds == null || ds == "") {
ds = ".";
dp = 0;
}

if (typeof( uval ) != "string") {
uval = uval.toString();


uval = uval.replace( ".", ds );
}


var rgxcln = new RegExp( cs );
var cln    = uval.replace( rgxcln, "" );

var dsx = CS_EscapeRegExpLiterals( ds );
rgxcln = new RegExp( "[^\\d\\-" + dsx + "]", "g" );
cln = cln.replace( rgxcln, "" );
















rgxcln = new RegExp( dsx, "g" );
cln = cln.replace( rgxcln, "." );
var f = parseFloat( cln );
if (isNaN( f )) {
this.err = new CSErr( CSNum.ERR_INVLDFMT );
break;
}
ret = f;
this.num = f;
this.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
return ret;
}

function CSNum_format( internalVal, cs, ds, ss, dp, app )
{
if (ds == null || ds == "" || dp == 0) {
ds = "";
dp = 0;
}
ss = ss != null ? ss : "";
if (internalVal == null)
n = 0;
var s = "";
if (!isNaN( internalVal ) && isFinite( internalVal )) {
s = CS_NumToString( internalVal, dp, ds, ss, cs, app, true );
} else {
return s;
}
return s;
}

function CSNum_validateRange( internalVal, mn, mx, cs, ds, ss, dp, app )
{
var ret = true;
if ((mn != null && internalVal < mn) || (mx != null && internalVal > mx)) {
this.err = new CSErr( CSNum.ERR_OUTOFRANGE, new Object() );
var n = new CSNum();
this.err.ex.min = mn == null ? mn : n.format( mn, cs, ds, ss, dp, app );
this.err.ex.max = mx == null ? mx : n.format( mx, cs, ds, ss, dp, app );
ret = false;
}
return ret;
}

function CSNum_valueOf()
{
return this.num;
}

function CSNum_toString()
{
return "num: " + this.num + "\rerror: " + this.err.no + "\rerror str: " + this.getErrorString() + "\rres: " + this.res;
}

function CSNum_reset( num )
{
this.num = num == null ? 0 : num;
this.err = new CSErr( CSErr.ERR_SUCCESS );
}

function CSNum( num )
{
this.reset( num );
}

CSNum.prototype.reset          = CSNum_reset;
CSNum.prototype.valueOf        = CSNum_valueOf;
CSNum.prototype.toString       = CSNum_toString;
CSNum.prototype.getErrorString = CSNum_getErrorString;
CSNum.prototype.evaluate       = CSNum_evaluate;
CSNum.prototype.format         = CSNum_format;
CSNum.prototype.validateRange  = CSNum_validateRange;

CSNum.getErrorString           = CSNum_getErrStrStat;












var CS_TMPLKWDS = "A+\\d*|U+\\d*|L+\\d*|X+\\d*|N+\\d*|S+\\d*|\\.+\\d*";
var CS_TMPLSEPS = " ";
var CS_TMPLRGXSEPS = "\\ ";




CSTempl.ERR_FAM               = 0x4000;
CSTempl.ERR_TEMPLATE_INVALID  = CSTempl.ERR_FAM | 0x0001;
CSTempl.ERR_FORMAT_INVALID    = CSTempl.ERR_FAM | 0x0002;

CSTempl.ERR_TEMPLATE_INVALID_STR  = CS_DTOBJ_ERR_TEMPLATE_INVALID_STR;
CSTempl.ERR_FORMAT_INVALID_STR    = CS_DTOBJ_ERR_FORMAT_INVALID_STR;

function CSTempl_getErrorStringStat( num, ex ) 
{
var ret = CSErr.ERR_UNDEFINED_STR;
if (num == CSTempl.ERR_TEMPLATE_INVALID) {
ret = CSTempl.ERR_TEMPLATE_INVALID_STR;
} else if (num == CSTempl.ERR_FORMAT_INVALID) {
ret = CSTempl.ERR_FORMAT_INVALID_STR;
if (ex != null)
ret = ret.replace( /\%s/, ex );
}
return ret;
}

function CSTempl_getErrorString()
{
return CSTempl_getErrStrStat( this.err );
}

function CSTempl_getErrStrStat( err ) 
{
return CSTempl_getErrorStringStat( err.no, err.ex );
}

function CSTempl_normalizeKWDStat( kwdchk )
{
if (kwdchk.type != CS_KWD)
return null;
var res = CS_TMPLKWDPRS.exec( kwdchk.chunk );
if (res == null)
return null;
var i = parseInt( res[2] );
kwdchk.chunk = kwdchk.chunk.charAt( 0 );
kwdchk.chunk += res[1].length + ( isNaN( i ) || i == 0 ? 0 : i - 1 );
return kwdchk;
}

function CSTempl_parseTemplate( templ )
{
var ret = null;
this.err = new CSErr( CSTempl.ERR_TEMPLATE_INVALID );
do {
var tok = CS_buildTokenArray( templ, CS_TMPLSEPS, CS_TMPLKWDSRGX );
if (tok == null)
break;
var i = 0;
for (i = 0; i < tok.length; i++)
if (tok[i].type == CS_KWD) 
tok[i] = CSTempl_normalizeKWDStat( tok[i] );
this.err = new CSErr( CSErr.ERR_SUCCESS );
ret = tok;
} while (false);
return ret;
}

function CSTempl_buildRegExp( tok, hard )
{
var ret = null;
this.err = new CSErr( CSTempl.ERR_TEMPLATE_INVALID );
do {
if (tok == null)
break;
if (hard == null)
hard = false;
var rgx = "^";
var i = 0;
for (i = 0; i < tok.length; i++) {
if (tok[i].type == CS_SEP) {
var el = CS_EscapeRegExpLiterals( tok[i].chunk ) 
if (hard) {
rgx += "(" + el + ")";
} else {
rgx += "([\\W" + el + "]*)";
}
} else if (tok[i].type == CS_BRK) {
} else if (tok[i].type == CS_KWD) {
var r = null;
var c = tok[i].chunk.charAt( 0 );
var n = parseInt( tok[i].chunk.slice( 1 ) ); 
if (isNaN( n ) || n == 0)
break;
switch (c) {
case "A":
r = CS_TEXT_ALPHA;
break;
case "U":
r = CS_TEXT_UPPER;
break;
case "L":
r = CS_TEXT_LOWER;
break;
case "X":
r = CS_TEXT_ALNUM;
break;
case "N":
r = CS_TEXT_NUM;
break;
case "S":
r = CS_TEXT_PUNC;
break;
case ".":
r = ".";
break;
}
if (r != null) {
if (r == ".") {
rgx += "(.{" + n + "})";
} else {
rgx += "([" + r + "]{" + n + "})";
}
}
}
}
rgx += "$";
ret = new RegExp( rgx );
if (ret != null)    
this.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
return ret;
}

function CSTempl_buildTemplStr( toks )
{
var ret = null;
do {
if (toks == null)
break;
ret = "";
var i = 0;
for (i = 0; i < toks.length; i++) {
if (toks[i].type == CS_SEP) {
ret += toks[i].chunk;
} else if (toks[i].type == CS_KWD) {
ret += toks[i].chunk.charAt( 0 );
var n = parseInt( toks[i].chunk.charAt( 1 ) );
if (n != 0) {
var j = 1;
for (j = 1; j < n; j++)
ret += toks[i].chunk.charAt( 0 );
}
}
}
} while (false);
return ret;
}

function CSTempl_evaluate( rgx, toks, val )
{
var ret = null;
this.err = new CSErr( CSErr.ERR_UNDEFINED );
do {
if (rgx == null || toks == null) {
this.err = new CSErr( CSTempl.ERR_TEMPLATE_INVALID );
break;
}
var rres = rgx.exec( val );
if (rres == null) {
this.err = new CSErr( CSTempl.ERR_FORMAT_INVALID, CSTempl_buildTemplStr( toks ));
break;
}
ret = rres;
this.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
return ret;
}

function CSTempl_format( rres, toks, bSeps )
{
var ret = null;
this.err = new CSErr( CSErr.ERR_UNDEFINED );
do {
if (toks == null) {
this.err = new CSErr( CSTempl.ERR_TEMPLATE_INVALID );
break;
}
if (rres == null) {
this.err = new CSErr( CSTempl.ERR_FORMAT_INVALID, CSTempl_buildTemplStr( toks ));
break;
}
if (bSeps == null)
bSeps = true;
var res = new Array;
var i, j = 0, k = 1, v = "";
res[0] = res[k] = "";
for (i = 0; i < toks.length; i++) {
v = "";
switch (toks[i].type) {
case CS_SEP:
j++;
v = toks[i].chunk;
break;
case CS_KWD:
j++;
v = rres[j];
break;
case CS_BRK:
k++;
res[k] = "";
break;
}
res[0] += v;
if (toks[i].type != CS_SEP)
res[k] += v;
}
ret = res;
this.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
return ret;
}

function CSTempl_toString()
{
return   "err: " + this.err + "\r"
+ "error: " + this.getErrorString() + "\r";
}

function CSTempl_reset()
{
this.err = new CSErr( CSErr.ERR_UNDEFINED );
}

function CSTempl()
{
this.reset();
}
CSTempl.Init = function()
{
CS_TMPLKWDSRGX = new RegExp( CS_TMPLKWDS, "g" );
CS_TMPLKWDPRS  = new RegExp( "(\\D+)(\\d*)" );
}

CSTempl.prototype.reset          = CSTempl_reset;
CSTempl.prototype.parseTemplate  = CSTempl_parseTemplate;
CSTempl.prototype.buildRegExp    = CSTempl_buildRegExp;
CSTempl.prototype.evaluate       = CSTempl_evaluate;
CSTempl.prototype.format         = CSTempl_format;
CSTempl.prototype.toString       = CSTempl_toString;
CSTempl.prototype.getErrorString = CSTempl_getErrorString;

CSTempl.getErrorString           = CSTempl_getErrStrStat;













CSTxt.ERR_FAM           = 0x1000;
CSTxt.ERR_LENTOOLONG    = CSTxt.ERR_FAM | 0x0001;
CSTxt.ERR_LENTOOSHORT   = CSTxt.ERR_FAM | 0x0002;
CSTxt.ERR_INVLDCHAR     = CSTxt.ERR_FAM | 0x0004;

CSTxt.ERR_LENTOOLONG1_STR  = CSTXT_ERR_LENTOOLONG1_STR;
CSTxt.ERR_LENTOOLONG2_STR  = CSTXT_ERR_LENTOOLONG2_STR;
CSTxt.ERR_LENTOOLONG3_STR  = CSTXT_ERR_LENTOOLONG3_STR;
CSTxt.ERR_LENTOOSHORT1_STR = CSTXT_ERR_LENTOOSHORT1_STR;
CSTxt.ERR_LENTOOSHORT2_STR = CSTXT_ERR_LENTOOSHORT2_STR;
CSTxt.ERR_INVLDCHAR1_STR   = CSTXT_ERR_INVLDCHAR2_STR;
CSTxt.ERR_INVLDCHAR2_STR   = CSTXT_ERR_INVLDCHAR2_STR;

CSTxt.ERR_AL               = CSTXT_ERR_AL;
CSTxt.ERR_NUM              = CSTXT_ERR_NUM;
CSTxt.ERR_ALSL             = CSTXT_ERR_ALSL;
CSTxt.ERR_NUMSL            = CSTXT_ERR_NUMSL;
CSTxt.ERR_SPACE            = CSTXT_ERR_SPACE;
CSTxt.ERR_AND              = CSTXT_ERR_AND;

CSTxt.AL                   = CS_TEXT_ALPHA;
CSTxt.NUM                  = CS_TEXT_NUM;
CSTxt.SPACE                = CS_TEXT_SPACE;
CSTxt.ALSL                 = CS_TEXT_ALPHASPL;
CSTxt.NUMSL                = CS_TEXT_NUMSPL;

function CSTxt_getErrorStringStat( no, ex )
{
var ret = CSErr.ERR_UNDEFINED_STR;
if (no == CSTxt.ERR_LENTOOLONG) {
if (ex != null && ex.v != null && ex.l != null) {
ret = CS_InsertString( CSTxt.ERR_LENTOOLONG3_STR, ex.v );
ret = CS_InsertString( ret, ex.l );
} else if (ex != null && ex.l != null) {
ret = CS_InsertString( CSTxt.ERR_LENTOOLONG2_STR, ex.l );
} else {
ret = CSTxt.ERR_LENTOOLONG1_STR;
}
} else if (no == CSTxt.ERR_LENTOOSHORT) {
if (ex == null || ex.l == null) {
ret = CSTxt.ERR_LENTOOSHORT1_STR;
} else {
ret = CS_InsertString( CSTxt.ERR_LENTOOSHORT2_STR, ex.l );
}
} else if (no == CSTxt.ERR_INVLDCHAR) {
ret = CSTxt.buildErrMsg( ex.acm );
}
return ret;
}

function CSTxt_getErrorString()
{
return CSTxt_getErrStrStat( this.err );
}

function CSTxt_getErrStrStat( err )
{
return CSTxt_getErrorStringStat( err.no, err.ex );
}

function CSTxt_toUpperCase( str )
{
return str.toUpperCase();
}

function CSTxt_toLowerCase( str )
{
return str.toLowerCase();
}

function CSTxt_toProperCase( string )
{
var tmp = string.charAt( 0 ).toUpperCase();
var pattern = /\s/;
for (var i = 1; i < string.length; i++) {
if (string.charAt( i - 1 ).search( pattern ) != -1 ) {
tmp += string.charAt( i ).toUpperCase();
} else {
tmp += string.charAt( i ).toLowerCase();
}
}
return tmp;
}

function CSTxt_overwriteText( s, is, sS, sE )
{
var ret = s.slice( 0, sS );
ret += is;
ret += s.slice( sE );
return ret;
}

function CSTxt_format( val, type )
{
var ret = val;
switch( type ) {
case "proper":
ret = CSTxt_toProperCase( val );
break;
case "upper":
ret = CSTxt_toUpperCase( val );
break;
case "lower":
ret = CSTxt_toLowerCase( val );
break;
}
return ret;
}

function CSTxt_validate( val, mncc, mxcl, eem )
{
var ret = true;
if (mncc != null && val.length < mncc) {
this.err = new CSErr( CSTxt.ERR_LENTOOSHORT, new Object() );
this.err.ex.l = mncc.toString();
ret = false;
} else if (mxcl != null && val.length > mxcl) {
this.err = new CSErr( CSTxt.ERR_LENTOOLONG, new Object() );
this.err.ex.v = eem ? val.toString() : null;
this.err.ex.l = mxcl.toString();
ret = false;
}
return ret;
}

function CSTxt_charsValid( v, f, acm )
{
var ret = CS_CharFilter( v, f );
if (!ret) {
this.err = new CSErr( CSTxt.ERR_INVLDCHAR, new Object() );
this.err.ex.acm = acm;
}
return ret;
}

function CSTxt_buildErrMsg( acm )
{
var ret = CSTxt.ERR_INVLDCHAR1_STR;
if (acm != null && typeof( acm ) == "number") {
var c = 0;
var a = new Array();
if (acm & 0x01)
a[c++] = CSTxt.ERR_AL;
if (acm & 0x02)
a[c++] = CSTxt.ERR_NUM;
if (acm & 0x04 && acm & 0x01)
a[c++] = CSTxt.ERR_ALSL;
else if (acm & 0x04 && acm & 0x02)
a[c++] = CSTxt.ERR_NUMSL;
if (acm & 0x08)
a[c++] = CSTxt.ERR_SPACE;
var sa = "";
for (var i = 0; i < a.length; i++) {
sa += (i > 0 && a.length > 2) ? ", " : "";
sa += (1 > 0 && a.length > 1 && (i == (a.length - 1))) ? " " + CSTxt.ERR_AND + " " : "";
sa += a[i];
}
ret = CS_FormatMessage( CSTxt.ERR_INVLDCHAR2_STR, sa );
}
return ret;
}

function CSTxt_buildAllowedChars( acm )
{
var ret = "";
do {
if (acm == null || typeof( acm ) != "number" )
break;
if (acm & 0x01)
ret += CSTxt.AL;
if (acm & 0x02)
ret += CSTxt.NUM;
if (acm & 0x04 && acm & 0x01)
ret += CSTxt.ALSL;
else if (acm & 0x04 && acm & 0x02)
ret += CSTxt.NUMSL;
if (acm & 0x08)
ret += CSTxt.SPACE;
} while (false); 
return ret;
}

function CSTxt()
{
this.err = new CSErr( CSErr.ERR_SUCCESS )
}

CSTxt.prototype.validate       = CSTxt_validate;
CSTxt.prototype.format         = CSTxt_format;
CSTxt.prototype.charsValid     = CSTxt_charsValid;
CSTxt.prototype.getErrorString = CSTxt_getErrorString;
CSTxt.getErrorString           = CSTxt_getErrStrStat;
CSTxt.toLowerCase              = CSTxt_toLowerCase;
CSTxt.toUpperCase              = CSTxt_toUpperCase;
CSTxt.toProperCase             = CSTxt_toProperCase;
CSTxt.overwriteText            = CSTxt_overwriteText;
CSTxt.buildErrMsg              = CSTxt_buildErrMsg;
CSTxt.buildAllowedChars        = CSTxt_buildAllowedChars;


















CSFmt.ERR_FAM               = 0x8000;

CSFmt.ERR_INVLDFMTTYPE      = CSFmt.ERR_FAM | 0x0001;
CSFmt.ERR_INVLDFMTOBJ       = CSFmt.ERR_FAM | 0x0002;




CSFmt.ERR_INVLDFMTTYPE_STR  = CS_CSFMT_ERR_INVLDFMTTYPE_STR;
CSFmt.ERR_INVLDFMTOBJ_STR   = CS_CSFMT_ERR_INVLDFMTOBJ_STR;

function CSFmt_getErrStrStat( err )
{
var ret = CSErr.ERR_UNDEFINED_STR;
if (err.no == CSFmt.ERR_INVLDFMTTYPE)
ret = CSFmt.ERR_INVLDFMTTYPE_STR;
else if (err.no == CSFmt.ERR_INVLDFMTOBJ)
ret = CSFmt.ERR_INVLDFMTOBJ_STR;
return ret;
}

function CSFmt_getErrStr( o )
{
var ret = CSErr.ERR_UNDEFINED_STR;
do {
if (o == null || o.err == null)
break;
var e = o.err;
var fam = e.no & 0xF000;
if (fam == CSErr.ERR_FAM) {
ret = CSErr.getErrorString( e );
} else if (fam == CSTxt.ERR_FAM) {
ret = CSTxt.getErrorString( e );
} else if (fam == CSDate.ERR_FAM) {
ret = CSDate.getErrorString( e );
} else if (fam == CSNum.ERR_FAM) {
ret = CSNum.getErrorString( e );
} else if (fam == CSTempl.ERR_FAM) {
ret = CSTempl.getErrorString( e );
} else if (fam == CSFmt.ERR_FAM) {
ret = CSFmt.getErrorString( e );
}
} while (false);
return ret;
}

function CSFmt_init( o )
{ 
var ret = CSErr.ERR_UNDEFINED;
do {
if (o == null) { 
return CSFmt.ERR_INVLDFMTOBJ;
}
switch (o.fmt) {
case "txt":
CSFmt_inittxt( o );
break;
case "dt":
CSFmt_initdt( o );
break;
case "nmbr":
CSFmt_initnmbr( o );
break;
case "tmpl":
CSFmt_inittmpl( o );
break;
}
o.err = new CSErr( CSFmt.ERR_SUCCESS );
} while (false);
ret = o.err.no;
return ret;
}

function CSFmt_format( o )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (o == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}

switch (o.fmt) {
case "txt":
CSFmt_fmttxt( o );
break;
case "dt":
CSFmt_fmtdt( o );
break;
case "nmbr":
CSFmt_fmtnmbr( o );
break;
case "tmpl":
CSFmt_fmttmpl( o );
break;
default:
o.err = new CSErr( CSFmt.ERR_INVLDFMTTYPE );
break;
}
} while (false);
ret = o.err.no; 
return ret;
}

function CSFmt_validate( o )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (o == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}

if (o.userVal == null) {
o.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
switch (o.fmt) {
case "txt":
ret = CSFmt_vldtxt( o );
break;
case "dt":
ret = CSFmt_vlddt( o );
break;
case "nmbr":
ret = CSFmt_vldnmbr( o );
break;
case "tmpl":
ret = CSFmt_vldtmpl( o );
break;
default:
o.err = new CSErr( CSFmt.ERR_INVLDFMTTYPE );
break;
}
} while (false);
ret = o.err.no;
return ret;
}

function CSFmt_charsValid( o )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (o == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
switch (o.fmt) {
case "txt":
ret = CSFmt_chsvtxt( o );
break;
case "nmbr":
ret = CSFmt_chsvnmbr( o );
break;
case "dt":
case "tmpl":
o.err = new CSErr( CSErr.ERR_SUCCESS );
break;
default:
o.err = new CSErr( CSFmt.ERR_INVLDFMTTYPE );
break;
}
} while (false);
ret = o.err.no;
return ret;
}
function CSFmt()
{
}
CSFmt.Init = function()
{
CSDate.Init();
CSTempl.Init();
}

















function CSFmt_needInit( fieldObj )
{
return (fieldObj.init == null || fieldObj.reserved == null);
}

function CSFmt_updateIntVal( fieldObj )
{
if (fieldObj != null && fieldObj.reserved != null)
fieldObj.internalVal = fieldObj.reserved.internalVal;
}

function CSFmt_getIntVal( fieldObj )
{
return (fieldObj != null) ? fieldObj.internalVal : null;
}

function CSFmt_setIntVal( fieldObj, v )
{
if (fieldObj != null)
fieldObj.internalVal = v;
}

function CSFmt_useIntVal( fieldObj, b )
{
if (fieldObj != null)
fieldObj.useIntVal = b;
}

function CSFmt_initdt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) { 
return CSFmt.ERR_INVLDFMTOBJ;
}

fieldObj.err = new CSErr( CSErr.ERR_UNDEFINED );

if (fieldObj.fmt == null || fieldObj.fmtdt == null || fieldObj.fmtdt.tmpl == null) {
fieldObj.err = new CSErr( CSFmt.ERR_INVLDFMTOBJ );
break;
}

if (fieldObj.reserved == null)
fieldObj.reserved = new Object();
var reserved = fieldObj.reserved;

var dt = fieldObj.fmtdt;
if (reserved.internalDate == null)
reserved.internalDate = new CSDate();
if (reserved.tokenArray == null)
reserved.tokenArray = reserved.internalDate.parseTemplate( dt.tmpl );
if (reserved.tokenArray == null) {
fieldObj.err = reserved.internalDate.err;
break;
}
if (reserved.regExp == null)
reserved.regExp = reserved.internalDate.buildRegExp( reserved.tokenArray );
if (reserved.regExp == null) {
fieldObj.err = reserved.internalDate.err;
break;
}
fieldObj.init = true;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_evldt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
fieldObj.err = new CSErr( CSErr.ERR_UNDEFINED );
if (CSFmt_needInit( fieldObj ))
if (CSFmt_initdt( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
reserved.internalVal = reserved.internalDate.evaluate( reserved.regExp, reserved.tokenArray, fieldObj.userVal );
if (reserved.internalVal == null) {
fieldObj.err = reserved.internalDate.err;
break;
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_fmtdt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) { 
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_initdt( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
var internalVal = null;
if (fieldObj.useIntVal) {
internalVal = fieldObj.internalVal;
} else {
fieldObj.userVal = CS_TrimTailWS( fieldObj.userVal );
if (fieldObj.userVal == "") {
fieldObj.displayVal = "";
fieldObj.displayValExtended = new Array();
fieldObj.displayValExtended[0] = "";
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
reserved.internalVal = null;
break;
}
CSFmt_evldt( fieldObj );
if (reserved.internalVal == null) {
fieldObj.err = reserved.internalDate.err;
break;
}
internalVal = reserved.internalVal;
}
var dv = reserved.internalDate.format( internalVal, reserved.tokenArray );
if (dv == null) {
fieldObj.err = reserved.internalDate.err;
break;
}
fieldObj.displayVal = dv[0];
fieldObj.displayValExtended = dv;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_vlddt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_initdt( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
fieldObj.userVal = CS_TrimTailWS( fieldObj.userVal );
if (fieldObj.userVal == null || fieldObj.userVal == "") {
reserved.internalVal = null;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
CSFmt_evldt( fieldObj );
if (reserved.internalVal == null) {
fieldObj.err = reserved.internalDate.err;
break;
}
if ( typeof( reserved.minDate ) == "undefined")
reserved.minDate = fieldObj.fmtdt.mnv == null ? null : new CSDate( fieldObj.fmtdt.mnv );
if ( typeof( reserved.maxDate ) == "undefined")
reserved.maxDate = fieldObj.fmtdt.mxv == null ? null : new CSDate( fieldObj.fmtdt.mxv );
if (!reserved.internalDate.validateRange( reserved.internalVal, reserved.minDate, reserved.maxDate, reserved.tokenArray )) {
fieldObj.err = reserved.internalDate.err;
break;
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}
function CSFmt_initnmbr( fieldObj )
{
var ret = CSFmt.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
fieldObj.err = new CSErr( CSErr.ERR_UNDEFINED );
if (fieldObj.reserved == null)
fieldObj.reserved = new Object();
var reserved = fieldObj.reserved;
if (fieldObj.fmt == null || fieldObj.fmtnmbr == null) {
fieldObj.err = new CSErr( CSFmt.ERR_INVLDFMTOBJ );
break;
}
var fn  = fieldObj.fmtnmbr;
reserved.internalCurrencySymbol   = fn.cs   == null ? ""    : fn.cs;
reserved.internalDecimalSeperator = fn.ds   == null ? "."   : fn.ds;
reserved.internalThousandsSeperator= fn.ss  == null ? ""    : fn.ss;
reserved.internalDecimalPlaces    = fn.dp   == null ? 2     : fn.dp;
reserved.internalAppendCurrency   = fn.app  == null ? false : fn.app;
if (reserved.internalNumFormatter == null)
reserved.internalNumFormatter = new CSNum();
fieldObj.err = new CSErr( CSFmt.ERR_SUCCESS );
fieldObj.init = true;
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_evlnmbr( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_initnmbr( fieldObj ) != CSFmt.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
reserved.internalVal = reserved.internalNumFormatter.evaluate( fieldObj.userVal, reserved.internalCurrencySymbol, reserved.internalDecimalSeperator, reserved.internalThousandsSeperator, reserved.internalDecimalPlaces, reserved.internalAppendCurrency )
if (reserved.internalVal == null) {
fieldObj.err = reserved.internalNumFormatter.err;
break;
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
if (fieldObj.err != null)
ret = fieldObj.err.no;
return ret;
}

function CSFmt_fmtnmbr( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_initnmbr( fieldObj ) != CSFmt.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
if (fieldObj.useIntVal && typeof( fieldObj.internalVal ) == "number") {
reserved.internalVal = fieldObj.internalVal;
} else {
if (fieldObj.userVal == null || fieldObj.userVal == "") {
fieldObj.displayVal = "";
reserved.internalVal = null;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
CSFmt_evlnmbr( fieldObj );
}
if (reserved.internalVal == null) {
fieldObj.err = reserved.internalNumFormatter.err;
break;
}
var displayVal = reserved.internalNumFormatter.format( reserved.internalVal, reserved.internalCurrencySymbol, reserved.internalDecimalSeperator, reserved.internalThousandsSeperator, reserved.internalDecimalPlaces, reserved.internalAppendCurrency );
if (displayVal == null) {
fieldObj.err = reserved.internalNumFormatter.err;
break;
}
fieldObj.displayVal = displayVal;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
if (fieldObj.err != null)
ret = fieldObj.err.no;
return ret;
}

function CSFmt_vldnmbr( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_initnmbr( fieldObj ) != CSFmt.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
if (fieldObj.userVal == null || fieldObj.userVal == "") {
reserved.internalVal = null;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
CSFmt_evlnmbr( fieldObj );
if (reserved.internalVal == null) {
fieldObj.err = reserved.internalNumFormatter.err;
break;
}
if (!reserved.internalNumFormatter.validateRange( reserved.internalVal, fieldObj.fmtnmbr.mnv, fieldObj.fmtnmbr.mxv,
reserved.internalCurrencySymbol, reserved.internalDecimalSeperator, reserved.internalThousandsSeperator, reserved.internalDecimalPlaces, reserved.internalAppendCurrency ))
{
fieldObj.err = reserved.internalNumFormatter.err;
break;
}
if (fieldObj.fmtnmbr.mxcl != null && fieldObj.fmtnmbr.mxcl > 0) {
var displayVal = reserved.internalNumFormatter.format( reserved.internalVal, reserved.internalCurrencySymbol, reserved.internalDecimalSeperator, reserved.internalThousandsSeperator, reserved.internalDecimalPlaces, reserved.internalAppendCurrency );
if (displayVal == null) {

fieldObj.err = reserved.internalNumFormatter.err;
break;
}
if (reserved.internalTextFormatter == null)
reserved.internalTextFormatter = new CSTxt();
if (!reserved.internalTextFormatter.validate( displayVal, null, fieldObj.fmtnmbr.mxcl, true )) {
fieldObj.err = reserved.internalTextFormatter.err;
break;
}
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_chsvnmbr( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null || fieldObj.fmtnmbr == null) { 
return CSFmt.ERR_INVLDFMTOBJ;
}

if (fieldObj.userVal == null || fieldObj.userVal == "") {
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
if (fieldObj.reserved == null)
fieldObj.reserved = new Object();
var reserved = fieldObj.reserved;
if (reserved.internalTextFormatter == null)
reserved.internalTextFormatter = new CSTxt();
if (!reserved.internalTextFormatter.charsValid( fieldObj.userVal, fieldObj.fmtnmbr.ac )) {
fieldObj.err = reserved.internalTextFormatter.err;
break;
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_inittmpl( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
fieldObj.err = new CSErr( CSErr.ERR_UNDEFINED );
if (fieldObj.reserved == null)
fieldObj.reserved = new Object();
var reserved = fieldObj.reserved;
if (fieldObj.fmt == null || fieldObj.fmt == null || fieldObj.fmttmpl.tmpl == null) {
fieldObj.err = new CSErr( CSFmt.ERR_INVLDFMTOBJ );
break;
}
var template = fieldObj.fmttmpl;
if (reserved.internalTemplateFormatter == null)
reserved.internalTemplateFormatter = new CSTempl();
if (reserved.tokenArray == null)
reserved.tokenArray = reserved.internalTemplateFormatter.parseTemplate( template.tmpl );
if (reserved.tokenArray == null) {
fieldObj.err = reserved.internalTemplateFormatter.err;
break;
}
if (reserved.regExp == null)
reserved.regExp = reserved.internalTemplateFormatter.buildRegExp( reserved.tokenArray );
if (reserved.regExp == null) {
fieldObj.err = reserved.internalTemplateFormatter.err;
break;
}
fieldObj.init = true;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_evltmpl( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
fieldObj.err = new CSErr( CSErr.ERR_UNDEFINED );
if (CSFmt_needInit( fieldObj ))
if (CSFmt_inittmpl( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
reserved.internalTemplateResult = reserved.internalTemplateFormatter.evaluate( reserved.regExp, reserved.tokenArray, fieldObj.userVal );
if (reserved.internalTemplateResult == null) {
fieldObj.err = reserved.internalTemplateFormatter.err;
break;
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_fmttmpl( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_inittmpl( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
fieldObj.userVal = CS_TrimTailWS( fieldObj.userVal );
if (fieldObj.userVal == "") {
fieldObj.displayVal = "";
fieldObj.displayValExtended = new Array();
fieldObj.displayValExtended[0] = "";
reserved.internalTemplateResult = null;
reserved.internalVal = fieldObj.displayValExtended;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
CSFmt_evltmpl( fieldObj );
if (reserved.internalTemplateResult == null) {
fieldObj.err = reserved.internalTemplateFormatter.err;
fieldObj.displayVal = "";
fieldObj.displayValExtended = new Array();
fieldObj.displayValExtended[0] = "";
reserved.internalVal = fieldObj.displayValExtended;
break;
}
var displayVal = reserved.internalTemplateFormatter.format( reserved.internalTemplateResult, reserved.tokenArray );
if (displayVal == null) {
fieldObj.err = reserved.internalTemplateFormatter.err;
break;
}
fieldObj.displayVal = displayVal[0];
fieldObj.displayValExtended = displayVal;
reserved.internalVal = fieldObj.displayValExtended;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_vldtmpl( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_inittmpl( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
fieldObj.userVal = CS_TrimTailWS( fieldObj.userVal );
if (fieldObj.userVal == null || fieldObj.userVal == "") {
reserved.internalTemplateResult = null;
reserved.internalVal = "";
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
CSFmt_evltmpl( fieldObj );
reserved = fieldObj.reserved;
if (reserved.internalTemplateResult == null) {
fieldObj.err = reserved.internalTemplateFormatter.err;
break;
}
var displayVal = reserved.internalTemplateFormatter.format( reserved.internalTemplateResult, reserved.tokenArray );
if (displayVal == null) {
fieldObj.err = reserved.internalTemplateFormatter.err;
break;
}
fieldObj.displayVal = displayVal[0];
fieldObj.displayValExtended = displayVal;
reserved.internalVal = fieldObj.displayValExtended;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_inittxt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null){
return CSFmt.ERR_INVLDFMTOBJ;
}
if (fieldObj.reserved == null)
fieldObj.reserved = new Object();
var reserved = fieldObj.reserved;
if (reserved.internalTextFormatter == null)
reserved.internalTextFormatter = new CSTxt();
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_fmttxt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_inittxt( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
if (fieldObj.userVal == null || fieldObj.userVal == "") {
reserved.internalVal = "";
fieldObj.displayVal = reserved.internalVal;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
reserved.internalVal = reserved.internalTextFormatter.format( fieldObj.userVal, fieldObj.fmttxt.cc );
var displayVal = reserved.internalVal;
if (displayVal == null) {
fieldObj.err = reserved.internalTextFormatter.err;
break;
}
fieldObj.displayVal = displayVal;
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_vldtxt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_inittxt( fieldObj ) != CSErr.ERR_SUCCESS)
break;
if (CSFmt_fmttxt( fieldObj ) != CSErr.ERR_SUCCESS)
break;
var reserved = fieldObj.reserved;
if (!reserved.internalTextFormatter.validate( fieldObj.userVal, fieldObj.fmttxt.mncc, fieldObj.fmttxt.mxcc )) {
fieldObj.err = reserved.internalTextFormatter.err;
break;
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

function CSFmt_chsvtxt( fieldObj )
{
var ret = CSErr.ERR_UNDEFINED;
do {
if (fieldObj == null || fieldObj.fmttxt == null) {
return CSFmt.ERR_INVLDFMTOBJ;
}
if (CSFmt_needInit( fieldObj ))
if (CSFmt_inittxt( fieldObj ) != CSErr.ERR_SUCCESS)
break;
if (fieldObj.userVal == null || fieldObj.userVal == "") {
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
break;
}
var reserved = fieldObj.reserved;
if (reserved.allowedChars == null) {
reserved.allowedChars = CSTxt.buildAllowedChars( fieldObj.fmttxt.acm );
if (fieldObj.fmttxt.ac != null)
reserved.allowedChars += fieldObj.fmttxt.ac;
}
if (!reserved.internalTextFormatter.charsValid( fieldObj.userVal, reserved.allowedChars, fieldObj.fmttxt.acm )) {
fieldObj.err = reserved.internalTextFormatter.err;
break;
}
fieldObj.err = new CSErr( CSErr.ERR_SUCCESS );
} while (false);
ret = fieldObj.err.no;
return ret;
}

CSFmt.push = function( fieldObj )
{
if (CSFmt_needInit( fieldObj ))
CSFmt.init( fieldObj );
if (fieldObj.reserved.stack == null)
fieldObj.reserved.stack = new Array();

CS_Array_Push( fieldObj.reserved.stack, {userVal:fieldObj.userVal, displayVal:fieldObj.displayVal, displayValExtended: fieldObj.displayValExtended, internalVal:fieldObj.reserved.internalVal, internalVal:fieldObj.internalVal, uintv:fieldObj.useIntVal} );

}
CSFmt.pop = function( fieldObj )
{
do {
if (fieldObj.reserved == null || fieldObj.reserved.stack == null)
break;

var s = CS_Array_Pop( fieldObj.reserved.stack );
if (s == null)
break;
fieldObj.userVal = s.userVal;
fieldObj.displayVal = s.displayVal;
fieldObj.displayValExtended = s.displayValExtended;
fieldObj.reserved.internalVal = s.internalVal;
fieldObj.internalVal = s.internalVal;
fieldObj.useIntVal = s.uintv;
} while (false);
}

CSFmt.isDateTemplate = function( fieldObj )
{
var ret = false;
do {
if (fieldObj.fmt != "dt" || fieldObj.fmtdt == null || fieldObj.fmtdt.tmpl == null)
break;
if (fieldObj.reserved == null)
fieldObj.reserved = new Object();
if ( typeof( fieldObj.reserved.isDate ) == "undefined" )
fieldObj.reserved.isDate = CSDate_isDateTemplate( fieldObj.fmtdt.tmpl );
ret = fieldObj.reserved.isDate
} while (false);
return ret;
}

CSFmt.isTimeTemplate = function( fieldObj )
{
var ret = false;
do {
if (fieldObj.fmt != "dt" || fieldObj.fmtdt == null || fieldObj.fmtdt.tmpl == null)
break;
if (fieldObj.reserved == null)
fieldObj.reserved = new Object();
if ( typeof( fieldObj.reserved.isTime ) == "undefined" )
fieldObj.reserved.isTime = CSDate_isTimeTemplate( fieldObj.fmtdt.tmpl );
ret = fieldObj.reserved.isTime
} while (false);
return ret;
}

CSFmt.init           = CSFmt_init;
CSFmt.format         = CSFmt_format;
CSFmt.validate       = CSFmt_validate;
CSFmt.charsValid     = CSFmt_charsValid;
CSFmt.updateIntVal   = CSFmt_updateIntVal;
CSFmt.setIntVal      = CSFmt_setIntVal;
CSFmt.getIntVal      = CSFmt_getIntVal;
CSFmt.useIntVal      = CSFmt_useIntVal;
CSFmt.getErrStr      = CSFmt_getErrStr;
CSFmt.getErrorString = CSFmt_getErrStrStat;
CSFmt.needInit       = CSFmt_needInit;




























function csxmlhttp_create() {
var XMLHTTP = null;
if (CSExt.flags.msxml_warn == true)
return null;

try { 
if (window.ActiveXObject) {
XMLHTTP = new ActiveXObject( "Msxml2.XMLHTTP" );
}
} catch(e) {}

try { 
if (window.XMLHttpRequest) {
XMLHTTP = new XMLHttpRequest();
}
} catch(e) {}

try { 
XMLHTTP = new ActiveXObject("MSXML2.XMLHTTP")
} catch(e) {}

return XMLHTTP;
}

function csxmlhttp_open( XMLHTTP, sURL ) {
var rc = true;
try {

XMLHTTP.open( "POST", sURL, false );

} catch( e ) {
cs_show_exception( "XMLHttpRequest.open ", e );
rc = false;
}
return rc;
}

function csxmlhttp_set_header( XMLHTTP, header, value ) {
var rc = true;
try {
XMLHTTP.setRequestHeader( header, value );
} catch( e ) {
cs_show_exception( "XMLHttpRequest.setRequestHeader ", e );
rc = false;
}
return rc;
}

function csxmlhttp_send( XMLHTTP , stuff ) {
var rc = true;
try {

XMLHTTP.send( stuff );

} catch( e ) {
cs_show_exception( "XMLHttpRequest.send ", e );
rc = false;
}
return rc;
}

function csxmhlttp_get_response_xml( XMLHTTP ) {
var rv = null;
try {
rv = XMLHTTP.responseXML;
} catch( e ) {
cs_show_exception( "XMLHttpRequest.responseXML ", e );
}
return rv;
}

function cs_show_exception( sMsg, errObj ) {
if (!CSExt.flags.msxml_show_errs)
return;
if (errObj.message) {
sMsg += errObj.message;
} else if (errObj.description) {
sMsg += errObj.description;
}
CSExt.CSClient.alert( sMsg );
}


function cs_create_document() {

csxmlDoc = null; 

try { 
if (document.implementation && document.implementation.createDocument) {
csxmlDoc = document.implementation.createDocument("", "", null);
csxmlDoc.onload = cs_init;
}
} catch(e) {}

try { 
if (window.ActiveXObject) {
csxmlDoc = new ActiveXObject( "Microsoft.XMLDOM" );

}
} catch(e) {}

try { 
csxmlDoc = new ActiveXObject( "Microsoft.XMLDOM" );
} catch(e) {}


if (csxmlDoc) {
var pi = csxmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
csxmlDoc.appendChild(pi);
}
return csxmlDoc;
}

function cs_tmp() { 
alert( "state change " );

}

function cs_getDom() {
}

function cs_init() {

alert( "XML document loaded!");
}

function cs_submit_xfdf_load_xfdf( URL, sendMsg ) {



var ison = CSExt.dispatchEvent("CheckOnline", null);
if (!ison)
return 1;

var XMLHTTP = csxmlhttp_create();
if (XMLHTTP != null && CSExt.flags.msxml_pending==false) {
CSExt.flags.msxml_pending = true;
if ( sendMsg.length > 0 ) CSExt.CSClient.alert( sendMsg );
var good = true;
var xdom = null;
var xstr;
var counter = 2;
while (counter > 0) {
--counter;
xdom = cs_create_document();

good = (xdom != null);
if (!good) continue;
if (CSExt.flags.useStringSerializer) {
xstr = cs_assemble_xfdf_str();
} else {
cs_assemble_xfdf( xdom );
}
good = csxmlhttp_open( XMLHTTP, URL );
if (!good) continue;
good = csxmlhttp_set_header( XMLHTTP, "Content-Type", "application/vnd.adobe.xfdf");
if (!good) continue;
if (CSExt.flags.useStringSerializer) {
good = csxmlhttp_send( XMLHTTP, xstr );
} else {
good = csxmlhttp_send( XMLHTTP, xdom );
}
if (good) break;
}
if (good) cs_apply_xfdf( csxmhlttp_get_response_xml( XMLHTTP ) );
CSExt.flags.msxml_pending = false;

if (good)
return 0;
else
return -1;
}
}

function cs_assemble_xfdf( doc ) {
CSExt.CSForm.getNumberOfFields(); 

var all_array = CSExt.allFieldNames();


var xfdlelem = doc.createElement( "xfdf" );
var fieldselem = doc.createElement( "fields" );
xfdlelem.appendChild( fieldselem );
doc.appendChild( xfdlelem );

for (var idx=0; idx<all_array.length; idx++) {
var mfld = CSExt.CSForm.getField(all_array[idx]);
if (mfld != null) { 

var fieldelem = doc.createElement( "field" );
fieldelem.setAttribute( "name", all_array[idx] );

val_array = mfld.getValues();
for (var jdx=0; jdx<val_array.length; jdx++) {
var valueelem = doc.createElement( "value" );
valueelem.appendChild( doc.createTextNode( val_array[jdx] ));
fieldelem.appendChild( valueelem );
}
fieldselem.appendChild( fieldelem );
}
}




CSExt.XMLout = doc;
}


function cs_assemble_xfdf_str() {
CSExt.CSForm.getNumberOfFields(); 

var all_array = CSExt.allFieldNames();
var results = [];


results.push("<?xml version='1.0' encoding='UTF-8'?>\n<xfdf>\n<fields>\n");

for (var idx=0; idx<all_array.length; idx++) {
var mfld = CSExt.CSForm.getField(all_array[idx]);
if (mfld != null) { 

results.push("<field name='" + all_array[idx] + "'>");

val_array = mfld.getValues();
for (var jdx=0; jdx<val_array.length; jdx++) {
var content = "" + val_array[jdx];
if (!content) content = "";
if (content.indexOf("&") >= 0) {
content = content.replace( /&/g, '&amp;');
}
if (content.indexOf("<") >= 0) {
content = content.replace( /</g, '&lt;');
}
results.push("<value>" + content + "</value>");
}
results.push("</field>\n");
}
}
results.push("</fields>\n</xfdf>");

CSExt.XMLout = results.join('');



return CSExt.XMLout;
}


function cs_apply_xfdf( doc ) {

var dump = cs_trace_table_init( "Ajax dump from server", 2 ) + cs_trace_table_header( ["field", "value"] );



if (!doc || !doc.documentElement) {
CSExt.CSClient.alert( CS_XMLHTTP_INVALID + "\nnull" );
return false;
}

CSExt.XMLin = doc;
var dElem = doc.documentElement.nodeName;
if (dElem != "xfdf") {
CSExt.CSClient.alert( CS_XMLHTTP_INVALID + "\n" + dElem );
}


var chgs = [];
var cidx = 0;

var csSetFocusTo = CSExt.CSForm.getField( "DFS__SetFocusTo");
if (csSetFocusTo != null) {
csSetFocusTo.setValue( "" );
}

var fieldelems = doc.getElementsByTagName( "field" );        
for( var idx=0; idx<fieldelems.length; idx++ ) {
var val_array = new Array();
var ofs = 0;
var hasValue = false;
var xmlFld = fieldelems[idx];
var xmlFldName = xmlFld.getAttribute( "name" );
for ( var jdx=0; jdx<xmlFld.childNodes.length; jdx++ ) {
var xmlValueNode = xmlFld.childNodes[jdx];
var xmlValueNodeName = xmlValueNode.nodeName;
var xmlValueNodeChild = xmlValueNode.firstChild;
var xmlValueNodeType = xmlValueNode.nodeType;
if ( xmlValueNodeType == 1 && xmlValueNodeName == "value" ) {
hasValue = true;
if ( xmlValueNodeChild ) {
var xmlValueNodeChildValue = "";
for ( var n=0; n<xmlValueNode.childNodes.length; n++ ) {

xmlValueNodeChildValue += xmlValueNode.childNodes[ n ].nodeValue;
}
val_array[ofs++] = xmlValueNodeChildValue;
} else {

val_array[ofs++] = "";
}
}
}

if (xmlFld.childNodes.length == 0) {
hasValue = true;
val_array[ofs++] = "";
}
var fname = xmlFld.getAttribute( "name" );
dump += cs_trace_table_row( [ fname, val_array.toString() ] );

if (CSExt.ensureFieldExists) {
CSExt.ensureFieldExists( fname );
}  

var options = xmlFld.getElementsByTagName( "option" );

var csfld = CSExt.CSForm.getField( fname );
if (csfld) {


if (options.length > 0) {
var dbgListOptions = cs_trace_table_init() + cs_trace_table_header( ["display", "value"] );
var chcs = csfld.getChoices();
if ( CSExt.legacyHTMLListInsertion ) {


var dupeCheck = {};
if (chcs != null) {
dupeCheck = chcs.cs_getAll();
}
} else {


var initCnt = chcs.getCount();
for ( var ldx=0; ldx<initCnt; ldx++ ) {
chcs.deleteAt( 0 );
}
}

for( var kdx=options.length-1; kdx>=0; kdx-- ) {
var displayNode = options[kdx].getElementsByTagName("display")[0];
var valueNode = options[kdx].getElementsByTagName("value")[0];
var sOptDisplay = displayNode.firstChild.nodeValue;
var sOptValue = valueNode.firstChild.nodeValue;
dbgListOptions += cs_trace_table_row( [ sOptDisplay, sOptValue ] );

if ( !dupeCheck || (!dupeCheck[sOptDisplay] || dupeCheck[sOptDisplay] != sOptValue) ) {
chcs.insertAt( 0, sOptValue, sOptDisplay );
}
}
dbgListOptions += "</table>";
dump += cs_trace_table_row( [ fname + " Options", dbgListOptions ] );
} 


if (hasValue && (csfld.getValues().toString() != val_array.toString()) ) {
chgs[cidx++] = { fld:csfld, vals:val_array };
}
} else if ( fname.indexOf( "DTB__" ) != -1 && options.length > 0 ) {




var dbgListOptions = cs_trace_table_init() + cs_trace_table_header( ["display", "value"] );
var tempTblName = fname.replace( /DTB__/, "" );
var tableName = tempTblName.substr( 0, tempTblName.indexOf("_") );
var table = CSForm.getTable( tableName );
if ( !table.tbo.cachedList ) {
table.tbo.cachedList = {};
}
table.tbo.cachedList[ fname ] = [];                                

for( var kdx=options.length-1; kdx>=0; kdx-- ) {
var displayNode = options[kdx].getElementsByTagName("display")[0];
var valueNode = options[kdx].getElementsByTagName("value")[0];
var sOptDisplay = displayNode.firstChild.nodeValue;
var sOptValue = valueNode.firstChild.nodeValue;
dbgListOptions += cs_trace_table_row( [ sOptDisplay, sOptValue ] );
table.tbo.cachedList[ fname ].push( [ sOptDisplay, sOptValue ] );
}
dbgListOptions += "</table>";
dump += cs_trace_table_row( [ fname + " Options", dbgListOptions ] );

} 
}

dump += "</table>";
var dbg = "cs_trace( dump, 1 ); Note: Copy cs_trace on to next line for debugging";



for( var udx = 0; udx < chgs.length; udx++ ) {
chgs[udx].fld.setValues( chgs[udx].vals );
}



if (CSExt.ensureFieldExists) CSExt.ensureFieldExists("DFS__StatusMsg");
var csStatusMsg = CSExt.CSForm.getField( "DFS__StatusMsg");
if (csStatusMsg != null) {
csStatusMsg.setValue( "" );
var dbElems = doc.getElementsByTagName( "status" );
if ( (dbElems.length > 0) && (dbElems[0].firstChild)) {
csStatusMsg.setValue( dbElems[0].firstChild.nodeValue );
}
}

CSExt.RedirectURL = "";
dbElems = doc.getElementsByTagName( "f" );
if ( dbElems.length > 0) {
CSExt.RedirectURL =  dbElems[0].getAttribute("href");
}

var csField = CSExt.CSForm.getField( "DFS__Field" );
if (csField != null) {
csField.setValue("");
}

CSExt.open = ""
var oElems = doc.getElementsByTagName( "open" );
if ( oElems.length > 0) {
CSExt.open = oElems[0].getAttribute("href");
}

if (CSPersist && CSPersist.retrieveFields) {
CSPersist.retrieveFields();
}
}















CSPersist             = new Object();
CSPersist.DFSFIELD    = "DFS__T2"
CSPersist.FOREGROUND  = 0x01;
CSPersist.BACKGROUND  = 0x02;
CSPersist.READ_ONLY   = 0x04;
CSPersist.HIDDEN      = 0x08;
CSPersist.REQUIRED    = 0x10;

CSPersist.createObjectLiteral = function( obj )
{ 
var s = "{";
var i = 0;
for (var name in obj) {
if (i > 0)
s += ",";
if (obj[name] == null) {
} else if (typeof( obj[name] ) == "object") {
s += name + ":" + CSPersist.createObjectLiteral( obj[name] ); i++
} else if (typeof( obj[name] ) == "string") {
s += name + ":\"" + obj[name] + "\""; i++;
} else {
s += name + ":" + obj[name]; i++;
}
}
return s + "}";
}
CSPersist.getFieldAttributes = function()
{
var ret = new Object();
var n = CSForm.getNumberOfFields();
for (var i = 0; i < n; i++) {
var f = CSForm.getField( i );
if (f != null && typeof(f._getDeltaFlags) == "function") {
var flags = f._getDeltaFlags();
if (flags != 0) {
var fldAttrs = new Object;
if (flags & CSPersist.FOREGROUND) {
fldAttrs.tc = f.getTextColor();
}
if (flags & CSPersist.BACKGROUND) {
fldAttrs.fc = f.getFillColor();
}
if (flags & CSPersist.READ_ONLY) {
fldAttrs.ro = f.isReadOnly();
}
if (flags & CSPersist.HIDDEN) {
fldAttrs.hd = f.isHidden();
}
if (flags & CSPersist.REQUIRED) {
fldAttrs.rq = f.isRequired();
}
ret[f.getName()] = fldAttrs;
}
} else {
ret[f.getName()] = {rq:f.isRequired(),ro:f.isReadOnly(),hd:f.isHidden(),tc:f.getTextColor(),fc:f.getFillColor()};
}
}
return ret;
}
CSPersist.setFieldAttributes = function( obj )
{
do {
if (obj == null)
break;
for (var name in obj) {
var o = obj[name];
var f = CSForm.getField( name );
if (o == null || f == null)
continue;
if (o.rq != null)
f.setRequired( o.rq );
if (o.ro != null)
f.setReadOnly( o.ro );
if (o.hd != null)
f.setHidden( o.hd );
if (o.tc != null)
f.setTextColor( o.tc );
if (o.fc != null)
f.setFillColor( o.fc );
}
} while (false);
}
CSPersist.createObjectFromLiteral = function( s )
{
var ret;
if (s == null || s == "")
return null;
eval( "ret = " + s + ";" );
return ret;
}

CSPersist.archiveFields = function()
{
var obj = CSPersist.getFieldAttributes();
var ol = CSPersist.createObjectLiteral( obj );
CSClient.m_bQuiet = true;
var f = CSForm.getField( CSPersist.DFSFIELD )
CSClient.m_bQuiet = false;
if (f != null)
f.setValue( ol );
}

CSPersist.retrieveFields = function()
{
do {
CSClient.m_bQuiet = true;
var f = CSForm.getField( CSPersist.DFSFIELD );
CSClient.m_bQuiet = false;
if (f == null)
break;
var ol = f.getValue();
var obj = CSPersist.createObjectFromLiteral( ol );
CSPersist.setFieldAttributes( obj );
} while (false);
}













var CSNUM     = 1;
var CSSTR     = 2;
var CSBOOL    = 3;
var CSDATE    = 4;
var CSTIME    = 5;
var CSFLD     = 10;
function CSVal( val, splitValues, type, internalVal )
{
this.type = type;
this.value = val;
this.i = internalVal;
this.splitValues = splitValues;
this.err = new CSErr( CSFmt.ERR_SUCCESS );
}
CSVal.n = function( n )
{
var retVal = Number.NaN;
if (typeof( n ) == "number" ) {
retVal = n
} else if (typeof( n ) == "string") {
retVal = parseFloat( n );
}
return new CSVal( retVal, null, CSNUM );
}
CSVal.s = function( s, splitValues )
{
if (typeof(splitValues) == 'undefined')
splitValues = null;
return new CSVal( s, splitValues, CSSTR );
}
CSVal.b = function( b )
{
return new CSVal( b, null, CSBOOL );
}
CSVal.d = function( d, iv )
{
return new CSVal( d, null, CSDATE, iv );
}
CSVal.t = function( t, iv )
{
return new CSVal( t, null, CSTIME, iv );
}
CSVal.f = function( f )
{
return new CSVal( f, null, CSFLD );
}


CSVal.prototype.valueOf = function()
{
return this.value;
}
CSVal.prototype.toString = function()
{
return this.value.toString();
}




var CSCnv_DateTemplate = "YYYY-MM-DD";
var CSCnv_DateTokens = null;
var CSCnv_DateRegExp = null;

var CSCnv_TimeTemplate = "HH:mm:ss";
var CSCnv_TimeTokens = null;
var CSCnv_TimeRegExp = null;

CSCnv = new Object();

CSCnv.ATTRIB_READONLY = 'readonly';
CSCnv.ATTRIB_REQUIRED = 'required';
CSCnv.ATTRIB_HIDDEN   = 'hidden';
CSCnv.ATTRIB_FGCOLOR  = 'fgcolor';
CSCnv.ATTRIB_BGCOLOR  = 'bgcolor';
CSCnv.ATTRIB_TYPE     = 'type';
CSCnv.ATTRIB_VALUE    = 'value';

CSCnv.setFieldLookupCallback = function( f )
{
CSCnv.fldLookupClbk = f;
}
CSCnv.fieldLookup = function( f )
{

return CSCnv.fldLookupClbk( f );
}
CSCnv.setGetFieldAttributeCallback = function( f )
{
var ret = CSCnv.getAttribClbk;
CSCnv.getAttribClbk = f;
return ret;
}
CSCnv.getFieldAttribute = function( fn, attrib )
{
return CSCnv.getAttribClbk( fn, attrib );
}
CSCnv.setSetFieldAttributeCallback = function( f )
{
var ret = CSCnv.setAttribClbk;
CSCnv.setAttribClbk = f;
return ret;
}
CSCnv.setFieldAttribute = function( fn, attrib, val )
{
return CSCnv.setAttribClbk( fn, attrib, val );
}




function CSCnv_fnmbr2n( fldObj )
{
var numericVal = CSFmt.getIntVal( fldObj );
if (numericVal == null)
numericVal = Number.NaN;
return numericVal;
}

function CSCnv_fdt2n( obj )
{
return CSCnv_dt2n( CSFmt.getIntVal( obj ) );
}




function CSCnv_n2s( n )
{
var retVal = "NaN";
if (typeof( n ) == "number") {
if (isNaN( n )) {
retVal = "NaN";
} else if (!isFinite( n )) {
if (n > 0) {
retVal = "Infinity";
} else {
retVal = "-Infinity";
}
} else {
retVal = n.toString();
}
}
return retVal;
}




function CSCnv_b2s( b )
{
return b ? "true" : "false";
}




function CSCnv_d2s( d )
{
if (CSCnv_DateTokens == null) {
var dt = new CSDate();
CSCnv_DateTokens = dt.parseTemplate( CSCnv_DateTemplate );
}
var dtemp = new CSDate();
dtemp.year = d.year != null ? d.year : 1970;
dtemp.month = d.month != null ? d.month : 1;
dtemp.day = d.day != null ? d.day : 1;
return (dtemp.formatDate( CSCnv_DateTokens, false ))[0];
}




function CSCnv_t2s( t )
{
if (CSCnv_TimeTokens == null) {
var dt = new CSDate();
CSCnv_TimeTokens = dt.parseTemplate( CSCnv_TimeTemplate );
}
var ttemp = new CSDate();
ttemp.hour = t.hour != null ? t.hour : 0;
ttemp.minute = t.minute != null ? t.minute : 0;
ttemp.second = t.second != null ? t.second : 0;
return (ttemp.formatDate( CSCnv_TimeTokens, false ))[0];
}




function CSCnv_s2n( val, r )
{
var ret = CS_ParseFloatEx( val );
if (ret == null)
ret = r;
return ret;
}




function CSCnv_b2n( val )
{
return Number( (val ? 1 : 0) );
}




function CSCnv_dt2n( csdt )
{
var n = Number( 0 );
do {
if (csdt == null)
break;



if (csdt.isDate()) {
var dt = new Date();
dt.setUTCFullYear( (csdt.year != null ? csdt.year : 1970),
(csdt.month != null ? csdt.month - 1 : 1),
(csdt.day != null ? csdt.day : 1) );
dt.setUTCHours( 0, 0, 0, 0 );
n = Number(dt.getTime()/86400000)
} else if (csdt.isTime()) {
n = Number( (csdt.second != null ? csdt.second : 0) +
(csdt.minute != null ? csdt.minute : 0) * 60 +
(csdt.hour != null ? csdt.hour : 0) * 3600 );
}
} while (false);
return n;
}




function CSCnv_s2b( s )
{
return s.length > 0;
}




function CSCnv_n2b( n )
{
return (n != 0 && !isNaN( n ));
}




function CSCnv_dt2b( dt )
{
return CSCnv_n2b( CSCnv_dt2n( dt ) );
}




function CSCnv_s2d( s, r )
{
var ret = r;
var dt = new CSDate();
if (CSCnv_DateTokens == null) {
CSCnv_DateTokens = dt.parseTemplate( CSCnv_DateTemplate );
}
if (CSCnv_DateRegExp == null) {
CSCnv_DateRegExp = dt.buildRegExp( CSCnv_DateTokens, true );
}
var d = dt.evaluate( CSCnv_DateRegExp, CSCnv_DateTokens, s );
if (d != null)
ret = d;
return ret;
}




function CSCnv_n2d( n )
{
var ret = new CSDate( 1970, 1, 1 );
var dt = new Date( Math.round( n ) * 86400000 );
if (dt != null) {
ret.year = dt.getUTCFullYear();
ret.month = dt.getUTCMonth() + 1;
ret.day = dt.getUTCDate();
}
return ret;
}




function CSCnv_b2d( b )
{
return CSCnv_n2d( CSCnv_b2n( b ) );
}




function CSCnv_t2d( t )
{
return CSCnv_n2d( 0 );
}




function CSCnv_s2t( s, r )
{
var ret = r;
var dt = new CSDate();
if (CSCnv_TimeTokens == null) {
CSCnv_TimeTokens = dt.parseTemplate( CSCnv_TimeTemplate );
}
if (CSCnv_TimeRegExp == null) {
CSCnv_TimeRegExp = dt.buildRegExp( CSCnv_TimeTokens, true );
}
var t = dt.evaluate( CSCnv_TimeRegExp, CSCnv_TimeTokens, s );
if (t != null)
ret = t;
return ret;
}




function CSCnv_n2t( n )
{
var ret = new CSDate( null, null, null, 0, 0, 0 );
var dt = new Date( Math.round( n ) * 1000 );
if (dt != null) {
ret.hour = dt.getUTCHours();
ret.minute = dt.getUTCMinutes();
ret.second = dt.getUTCSeconds();
}
return ret;
}




function CSCnv_b2t( b )
{
return CSCnv_n2t( CSCnv_b2n( b ) );
}




function CSCnv_d2t( t )
{
return CSCnv_n2t( 0 );
}














CSCnv.s = function( val )
{
var ret = CSVal.s( "" );
do {
var v = val;



if (typeof( val ) == "string" && CSCnv.fldLookupClbk != null)
v = CSVal.f( CSCnv.fldLookupClbk( val ) );
if (v == null || v.value == null)
break;



if (v.type == CSFLD) {
if (CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_TYPE ) == "Text") {
var iv = CSFmt.getIntVal( v.value );
if (v.value.fmt == "nmbr") {
ret = CSVal.s( CSCnv_n2s( iv ) );
} else if (v.value.fmt == "dt") {
if (iv == null) {
} else if (iv.isDate()) {
ret = CSVal.s( CSCnv_d2s( iv ) );
} else {
ret = CSVal.s( CSCnv_t2s( iv ) );
}
} else if (v.value.fmt == "tmpl") {
ret = iv == null ? CSVal.s( "" )
: CSVal.s( iv[0] );
} else if (v.value.fmt == "txt") {
ret = CSVal.s( iv );
}
} else {
ret = CSVal.s( CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_VALUE ) );
}
} else if (v.type == CSSTR) {
ret = CSVal.s ( v.value );
} else if (v.type == CSNUM) {
ret = CSVal.s( CSCnv_n2s( v.value ) );
} else if (v.type == CSBOOL) {
ret = CSVal.s( CSCnv_b2s( v.value ) );
} else if (v.type == CSDATE) {
ret = CSVal.s( CSCnv_d2s( v.value ) );
} else if (v.type == CSTIME) {
ret = CSVal.s( CSCnv_t2s( v.value ) );
}
} while (false);
return ret;
}

CSCnv.n = function( val )
{
var ret = CSVal.n( 0 );
do {
var v = val;



if (typeof( val ) == "string" && CSCnv.fldLookupClbk != null) {
v = CSVal.f( CSCnv.fldLookupClbk( val ) );

}
if (v == null || v.value == null)
break;



if (v.type == CSFLD) {
if (CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_TYPE ) == "Text") {
if (v.value.fmt == "nmbr") {
ret = CSVal.n( CSCnv_fnmbr2n( v.value ) );
} else if (v.value.fmt == "dt") {
ret = CSVal.n( CSCnv_fdt2n( v.value ) );
} else if (v.value.fmt == "tmpl") {
var iv = CSFmt.getIntVal( v.value );
ret = iv == null ? CSVal.n( Number.NaN )
: CSVal.n( CSCnv_s2n( iv[0], Number.NaN ) );
} else if (v.value.fmt == "txt") {
var iv = CSFmt.getIntVal( v.value );
ret = CSVal.n( CSCnv_s2n( iv, Number.NaN ) );
}
} else {
ret = CSVal.n( CSCnv_s2n( CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_VALUE ), Number.NaN ) );
}
} else if (v.type == CSSTR) {
ret = CSVal.n( CSCnv_s2n( v.value, Number.NaN ) );
} else if (v.type == CSNUM) {
ret = CSVal.n( v.value );
} else if (v.type == CSBOOL) {
ret = CSVal.n( CSCnv_b2n( v.value ) );
} else if (v.type == CSDATE || v.type == CSTIME) {
ret = CSVal.n( CSCnv_dt2n( v.value ) );
}
} while (false);
return ret;
}

CSCnv.b = function( val )
{
var ret = CSVal.b( false );
do {
var v = val;



if (typeof( val ) == "string" && CSCnv.fldLookupClbk != null)
v = CSVal.f( CSCnv.fldLookupClbk( val ) );
if (v == null || v.value == null)
break;



if (v.type == CSFLD) {
var t = CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_TYPE );
if ( t == "Text") {
if (v.value.fmt == "nmbr") {
ret = CSVal.b( CSCnv_n2b( CSCnv_fnmbr2n( v.value ) ) );
} else if (v.value.fmt == "dt") {
ret = CSVal.b( CSCnv_n2b( CSCnv_fdt2n( v.value ) ) );
} else if (v.value.fmt == "tmpl") {
var iv = CSFmt.getIntVal( v.value );
ret = iv == null ? CSVal.b( false )
: CSVal.b( CSCnv_s2b( iv[0] ) );
} else if (v.value.fmt == "txt") {
var iv = CSFmt.getIntVal( v.value );
ret = CSVal.b( CSCnv_s2b( iv ) );
}
} else {
var fv = CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_VALUE );
if (t == "Check") {
ret = CSVal.b( CSCnv_n2b( CSCnv_s2n( fv ) ) );
} else {
ret = CSVal.b( CSCnv_s2b( fv ) );
}
}
} else if (v.type == CSSTR) {
ret = CSVal.b( CSCnv_s2b( v.value ) );
} else if (v.type == CSNUM) {
ret = CSVal.b( CSCnv_n2b( v.value ) );
} else if (v.type == CSBOOL) {
ret = CSVal.b( v.value );
} else if (v.type == CSDATE || v.type == CSTIME) {
ret = CSVal.b( CSCnv_dt2b( v.value ) );
}
} while (false);
return ret;
}

CSCnv.d = function( val )
{
var ret = CSVal.d( CSCnv_n2d( 0 ) );
do {
var v = val;



if (typeof( val ) == "string" && CSCnv.fldLookupClbk != null)
v = CSVal.f( CSCnv.fldLookupClbk( val ) );
if (v == null || v.value == null)
break;



if (v.type == CSFLD) {
var t = CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_TYPE );
if ( t == "Text") {
var iv = CSFmt.getIntVal( v.value );
if (v.value.fmt == "nmbr") {
ret = CSVal.d( CSCnv_n2d( iv ) );
} else if (v.value.fmt == "dt") {
if (iv == null) {
ret = CSVal.d( CSCnv_n2d( 0 ) );
} else if (iv.isDate()) {
ret = CSVal.d( new CSDate( iv.year, iv.month, iv.day ) );
} else {
ret = CSVal.d( CSCnv_t2d( iv ) );
}
} else if (v.value.fmt == "tmpl") {
ret = iv != null ? CSVal.d( CSCnv_s2d( iv[0], CSCnv_n2d( 0 ) ) )
: CSVal.d( CSCnv_n2d( 0 ) );
} else if (v.value.fmt == "txt") {
ret = CSVal.d( CSCnv_s2d( iv, CSCnv_n2d( 0 ) ) );
}
} else {
var fv = CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_VALUE );
ret = CSVal.d( CSCnv_s2d( fv, CSCnv_n2d( 0 ) ) );
}
} else if (v.type == CSSTR) {
ret = CSVal.d( CSCnv_s2d( v.value, CSCnv_n2d( 0 ) ) );
} else if (v.type == CSNUM) {
ret = CSVal.d( CSCnv_n2d( v.value ) );
} else if (v.type == CSBOOL) {
ret = CSVal.d( CSCnv_b2d( v.value ) );
} else if (v.type == CSDATE) {
ret = CSVal.d( new CSDate( v.value.year, v.value.month, v.value.day ) );
} else if (v.type == CSTIME) {
ret = CSVal.d( CSCnv_t2d( v.value ) );
}
} while (false);
return ret;
}

CSCnv.t = function( val )
{
var ret = CSVal.t( CSCnv_n2t( 0 ) );
do {
var v = val;



if (typeof( val ) == "string" && CSCnv.fldLookupClbk != null)
v = CSVal.f( CSCnv.fldLookupClbk( val ) );
if (v == null || v.value == null)
break;



if (v.type == CSFLD) {
var t = CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_TYPE );
if ( t == "Text") {
var iv = CSFmt.getIntVal( v.value );
if (v.value.fmt == "nmbr") {
ret = CSVal.t( CSCnv_n2t( iv ) );
} else if (v.value.fmt == "dt") {
if (iv == null) {
ret = CSVal.t( CSCnv_n2t( 0 ) );
} else if (iv.isDate()) {
ret = CSVal.t( CSCnv_d2t( iv, CSCnv_n2t( 0 ) ) );
} else {
ret = CSVal.t( new CSDate( null, null, null, iv.hour, iv.minute, iv.second ) );
}
} else if (v.value.fmt == "tmpl") {
ret = iv != null ? CSVal.t( CSCnv_s2t( iv[0], CSCnv_n2t( 0 ) ) )
: CSVal.t( CSCnv_n2t( 0 ) );
} else if (v.value.fmt == "txt") {
ret = CSVal.t( CSCnv_s2t( iv, CSCnv_n2t( 0 ) ) );
}
} else {
var fv = CSCnv.getFieldAttribute( val, CSCnv.ATTRIB_VALUE );
ret = CSVal.t( CSCnv_s2d( fv, CSCnv_n2t( 0 ) ) );
}
} else if (v.type == CSSTR) {
ret = CSVal.t( CSCnv_s2t( v.value, CSCnv_n2t( 0 ) ) );
} else if (v.type == CSNUM) {
ret = CSVal.t( CSCnv_n2t( v.value ) );
} else if (v.type == CSBOOL) {
ret = CSVal.t( CSCnv_b2t( v.value ) );
} else if (v.type == CSDATE) {
ret = CSVal.t( CSCnv_d2t( v.value ) );
} else if (v.type == CSTIME) {
ret = CSVal.t( new CSDate( null, null, null, v.value.hour, v.value.minute, v.value.second ) );
}
} while (false);
return ret;
}

CSCnv.f = function( fieldName, v )
{
var ret = null;
do {
if (fieldName == null || CSCnv.fldLookupClbk == null)
break;
var f = CSCnv.fieldLookup( fieldName );
if (f == null)
break;
var type = CSCnv.getFieldAttribute( fieldName, CSCnv.ATTRIB_TYPE );
if (type == 'Text') {
var iv = null;
if (f.fmt == "nmbr") {
if (v == null) {
iv = CSFmt.getIntVal( f );
} else if (v.type == CSNUM) {
iv = v.value;
} else if (v.type == CSSTR) {
iv = CSCnv_s2n( v.value, null );
} else if (v.type == CSBOOL) {
iv = CSCnv_b2n( v.value );
} else if (v.type == CSDATE || v.type == CSTIME) {
iv = CSCnv_dt2n( v.value );
}
} else if (f.fmt == "dt") {
if (v == null) {
iv = CSFmt.getIntVal( f );
} else if (CSFmt.isDateTemplate( f )) {
if (v.type == CSNUM) {
iv = CSCnv_n2d( v.value );
} else if (v.type == CSSTR) {
iv = CSCnv_s2d( v.value, null );
} else if (v.type == CSBOOL) {
iv = CSCnv_b2d( v.value );
} else if (v.type == CSDATE) {
iv = new CSDate( v.value.year, v.value.month, v.value.day );
} else if (v.type == CSTIME) {
iv = CSCnv_t2d( v.value );
}
} else if (CSFmt.isTimeTemplate( f )) {
if (v.type == CSNUM) {
iv = CSCnv_n2t( v.value );
} else if (v.type == CSSTR) {
iv = CSCnv_s2t( v.value, null );
} else if (v.type == CSBOOL) {
iv = CSCnv_b2t( v.value );
} else if (v.type == CSDATE) {
iv = CSCnv_d2t( v.value );
} else if (v.type == CSTIME) {
iv = new CSDate( null, null, null, v.value.hour, v.value.minute, v.value.second );
}
}
} else if (f.fmt == "tmpl") {
if (v == null) {
iv = CSFmt.getIntVal( f );
if (iv != null)
iv = iv[0];
} else if (v.type == CSNUM) {
iv = CSCnv_n2s( v.value );
} else if (v.type == CSSTR) {
iv = v.value;
} else if (v.type == CSBOOL) {
iv = CSCnv_b2s( v.value );
} else if (v.type == CSDATE) {
iv = CSCnv_d2s( v.value );
} else if (v.type == CSTIME) {
iv = CSCnv_t2s( v.value );
}
} else if (f.fmt == "txt") {
if (v == null) {
iv = CSFmt.getIntVal( f );
} else if (v.type == CSNUM) {
iv = CSCnv_n2s( v.value );
} else if (v.type == CSSTR) {
iv = v.value;
} else if (v.type == CSBOOL) {
iv = CSCnv_b2s( v.value );
} else if (v.type == CSDATE) {
iv = CSCnv_d2s( v.value );
} else if (v.type == CSTIME) {
iv = CSCnv_t2s( v.value );
}
}
if (iv == null) {
ret = CSVal.s( "" );
} else if (f.fmt == "nmbr" || f.fmt == "dt") {
CSFmt.push( f );
CSFmt.useIntVal( f, true );
CSFmt.setIntVal( f, iv );
CSFmt.format( f );
ret = new CSVal( f.displayVal, f.displayValExtended, CSSTR, iv );
CSFmt.pop( f );
} else if (f.fmt == "tmpl" || f.fmt == "txt" ) {
CSFmt.push( f );
f.userVal = iv;
CSFmt.format( f );
ret = new CSVal( f.displayVal, f.displayValExtended, CSSTR, iv );
CSFmt.pop( f );
} else {
ret = CSVal.s( "" );
}
} else if (type == 'Check') {
if (v != null && v.type == CSBOOL) {
ret = CSVal.s( v.value ? '1' : '0' );
} else {
ret = CSCnv.s( v );
}
} else {
ret = CSCnv.s( v );
}
} while (false);
return ret;
}

CSCnv.cnv = function( v, type )
{
var ret = CSVal.b( false );
do {
if (v == null)
break;
if (type == CSNUM) {
ret = CSCnv.n( v );
} else if (type == CSSTR) {
ret = CSCnv.s( v );
} else if (type == CSBOOL) {
ret = CSCnv.b( v );
} else if (type == CSDATE) {
ret = CSCnv.d( v );
} else if (type == CSTIME) {
ret = CSCnv.t( v );
}
} while (false);
return ret;
}












CSCnv.getTableFldName = function( tbl, row, fld )
{
var ret = "DTB__" + tbl + "_" + row + "_" + fld;
return ret;
}

CSCnv.ts = function( table, fld )
{
var ret = new Array();

var tbl = CSForm.getTable( table );
var n   = tbl.getNumberOfRows();
for (var i = 0; i < n; i++) {
var name = CSCnv.getTableFldName( table, i, fld );
ret[ i ] = CSCnv.s( name );
}

return ret;
}

CSCnv.tn = function( table, fld )
{
var ret = new Array();

var tbl = CSForm.getTable( table );
var n   = tbl.getNumberOfRows();
for (var i = 0; i < n; i++) {
var name = CSCnv.getTableFldName( table, i, fld );
ret[ i ] = CSCnv.n( name );
}

return ret;
}

CSCnv.tb = function( table, fld )
{
var ret = new Array();

var tbl = CSForm.getTable( table );
var n   = tbl.getNumberOfRows();
for (var i = 0; i < n; i++) {
var name = CSCnv.getTableFldName( table, i, fld );
ret[ i ] = CSCnv.b( name );
}

return ret;
}

CSCnv.td = function( table, fld )
{
var ret = new Array();

var tbl = CSForm.getTable( table );
var n   = tbl.getNumberOfRows();
for (var i = 0; i < n; i++) {
var name = CSCnv.getTableFldName( table, i, fld );
ret[ i ] = CSCnv.d( name );
}

return ret;
}

CSCnv.tt = function( table, fld )
{
var ret = new Array();

var tbl = CSForm.getTable( table );
var n   = tbl.getNumberOfRows();
for (var i = 0; i < n; i++) {
var name = CSCnv.getTableFldName( table, i, fld );
ret[ i ] = CSCnv.t( name );
}

return ret;
}

CSCnv.tf = function( table, fld, v )
{
var ret = new Array();

var tbl = CSForm.getTable( table );
var n   = tbl.getNumberOfRows();
for (var i = 0; i < n; i++) {
var name = CSCnv.getTableFldName( table, i, fld );
ret[ i ] = CSCnv.f( name, v );
}

return ret;
}













function CSAction( func, params )
{
this.func   = func;
this.params = params;
}




function CSCalc( trg, trs, expr, aspect, gen )
{
this.trg    = trg;
this.trs    = trs;
this.expr   = expr;
this.aspect = aspect;
this.gen    = gen;
}

CSCalc.Calcs      = new Array();
CSCalc.FldsChgd   = new Object();
CSCalc.Flds       = new Object();
CSCalc.ValueStoN  = new Object();
CSCalc.ValueNtoN  = new Array();
CSCalc.AttribStoN = new Object();
CSCalc.AttribNtoN = new Array();

CSCalc.setSetValueCallback = function( func )
{
var ret = CSCalc.setValueClbk;
CSCalc.setValueClbk = func;
return ret;
}
CSCalc.setValue = function( f, v, s, i, p )
{
return CSCalc.setValueClbk( f, v, s, i, p );
}
CSCalc.setFieldChangedCallback = function( f )
{
var ret = CSCalc.fldChangedClbk;
CSCalc.fldChangedClbk = f;
return ret;
}
CSCalc.fieldChanged = function( f )
{
return CSCalc.fldChangedClbk( f );
}
CSCalc.setFieldLookupCallback = function( f )
{
var ret = CSCalc.fldLookupClbk
CSCalc.fldLookupClbk = f;
return ret;
}
CSCalc.fieldLookup = function( f )
{
if (typeof( CSCalc.fldLookupClbk ) == "function") {
return CSCalc.fldLookupClbk( f );
} else {
return CSCnv.fldLookupClbk( f );
}
}
CSCalc.setFieldAttributeAction = function( params, param )
{
return CSCnv.setFieldAttribute( params[0], params[1], params[2] );
}
CSCalc.setFieldValueAction = function( params, param )
{
CSCalc.setValue( params[0], params[1], params[2], params[3], param );
CSCalc.fieldChanged( params[0] );
}
CSCalc.addCalculation = function( trg, trs, expr, aspect, gen )
{



var trsaa = new Object();
for (var tr in trs) {
var name = trs[tr];
var ind  = name.indexOf( "." );
if (ind != -1) {
var tbName = name.substr( 0, ind );
var base   = name.substr( ind + 1 );
var table  = CSForm.getTable( tbName );
if (table != null) {
var rows = table.getNumberOfRows();
for (var r=0; r < rows; r++) {
var fname = "DTB__" + tbName + "_" + r + "_" + base;
trsaa[fname] = 1;
}
}
} else {
trsaa[trs[tr]] = 1;
}
}
var i = CSCalc.Calcs.length;
var calc = new CSCalc( trg, trsaa, expr, aspect, gen );
CSCalc.Calcs[i] = calc;
switch (aspect) {
case  CSCnv.ATTRIB_READONLY:
case  CSCnv.ATTRIB_REQUIRED:
case  CSCnv.ATTRIB_FGCOLOR:
case  CSCnv.ATTRIB_HIDDEN:
case  CSCnv.ATTRIB_BGCOLOR:
CSCalc.AttribStoN[trg] = i;
CSCalc.AttribNtoN[CSCalc.AttribNtoN.length] = i;
break;
case 'value':
default:
CSCalc.ValueStoN[trg] = i;
CSCalc.ValueNtoN[CSCalc.ValueNtoN.length] = i;
break;
}
return calc;
}
CSCalc.getCalculation = function( idx )
{
return CSCalc.Calcs[idx];
}
CSCalc.getNumberOfValueCalculations = function()
{
return CSCalc.ValueNtoN.length;
}
CSCalc.getValueCalculation = function( idx )
{
if (typeof(idx) == 'number') {
return CSCalc.Calcs[CSCalc.ValueNtoN[idx]];
} else if (typeof(idx) == 'string') {
return CSCalc.Calcs[CSCalc.ValueStoN[idx]];
} else {
return null;
}
}
CSCalc.getValueCalculationIdx = function( idx )
{
if (typeof(idx) == 'number') {
return CSCalc.ValueNtoN[idx];
} else if (typeof(idx) == 'string') {
return CSCalc.ValueStoN[idx];
} else {
return null;
}
}
CSCalc.getNumberOfAttributeCalculations = function()
{
return CSCalc.AttribNtoN.length;
}
CSCalc.getAttributeCalculation = function( idx )
{
if (typeof(idx) == 'number') {
return CSCalc.Calcs[CSCalc.AttribNtoN[idx]];
} else if (typeof(idx) == 'string') {
return CSCalc.Calcs[CSCalc.AttribStoN[idx]];
} else {
return null;
}
}
CSCalc.getAttributeCalculationIdx = function( idx )
{
if (typeof(idx) == 'number') {
return CSCalc.AttribNtoN[idx];
} else if (typeof(idx) == 'string') {
return CSCalc.AttribStoN[idx];
} else {
return null;
}
}

CSCalc.inValues = false;
CSCalc.calculateValues = function( param )
{
if (CSCalc.inAll)
return;
CSCalc.inValues = true;
var n = CSCalc.getNumberOfValueCalculations();
for (var i = 0; i < n; i++) {
CSCalc.calculate( CSCalc.getValueCalculationIdx( i ), param );
}
CSCalc.inValues = false;
}

CSCalc.inAttribs = false;
CSCalc.calculateAttributes = function( param )
{
if (CSCalc.inAttribs)
return;
CSCalc.inAttribs = true;
var n = CSCalc.getNumberOfAttributeCalculations();
for (var i = 0; i < n; i++) {
CSCalc.calculate( CSCalc.getAttributeCalculationIdx( i ), param );
}
CSCalc.inAttribs = false;
}

CSCalc.calculate = function( calc_idx, param )
{
var ret = 0;
do {
var c = CSCalc.getCalculation( calc_idx );
if (c == null)
break;
ret = c.evaluate( CSCalc.fieldLookup( c.trg ), param );
} while (false);
return ret;
}

CSCalc.clearFieldChanged = function( fld )
{
if (fld != null) {
if (CSCalc.FldsChgd[fld] == 1) {
delete CSCalc.FldsChgd[fld];
}
} else {
delete CSCalc.FldsChgd;
CSCalc.FldsChgd = new Object();
}
}

CSCalc.prototype.evaluate = function( f, param )
{

var ret = 0;
var doCalc;
do {
doCalc = false;
for (var tr in this.trs) {
if (CSCalc.FldsChgd[tr] != null) {

doCalc = true;
break;
}
}
if (!doCalc)
break;
if (this.func == null) { 
eval( "this.func = function() { return " + this.expr + " }" );
}
var r = this.func();
if (r == null)
break;

ret = CSCalc.execAction( r.func, r.params, param );
} while (false);
return ret;
}

CSCalc.execAction = function( f, params, param )
{
return f( params, param );
}

CSCalc.prototype.toString = function()
{
return "trg: " + this.trg + "\ntrs: " + this.trs + "\nexpr: " + this.expr + "\nfunc: " + this.func + "\n";
}

CSCalc_fieldChanged = function( fn )
{
CSCalc.FldsChgd[fn] = 1;
}

CSCalc.len = function( s )
{
var v = CSCnv.s( s );
return CSVal.n( v.value.length );
}
CSCalc.trim = function( s )
{
var v = CSCnv.s( s );
return CSVal.s( CS_TrimWS( v.value ) );
}
CSCalc.ns = function( s )
{
var v = CSCalc.trim( s );
return CSVal.s( CS_NormalizeSpaces( v.value ) );
}
CSCalc.left = function( s, n )
{
var vs = CSCnv.s( s );
var vn = CSCnv.n( n );
return CSVal.s( vs.value.substr( 0, vn.value ) );
}
CSCalc.right = function( s, n )
{
var vs = CSCnv.s( s );
var vn = CSCnv.n( n );

var st = vs.value.length-vn.value;
st = st < 0 ? 0 : st;
return CSVal.s( vs.value.substr( st, vn.value ) );
}
CSCalc.substring = function( s, n1, n2 )
{
var vs = CSCnv.s( s );
var vn1 = CSCnv.n( n1 );
var vn2 = CSCnv.n( n2 );
if (vn1.value < 0)
vn1.value = 0;
return CSVal.s( vs.value.substr( vn1.value, vn2.value ) );
}
CSCalc.upper = function( s )
{
var valObj = CSCnv.s( s );
return CSVal.s( valObj.value.toUpperCase() );
}
CSCalc.lower = function( s )
{
var valObj = CSCnv.s( s );
return CSVal.s( valObj.value.toLowerCase() );
}

CSCalc.cnvargs = function( args )
{
var ret = new Array();
for (var i=0; i < args.length; i++) {
if (args[i] == null)
continue;
var o = args[i];
if (o instanceof Array) {
for (var j=0; j < o.length; j++) {
if (o[j] == null)
continue;
ret.push( o[j] );
}
} else {
ret.push( o );
}
}
return ret;
}

CSCalc.concat = function()
{
var s = "";
var a = CSCalc.cnvargs( arguments );
for (var i = 0; i < a.length; i++) {
if (a[i] == null)
continue;
var valObj = CSCnv.s( a[i] );
s += valObj.value;
}
return CSVal.s( s );
}

CSCalc.contains = function( s1, s2 )
{
var vs1 = CSCnv.s( s1 );
var vs2 = CSCnv.s( s2 );
var rgx = new RegExp( CS_EscapeRegExpLiterals( vs2.value ) );
return CSVal.b( vs2.value.length > 0 && vs1.value.search( rgx ) > -1 );
}

CSCalc.sw = function( s1, s2 )
{
var vs1 = CSCnv.s( s1 );
var vs2 = CSCnv.s( s2 );
var rgx = new RegExp( "^" + CS_EscapeRegExpLiterals( vs2.value ) );
return CSVal.b( vs2.value.length > 0 && vs1.value.search( rgx ) > -1 );
}

CSCalc.ssb = function( s1, s2 )
{
var s = "";
var vs1 = CSCnv.s( s1 );
var vs2 = CSCnv.s( s2 );
var rgx = new RegExp( CS_EscapeRegExpLiterals( vs2.value ) );
var p = vs1.value.search( rgx );
if ( vs2.value.length > 0 && p > 0) {
s = vs1.value.substr( 0, p );
}
return CSVal.s( s );
}

CSCalc.ssa = function( s1, s2 )
{
var s = "";
var vs1 = CSCnv.s( s1 );
var vs2 = CSCnv.s( s2 );
var rgx = new RegExp( CS_EscapeRegExpLiterals( vs2.value ) );
var p = vs1.value.search( rgx );
if (vs2.value.length > 0 && p >= 0) {
s = vs1.value.substr( p + vs2.value.length );
}
return CSVal.s( s );
}
CSCalc.arith = function( op, ops )
{
var m = (op == '+' || op == '-') ? 0.0 : 1.0;
var n = 0.0;
for (var i = 0; i < ops.length; i++) {
n = 0.0;
var o = ops[i];
if (!isNaN( o ) && o != null)
n = o.valueOf();
switch( op ) {
case '+': m += n; break;
case '-': m -= n; break;
case '*': m *= n; break;
case '/': m /= n; break;
}
}
return CSVal.n( m );
}

CSCalc.sum = function()
{
var a = CSCalc.cnvargs( arguments );
var m = (!isNaN( a[0] ) && a[0] != null) ? a[0] : 0.0;
for (var i = 1; i < a.length; i++)
m += (!isNaN( a[i] ) && a[i] != null) ? a[i] : 0;

return CSVal.n( m.valueOf() );
}
CSCalc.dif = function()
{
var a = CSCalc.cnvargs( arguments );
var m = (!isNaN( a[0] ) && a[0] != null) ? a[0] : 0.0;
for (var i = 1; i < a.length; i++)
m -= (!isNaN( a[i] ) && a[i] != null) ? a[i] : 0;
return CSVal.n( m.valueOf() );
}
CSCalc.prd = function()
{
var a = CSCalc.cnvargs( arguments );
var m = (!isNaN( a[0] ) && a[0] != null) ? a[0] : 0.0;
for (var i = 1; i < a.length; i++)
m *= (!isNaN( a[i] ) && a[i] != null) ? a[i] : 0;
return CSVal.n( m.valueOf() );
}

CSCalc.quo = function()
{
var a = CSCalc.cnvargs( arguments );
var m = (!isNaN( a[0] ) && a[0] != null) ? a[0] : 0.0;
for (var i = 1; i < a.length; i++)
m /= (!isNaN( a[i] ) && a[i] != null) ? a[i] : 0;
return CSVal.n( m.valueOf() );
}
CSCalc.avg = function()
{
var m = 0.0;
var c = 0.0;
var a = CSCalc.cnvargs( arguments );
for (var i = 0; i < a.length; i++) {
if (!isNaN( a[i] ) && a[i] != null) {
m += a[i];
c++;
}
}
if (c == 0.0)
m = m >= 0 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
else
m/=c;
return CSVal.n( m );
}

CSCalc.min = function()
{
var m = Number.POSITIVE_INFINITY;
var a = CSCalc.cnvargs( arguments );
for (var i = 0; i < a.length; i++) {
if (!isNaN( a[i].valueOf() ) && a[i] < m)
m = a[i].valueOf();
}
if (m == Number.POSITIVE_INFINITY) {
m = Number.NaN;
}
return CSVal.n( m );
}

CSCalc.max = function()
{
var m = Number.NEGATIVE_INFINITY;
var a = CSCalc.cnvargs( arguments );
for (var i = 0; i < a.length; i++) {
if (!isNaN( a[i] ) && a[i] > m)
m = a[i].valueOf();
}
if (m == Number.NEGATIVE_INFINITY) {
m = Number.NaN;
}
return CSVal.n( m );
}
CSCalc.cne = function()
{
var c = 0.0;
var a = CSCalc.cnvargs( arguments );
for (var i = 0; i < a.length; i++) {
var s = CSCnv.s( a[i] );
if (s.value.length > 0)
c++;
}
return CSVal.n( c );
}
CSCalc.isN = function( n )
{
var valObj = CSCnv.n( n );
return CSVal.b( !isNaN( valObj.value ) );
}
CSCalc.floor = function( n )
{
var v = CSCnv.n( n );
return CSVal.n( Math.floor( v.value ) );
}
CSCalc.ceiling = function( n )
{
var v = CSCnv.n( n );
return CSVal.n( Math.ceil( v.value ) );
}
CSCalc.round = function( n )
{
var v = CSCnv.n( n );
return CSVal.n( Math.round( v.value ) );
}
CSCalc.t = function()
{
return CSVal.b( true );
}
CSCalc.f = function()
{
return CSVal.b( false );
}
CSCalc.uniquenum = function()
{
var fld = CSForm.getField( "LF__UniqNum" );
return CSVal.n( (fld!=null) ? fld.getValue() : 0);
}
CSCalc.today = function()
{
return CSVal.d( CSDate.today() );
}
CSCalc.year = function( d )
{
var dt = CSCnv.d( d );
return CSVal.n( dt.value.year );
}
CSCalc.month = function( d )
{
var dt = CSCnv.d( d );
return CSVal.n( dt.value.month );
}
CSCalc.day = function( d )
{
var dt = CSCnv.d( d );
return CSVal.n( dt.value.day );
}
CSCalc.now = function()
{
return CSVal.t( CSDate.now() );
}
CSCalc.hour = function( t )
{
var dt = CSCnv.t( t );
return CSVal.n( dt.value.hour );
}
CSCalc.minute = function( t )
{
var dt = CSCnv.t( t );
return CSVal.n( dt.value.minute );
}
CSCalc.second = function( t )
{
var dt = CSCnv.t( t );
return CSVal.n( dt.value.second );
}
CSCalc.cond = function ( e, t, f )
{
return e.valueOf() ? t : f;
}
CSCalc.eq = function ( a, b )
{
return CSVal.b( a.valueOf() == CSCnv.cnv( b, a.type ).valueOf() );
}
CSCalc.neq = function ( a, b )
{
return CSVal.b( a.valueOf() != CSCnv.cnv( b, a.type ).valueOf() );
}
CSCalc.gt = function ( a, b )
{
return CSVal.b( a.valueOf() > CSCnv.cnv( b, a.type ).valueOf() );
}
CSCalc.gte = function ( a, b )
{
return CSVal.b( a.valueOf() >= CSCnv.cnv( b, a.type ).valueOf() );
}
CSCalc.lt = function ( a, b )
{
return CSVal.b( a.valueOf() < CSCnv.cnv( b, a.type ).valueOf() );
}
CSCalc.lte = function ( a, b )
{
return CSVal.b( a.valueOf() <= CSCnv.cnv( b, a.type ).valueOf() );
}
CSCalc.and = function ( a, b )
{
return CSVal.b( CSCnv.b( a ).valueOf() && CSCnv.b( b ).valueOf() );
}
CSCalc.or = function ( a, b )
{
return CSVal.b( CSCnv.b( a ).valueOf() || CSCnv.b( b ).valueOf() );
}
CSCalc.not = function ( a )
{
return CSVal.b( !(CSCnv.b( a ).valueOf()) );
}
CSCalc.s_a_ro = function( fn, b )
{
var v = CSCnv.b( b );
return new CSAction( CSCalc.setFieldAttributeAction, new Array( fn, CSCnv.ATTRIB_READONLY, v.value ) );
}
CSCalc.s_a_rq = function( fn, b )
{
var v = CSCnv.b( b );
return new CSAction( CSCalc.setFieldAttributeAction, new Array( fn, CSCnv.ATTRIB_REQUIRED, v.value ) );
}
CSCalc.s_a_hi = function( fn, b )
{
var v = CSCnv.b( b );
return new CSAction( CSCalc.setFieldAttributeAction, new Array( fn, CSCnv.ATTRIB_HIDDEN, v.value ) );
}
CSCalc.s_a_tc = function( fn, s )
{
var v = CSCnv.s( s );
return new CSAction( CSCalc.setFieldAttributeAction, new Array( fn, CSCnv.ATTRIB_FGCOLOR, v.value ) );
}
CSCalc.s_a_fc = function( fn, s )
{
var v = CSCnv.s( s );
return new CSAction( CSCalc.setFieldAttributeAction, new Array( fn, CSCnv.ATTRIB_BGCOLOR, v.value ) );
}
CSCalc.s_v = function( fn, s )
{
return new CSAction( CSCalc.setFieldValueAction, new Array( fn, s.value, s.splitVals, s.i ) );
}

CSCalc.setFieldChangedCallback( CSCalc_fieldChanged );





CSCalc.updateIndices = function () {
var c = this.Calcs;
var v = 0;
var a = 0;
this.ValueStoN = {};
this.ValueNtoN = [];
this.AttribStoN = {};
this.AttribNtoN = [];

for ( var i=0; i<c.length; i++ ) {
if ( c[i].aspect == "value" ) {
this.ValueStoN[ c[i].trg ] = i;
this.ValueNtoN[ v++ ] = i;
} else {
this.AttribStoN[ c[i].trg ] = i;
this.AttribNtoN[ a++ ] = i;
}
}
}











if ( /msie/i.test( navigator.userAgent ) ) {
document.nativeGetElementById = document.getElementById;
document.getElementById = function( id ) {
var el = document.nativeGetElementById( id );
if( el && el.attributes[ 'id' ].value != id ) {

el = document.all[ id ];
}
return el;
};
}

var CSUtil = {
ua: navigator.userAgent,
isIE: null,
isIE6: null,
isIE7: null,
isFF: null,
isNS: null,
isGecko: null,
isMac: null,
isSafari: null,
safari: { buildMaj: "999", buildMin: "999", webkitMaj: "999", webkitMin: "999" },
isIphone: null
};
CSUtil.isIE = (CSUtil.ua.indexOf("MSIE") > 1);
CSUtil.isIE6 = (CSUtil.isIE && CSUtil.ua.indexOf("MSIE 6") > 1);
CSUtil.isIE7 = (CSUtil.isIE && CSUtil.ua.indexOf("MSIE 7") > 1);
CSUtil.isFF = (CSUtil.ua.indexOf("Firefox") > 1);
CSUtil.isME = (CSUtil.ua.indexOf("Windows 98") > 0);
CSUtil.isNS = (CSUtil.ua.indexOf("Netscape") > 1);
CSUtil.isGecko = (CSUtil.ua.indexOf("Gecko") > 1);
CSUtil.isSafari = (CSUtil.ua.indexOf("Safari") > 1);
CSUtil.isMac = (CSUtil.ua.indexOf("Mac") > 1);

CSUtil.safariBuildRE  = /Safari\/(\d+).*$/;
CSUtil.safariWebKitRE = /AppleWebKit\/(\d+).*$/;
CSUtil.isIphone = ((CSUtil.ua.indexOf('iPhone') != -1));


if (CSUtil.isSafari && CSUtil.ua.search( CSUtil.safariBuildRE )) {
CSUtil.safari.buildMaj = CSUtil.ua.match( CSUtil.safariBuildRE )[1];
}

if (CSUtil.isSafari && CSUtil.ua.search( CSUtil.safariWebKitRE )) {
CSUtil.safari.webkitMaj = CSUtil.ua.match( CSUtil.safariWebKitRE )[1];
}

CSUtil.NAMESTEM  = "HTobj__";




CSUtil.getDim = function ( el ) {
var lw = el.offsetWidth;
var lh = el.offsetHeight;
for (var lx = 0, ly = 0; el != null; lx += el.offsetLeft,  ly += el.offsetTop, el = el.offsetParent);
return { x:lx, y:ly, w:lw, h:lh };
}






CSUtil.ssl_iframe_file = "";
CSUtil.createIFrame = function ( el ) {
var ret = false;
if (el && VTwk.doIFrame && !csget(el.id + "_iFrame")) {
var file = "/robots.txt";
var dim = CSUtil.getDim( el );
var iframe1 = document.createElement( "IFRAME" );
var source = "";
var ssl_protocol = document.location.protocol;
var ssl_host = document.location.hostname;
var ssl_port = document.location.port;
var is_ssl = ssl_protocol.indexOf("https:") != -1;
if ( is_ssl ) {
if ( CSUtil.ssl_iframe_file == "" ) {
source = ssl_protocol + "//" + ssl_host + ((ssl_port != "") ? ":" + ssl_port : "") + file;
} else {
source = CSUtil.ssl_iframe_file;
}
}

iframe1.setAttribute( "id", el.id + "_iFrame" );
iframe1.setAttribute( "src", source );
iframe1.setAttribute( "frameBorder", "0" );
iframe1.setAttribute( "scrolling", "no" );
with ( iframe1.style ) {
position    = "absolute";
top         = 0;
left        = "-1px";
width       = "101%";
height      = dim.h;
filter      = "progid:DXImageTransform.Microsoft.Alpha( style=0, opacity=0 )";      

zIndex      = -1;
}
el.appendChild( iframe1 );

if ( is_ssl ) {

try {
if ( iframe1.contentWindow.document.mimeType == "Text Document" ) {
ret = true;
}
} catch ( e ) {

}





var alt_context = cs_getNonDefaultContextRoot();
if ( !ret ) {
try {
if ( alt_context != "" ) {
el.removeChild( iframe1 );
source = ssl_protocol + "//" + ssl_host + ((ssl_port != "") ? ":" + ssl_port : "") + alt_context + file;
var iframe2 = document.createElement( "IFRAME" );
iframe2.setAttribute( "id", el.id + "_iFrame" );
iframe2.setAttribute( "src", source );
iframe2.setAttribute( "frameBorder", "0" );
iframe2.setAttribute( "scrolling", "no" );
with ( iframe2.style ) {
position    = "absolute";
top         = 0;
left        = "-1px";
width       = "101%";
height      = dim.h;
filter      = "progid:DXImageTransform.Microsoft.Alpha( style=0, opacity=0 )";      

zIndex      = -1;
}
el.appendChild( iframe2 );
if ( iframe2.contentWindow.document.mimeType == "Text Document" ) {
ret = true;
}
} else {

}
} catch ( e ) {

}
}



if ( !ret ) {
try {
if ( alt_context == "" ) {
iframe1.setAttribute( "src", "" );
} else {
iframe2.setAttribute( "src", "" );
}
ret = true;
} catch ( e ) {
cs_trace( "Error setting empty src for ssl iframe.", 1 );
ret = false;
}
}
}

}

return ret;
}

function cs_getNonDefaultContextRoot() {
var ret = "";
var s = CSExt.validImg;
var p = s.split( "/static" );
if ( p[0] && p[0].length > 0 ) {
ret = p[0];
}
return ret;
}

CSUtil.resizeIFrames = function() {
var f = document.getElementsByTagName("IFRAME");
for (var i=0; i<f.length; i++) {
var ifr = f[i];
var par = ifr.parentElement;
if (par && par.offsetHeight != 0) {
ifr.style.height = par.offsetHeight;
}
}


}





CSUtil.repositionIt = function ( obj, target ) {

if ( obj && target ) {


var forCalLaunch = ( obj.id.indexOf( CSExt.cal.LAUNCH_NAMESTEM ) != -1 );
var forCal = ( obj.id.indexOf( CSExt.cal.NAMESTEM ) != -1 );
var forPop = ( obj.id.indexOf( CSUtil.popup.NAMESTEM ) != -1 );
var forTooltipTxt = ( obj.id.indexOf( "DFS__tipdiv_txt_" ) != -1 );
var forTooltipVal = ( obj.id.indexOf( "DFS__tipdiv_val_" ) != -1 );

var sw = cs_getScreenWidth();
var sh = cs_getScreenHeight();
var pg = target.parentNode.parentNode;
var pgTop = pg.offsetTop;
var pgLeft = pg.offsetLeft;

var fld = new CSField_Obj( target );
var fmt = fld.getFmt();

var inTable = ( fmt && fmt.table );

if ( inTable && forCal ) {
obj.parentNode.removeChild( obj );
target.parentNode.appendChild( obj );
obj.style.top = parseInt( target.style.top ) + parseInt( target.style.height ) + "%";
}




var isDate = fmt && fmt.fmtdt;



var lbl = CSExt.fieldLabels[ target.id ];
var lblDiv = null;
var lblDim = null;
if ( lbl ) {
lblDiv = cs_getAncestorWithAtt( lbl, "className", "txtblock" );
lblDim = CSUtil.getDim( lblDiv );
}

var oDim = CSUtil.getDim( obj );
var tDim = CSUtil.getDim( target );


var zoom = parseInt( CSExt.zoom.value );
var zfactor = 0;
if (zoom == 80) {
zfactor = -60;
} else if (zoom == 120) {
zfactor = 30;
}


if ( lblDiv && (forTooltipTxt || forCalLaunch) ) {
if ( lblDim.x > tDim.x ) {
var lblX = lblDim.x + lblDiv.offsetWidth + 4;
if ( isDate && forTooltipTxt ) {
lblX += 32;
}
obj.style.left = lblX + "px";
}



oDim = CSUtil.getDim( obj );
}

var scrollY = ( CSUtil.isIE ) ? document.body.scrollTop : window.scrollY;
var scrollX = ( CSUtil.isIE ) ? document.body.scrollLeft : window.scrollX;


var adjustY = ( obj.offsetTop + oDim.h > sh + scrollY - 20 );   
var adjustX = ( obj.offsetLeft + oDim.w > sw + scrollX - 20 );
if ( inTable && forCal ) {
adjustY = ( oDim.y + oDim.h > sh + scrollY - 20 );   
}





if ( forCalLaunch ) {
adjustX = ( obj.offsetLeft - pgLeft + oDim.w > sw );
}



if ( adjustY ) {
if ( forCal || forPop ) {
obj.style.top = parseInt( target.style.top ) - CSUtil.dynpxperc( oDim.h ) + zfactor + "%";
} else if (  forTooltipTxt ) {

obj.style.top = parseInt( obj.style.top ) - CSUtil.dynpxperc( oDim.h - tDim.h ) + "%";
} else if ( forTooltipVal ) {
obj.style.top = parseInt( target.style.top ) + 2 + "%";
}
}


if ( adjustX ) {
if ( forPop ) {
obj.style.left = parseInt( obj.style.left ) - parseInt( obj.style.width ) + parseInt( target.style.width ) - 20 + "%";
} else if ( forCalLaunch ) {
obj.style.left = parseInt( obj.style.left ) - parseInt( obj.style.width ) + "%";
obj.style.top = parseInt( target.style.top ) + parseInt( target.style.height ) + "%";


} else if (  forTooltipTxt ) {
obj.style.left = parseInt( target.style.left ) - CSUtil.dynpxperc( oDim.w + 4 ) + "%";
}
}

}
}

function cs_getScreenWidth() {
var windowWidth = -1;
if ( navigator.userAgent.indexOf("MSIE") > 1 ) {
if ( document.documentElement.clientWidth ) {
windowWidth = document.documentElement.clientWidth;
} else {
windowWidth = document.body.clientWidth;
}
} else {
windowWidth = window.innerWidth - ((document.body.scrollHeight > window.innerHeight) ? 20 : 0);
}
return windowWidth;
}

function cs_getScreenHeight() {
var windowHeight = -1;
if ( navigator.userAgent.indexOf("MSIE") > 1 ) {
if ( document.documentElement.clientHeight ) {
windowHeight = document.documentElement.clientHeight;
} else {
windowHeight = document.body.clientHeight;
}
} else {
windowHeight = window.innerHeight - ((document.body.scrollWidth > window.innerWidth) ? 20 : 0);
}
return windowHeight;
}












CSUtil.mm_x  = 0;
CSUtil.mm_y  = 0;
CSUtil.pos_x = 0;
CSUtil.pos_y = 0;
CSUtil.dragOk = new Array();
CSUtil.elToMove = null;
CSUtil.showMousePos = false;
CSUtil.isLO = true;
CSUtil.mouseisdown = null;


CSUtil.mousedownhelper = function( fx ) {
CSUtil.mouseisdown = window.setInterval( fx, 100 );
}
CSUtil.setmouseup = function() {
clearInterval( CSUtil.mouseisdown );
}




CSUtil.doMouseDown = function ( e ) {
var evt = (window.event) ? event : arguments[0];
CSUtil.elToMove = (window.event) ? event.srcElement : arguments[0].target;

var cnv = CSCanvases[ CSUtil.elToMove.id ];
if (cnv && cnv.drawingEnabled) {
CSCanvas.doMouseDown( e );
}


if ( CSUtil.elToMove.tagName == "A" ) {
return;
}


if ((CSUtil.isIE || CSUtil.isSafari) && evt.button != 1) {
return;
}
if (!CSUtil.isIE && !CSUtil.isSafari && evt.button != 0) {
return;
}

CSUtil.elToMove = CSUtil.verifyMove( CSUtil.elToMove );
if ( CSUtil.elToMove ) {
CSUtil.pos_x = CSUtil.elToMove.offsetLeft;
CSUtil.pos_y = CSUtil.elToMove.offsetTop;
CSUtil.mm_x = evt.clientX;
CSUtil.mm_y = evt.clientY;
document.onmousemove = CSUtil.doMouseMove;
}
}






CSUtil.doMouseMove = function ( e ) {
var evt = (window.event) ? event : arguments[0];
if ( CSUtil.elToMove ) {

if ( CSUtil.isLO ) {
CSUtil.elToMove.style.left = CSUtil.dynpxperc( parseInt(CSUtil.pos_x) + evt.clientX - parseInt(CSUtil.mm_x) ) + "%";
CSUtil.elToMove.style.top  = CSUtil.dynpxperc( parseInt(CSUtil.pos_y) + evt.clientY - parseInt(CSUtil.mm_y) ) + "%";
} else {
CSUtil.elToMove.style.left = parseInt(CSUtil.pos_x) + evt.clientX - parseInt(CSUtil.mm_x) + "px";
CSUtil.elToMove.style.top  = parseInt(CSUtil.pos_y) + evt.clientY - parseInt(CSUtil.mm_y) + "px";
}

}
}




CSUtil.getMouseXY = function ( e ) {
var ret = null;                      
var evt = (window.event) ? event : arguments[0];
if ( evt && document.body ) {
var tempX = 0;
var tempY = 0;
if ( window.event ) {
tempX = evt.clientX + document.body.scrollLeft;
tempY = evt.clientY + document.body.scrollTop;
} else {
tempX = evt.pageX;
tempY = evt.pageY;
}
CSUtil.mm_x = tempX;
CSUtil.mm_y = tempY;
if ( CSUtil.showMousePos ) CSIV._setMousePos( CSUtil.mm_x , CSUtil.mm_y );
ret = { x:tempX, y:tempY };
}
return ret;
}




CSUtil.doMouseUp = function  () {
if ( CSCanvas.el != null ) {
CSCanvas.endStroke( CSCanvas.el.id );
CSCanvas.el = null;
document.onmousemove = CSUtil.getMouseXY;
}

if ( CSUtil.elToMove != null ) {


CSUtil.elToMove = null;

}
}







CSUtil.moveApproved = function ( id, handleID ) {
var ret = false;

do {
var obj = csget( id );
if ( !obj ) {
break;
}
if ( CSUtil.dragOk[ id ] ) {
ret = true;
break;
}
var useObj = obj;

var store = {};

if ( typeof handleID != "undefined" ) {
var handleObj = csget( handleID );
store.handle = handleObj;
if ( handleObj ) {
useObj = handleObj
}
}
store.el = obj;
store.cursor = useObj.style.cursor;

obj.style.position = "absolute";
useObj.style.cursor = "move";

CSUtil.dragOk[ id ] = store;
ret = true;
break;
} while ( id && !CSUtil.dragOk[ id ] );
return ret;
}





CSUtil.moveDenied = function ( id ) {
var ret = false;
if ( id && CSUtil.dragOk[ id ] ) {
var obj = CSUtil.dragOk[ id ].el;
var useObj = obj;

if ( CSUtil.dragOk[ id ].handle ) {
useObj = CSUtil.dragOk[ id ].handle;
}
useObj.style.cursor = CSUtil.dragOk[ id ].cursor;
delete CSUtil.dragOk[ id ];
ret = true;
}
return ret;
}




CSUtil.verifyMove = function ( obj ) {
var ret = null;
if ( obj && obj.tagName != "HTML" ) {

var store = CSUtil.dragOk[ obj.id ];
if ( obj.id && store && !store.handle ) {
ret = obj
}

if ( !ret ) {
for ( var id in CSUtil.dragOk ) {
store = CSUtil.dragOk[ id ];
if ( store.handle && store.handle.id == obj.id ) {
ret = csget( store.el.id );  
break;
}
}
}

if ( !ret ) {
var compObj = obj.parentNode;
do {
if ( compObj.id && CSUtil.dragOk[ compObj.id ] ) {

if ( !CSUtil.dragOk[ compObj.id ].handle ) {
ret = compObj;
}
break;
} else {
compObj = compObj.parentNode;
}
} while ( compObj && compObj.tagName != "BODY" && compObj.tagName != "HTML" )
}
}
return ret;
}





document.onmousedown = CSUtil.doMouseDown;
document.onmouseup   = CSUtil.doMouseUp;




















CSUtil.popup = {};

CSUtil.popup.NAMESTEM = CSUtil.NAMESTEM + 'Popup_';     

CSUtil.popup.createPopup = function( pTarget, pColor, pWidth, pMsg ) {
var HTML_NONE         = 0;      
var HTML_ALL          = 1;      
var HTML_LIMITED      = 2;      

var oTarget           = null;   
var popColor          = (pColor.search(/^#(([A-F])|\d){3,6}$/i) != -1) ? pColor : "#FFFFC0";   
var width             = 0;      
var sMsg              = "";     
var objType           = "obj";

var bHTMLEnabled      = HTML_ALL;
var closeSquare       = 18;

if (pTarget) {
oTarget = pTarget;
}
if (parseInt(pWidth) > 0) {
width = pWidth;
}
if (pMsg.length > 0) {
sMsg = pMsg;
}




var t = CSUtil.getDim( oTarget );
var pg = CSClient.getPageNumber( oTarget );


var zoom = document.getElementById('DFS__ctrlZoom').value;
var zfactor = 0;
if (zoom == 80)
zfactor = 6;
else if (zoom == 120)
zfactor = 14;

if (CSUtil.isNS)
zfactor = 0;




var popX         = t.x;
var popY         = CSUtil.continousAdj( t.y, pg );
var popWidth      = width;




var existing = csget(CSUtil.popup.NAMESTEM + 'popupCtrlContainer_' + oTarget.id);
if (existing) {
existing.style.left = CSUtil.pxperc( popX - 3, pg ) + "%";
existing.style.top  = CSUtil.pxperc( popY - 3 + zfactor, pg ) + "%";
CSUtil.repositionIt( existing, oTarget );
return;
}




var popUpContainer = document.createElement( 'div' );
popUpContainer.setAttribute('id', CSUtil.popup.NAMESTEM + 'popupCtrlContainer_' + oTarget.id);

popUpContainer.onmousedown = function () { CSUtil.popup.bringPopupForward( popUpContainer ); };
with ( popUpContainer.style ) {
position        = "absolute";


left          = CSUtil.pxperc( popX - 3, pg ) + "%";
top           = CSUtil.pxperc( popY - 3 + zfactor, pg ) + "%";
width           = popWidth + "px";
backgroundColor = popColor;
border          = "1px solid gray";
zIndex          = 99999;
}

var shimDiv = CSUtil.getShimDiv( oTarget );
shimDiv.appendChild( popUpContainer );




var dragCtrl = document.createElement( 'div' );
dragCtrl.setAttribute('id', CSUtil.popup.NAMESTEM + 'dragCtrl' + oTarget.id);
dragCtrl.setAttribute( 'title', CS_POP_CLICKTODRAG );
if (!document.all) {

dragCtrl.setAttribute("onmouseup","javascript:CSUtil.doMouseUp(event);");
}









with ( dragCtrl.style ) {
height = (closeSquare) + "px";
backgroundColor = CSExt.cal.dragColor;
backgroundImage = "url(" + CSExt.handleImg + ")";
borderBottom = "1px solid gray";
cursor = "move";
}
if (1) {
var titlediv = document.createElement( 'span' );
with (titlediv.style) {
position = "absolute";
borderRight = "1px solid gray";
backgroundColor = "#404040";
color = "white";
paddingLeft = "5px";
paddingRight = "5px";
fontFamily = CSExt.cal.font;
lineHeight = (closeSquare) + "px";
}

var btnText = oTarget.childNodes[0];
if (typeof btnText != "undefined" && btnText.tagName != "IMG") {
titlediv.innerHTML = oTarget.innerHTML;
dragCtrl.appendChild( titlediv );
}
}
popUpContainer.appendChild( dragCtrl );




var closeCtrlFrame = document.createElement( 'div' );
closeCtrlFrame.setAttribute('id', CSUtil.popup.NAMESTEM + 'closeCtrlFrame_' + oTarget.id);
if (!document.all) {

closeCtrlFrame.setAttribute("onmouseup","javascript:CSUtil.doMouseUp(event);");
}
with ( closeCtrlFrame.style ) {
height = closeSquare + "px";
}
popUpContainer.appendChild( closeCtrlFrame );




var closeCtrl = document.createElement( 'div' );
closeCtrl.setAttribute('id', CSUtil.popup.NAMESTEM + 'closeCtrl_' + oTarget.id);
closeCtrl.setAttribute('title', CS_CAL_CLOSE);
closeCtrl.onclick = function () { CSUtil.popup.removePopup( popUpContainer ) };
with ( closeCtrl.style ) {
position      = "absolute";

top           = "0px";
width         = closeSquare + "px";
height        = closeSquare + "px";
textAlign     = "center";
borderLeft    = "1px solid gray";
borderBottom  = "1px solid gray";
backgroundColor = "#FF8080";
fontSize      = "80%";
fontFamily    = "Lucida Sans Unicode";
cursor        = CSExt.cal.pointerCursor;
}
closeCtrl.innerHTML = "&times;";
closeCtrlFrame.appendChild( closeCtrl );




var oMsgContainer = document.createElement( 'div' );
closeCtrl.setAttribute('id', CSUtil.popup.NAMESTEM + 'msgContainer_' + oTarget.id);
if(!document.all) { 
oMsgContainer.setAttribute("onmouseup","javascript:CSUtil.doMouseUp(event);");
}
with ( oMsgContainer.style ) {
paddingLeft   = "10px";
paddingBottom = "15px";
paddingRight  = "10px";
fontFamily    = oTarget.style.fontFamily;
textAlign     = "left";
cursor        = "default";
}
popUpContainer.appendChild( oMsgContainer );




var msgToUse = sMsg;

if (bHTMLEnabled == HTML_NONE) {
msgToUse = msgToUse.replace(/<(.|\s)[^>]*>/gi,"");

} else if (bHTMLEnabled == HTML_ALL) {
msgToUse = msgToUse.replace(/((http:\/\/)\S+\w)/gi,"<a href='$1' target='_blank'>$1</a>");

} else if (bHTMLEnabled == HTML_LIMITED) {
msgToUse = msgToUse.replace(/<(.|\s)[^>]*>/gi,"");
msgToUse = msgToUse.replace(/((http:\/\/)\S+\w)/gi,"<a href='$1' target='_blank'>$1</a>");
}
oMsgContainer.innerHTML = msgToUse;




var finalSize = CSUtil.getDim( popUpContainer );
var longest = finalSize.w;







if (!document.all) {
var words = msgToUse.split(" ");
var holder = document.createElement("div");
holder.style.fontFamily = oMsgContainer.style.fontFamily;
document.body.appendChild( holder );
for (var i=0; i<words.length; i++) {
var temp = document.createElement("span");
holder.appendChild( temp );
temp.innerHTML = words[i];
if(temp.offsetWidth > longest) {
longest = temp.offsetWidth;
}
temp.innerHTML = words[i] + ": " + temp.offsetWidth;
}
document.body.removeChild( holder );
popUpContainer.style.width = longest + "px";
}



closeCtrl.style.left = (longest - (closeSquare + ((document.all)?3:1) )) + "px";

dragCtrl.style.width = closeCtrl.style.left;





CSUtil.repositionIt( popUpContainer, oTarget );





CSUtil.createIFrame( popUpContainer );

CSUtil.popup.bringPopupForward( popUpContainer );




CSUtil.moveApproved( popUpContainer.id, CSUtil.popup.NAMESTEM + 'dragCtrl' + oTarget.id );

return popUpContainer;
}




CSUtil.popup.removePopup = function ( el ) {

if (el && el.id) {
document.getElementById( el.id ).parentNode.removeChild( el );
}
}




CSUtil.popup.getPopupParentContainer = function ( el ) {

var retObj  = null;

if (el) {
while ( el.parentNode ) {
el = el.parentNode;
var elId   = "";
if (typeof el.id != "undefined") {
elId = el.id;
}
if (el.id != null && el.id != "undefined" && el.tagName != "div" && elId.indexOf(CSUtil.popup.NAMESTEM) != -1) {
break;
}
}
retObj = el;
}

return retObj;
}




CSUtil.popup.getAllPopups = function () {

var x = 0;
var allPopups = new Array();
var allDivs = document.getElementsByTagName( "div" );

for (var i = 0; i < allDivs.length; i++) {
if (allDivs[i].id.indexOf(CSUtil.popup.NAMESTEM) != -1)
allPopups[x++] = allDivs[i];
}

return allPopups;
}




CSUtil.popup.bringPopupForward = function ( el ) {

if (el && typeof el.id != "undefined") {
var allPopups = CSUtil.popup.getAllPopups();
for (var i = 0; i < allPopups.length; i++) {
allPopups[i].style.zIndex = 9999;
}
el.style.zIndex = 99999;
}
}





CSUtil.pxperc = function( px, pg ) {
if (!isNaN(px) && parseInt(pg) > 0) {
var shimpx = document.getElementById('DFS__shimdiv' + pg).offsetWidth;
return Math.round((px / shimpx) * 100);  
}
}




CSUtil.dynpxperc = function( px ) {
if ( !isNaN(px) ) {
var shimpx = CSExt.physSize.baseShim;
return Math.round((px / shimpx) * 100);  
}
}




CSUtil.getShimDiv = function( el ) {
var shimdiv = null;
var pg = CSClient.getPageNumber( el );
if (parseInt(pg) > 0) {
shimdiv = document.getElementById('DFS__shimdiv' + pg);
}

return shimdiv;
}




CSUtil.continousAdj = function( px, pg ) {

if (!document.toolform.DFS__ctrlSetView || !px || !pg)
return null;

if (document.toolform.DFS__ctrlSetView.value == CS_CONTINUOUS_MODE) {
return (px - document.getElementById('DFS__pagediv' + pg).offsetTop) + document.getElementById('DFS__toolbarTop').offsetHeight;
} else {
return px;
}
}




CSUtil.showMenu = function ( menu ) {
var d = document.getElementById(menu);
d.style.display = "block";
CSUtil.resizeIFrame(d.parentElement);
d.tm = CSUtil.timeout("hideMenu("+menu+")", 5);
}

CSUtil.hideMenu = function ( menu ) {
var d = document.getElementById(menu);
d.style.display = "none";
CSUtil.resizeIFrame(d.parentElement);
}

CSUtil.timeout = function ( funcstr, delay ) {
return window.setTimeout(funcstr, delay*1000);
}

CSUtil.resizeIFrame = function ( el ) {
if (el) {
var ifr = document.getElementById(el.id + "_iFrame");
if (ifr) {
ifr.style.width = el.offsetWidth;
ifr.style.height = el.offsetHeight;
}
}
}

function cs_screenout( message, color ) {
var clr = (typeof color != "undefined") ? color : "blue";
var pg = csget("DFS__pagediv" + CSExt.VisiblePage);
var sd = csget("cs_screenDebug");
var msg = "" + message;
var dLeft = parseInt(pg.offsetWidth) + 20 + "px";
var control = csget( "cs_debug_control" );
if (pg) {
if (!sd) {
sd = document.createElement("div");
sd.setAttribute("id", "cs_screenDebug");
sd.setAttribute("count", 0);
with (sd.style) {
position = "absolute";
top = "30px";
left = dLeft;
height = parseInt(screen.height*.6) + "px";
width = parseInt(screen.width) - parseInt(left) - 50 + "px";
backgroundColor = "white";
border = "1px dotted navy";
padding = "3px";
textAlign = "left";
fontSize = "10pt";
zIndex = "999999";
fontFamily = "Courier";
overflow = "auto";
}
document.body.appendChild(sd);

control = document.createElement("div");
control.setAttribute("id", "cs_debug_control");
with ( control.style ) {
color = "yellow";
fontWeight = "bold";
backgroundColor = "#808080";
border = "1px solid black";
height = "20px";
lineHeight = "18px";
marginBottom = "2px";
paddingLeft = "2px";
}
sd.appendChild( control );

var sTitle = "Trace Debugger";
var title = document.createElement("span");
title.setAttribute("id", "cs_debug_title");
title.innerHTML = sTitle;

var xBtn = document.createElement("button");
xBtn.setAttribute("id", "cs_debug_close");
with (xBtn.style) {
width = "20px";
height = "20px";
cssFloat = "right";
styleFloat = "right";
lineHeight = "10px";
fontSize = "10px";
padding = 0;
cursor = "pointer";
}
xBtn.innerHTML = "x";
xBtn.title = "close debug pane";
xBtn.onclick = function() {
cs_trace_close();
}
control.appendChild( xBtn );

var clearBtn = document.createElement("button");
clearBtn.setAttribute("id", "cs_debug_clear");
with (clearBtn.style) {
width = "20px";
height = "20px";
cssFloat = "right";
styleFloat = "right";
lineHeight = "10px";
fontSize = "10px";
padding = 0;
cursor = "pointer";
}
clearBtn.innerHTML = "c";
clearBtn.title = "clear debug pane";
clearBtn.onclick = function() {
cs_trace_clear();
}
control.appendChild( clearBtn );

var expBtn = document.createElement("button");
expBtn.setAttribute("id", "cs_debug_resize");
with (expBtn.style) {
width = "20px";
height = "20px";
cssFloat = "right";
styleFloat = "right";
lineHeight = "10px";
fontSize = "10px";
padding = 0;
cursor = "pointer";
}
expBtn.innerHTML = "+";
expBtn.title = "toggle debug pane resize";
expBtn.onclick = function() {
var pane = csget("cs_screenDebug");
var expandBtn = csget("cs_debug_resize");
if (expandBtn.innerHTML == "+") {
var startWidth = parseInt(pane.style.width);
pane.style.width = (screen.width - 200) + "px";
expandBtn.innerHTML = "-";
if (pane.style.left != "10px") {
pane.style.left = parseInt(dLeft) - (parseInt(pane.style.width) - startWidth) + "px";
}
} else {
pane.style.width = parseInt(screen.width) - parseInt(dLeft) - 50 + "px";
expandBtn.innerHTML = "+";
if (pane.style.left != "10px") {
pane.style.left = dLeft;
}
}
}
control.appendChild( expBtn );


var swapBtn = document.createElement("button");
swapBtn.setAttribute("id", "debug_swap");
with (swapBtn.style) {
width = "20px";
height = "20px";
cssFloat = "right";
styleFloat = "right";
lineHeight = "10px";
fontSize = "10px";
padding = 0;
cursor = "pointer";
}
swapBtn.innerHTML = "<<";
swapBtn.title = "swap debug pane position";
var PANE_MARGIN = 10;
swapBtn.onclick = function() {
var pane = csget("cs_screenDebug");
var swapBtnRef = csget("debug_swap");
if ( pane.style.left == "10px") {
if ( pane.style.width == (screen.width - 200) + "px") {
var startWidth = parseInt(pane.style.width);
pane.style.left = parseInt(dLeft) - (parseInt(pane.style.width) - (screen.width - 200)) + "px";
} else {
pane.style.left = dLeft;
}
swapBtnRef.innerHTML = "<<";
} else {
pane.style.left = PANE_MARGIN + "px";
swapBtn.innerHTML = ">>";
}
}
control.appendChild( swapBtn );
control.appendChild( title );

}





sd.style.display = "block";
var count = parseInt( sd.getAttribute('count') );    
sd.setAttribute('count', ++count );
var line = document.createElement('div');
with ( line.style ) {
borderBottom = "1px solid gray";
backgroundColor = ( count%2 == 0 ) ? "#efefef" : "";
}

line.innerHTML = "<table border=0 width='100%' style='color:" + clr + "'><tr><td width='28' valign='top' style='font-weight:bold; color:yellow; background-color:#808080;border:1px solid black;f'>" +
(count) + "</td><td>" + msg + "</td></tr></table>";;

if ( control.nextSibling == null ) {
sd.appendChild( line );
} else {
sd.insertBefore( line, control.nextSibling );
}
CSUtil.moveApproved( sd.id, control.id );
}
}

function cs_debug( output ) {
var str = "";
if (output != 1) {  
var sd = document.getElementById('cs_screenDebug');
if (sd)
sd.parentNode.removeChild(sd);
}
cs_screenout("<span style='background-color:#666666;'>&nbsp;&#9733; DEBUG &#9733;&nbsp;</span>", "yellow");
for  (var i=0; i<CSExt.trace.strs.length; i++) {
cs_screenout(CSExt.trace.strs[i], CSExt.trace.clrs[i]);
}

}

function cs_monitor( message, color ) {
var clr = (typeof color != "undefined") ? color : 'blue';
var pg = document.getElementById('DFS__pagediv' + CSExt.VisiblePage);
var sm = document.getElementById('cs_screenMonitor');
var msg = "";
if (typeof message != "string") {
if (message == null) {
msg = "Null";
} else if (message && message.id) {
msg = message.id;
} else {
msg = message.toString();
}
} else {
msg =  message;
}
if (pg) {
if (!sm) {
sm = document.createElement('div');
sm.setAttribute('id', 'cs_screenMonitor');
with (sm.style) {
position='absolute';
top='10px';
left=parseInt(pg.offsetWidth)+20+'px'

width=parseInt(screen.width)-parseInt(left)-50+'px'
textAlign='left';
fontSize='10pt';
zIndex='999999';
fontFamily='Courier';
overflow='auto';
border='1px solid #c0c0c0';
}
document.body.appendChild(sm);
}

for (var fn in CSExt.f) {
var r = new RegExp( "(" + fn + "\\s)", "gi" );
msg = msg.replace(r, "<span style='color:black;'>$1</span>");
}
sm.style.color = clr;
sm.innerHTML = msg;
}
}




function cs_loadQuerystring() {

var search = document.location.search;
var qs = search.substr(1, search.length);
return qs.split("&");
}

function cs_getQSValue( key ) {
var pairs = cs_loadQuerystring();
for (var i = 0; i < pairs.length; i++){
var val = null;
var keyvalue = pairs[i];
var k = keyvalue.split("=");
if (k[0] == key){
val = k[1];
break;
}
}
return val;
}





CSUtil.tooltips = {};
CSUtil.tooltipFadeDelay = 0.5;
CSUtil.tooltipDoFade = true;
CSUtil.tooltipPosWithMouse = false; 
CSUtil.tooltipEl = null;  

function cs_showTooltip( fld, msg, type ) {
if ( !CSExt.f ) return;                     


if ( typeof type == "undefined" ) type = "txt";       



var delay = ( type == "txt" ) ? 800 : 0;
var ttid = "DFS__tipdiv_" + type + "_" + fld.id;

var ttobj = CSUtil.tooltips[ ttid ];
var tt = (ttobj) ? ttobj.tt : null;
if ( tt ) {
return;
}

tt = cs_createTooltip( ttid, fld, msg, type );
CSUtil.tooltips[ ttid ] = { tt:tt, fld:fld };

if ( CSUtil.isIE ) {
CSUtil.createIFrame( tt );
var iframe = csget( tt.id + "_iFrame" );
if ( iframe ) {
iframe.style.width = tt.offsetWidth+1;
iframe.style.left = "-2px";
iframe.style.height = tt.offsetHeight+1;
iframe.style.top = "-2px";
}
}
window.setTimeout( "cs_positionTooltip('" + ttid + "')", delay );
}


function cs_createTooltip( ttid, fld, msg, type ) {



var tt = document.createElement("div");
tt.setAttribute( "id", ttid );
tt.tipType = type;

msg = msg.replace(/-/g,"\u2212");   
tt.innerHTML = msg;

with ( tt.style ) {
position = "absolute";
top = 0;
left = 0;
textAlign = "left";
padding = "4px";
visibility = "hidden";
fontFamily = "sans-serif";
fontSize = "90%";
backgroundColor = ( tt.tipType == "val" ) ? "#FFDAAF" : "#ffffcc";
zIndex = "99999";
width = cs_getTooltipWidth( tt, msg ) + "px";
border = "1px solid gray";  
}
cs_setOpacity( tt, 0 );


var par = fld.parentNode;
var poss = null;


if ( fld.tagName == "A" ) {
poss = cs_getAncestorWithAtt( fld, "className", "txtblock" );
}


if ( fld.type == "text" ) {
poss = csget( fld.id + "_rect" );
}


if ( poss && poss.parentNode ) {
par = poss.parentNode;
}

par.appendChild( tt );

return tt;
}

function cs_getTooltipWidth( tt, txt ) {


var max_width = 320;
var dummy = document.createElement( "span" );
with ( dummy.style ) {
position = "absolute";
fontFamily = tt.style.fontFamily;
fontSize = tt.style.fontSize;
top = "30px";
left = "10px";
zIndex = 99999;
backgroundColor = "#000000";
color = "#ffffff";
borderRight = "1px solid red";
}
cs_setOpacity( dummy, 0 );
document.body.appendChild( dummy );
dummy.innerHTML = txt;
var width = dummy.offsetWidth + ((CSUtil.isIE) ? 12 : 0);      
if ( width > max_width ) {
width = max_width;
var longest = 0;
var words = txt.split( " " );
for ( var i=0; i<words.length; i++ ) {
dummy.innerHTML = words[i];
if ( dummy.offsetWidth > longest ) {
longest = dummy.offsetWidth;
}
}
if ( longest > width ) {
width = longest;
}
}
dummy.parentNode.removeChild( dummy );
return width;
}


function cs_positionTooltip( ttid ) {

var ttobj = CSUtil.tooltips[ ttid ];
if ( ttobj ) {
var el = ttobj.fld;
var tt = ttobj.tt;
var pg = el.parentNode.parentNode;
if ( el && tt ) {
var x = 0;
var y = 0;                  

x = parseInt( el.style.left ) + 8;
y = parseInt( el.style.top ) + parseInt( el.style.height) + 1;


if ( tt.tipType == "txt" ) {

if ( CSUtil.tooltipPosWithMouse ) {
if ( CSUtil.mm_x != 0 && CSUtil.mm_x != 0 ) {

x = CSUtil.mm_x;
y = CSUtil.mm_y + 20;
}
} else {


if ( el.tagName == "A" ) {
var par = cs_getAncestorWithAtt( el, "className", "txtblock" );
if ( par ) {
el = par;
}
}


if ( el.type == "text" ) {
var par = csget( el.id + "_rect" );
if ( par ) {
el = par;
}
}

x = parseInt( el.style.left ) + parseInt( el.style.width ) + 4;
y = parseInt( el.style.top );


var fld = new CSField_Obj( el );
var fmt = fld.getFmt();


var isDate = fmt && fmt.fmtdt;
if ( isDate ) {
var cal = csget( "wrapper__HTobj__CalLaunch_" + el.id );
if ( cal && !(cal instanceof Array) ) {
x = x + CSUtil.dynpxperc( cal.offsetWidth - 2 );
y -= 1;
}
}

} 
} 

with ( tt.style ) {
left = x + "%";
top = y + "%";
}

CSUtil.repositionIt( tt, el );

tt.style.visibility = "visible";

if ( CSUtil.tooltipDoFade ) {
cs_fade( ttid, "in", CSUtil.tooltipFadeDelay );
} else {
cs_setOpacity( tt, 1 );
}
if ( CSUtil.isIE ) {

window.setTimeout( "cs_clearTooltipOpacity('" + ttid + "')", CSUtil.tooltipFadeDelay*1000 );
}
}
}
}

function cs_clearTooltipOpacity( ttid ) {


var tt = csget( ttid );

if ( tt ) {
tt.style.filter = "";
}
}

function cs_closeTooltip( fid, type ) {
if ( fid ) {
var ttid = "DFS__tipdiv_" + type + "_" + fid;
var ttobj = CSUtil.tooltips[ ttid ];
if ( ttobj ) {
var el = ttobj.fld;
var proceed = true;


if ( CSUtil.isFF && el
&& (

(el.type == "text") || (el.type == "select-one" && el.size > 1) || (el.id.indexOf( "inkWrapper_" ) != -1)
) ) {
proceed = !cs_mouseIsOverField( el );
}

if ( CSUtil.isIE && el

&& ( el.id.indexOf( "SIG__" ) != -1 || (el.id.indexOf( "inkWrapper_" ) != -1) ) ) {
proceed = !cs_mouseIsOverField( el );
}

if ( CSUtil.isSafari && el
&& ( el.type == "button" ) ) {
proceed = !cs_mouseIsOverField( el );
}



if ( proceed ) {

if ( CSUtil.tooltipDoFade ) {
cs_fade( ttid, "out", CSUtil.tooltipFadeDelay, "cs_destroyTooltip" );

window.setTimeout( "cs_destroyTooltip('" + ttid + "')", CSUtil.tooltipFadeDelay*1000 );
} else {
cs_destroyTooltip( ttid );
}
}
}
}
}

function cs_destroyTooltip( id ) {        
if ( id ) {
var ttobj = CSUtil.tooltips[ id ];
if ( ttobj ) {
var tt = ttobj.tt;
if ( tt ) { 
tt.parentNode.removeChild( tt );
CSUtil.tooltips[ id ] = null;

}
}
}
}

function cs_mouseIsOverField( el ) {
var ret = false;                  
var d = CSUtil.getDim( el );
if ( el.mousePos ) {
var mx = el.mousePos.x;
var my = el.mousePos.y;
var x = d.x;
var y = d.y
var w = d.w
var h = d.h
var a = x + w;
var b = y + h;












if ( CSUtil.isIE ) {  
mx -= 2;
my -= 2;
}

if ( mx > x && mx <= a && my > y && my < b ) {
ret = true;
}
}
return ret;
}


function csget(id) { return (typeof id != "string") ? null : document.getElementById(id); }

function cs_getAncestorWithAtt( node, attrib, value ) {
var retNode = null;

if (node && node.tagName.toLowerCase() != "html") {
if (node[attrib] == value) {
retNode = node;
} else {
retNode = cs_getAncestorWithAtt( node.parentNode, attrib, value );
}
}

return retNode;
}

function cs_getDescendantLabel( node ) {
var retNode = null;

if (node.hasChildNodes()) {
var child = node.firstChild;
while (child != null && retNode == null) {
if (child.tagName && child.tagName.toLowerCase() == "label") {
retNode = child;
} else {
retNode = cs_getDescendantLabel( child );
}
child = child.nextSibling;
}
}

return retNode;
}






function cs_loadStyles() {
var s  = {};
var sc = {};
var sSheets = document.styleSheets;
var sRules, sMedia, prefix;

for ( var i=0; i<sSheets.length; i++ ) {
s[i] = {};
sc[i] = {};
sRules = sSheets[i].rules || sSheets[i].cssRules;
sMedia = sSheets[i].media.mediaText || sSheets[i].media;
if ( sMedia == "screen,print" ) {
prefix = "";
} else if ( sMedia && sMedia.indexOf( "print" ) == 0 ) {
prefix = "csPrint:";
} else if ( sMedia && sMedia.indexOf( "screen" ) == 0 && sMedia.indexOf( "print" ) == -1 ) {
prefix = "csScreen:";
}

for ( var j=0; j<sRules.length; j++ ) {
var selector = sRules[j].selectorText;
selector = selector.replace( /\*\[ID\"(.*)\"\]/g, "#$1" );    
selector = selector.toLowerCase();                            
s[i][ selector ] = sRules[j].style;
sc[i][ selector ] = sRules[j].style.cssText;
}
}
return { styles:s, classes:sc };
}

CSUtil.getStyle = function( name, media ) {
var key = name.toLowerCase();
var m = 0;
if ( media == "print" ) {
m = 1;
} else if ( media == "screen" ) {
m = 2;
}
return CSExt.styles[ m ][ key ];
}

CSUtil.getRule = function( name, media ) {
return CSUtil.getStyle( name, media ).cssText;
}














var cs_compare = {};

cs_compare["Numeric"] = function( source, target ) {
var result;

if (source == target) {
result = 0;
} else if (source == Infinity || target == -Infinity) {
result = 1;
} else if (source == -Infinity || target == Infinity) {
result = -1;
} else {
result = source - target;
}

return result;
}











function cs_compareProperty( property, type ) {
return function( source, target ) {
return cs_compare[type]( source[property], target[property] );
}
}












function CSValidateTextareaMax( fld, e ) {
var ret = true;
var fmt = CSExt.f[ fld.id ].fmt;
var max = 0;
var hasMax = true;
if ( fmt.fmttxt ) {
max = fmt.fmttxt.mxcc;
} else {
hasMax = false;
}

if ( fld && hasMax ) {
var proceed = true;

if ( e ) {
proceed = false;
if (   e.keyCode != 9     
&& e.keyCode != 8     
&& e.keyCode != 37    
&& e.keyCode != 38    
&& e.keyCode != 39    
&& e.keyCode != 40    
&& e.keyCode != 16    
&& e.keyCode != 33    
&& e.keyCode != 34    
&& e.keyCode != 35    
&& e.keyCode != 36    
&& e.keyCode != 46    
&& !e.ctrlKey         
) {
proceed = true;
}

}
if ( proceed ) {

var charsSelected = CSGetSelectionLength( fld );
if ( fld.value.length - charsSelected >= max ) {

var caret = CSGetCaretPos( fld );
var scrollPos = fld.scrollTop;

fld.value = fld.value.substring( 0, max );

fld.scrollTop = scrollPos;
CSSetCaretPos( fld, caret );
ret = false;
}
}
}
return ret;
}


function CSGetSelectionLength( el ) { 
var c = 0;
el.focus();
if ( document.selection && document.selection.createRange ) {
var sel = document.selection.createRange();
c = sel.text.length;    
} else if ( el.selectionEnd ) {
c = el.selectionEnd - el.selectionStart;
}
return c;
}


function CSGetCaretPos( el ) {
var pos = -1;
el.focus();
if ( document.selection && document.selection.createRange ) {
var sel = document.selection.createRange();
if ( el.type == "textarea" ) {

var c  = "\001";
var dup = sel.duplicate();
var len = 0;
dup.moveToElementText( el );

sel.text = c;

pos = dup.text.indexOf( c );

sel.moveStart( 'character', -1 );
sel.text = "";
} else if ( el.type == "text" ) {

sel.moveStart ( 'character', -el.value.length );

pos = sel.text.length;
}
} else if ( el.selectionEnd ) {
pos = el.selectionEnd;
}
return pos;
}

function CSSetCaretPos( el, pos ) {
if ( pos > -1 ) {
if ( el.createTextRange ) {
var range = el.createTextRange();
range.collapse( true );
range.moveEnd( 'character', pos );
range.moveStart( 'character', pos );
range.select();
} else if ( el.selectionEnd ) {
el.selectionEnd = pos;
}
}
}


function CSSetSelectText( el, start, end ) {
if ( start > -1 ) {
el.focus();
if ( el.createTextRange ) {
var range = el.createTextRange();
range.collapse( true );
range.moveStart( 'character', start );
range.moveEnd( 'character', end );
range.select();
} else if ( el.selectionEnd ) {
el.selectionStart = start;
el.selectionEnd = end;
}
}
}


function cs_setOpacity( el, o ) {
if ( typeof el == "string" ) el = csget( el );
if ( el ) {
if ( typeof el.style.filter == "undefined" ) {
el.style.opacity = o;                                   
} else {
el.style.filter = "alpha(opacity=" + (o*100) + ")";     
}
}
}


CSUtil.fade_timeouts = {};

function cs_fade( id, dir, sec, callback ) {
var count = 0;
var steps = 5;
var dout = cs_trace_table_init( "Fading: " + id, 4 );
dout += cs_trace_table_header( [ "i", "j", "delay", "opacity" ], "gray" );
CSUtil.fade_timeouts[ id ] = [];

for( var i=0; i<=100; i+=(100/steps) ) {
var j = ( dir == "out" ) ? 100-i : i;
var o = j/100;
var delay = ((sec * 1000 ) / steps) * count;
dout += cs_trace_table_row( [ i, j, delay, o ] );
var to = window.setTimeout("cs_setOpacity('" + id + "'," + o + ")", delay );
CSUtil.fade_timeouts[ id ].push( to );
count++;
}
dout += "</table>";

if ( callback ) {
to = window.setTimeout( callback + "('" + id + "')", sec * 1000 );
CSUtil.fade_timeouts[ id ].push( to );
}
window.setTimeout( "cs_clear_fade_timeouts('" + id + "')", (sec+1) * 1000 );
}

function cs_clear_fade_timeouts( id ) {  
var to = CSUtil.fade_timeouts[ id ];
if ( to ) {
for ( var i=0; i<to.length; i++ ) {
window.clearTimeout( to[i] );
}
CSUtil.fade_timeouts[ id ] = null;
}
}








function cs_callAjax( url, params, callback ) {
var ajax = new cs_ajx.obj(
url,
params,
callback
);
}

var cs_ajx = new Object();
cs_ajx.READY_STATE_UNINITIALIZED = 0;
cs_ajx.READY_STATE_LOADING = 1;
cs_ajx.READY_STATE_LOADED = 2;
cs_ajx.READY_STATE_INTERACTIVE = 3;
cs_ajx.READY_STATE_COMPLETE = 4;

cs_ajx.obj = function( url, params, callback ){
this.xhr = null;
this.callback = callback;
this.makeCall( url, params );
}

cs_ajx.obj.prototype.makeCall = function ( url, params ) {

this.xhr = csxmlhttp_create();

if ( this.xhr && !CSExt.flags.msxml_pending ) {
try {
var that = this;
CSExt.flags.msxml_pending = true;
this.xhr.onreadystatechange = function() {
cs_ajx.obj.onReadyState.call( that );
}
this.xhr.open( "POST", url, true );
this.xhr.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
this.xhr.send( params );
CSExt.flags.msxml_pending = false;
} catch ( e ){
var msg = "";
if ( e.message ) {
msg += e.message;
} else if ( e.description ) {
msg += e.description;
}
this.reportError( msg );
}
}
}

cs_ajx.obj.prototype.reportError = function( msg ) {
if ( CSExt.flags.msxml_show_errs ) {
var sMsg = "Ajax error: " + msg;
cs_trace( sMsg, 0, "red" );
}
}

cs_ajx.obj.onReadyState = function() {
var xhr = this.xhr;
var good = xhr.readyState;
var status = "";
try {
status = xhr.status;
} catch ( e ) {}
if ( good == cs_ajx.READY_STATE_COMPLETE ){
if ( status == 200 || status == 0 ){
this.callback.call( this );
} else {
var errmsg = "readyState: " + this.xhr.readyState  + "<br/>" +
"status: "+ this.xhr.status           + "<br/>" +
"headers: "+ this.xhr.getAllResponseHeaders();
this.reportError( errmsg );
}
}
}

function csajx_getCommandURL( command, args ) {
var ret = "";
var baseURL = null;
var eventID = null;
var trackID = null;

var baseURLField = CSForm.getField( "DFS__SubmitURL" );
if ( baseURLField ) {
baseURL = baseURLField.getValue();
}
var eventIDField = CSForm.getField( "DFS__EventID" );
if ( eventIDField ) {
eventID = eventIDField.getValue();
}
trackID = cs_getQSValue("DFS__TrackerID");

if ( command && baseURL && eventID ) {
ret = baseURL + "?DFS__Action=" + command + "&DFS__EventID=" + eventID + args;
} else if ( command && baseURL && trackID ) {
ret = baseURL + "?DFS__Action=" + command + "&DFS__TrackerID=" + trackID + args;
}

return ret;
}




function cs_show_tabs() {
var out = "";
out += cs_trace_table_init( "Tab Index Report", 2, "navy", "white" ); 
out += cs_trace_table_header( ["element", "tab index"] ); 
var els = document.getElementsByTagName( "*" );
var store = [];
for (var i=0; i<els.length; i++) {
var el = els[i];
if (el.tabIndex && el.tabIndex != -1) {
var elid = el.id;
var tab  = el.tabIndex;
store.push( [ elid, tab ] );
}
}
store.sort( sortByTab );
var doScroll = false;
for (var i=0; i<store.length; i++) {
var cell = store[ i ];
out += cs_trace_table_row( cell, doScroll ); 
}
out += "</table>";
cs_trace( out, 1 );

function sortByTab( m, n ) {
var a = m[1];
var b = n[1];
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
if (a == b) {
return 0;
}
}
}




function cs_show_zindex() {
var out = "";
out += cs_trace_table_init( "ZIndex Report", 2, "navy", "white" ); 
out += cs_trace_table_header( ["element", "zindex"] ); 
var els = document.getElementsByTagName( "*" );
var store = [];
for (var i=0; i<els.length; i++) {
var el = els[i];
var z = parseInt( el.style.zIndex );   
if (z != "" && !isNaN( z )) {
var elid = el.id;
store.push( [ elid, z ] );
}
}
store.sort( sortByZindex );
var doScroll = false;
for (var i=0; i<store.length; i++) {
var cell = store[ i ];
out += cs_trace_table_row( cell, doScroll ); 
}
out += "</table>";
cs_trace( out, 1 );

function sortByZindex( m, n ) {
var a = m[1];
var b = n[1];
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
if (a == b) {
return 0;
}
}
}







function CSClient_Obj() {}
CSClient_Obj.prototype.getObjectType = function() { return "CSClient"; }

CSClient_Obj.prototype.alert = function( msg, btns ) {
var choice = -1;
if (btns > 0) {
var rc = confirm( msg ); 
if (rc) {
choice = 1;
} else {
choice = 0;
}
} else {
alert( msg );
choice = 1;
}

return choice;
}

CSClient_Obj.prototype.prompt = function( msg, defval ) { return prompt( msg, defval ); }
CSClient_Obj.prototype.getAgent = function() { return navigator.userAgent.toLowerCase(); }
CSClient_Obj.prototype.getLanguageCode = function() {
if (CSExt.getFldVal("DFS__LanguageCode") != "") {
return CSExt.getFldVal("DFS__LanguageCode");
} else {
var htmlObj = document.getElementsByTagName('HTML');
if (htmlObj.length > 0)
return htmlObj[0].lang;
}
}
CSClient_Obj.prototype.showPage = function( pg ) { cs_ShowPage(pg); }
CSClient_Obj.prototype.zoom = function( percent ) { if (percent<80 || percent>120) return; cs_ZoomPage(percent); }
CSClient_Obj.prototype.setView = function( vt ) { cs_setView(vt); }

CSClient_Obj.prototype.getPageNumber = function( elmt ) {
if (document.toolform.DFS__ctrlSetView.value == CS_PAGED_MODE) {
return document.toolform.DFS__ctrlPgFlipTop.value;
} else {


var el = null;
if (elmt) {
el = (elmt) ? elmt : null;
var evt = (window.event) ? window.event : "";
if (!el) el = (evt.srcElement) ? evt.srcElement : evt.target;
} else if (CSEvent && CSEvent.getTarget() != null) {
var fld = CSEvent.getTarget();
el = fld.hf;
}
var ret = 0;
var elId = "";
if (el) {
while ( el.parentNode ) {
el = el.parentNode;
if (typeof el.id != "undefined") {
elId = el.id;
}
if (el.id != null && el.id != "undefined" && el.tagName == "DIV" && elId.indexOf("DFS__pagediv") != -1) {
break;
}
}
var endPos = elId.indexOf("_dshim");
if ( endPos != -1 ) {

elId = elId.substring( 0, endPos );
}
ret = parseInt( elId.replace(/DFS__pagediv/i,"") );
if (!isNaN(ret))
return ret;
} else {
return ret;
}
}
}

function CSHTMLClient_Obj() {
this.toptb = [
{nm:"PageBack",div:"DFS__ctrlPgDnTop"},
{nm:"PagePick",div:"DFS__ctrlPgFlipTop"},
{nm:"PageFwd",div:"DFS__ctrlPgUpTop"},
{nm:"Zoom",div:"DFS__ctrlZoom"},
{nm:"View",div:"DFS__ctrlSetView"},
{nm:"Online",div:"DFS__workoffline"},
{nm:"Offline",div:"DFS__reconnect"}];
this.bottb = [
{nm:"PageBack",div:"DFS__ctrlPgDnBot"},
{nm:"PagePick",div:"DFS__ctrlPgFlipBot"},
{nm:"PageFwd",div:"DFS__ctrlPgUpBot"}];
}
CSHTMLClient_Obj.prototype.getObjectType = function() { return "CSHTMLClient"; }

CSHTMLClient_Obj.prototype.getNumberOfControls = function( tb ) {
if(tb==0) return this.toptb.length;
if(tb==1) return this.bottb.length;
return 0;
}
CSHTMLClient_Obj.prototype.getControlName = function( tb, n ) {
var rc = "";
try {
if(tb==0) rc = this.toptb[n].nm;
if(tb==1) rc = this.bottb[n].nm;
} catch(e) {}
return rc;
}
CSHTMLClient_Obj.prototype.setToolbarHidden = function( tb, hide ) {
var hstr = "block";
if (hide || typeof(hide)=="undefined") {
hstr = "none";
}
var div = null;
if (tb==0) {
div = document.getElementById("DFS__toolbarTop");
}
if (tb==1) {
div = document.getElementById("DFS__toolbarBot");
}
if (div!=null) {
div.style.display = hstr;
}
}
CSHTMLClient_Obj.prototype.setControlHidden = function( tb, cid, hide ) {
var hstr = "block";
if (hide || typeof(hide)=="undefined") {
hstr = "none";
}
var tbarr;
if (tb==0) tbarr = this.toptb;
if (tb==1) tbarr = this.bottb;
var ctrl = null;
if (typeof cid == "number") {
try {
ctrl = document.getElementById(tbarr[cid].div);
} catch(e) {}
} else {
try {
for(var idx=0; idx<tbarr.length; idx++) {
if (tbarr[idx].nm==cid) {
ctrl = document.getElementById(tbarr[idx].div);
break;
}
}
} catch(e) {}
}

if (ctrl!=null) {
ctrl.style.display = hstr;
}
}


function CSForm_Obj() {
}
CSForm_Obj.prototype.getObjectType = function() { return "CSForm"; }

CSForm_Obj.prototype.submit = function( uri ) {
if (uri) document.htmlform.action = uri;
var res = csformsubmit();
if (res) {
cs_prepare_for_submit();
res = document.htmlform.submit();
}
return res;
}

CSForm_Obj.prototype.reset = function() { cs_PerformReset(); }
CSForm_Obj.prototype.getLanguageCode = function() { return document.body.parentNode.lang; }

CSForm_Obj.prototype.setFocus = function( fname ) {
var fldobj = new CSField_Obj(CSExt.getFld(fname));
var elt = CSExt.getFld(fname);

try {

var onpage = fldobj.cs_getPageNumber();
if (onpage!=0 && onpage != CSExt.VisiblePage) {
cs_ShowPage(onpage);
}

var fmt = CSExt.f[fname].fmt;
if (fmt.uictrl) {
return CSExt.getFld(fmt.uictrl).focus();
} else if (elt[0] && elt[0].type == "radio") {
return elt[0].focus();
} else if (fmt.htype == "InkPicture") {

CSInk.clearMouseoverFocus = true;

CSInk.inkSetFocus( fname );
} else {
return elt.focus(); 
}
} catch(e) {}
}
CSForm_Obj.prototype.getLJOMVersion = function() { return "2.0"; }
CSForm_Obj.prototype.getPubType = function() { return "HTML"; }
CSForm_Obj.prototype.getTitle = function() { return CSExt.ftitle; }
CSForm_Obj.prototype.getID = function() {
return CSExt.getFldVal("DFS__FormGUID");
}
CSForm_Obj.prototype.getLocation = function() { return document.location.href; }
CSForm_Obj.prototype.getNumberOfFields = function() {
return CSExt.UserFieldList.length;
}

CSForm_Obj.prototype.getField = function( fref ) {
var fld;

var tbl = CSExt.tableflag;
if (tbl) {

fld = CSExt.getFld("DTB__" + tbl.table + "_" + tbl.row + "_" + fref);
}
if (!fld) {

if (typeof fref == "number") {
fld = CSExt.getFld(CSExt.UserFieldList[ fref ]);
} else {
fld = CSExt.getFld(fref);
}
}
if (fld)
return new CSField_Obj( fld );
else
return null;
}

CSForm_Obj.prototype.getResponseURL = function() {
return CSExt.getFldVal("DFS__CustResp");
}

CSForm_Obj.prototype.setResponseURL = function( uri ) {
CSExt.setFldVal("DFS__CustResp", uri);
}

CSForm_Obj.prototype.getFinalized = function() {
var isFinal = false;
var fldval = CSExt.getFldVal("DFS__FinalCopy");
if (fldval == "1") {
isFinal = true;
}
return isFinal;
}

CSForm_Obj.prototype.isOffline = function() {
var rc = false;
if (CSExt.getFldVal("LF__Offline") == "1") {
rc = true;
}
return rc;
}

CSForm_Obj.prototype.getNumberOfTables = function() {
return CSExt.tables.length;
}

CSForm_Obj.prototype.getTable = function( tref ) {
var tobj;
if (typeof tref == "number") {
tobj = CSExt.tables[ tref ];
} else {
for(var idx=0; idx<CSExt.tables.length; idx++) {
if (CSExt.tables[idx].tname == tref) {
tobj = CSExt.tables[idx];
break;
}
}
}
if (tobj) {
return new CSTable_Obj(tobj);
} else {
return null;
}
}

CSForm_Obj.prototype.getBuildNumber = function() { return "$LODBuild: 6018$"; }

function CSTable_Obj( tobj ) {
this.tbo = tobj;
}
CSTable_Obj.prototype.getObjectType = function() { return "CSTable"; }

CSTable_Obj.prototype.getNumberOfRows = function() {
return this.tbo.rows;
}

CSTable_Obj.prototype.getNumberOfFieldsPerRow = function() {
return this.tbo.fnames.length;
}

CSTable_Obj.prototype.getAt = function( rownum, fref ) {
var fld = null;
if (typeof fref == "number") {
fld = CSForm.getField("DTB__" + this.tbo.tname + "_" + rownum + "_" + this.tbo.fnames[fref]);
} else {
for(var idx=0; idx<this.tbo.fnames.length; idx++) {
var fieldref = fref;





if (this.tbo.fnames[idx] == fieldref) {
fld = CSForm.getField("DTB__" + this.tbo.tname + "_" + rownum + "_" + this.tbo.fnames[idx]);
break;
}
}
}
return fld;
}

CSTable_Obj.prototype.getName = function() {
return this.tbo.tname;
}

function CSField_Obj( htmlfield ) {


if (htmlfield.type && htmlfield.type=="radio") {
this.hf = document.htmlform[htmlfield.name]; 
} else if (htmlfield.id && htmlfield.id.indexOf("INK__") != -1) {
this.hf = document.htmlform[htmlfield.id.replace(/INK__/,"")];
} else if (htmlfield.id && htmlfield.id.indexOf("SIG__") != -1) {
this.hf = document.htmlform[htmlfield.id.replace(/SIG__/,"")];
} else if (htmlfield.id && htmlfield.id.match( "BC.__" ) != null) {
this.hf = document.htmlform[htmlfield.id.replace(/BC.__(.*)_(print|screen)/, "$1")];
} else {
this.hf = htmlfield;
}

if (this.hf[0] && this.hf[0].name) {
this.name = this.hf[0].name;
} else {
this.name = this.hf.name;
}
}

CSField_Obj.prototype.getObjectType = function() { return "CSField"; }

CSField_Obj.prototype.setFocus = function() {
CSForm.setFocus(this.getName());
}
CSField_Obj.prototype.getName = function() {
return this.name;
}

CSField_Obj.prototype.getFmt = function() {
var fmt = null;
var cached = CSExt.f[this.name];
if ( cached ) {
fmt = cached.fmt;
}
return fmt;
}

CSField_Obj.prototype.getDescription = function() {
return this.getFmt().desc;
}


CSField_Obj.prototype.getTabIndex = function() {
var tabIndex = 0;
if (this.getType() == "Radio") {
tabIndex = this.hf[0].tabIndex;
} else if (this.getType() == "Signature") {
var sigBtn = CSExt.f[ "SIG__" + this.hf.id ].fld;
tabIndex = sigBtn.tabIndex;
} else {
tabIndex = this.hf.tabIndex;
}
return tabIndex;
}

CSField_Obj.prototype.cs_isEmpty = function() {
var rc;
if (this.getType()=="InkPicture") {
var fmt = this.getFmt();
rc = this.getValue().length < fmt.thresh;
} else {
rc = this.getValue().length == 0
}
return rc;
}

CSField_Obj.prototype.getInitialValue = function() {
return this.getFmt().initval;
}

CSField_Obj.prototype.getValue = function() {
if (this.hf.type=="select-multiple") {

var rv = "";
for(var idx=0; idx< this.hf.options.length; idx++) {
if (this.hf.options[idx].selected) {
if (rv.length>0) rv += String.fromCharCode(9);
rv += this.hf.options[idx].value;
}
}
return rv;
} else if (this.hf[0] && this.hf[0].type && this.hf[0].type=="radio") {
for(var idx=0; idx<this.hf.length; idx++) {
if (this.hf[idx].checked) return this.hf[idx].value;
}
return "";
} else if (this.hf.type=="checkbox") {
if (this.hf.checked) return 1; else return 0;
} else if (this.getType()=="InkPicture") {
return this.hf.value;
} else {
return this.hf.value;
}
}
CSField_Obj.prototype.setValue = function( str, suppressOnChange ) {
var compare = this.getValue();
if (this.hf.options) {
var setv = false;
for( var idx=0; idx < this.hf.options.length; idx++) {
if (this.hf.options[idx].value==str) {
this.hf.options[idx].selected = true;
setv = true;
} else {
this.hf.options[idx].selected = false;
}
}
if ( !setv ) {


this.hf.options[0].selected = true;
}
if ( this.getType()=="Combo" && !setv) {

this.getChoices().insertAt( 0, str, str );
this.hf.options[0].selected = true;
}

} else if (this.hf[0] && this.hf[0].type && this.hf[0].type=="radio") {
for(var idx=0; idx<this.hf.length; idx++) {
this.hf[idx].checked = (this.hf[idx].value == str);
}
} else if (this.hf.type=="checkbox") {
if (str==1 || str=="1") this.hf.checked = true; else this.hf.checked = false;
} else if (this.getType()=="InkPicture") {
var ink = CSInk.getInkPicture( this.getName() );
ink.setSignature(str);
} else if (this.getType() == "Signature") {

return;
} else {
this.hf.value = str;
}
if (this.getValue() != compare && !suppressOnChange) {
CS_FireOnChange( this.hf );
if (this.hf.onchange) {
this.hf.onchange();
}
this.hf.cmpvalue = this.getValue(); 
}
}
CSField_Obj.prototype.getValues = function() {
var ra = new Array();
if (this.hf.type=="select-multiple") {
var ofs = 0;
for(var idx=0; idx< this.hf.options.length; idx++) {
if (this.hf.options[idx].selected) ra[ofs++] = this.hf.options[idx].value;
}
} else {
ra[0] = this.getValue();
}
return ra;
}
CSField_Obj.prototype.setValues = function( array_of_values, suppressOnChange ) {
var compare = this.getValue();
var found = false;
if (this.hf.type=="select-multiple") {
var rv = 0;
if (array_of_values.length==0) return rv;
for(var idx=0; idx<this.hf.options.length ; idx++) {
found = false;
for(var jdx=0; jdx< array_of_values.length; jdx++) {
if (this.hf.options[idx].value == array_of_values[jdx]) {
found = true;
}
this.hf.options[idx].selected = found;
}
}
} else {
this.setValue( array_of_values[0], suppressOnChange );
compare = this.getValue();
}
if (this.getValue() != compare && !suppressOnChange) {
CS_FireOnChange( this.hf );
this.hf.cmpvalue = this.getValue(); 
}
}

CSField_Obj.prototype.getNumericValue = function() {
return CSCnv.n( this.getName() ).value;
}

CSField_Obj.prototype.setNumericValue = function( n ) {
var f = this.getFmt();
if (typeof( n ) != "number" || !f || f.fmt != "nmbr")
return false;
this.setValue( CSCnv.f( this.getName(), CSVal.n( n ) ).value );
return true;
}

CSField_Obj.prototype.getChoices = function() {
if (this.getType()=="List" || this.getType()=="Drop" || this.getType()=="Combo")
return new CSChoices_Obj(this.hf);
else
return null;
}
CSField_Obj.prototype.getType = function() {

var fmt = this.getFmt();
if (!fmt) {
return "undefined";
}

if (fmt.htype) {
return fmt.htype;
}

var t = fmt.listboxType;
if (t) {
if (t=="combo") return "Combo";
if (t=="droplist") return "Drop";
return "List";
}

return "(" + this.hf.type + ")" ;
}
CSField_Obj.prototype.isReadOnly = function() {
if (this.getType() == "Barcode") {
return true;
}
var lc = 0;
for (var lb in this.getFmt().lockedBy) {
lc++
}
return lc > 0;
}


CSField_Obj.prototype.setReadOnly = function( b ) {
if (this.getType() != "Barcode") {

this.cs_setLock("CSField.setReadOnly", b);
}
}


CSField_Obj.prototype.cs_setReadOnly = function( b ) {
if (this.getType()=="InkPicture") {
var ink = CSInk.getInkPicture( this.getName() );
ink.setEnabled(!b);

} else if (this.hf[0] && this.hf[0].type && this.hf[0].type == "radio") {
for( var idx=0; idx < this.hf.length; idx++) {
this.hf[idx].readOnly = b;
this.hf[idx].disabled = b;
}
} else {
this.hf.readOnly = b;
if (this.getType() != "Text") { 
this.hf.disabled = b;
}
this.hf.blur();
}
}


CSField_Obj.prototype.cs_setLock = function( locking_sig, locking ) {  

var fmt = this.getFmt();
if (!fmt) return;

if (!fmt.lockedBy)
fmt.lockedBy = {};

if (locking) {

fmt.lockedBy[locking_sig] = {};
this.cs_setReadOnly( true );
} else {

if (fmt.lockedBy[locking_sig]) {

delete fmt.lockedBy[locking_sig];
}

var cnt = 0;
for (var prop in fmt.lockedBy)
cnt++;
if (cnt == 0)
this.cs_setReadOnly( false );
}
}
CSField_Obj.prototype.isRequired = function() {
return this.getFmt().required;
}
CSField_Obj.prototype.setRequired = function( b ) {
if ( this.getType() != "Button" ) {
this.getFmt().required = b;
}
}
CSField_Obj.prototype.isHidden = function() {
var hideme = this.hf;
if (this.getType() == "Signature") {
var tmp = csget( "SIG__" + this.getName() );
if (tmp) {
hideme = tmp;
}
} else if (this.getType() == "InkPicture") {
var tmp = csget( "INK__" + this.getName() );
if (tmp) {
hideme = tmp;
}
} else if (this.getType() == "Barcode") {
var tmp = CSBarcode.barcode[this.getName()].getWrapper();
if (tmp) {
hideme = tmp;
}
}
if (hideme.type == "hidden")
return true;

if (hideme[0] && hideme[0].type && hideme[0].type == "radio")
return hideme[0].style.visibility == "hidden";
else
return hideme.style.visibility == "hidden";
}
CSField_Obj.prototype.setHidden = function( b ) {
var hideme = this.hf;
var shimdiv = csget("DFS__shimdiv" + this.cs_getPageNumber());
var wrapperdiv;

if (this.getType() == "Signature") {
var tmp = csget( "SIG__" + this.getName() );
if (tmp) {
hideme = tmp;
}
} else if (this.getType() == "InkPicture") {
var tmp = csget( "INK__" + this.getName() );
if (tmp) {
hideme = tmp;
wrapperdiv = hideme.parentNode;
}
} else if (this.getType() == "Barcode") {
var tmp = CSBarcode.barcode[this.getName()].getWrapper();
if (tmp) {
hideme = tmp;
}
}
if (hideme.type == "hidden")
return; 

var setting = "block";
var settingV = "visible";
if (b) {
setting = "none";
settingV = "hidden";
}


var lblstohide = [this.getName()];
if (hideme[0] && hideme[0].type && hideme[0].type == "radio") {

for (var idx=0; idx < hideme.length; idx++) {
hideme[idx].style.display = setting;
hideme[idx].style.visibility = settingV;
lblstohide[lblstohide.length] = hideme[idx].id;
}
} else {

hideme.style.display = setting;
hideme.style.visibility = settingV; 
}

var lbls = shimdiv.getElementsByTagName("label");
for (var idx=0; idx < lbls.length; idx++) {
for(var jdx=0; jdx < lblstohide.length; jdx++) {
if (lbls[idx].htmlFor == lblstohide[jdx]) {
lbls[idx].style.display = setting;

var lbldiv = document.getElementById("textWrapper_" + lbls[idx].id);
if (lbldiv) {
lbldiv.style.display = setting;
}
}
}
}


if ( CSExt.fieldLabels ) {
var lbl = CSExt.fieldLabels[ hideme.id ];
if ( lbl ) {
lbl.style.display = setting;
var lbldiv = document.getElementById("textWrapper_" + lbl.id);
if (lbldiv) {
lbldiv.style.display = setting;
}
}
}


var lbldiv = document.getElementById("lbldivfor_" + this.getName());
if (lbldiv) {
lbldiv.style.display = setting;
}


var rect = document.getElementById(hideme.id + "_rect");
if (rect) {
var h = rect.offsetHeight;
rect.style.visibility = settingV;
if (rect.style.height == "") rect.style.height = h; 
}

if (this.getType() == "InkPicture" || this.getType() == "Barcode") {
if (wrapperdiv) {
wrapperdiv.style.display = setting;
wrapperdiv.style.visibility = settingV; 
if (this.getType() == "InkPicture" && CSUtil.isNS && b) {  
var img = csget("IMG__" + this.getName());
with (img.style) {
position = "absolute";
top = wrapperdiv.offsetTop;
}
}
}
}
}

CSField_Obj.prototype.getTextColor = function() {
if (this.getType() == "InkPicture") {
var ink = CSInk.getInkPicture( this.getName() );
var tc = ink.getInkColor();

return tc;
} else if (this.getType() == "Signature") {
var sigobj = document.getElementById("SIG__" + this.getName());
var tc = cs_format_rgb(sigobj.style.color);
return tc;
} else if (this.getType() == "Barcode") {
var bco = CSBarcode.barcode[ this.getName() ];
return bco.getBarColor();
} else if (this.hf[0] && this.hf[0].type && this.hf[0].type == "radio") {
return cs_format_rgb(this.hf[0].style.color);
} else {
return cs_format_rgb(this.hf.style.color);
}
}
CSField_Obj.prototype.setTextColor = function( rgb ) {
if (this.getType() == "Barcode") {
return false;
}
var sv = cs_assemble_color_string("", rgb);
if ( sv != "" ) sv = "#" + sv;
if (this.getType() == "InkPicture") {
var ink = CSInk.getInkPicture( this.getName() );
ink.setInkColor(sv);

}
try {
if (this.hf[0] && this.hf[0].type && this.hf[0].type == "radio") {
for (var idx=0; idx < this.hf.length; idx++) {
this.hf[idx].style.color = sv;
}
} else if (this.getType() == "Signature") {
var sigobj = document.getElementById("SIG__" + this.getName());
sigobj.style.color = sv;
this.hf.style.color = sv;
} else {

this.hf.style.color = sv;


if ( this.getType() ==  "Combo" ) {
cbo = document.getElementById("DFS__" + this.getName());
if (cbo) {
cbo.style.color = sv;
}
}
}
} catch(e2) {}
}
CSField_Obj.prototype.getFillColor = function() {
if (this.getType() == "InkPicture") {
var ink = CSInk.getInkPicture( this.getName() );
var fc = ink.getBackgroundColor();

return fc;
} else if (this.hf[0] && this.hf[0].type && this.hf[0].type == "radio") {
return cs_format_rgb(this.hf[0].style.backgroundColor);
} else if (this.getType() == "Signature") {
return cs_format_rgb(document.getElementById("SIG__" + this.getName()).style.backgroundColor);
} else if (this.getType() == "Barcode") {
var bco = CSBarcode.barcode[ this.getName() ];
return bco.getFillColor();
} else
return cs_format_rgb(this.hf.style.backgroundColor);
}
CSField_Obj.prototype.setFillColor = function( rgb ) {
if (this.getType() == "Barcode") {
return false;
}

var sv = cs_assemble_color_string("", rgb);
if (this.getType() == "InkPicture") {
var ink = CSInk.getInkPicture( this.getName() );
ink.setBackgroundColor(sv);

}
if (sv != "" && sv.indexOf("#") == -1 && sv != "transparent") sv = "#" + sv;
try {
if (this.hf[0] && this.hf[0].type && this.hf[0].type == "radio") {
for (var idx=0; idx < this.hf.length; idx++) {
this.hf[idx].style.backgroundColor = sv;
}
} else if (this.getType() == "Signature") {

document.getElementById("SIG__" + this.getName()).style.backgroundColor = sv;
} else {

this.hf.style.backgroundColor = sv;


var rect = document.getElementById(this.getName() + "_rect");
if ( rect ) {
rect.style.backgroundColor = sv;
}


if ( this.getType() ==  "Combo" ) {
cbo = document.getElementById("DFS__" + this.getName());
if (cbo) {
cbo.style.backgroundColor = sv;
}
}
}
} catch(e2) {}
}
CSField_Obj.prototype.isPassword = function() {
return this.getFmt().password;
}
CSField_Obj.prototype.isMultiline = function() {
return this.getFmt().multiline;
}
CSField_Obj.prototype.getMaxLength = function() {
var ml = 0;
var fmt = this.getFmt();
if ( typeof fmt.fmttxt != "undefined" && typeof fmt.fmttxt.mxcc != "undefined" ) {
ml = fmt.fmttxt.mxcc;
}
if (!ml) return -1;
if (ml < 0 || ml >= 2147483647) return 0;
return ml;
}

CSField_Obj.prototype.getDefaultDataType = function() {
var fmt = this.getFmt();
if (fmt.fmttxt)  return "String";
if (fmt.fmtnmbr) return "Numeric";
if (fmt.fmtdt)   return "Date";
if (fmt.fmttm)   return "Date"; 
if (fmt.fmttmpl) return "String";
if (this.getType()=="InkPicture") return "Binary";
if (this.getType()=="Signature") return "String";
if (this.getType()=="Barcode") return "String";
return "Unknown";
}

CSField_Obj.prototype.cs_setClass = function(cn) {
this.hf.className = cn;
}

CSField_Obj.prototype.cs_getPageNumber = function() {
rc = 0;
try {
var elt = null;
if (this.getType() == "Radio") {
elt = this.hf[0];
} else {
elt = this.hf;
}
while((elt.id == null) || (elt.id.indexOf("DFS__pagediv") == -1)) {
elt = elt.parentNode;
}
var elId = elt.id;
var endPos = elId.indexOf("_dshim");
if ( endPos != -1 ) {

elId = elId.substring( 0, endPos );
}
rc = parseInt( elId.replace(/DFS__pagediv/i,"") );
} catch(e) {}
return rc;
}

CSField_Obj.prototype.getContainer = function() {
var ctnr = CSForm;
var fmt = this.getFmt();
if ( fmt && fmt.table ) {
ctnr = CSForm.getTable( fmt.table );
}
return ctnr;
}

CSField_Obj.prototype.getRow = function() {
var row = -1;
var fmt = this.getFmt();
if (typeof fmt.row != "undefined") {
row = fmt.row;
}
return row;
}

function CSChoices_Obj( htmlchoice ) {
this.hc = htmlchoice;
}
CSChoices_Obj.prototype.getObjectType = function() { return "CSChoices"; }

CSChoices_Obj.prototype.getCount = function() {
var count = this.hc.options.length;


for( var idx = 0; idx < count; idx++ ) {
if ( this.hc.options[idx].text == CS_OTHER_COMBO_STR ) {
count--;
}
}

return count;
}
CSChoices_Obj.prototype.getAt = function( num, bDispVal ) {
if (bDispVal) {
return this.hc.options[num].text;
} else {
return this.hc.options[num].value;
}
}
CSChoices_Obj.prototype.cs_getAll = function() {
var rd = {};
for( var idx = 0; idx < this.getCount(); idx++ ) {
rd[this.hc.options[idx].text] = this.hc.options[idx].value;
}
return rd;
}
CSChoices_Obj.prototype.insertAt = function( num, expVal, dispVal ) {
var success = 0;
var newopt  = document.createElement( "option" );
var text    = dispVal;

if (!text) {
text = expVal;
}

newopt.value = expVal;

if (this.hc.options.add) { 
if (num == -1) {
this.hc.options.add( newopt, this.hc.options.length );
} else {
this.hc.options.add( newopt, num );
}
} else if (this.hc.add) { 
if (num == -1) {
this.hc.add( newopt, null );
} else {
this.hc.add( newopt, this.hc.options[num] );
}
} else {
success = 1;
}

if (success == 0) {
newopt.innerHTML = text.replace( /\s/g, "&nbsp;" );
}

return success;
}
CSChoices_Obj.prototype.deleteAt = function( num ) {
if (this.hc.remove) { 
this.hc.remove(num);
return 0;
}
if (this.hc.options.remove) { 
this.hc.remove(num); 
return 0;
}
return 1;
}
CSChoices_Obj.prototype.getSelections = function() {
var ra = new Array();
var ofs = 0;
for(var idx=0; idx<this.hc.options.length; idx++) {
if (this.hc.options[idx].selected)
ra[ofs++] = idx;
}
return ra;
}
CSChoices_Obj.prototype.setSelections = function( arr ) {
for (var ofs=0; ofs<this.hc.options.length; ofs++) {
this.hc.options[ofs].selected = false;
}
if(arr.length > 1){
for (var idx=0; idx<arr.length; idx++) {
this.hc.options[arr[idx]].selected = true;
}
}else { 
this.hc.selectedIndex = arr[0];
}
}
CSChoices_Obj.prototype.choiceExists = function( expVal, dispVal ) {
var exists = false;
for( var idx=0; idx<this.getCount(); idx++ ) {
var curEV = this.getAt( idx, false );
var curDV = this.getAt( idx, true );
if ( curEV==expVal && curDV==dispVal ) {
exists = true;
break;
}
}
return exists;
}

function cs_assemble_color_string( prefix, str ) {
if (str.search(/[a-zA-Z]/g) == 0 && (isNaN(parseInt(str,16)) || parseInt(str,16)<256) )
return str;
else
return prefix + cs_format_rgb(str);
}

function cs_rgb_to_gbr(str) {

return str.substr(4,2) + str.substr(2,2) + str.substr(0,2);
}

function cs_format_rgb( str ) {


if (str.charAt(0) == "#") return str.substr(1).toLowerCase();
if (str.indexOf("rgb")==0) {
var open_pr=str.indexOf("(");
var comma1=str.indexOf(",");
var comma2=str.lastIndexOf(",");
var close_pr=str.indexOf(")");
var result = CS_toHex(str.substr(open_pr+1, comma1-open_pr)) +
CS_toHex(str.substr(comma1+1, comma2-comma1)) +
CS_toHex(str.substr(comma2+1, close_pr-comma2));
return result;
}
if (str == "") return str;


if (str.length < 6) {
for(var idx=str.length; idx < 6; idx++) {
str = "0" + str;
}
}
return str;
}

function CS_toHex(byt) {
if (typeof byt == "string") byt = parseInt(byt);
var hexChars = "0123456789abcdef";
if (byt > 255) return null;
var i = byt % 16;
var j = (byt-i)/16;
return hexChars.charAt(j) + hexChars.charAt(i);
}



CSExt = {
Initialize: {},
Form_OnLoad_bEP: {},
Form_OnLoad_aEP: {},
UnInitialize: {},
Form_OnSubmit_bEP: {},
Form_OnSubmit_aEP: {},
OnFocus_bEP: {},
OnFocus_aEP: {},
OnChange_bEP: {},
OnChange_aEP: {},
OnBlur_bEP: {},
OnBlur_aEP: {},
OnButtonClick_bEP: {},
OnButtonClick_aEP: {},
OnMouseOver_bEP: {},
OnMouseOver_aEP: {},
OnMouseOut_bEP: {},
OnMouseOut_aEP: {},
OnKeyPress: {}, 
OnMouseOver: {},
CheckOnline: {},
focusCounter: {},
preventedDefault: false,
flags: { msxml_warn: false, msxml_pending: false, msxml_show_errs: false, useStringSerializer: true },
ProfileInfo: "",
RedirectURL: "",
RecalcCount: 0,
RecalcEnable: 1,
ValidateCount: 0,
FormatCount: 0,
VisiblePage: 1,
trace: { length: 35, current:0, cnt:0, strs: [], clrs: [] }
};

CSClient = new CSClient_Obj();
CSHTMLClient = new CSHTMLClient_Obj();
CSForm = new CSForm_Obj();

CSExt.CSClient = CSClient;
CSExt.CSForm = CSForm;

CSExt.getFmt = function( fname ) {
return CSExt.f[fname].fmt;
}

CSExt.setFmt = function( fname, fmt ) {
CSExt.f[fname].fmt = fmt;
}


CSExt.getFld = function( fname ) {
var fld;
if (CSExt.f[fname])
fld = CSExt.f[fname].fld;
if (!fld) {


fld = document.htmlform[fname];
}
if (!fld) {


fld = document.getElementById(fname);
if (fld && fld.tagName == "button") {
cs_fldi(fld);
}
}
cs_assert(fld, "getFld", fname);
return fld;
}

CSExt.getFldVal = function( fname ) {
var rv = "";
var fld = CSExt.getFld(fname);
if (fld) {
rv =  fld.value;
}
return rv;
}

CSExt.setFldVal = function( fname, val ) {
var fld = CSExt.getFld(fname);
if (fld) {
fld.value = val;
}
}









CSExt.setElVal = function( els, vals_ary ) {
if ( els[0] && els[0].type == "radio" ) {
for ( var i=0; i<els.length; i++ ) {
if ( vals_ary[0] == els[i].value ) {
els[i].checked = true;
}
}
} else if ( els.type == "select-multiple" ) {
for ( var i=0; i<els.length; i++ ) {
found = false;
for ( var j=0; j<vals_ary.length; j++ ) {
if (els.options[i].value == vals_ary[j]) {
found = true;
}
els.options[i].selected = found;
}
}
} else if ( els.type == "checkbox" ) {
els.checked = (els.value == vals_ary[0]);
} else {
els.value = vals_ary[0];
}
}

CSExt.fldExists = function( fname ) {
var rv = false;
if (CSExt.f[fname]) {
rv = true;
}
return rv;
}

CSExt.allFieldNames = function() {
var arr= [];
var idx = 0
for (var f in CSExt.f) {
arr[idx++] = f;
}

return arr;
}

function cs_foreach_initval( fld, fmt ) {



if (fmt.initval && fmt.initval.indexOf( "=" ) == 0) {
fmt.initval = fld.value;
}
}

function cs_foreach_lock(fld, fmt) {
if (fld.readOnly == true || fld.disabled || fmt.readOnly) {
var fo = new CSField_Obj(fld);
fo.cs_setLock("CSField.setReadOnly", true);
}
}

function cs_foreach_finalcpy(fld, doFC, doRev) {
if (!doFC && !doRev) return;

var csfld = new CSField_Obj( fld );
var fldname = csfld.getName();

if (doFC && fldname.indexOf("DFS__Page") < 0) {
csfld.cs_setLock( "DFS__FinalCopy", true );




fldContainer = csfld.getContainer();
if (fldContainer.getObjectType() == "CSTable") {
fldContainer.cs_setTableRowControlCode( 3 );
}
}

if (doRev && fldname.indexOf("DFS__Page") < 0 && fldname.indexOf("DFS__GO") < 0 && fldname.indexOf("DFS__ActionList") < 0)
csfld.cs_setLock("DFS__ReviewOnly", true);
}

function cs_foreach_addcalc(fn) {
CSCalc.fieldChanged(fn);
}

function cs_foreach_inithid(fld, fmt) {
if (fmt.inithid) {
var csfo = new CSField_Obj(fld);
csfo.setHidden(true);
}
}

function csformload() {
CSExt.DFS__DHTML_OnLoad = true;
CSExt.RecalcEnable = 0;
cs_profile("csformload begins");

csinit();   


CSExt.dispatchEvent( "Initialize", null );
cs_profile("dispatchEvent done");
var proceed = true;


var actionFld = CSForm.getField( "DFS__ActionList" );
var goFld     = CSForm.getField( "DFS__GO" );
if (actionFld && goFld) {
var actionList = actionFld.getChoices();
if ((actionList.getCount() == 1) && (actionList.getAt( 0, false ).length == 0)) {
goFld.setReadOnly( true );
actionFld.setReadOnly( true );
}
cs_profile("action button done");
}


var smsg = CSExt.getFldVal("DFS__StatusMsg");
if (smsg != "") {
alert( smsg );
CSExt.setFldVal("DFS__StatusMsg","");
}
cs_profile("status msg done");

proceed = CSExt.dispatchEvent( "Form_OnLoad_bEP", document.htmlform );
cs_profile("dispatchEventB done");


CSCalc.calculateValues( null );
CSCalc.calculateAttributes( null );
CSCalc.clearFieldChanged();
CSExt.RecalcCount = 1;
CSExt.RecalcEnable = 1;
cs_profile("initial recalc done");

cs_setInitialFocus();
cs_profile("initial setFocus done");


CSExt.DFS__DHTML_OnLoad = false;
if (this.CSForm_OnLoad && proceed) {
CSEvent.setTarget( new CSForm_Obj() );
CSForm_OnLoad();
}
cs_profile("EntryPoint done");

CSExt.dispatchEvent( "Form_OnLoad_aEP", document.htmlform );
cs_profile("dispatchEventA done");
















}

function csformunload() {
CSExt.dispatchEvent( "UnInitialize", null );
}

function csformsubmit() {
var doSubmit = true;  

doSubmit = CSExt.dispatchEvent( "Form_OnSubmit_bEP", document.htmlform );


if (this.CSForm_OnSubmit && doSubmit) {
CSEvent.setTarget( new CSForm_Obj() );
doSubmit = CSForm_OnSubmit();
}

if (doSubmit) doSubmit = CSExt.dispatchEvent( "Form_OnSubmit_aEP", document.htmlform );

return doSubmit;
}

function cs_prepare_for_submit() {

document.getElementById( "DFS__container").style.display = "block";
document.getElementById( "DFS__container").style.visibility = "hidden";


for(var fn in CSExt.f) {
CSExt.getFld(fn).disabled = false;
}
}

function cs_PerformReset() {
if (CSExt.getFldVal("DFS__EventID") == "") {

document.htmlform.reset();
cs_prepare_after_reset();
} else {


var serverCommand = "RouteResetForm";
var FPNodeIDField = cs_getQSValue("DFS__FormPacketNodeID");    
var FPNodeID = (FPNodeIDField != "") ? FPNodeIDField : null;   

var FPNodeIDT3 = (document.htmlform.DFS__T3) ? document.htmlform.DFS__T3.value : "";
if (!FPNodeID) {
FPNodeID = FPNodeIDT3;
}
if (FPNodeID) {
serverCommand = "ResetFormPacketNode";
}

CSExt.setFldVal("DFS__Action", serverCommand);

var ison = CSExt.dispatchEvent("CheckOnline", null);

if (ison) {
cs_prepare_for_submit();
document.htmlform.submit();
} else {
alert( CS_OFFLINE_ERR_OFFLINE );
}
}
}

function cs_prepare_after_reset() {















}


function cs_profile( msg ) {
var timestamp = (new Date().getTime() - csepoch) / 1000;
var out = timestamp + " " + msg + "\n<br/>";
if (!CSExt.ProfileInfo)
CSExt.ProfileInfo = "";
CSExt.ProfileInfo += out;



return timestamp;
}

function cs_assert( cond, msg, param ) {
if (cond) return;
var newl = msg;
if (param)
newl += ":" + param;
newl += "\n";
if (!CSExt.AssertInfo)
CSExt.AssertInfo = "";
CSExt.AssertInfo += newl;
}

function cs_trace( str, output, clr ) {
var color = (clr != "") ? clr : "blue";
CSExt.trace.cnt++;
CSExt.trace.strs[CSExt.trace.current] =  str;
CSExt.trace.clrs[CSExt.trace.current] =  clr;
CSExt.trace.current++;
if (output == 1 || document.getElementById('cs_screenDebug'))
cs_screenout(str, color);


}



















function cs_trace_table_init( title, colSpan, optTitleBG, optTitleColor, optTableBG, optTableColor ) {
var cols = ( typeof colSpan != "undefined" ) ? colSpan : "1";
var titleBg  = ( typeof optTitleBG != "undefined" ) ? optTitleBG : "gray";
var titleClr = ( typeof optTitleColor != "undefined" ) ? optTitleColor : "white";
var tableBg  = ( typeof optTableBG != "undefined" ) ? optTableBG : "";
var tableClr = ( typeof optTableColor != "undefined" ) ? optTableColor : "";
var ret = "<table border=1 style='border-collapse:collapse;background-color:" + tableBg + ";color:" + tableClr + ";' width=100%>";
if ( typeof title != "undefined" ) {
ret += "<tr style='background-color:" + titleBg + ";color:" + titleClr + ";font-style:italic;'>"
ret += "<th colSpan='" + cols + "'>" + title + "</th>";
ret += "</tr>";
}
return ret;
}















function cs_trace_table_header( headings, optBG, optColor ) {
var ret = "";
var bg = ( typeof optBG != "undefined" ) ? optBG : "black";
var cl = ( typeof optColor != "undefined" ) ? optColor : "white";
ret += "<tr style='background-color:" + bg + ";color:" + cl + ";'>"

for ( var i=0; i<headings.length; i++ ) {
ret += "<th>" + headings[i] + "</th>";
}
ret += "</tr>";
return ret;
}
















function cs_trace_table_row( cells, doScroll, optBG, optColor ) {
var ret = "<tr>";
var bg = ( typeof optBG != "undefined" ) ? optBG : "";
var cl = ( typeof optColor != "undefined" ) ? optColor : "";
for ( var i=0; i<cells.length; i++ ) {
var pre = "<td valign='top' style='background-color:" + bg + ";color:" + cl + ";'>";
var post = "</td>";
if ( doScroll ) {
pre += "<div style='width:100%;height:40px;overflow:scroll;'>";
post = "</div>" + post;
}
ret += pre + cells[i] + post;
}
ret += "</tr>";
return ret;
}

function cs_trace_close() {
var pane = csget("cs_screenDebug");
pane.style.display = "none";
}

function cs_trace_clear() {
var pane = csget("cs_screenDebug");
var children = pane.childNodes;
for ( var i=children.length-1; i>=0; i-- ) {
var child = pane.childNodes[i];
if ( child.tagName == "DIV" && child.id != "cs_debug_control" ) {
pane.removeChild( child );
}
}
}


function cs_console() {
var cont = confirm( "ValidateCount:" + CSExt.ValidateCount + "\n" +
"FormatCount:"+ CSExt.FormatCount + "\n" +
"RecalcCount:"+ CSExt.RecalcCount + "\n" +
"Timings:\n"+ CSExt.ProfileInfo + "\n" +
"[OK] for more");

if (cont) {
if (!CSExt.AssertInfo)
CSExt.AssertInfo = "";
var str = "Failed Assertions:\n" + CSExt.AssertInfo + "\n[OK] for more";
cont = confirm(str);
}

if (cont) {
var ln = CSExt.trace.length;
var str = "";
for(var i=0; i < ln; i++) {
var lookhere = i + CSExt.trace.current;
if (lookhere >=  ln) lookhere -= ln;
str += CSExt.trace.strs[lookhere] + "\n";
}
cont = confirm("Last " + ln + " trace messages: (ring " + CSExt.trace.current + ")\n" + str + "\n[OK] for more");
}

if (cont) {
if (CSExt.XMLin)
alert( "Incoming XML:\n" + CSExt.XMLin.xml );
else
alert( "Incoming XML:\nnone" );
}
}

function cs_dump(obj) {
var res = "{ ";
for( var prop in obj ) {
res += prop + ":" + obj[prop] + ",\n";
}
alert( res + " }");
}

function cs_debugger() {
var expr = "cs_dump(CSExt.f)";
do {
expr = prompt( "enter expression, or cancel to quit", expr );
if (expr != null) {
var res = eval(expr);
alert("return value:\n" + res);
}
} while(expr != null);
}













function CSEvent_Obj( htmltarget ) {
this.ht = htmltarget;
}
var CSEvent = new CSEvent_Obj(null);

CSEvent_Obj.prototype.getObjectType = function() { return "CSEvent"; }
CSEvent_Obj.prototype.getTarget = function() { return this.ht; }
CSEvent_Obj.prototype.setTarget = function(targ) { this.ht = targ; }





CSExt.dispatchEvent = function( evtName, param ) {
CSExt.preventedDefault = false;
for( var func in CSExt[evtName]) {
CSExt[evtName][func](param);
}
return !CSExt.preventedDefault;
}

CSExt.preventDefault = function() {
CSExt.preventedDefault = true;
}





CSExt.dispatchUserScript = function( csfo, evt ) {

var fname = csfo.getName();
var baseName = cs_getBaseName(fname);
var func_ch = "";

var tbl = csfo.getContainer();
if (tbl.getObjectType()=="CSTable") {
CSExt.tableflag = {table:tbl.tbo.tname, baseName:baseName, row:csfo.getRow() };
fname = baseName;
} else {
CSExt.tableflag = null;
}
func_ch = fname + evt;
if (window[func_ch]) {
CSEvent.setTarget( csfo );
var event = (window.event) ? window.event : "";
window[func_ch]( csfo, event );
}

}







function cs_getBaseName( fullname ) {
var name = null;
var cached = CSExt.f[fullname];
if ( cached ) {
var fmt = CSExt.f[fullname].fmt;
if (fmt.baseName) {
name = fmt.baseName;
}
} else {
name = null;
}
return name;
}






function cs_getEvents( fld ) {
if (!fld) return;
var evts = new Array();
for (var p in fld) {
if (p.substr( 0, 2 ) == "on" && fld[p] != null) {
evts.push( p );
}
}
return evts;
}



function csblur( evt, explicitfld ) {
var fld;
if (explicitfld) { 
fld = explicitfld;
} else {
fld = this;
}
cs_assert( fld, "csblur fld");
var csfo = new CSField_Obj(fld);


var proceed_bl = true;
proceed_bl = CSExt.dispatchEvent( "OnBlur_bEP", fld );


if (proceed_bl) {


if (csfo.getType() != "Signature" &&
csfo.getType() != "Button" &&
csfo.getType() != "Radio" &&
csfo.getType() != "Check" ) {
CS_FireOnChange( fld );
}
}

if (proceed_bl) {
CSExt.dispatchUserScript( csfo, "_OnBlur" );
CSExt.dispatchUserScript( csfo, "_HTMLOnBlur" );
}

CSExt.dispatchEvent( "OnBlur_aEP", fld );
}



function CS_FireOnChange( fld ) {
var proceed_ch = true;
var csfo = new CSField_Obj(fld);





if (csfo.getType() == "Barcode") { 
var maxlength = parseInt( csfo.hf.getAttribute( "maxLength" ) );

if (!isNaN( maxlength ) && csfo.getValue().length > maxlength) {
csfo.hf.value = csfo.getValue().substr( 0, maxlength );
}
}

if (csfo.getValue()!=fld.cmpvalue) {
fld.cmpvalue = csfo.getValue();
proceed_ch = CSExt.dispatchEvent( "OnChange_bEP", fld );
cs_CalculationAction( fld );

proceed_ch = (proceed_ch && !CSExt.DFS__DHTML_OnLoad);

if (proceed_ch) {



CSExt.dispatchUserScript( csfo, "_OnChange" );
CSExt.dispatchUserScript( csfo, "_HTMLOnChange" );
}
CSExt.dispatchEvent( "OnChange_aEP", fld );
}
}



function cschange( evt ) {
var fld = this;

if (fld.name && CSExt.f[fld.name].fmt.listboxType == "combo") {
if (cs_beginComboEdit) cs_beginComboEdit( fld );
}
}


function csclick( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
cs_assert( fld, "csclick fld");


if (fld.name) {
var fmt = CSExt.f[fld.name].fmt;
if (fmt.activ) {
eval(fmt.activ);
}
}

var proceed = true;


if (csfo.getType() == "Button" || csfo.getType() == "Signature" || csfo.getType() == "Radio" || csfo.getType() == "Check") {
proceed = CSExt.dispatchEvent( "OnButtonClick_bEP", fld );
}
if (proceed) {
CSExt.dispatchUserScript( csfo, "_OnButtonClick" );
CSExt.dispatchUserScript( csfo, "_HTMLOnClick" );
}


if (csfo.getType() == "Button" || csfo.getType() == "Signature" || csfo.getType() == "Radio" || csfo.getType() == "Check") {
CSExt.dispatchEvent( "OnButtonClick_aEP", fld );
}
}


function csdblclick( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "csdblclick fld");
CSExt.dispatchUserScript( csfo, "_HTMLOnDblClick" );
}


function csfocus( evt ) {
var fld = this;
cs_assert( fld, "csfocus fld");





if (++CSExt.focusCounter[fld.name] > 1) {
--CSExt.focusCounter[fld.name];
return;
}

--CSExt.focusCounter[fld.name];


var csfo = new CSField_Obj(fld);



if ( csfo.getType() != "Signature" ) {
fld = csfo.hf;
}
var radioAdjust = 1;
if (csfo.getType() == "Radio") {
fld = csfo.hf[0];
radioAdjust = csfo.hf.length;
}
var elDim = CSUtil.getDim( fld );
var elTop = elDim.y;
var elBot = elDim.y + (elDim.h * radioAdjust);
var topOfViewable = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
var windowHeight = document.body.clientHeight;
var bottomOfViewable = topOfViewable + windowHeight;

var doFix = elTop <= topOfViewable || elBot >= bottomOfViewable;

















if ( doFix ) {
scroll( 0, elTop );
}


fld.cmpvalue = csfo.getValue(); 
var proceed = true;
proceed = CSExt.dispatchEvent( "OnFocus_bEP", fld );
if (proceed) {
CSExt.dispatchUserScript( csfo, "_OnFocus" );
CSExt.dispatchUserScript( csfo, "_HTMLOnFocus" );
}
CSExt.dispatchEvent( "OnFocus_aEP", fld );
}


function cskeydown( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "cskeydown fld");

if ( ( fld.type.toLowerCase() == "textarea" || fld.type.toLowerCase() == "text" )
&& csfo.getFmt().fmttxt
&& !CSExt.highlightInvalid ) {
evt = ( window.event ) ? window.event : evt;
var letpass = CSValidateTextareaMax( fld, evt );
if ( !letpass ) {
if ( window.event ) {
evt.cancelBubble = true;
evt.returnValue = false;
}
}
}
CSExt.dispatchUserScript( csfo, "_HTMLOnKeyDown" );
return letpass;
}


function cskeypress( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
CSExt.dispatchUserScript( csfo, "_HTMLOnKeyPress" );

if (CSExt.KeystrokeFilter) return CSExt.KeystrokeFilter( fld, evt, window.event );
}


function cskeyup( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "cskeyup fld");

CSExt.dispatchUserScript( csfo, "_HTMLOnKeyUp" );
}

function csmousedown( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "csmousedown fld");
CSExt.dispatchUserScript( csfo, "_HTMLOnMouseDown" );
}


function csmousemove( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "csmousemove fld");
CSExt.dispatchUserScript( csfo, "_HTMLOnMouseMove" );
}


function csmouseout( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "csmouseout fld");
var proceed = true;
fld.mousePos = CSUtil.getMouseXY( evt );      
proceed = CSExt.dispatchEvent( "OnMouseOut_bEP", fld );
if (proceed) {
CSExt.dispatchUserScript( csfo, "_HTMLOnMouseOut" );
}
CSExt.dispatchEvent( "OnMouseOut_aEP", fld );    
}

function csmouseover( evt ) {
var fld = this;                           
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "csmouseover fld");
var proceed = true;            
fld.mousePos = CSUtil.getMouseXY( evt );      
proceed = CSExt.dispatchEvent( "OnMouseOver_bEP", fld );
if (proceed) {
CSExt.dispatchUserScript( csfo, "_HTMLOnMouseOver" );
}
CSExt.dispatchEvent( "OnMouseOver_aEP", fld );
}


function csmouseup( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "csmouseup fld");
CSExt.dispatchUserScript( csfo, "_HTMLOnMouseUp" );
}


function csselect( evt ) {
var fld = this;
var csfo = new CSField_Obj(fld);
if (!csfo) return;
cs_assert( fld, "csselect fld");
CSExt.dispatchUserScript( csfo, "_HTMLOnSelect" );
}










function cs_setView( view ) {

var mode = (typeof view == "string") ? view.toLowerCase() : "";
var kModeC = CS_CONTINUOUS_MODE.toLowerCase();
var kModeP = CS_PAGED_MODE.toLowerCase();

if (mode == kModeP) {
csget("DFS__toolbarBot").style.display = "block";
csget( "DFS__ctrlSetView" ).selectedIndex = 0;
cs_ShowPage(CSExt.VisiblePage);
}

if (mode == kModeC) {
for (var i = 1; i <= CSExt.countPage; i++) {
var page = csget( "DFS__pagediv" + i);
page.style.display = "block";
page.style.visibility = "visible";
if ( CSExt.dpages ) {
if ( !CSExt.dpages[ page.id ] ) {
page.style.marginBottom = "0.1in";
} else {

var dpages = CSExt.dpages[ CSExt.pages[ i ].id ];
for ( var dpageName in dpages ) {
dpage = dpages[ dpageName ];
dpage.style.display = "block";
}
}
}

CSInk.loadInkPicsByPage( i );
}
csget( "DFS__toolbarBot" ).style.display = "none";
csget( "DFS__ctrlSetView" ).selectedIndex = 1;
cs_ShowPage(CSExt.VisiblePage);
}
}



function cs_ShowPage( index ) {
if ( (index<=0) || (index > CSExt.countPage) || isNaN(index) )
return;

var scrollTo = 0;
if (csget( "DFS__ctrlSetView" ).value == CS_PAGED_MODE) {

for (var i = 1; i <= CSExt.countPage; i++) {

var page = CSExt.pages[ i ];
page.style.display = "none";


var dpages = CSExt.dpages[ page.id ];
for ( var dpageName in dpages ) {
dpage = dpages[ dpageName ];
dpage.style.display = "none";
}
}

CSExt.pages[ index ].style.display = "block";


var dpages = CSExt.dpages[ CSExt.pages[ index ].id ];
for ( var dpageName in dpages ) {
dpage = dpages[ dpageName ];
dpage.style.display = "block";
}


csget( "DFS__ctrlSetView" ).selectedIndex = 0;

} else {

var pagediv = csget('DFS__pagediv' + index);
scrollTo = (index == 1) ? 0 : pagediv.offsetTop;
}
scroll( 0, scrollTo );


csget( "DFS__ctrlPgFlipBot" ).selectedIndex = index - 1;
csget( "DFS__ctrlPgFlipTop" ).selectedIndex = index - 1;


if (index == 1) {
csget( "DFS__ctrlPgDnTop" ).disabled = "disabled";
csget( "DFS__ctrlPgDnBot" ).disabled = "disabled";
} else {
csget( "DFS__ctrlPgDnTop" ).disabled = "";
csget( "DFS__ctrlPgDnBot" ).disabled = "";
}
if (index == CSExt.countPage) {
csget( "DFS__ctrlPgUpTop" ).disabled = "disabled";
csget( "DFS__ctrlPgUpBot" ).disabled = "disabled";
} else {
csget( "DFS__ctrlPgUpTop" ).disabled = "";
csget( "DFS__ctrlPgUpBot" ).disabled = "";
}

CSExt.VisiblePage = parseInt(index);
cs_moveToolbarBot( CSExt.VisiblePage );
if (typeof CSExt.f != "undefined" && CSExt.f != null) {
cs_setInitialFocus();
}

if ( CSIV.cnt > 0 ) {
CSIV._setFirstFocusOnPage();
}



if ( !CSExt.DFS__DHTML_OnLoad ) {
CSInk.loadInkPicsByPage( index );
}

window.setTimeout( "CSInk.inkSetFocusToFirstInk();", 75);

}

function cs_PgUp() {
cs_ShowPage( CSExt.VisiblePage + 1 );
}

function cs_PgDn() {
cs_ShowPage( CSExt.VisiblePage - 1 );
}

function cs_ZoomPage( percent ) {

var perc = percent / 100;
var units = CSExt.physSize.units;
var fontSize = Math.round(CSExt.physSize.baseFontSize * perc * 1000) / 1000;  
document.body.style.fontSize = fontSize + units;

for( var idx=1; idx <= CSExt.countPage; idx++) {

var pageName = "DFS__pagediv" + idx;
var pgdiv = CSExt.pages[ idx ];


var baseW = CSExt.physSize.pages[idx].w;
var baseH = CSExt.physSize.pages[idx].h;

var newW = baseW * perc;
var newH = baseH * perc;


pgdiv.style.width = newW + units;
pgdiv.style.height = newH + units;




var dpages = CSExt.dpages[ pageName ];
for ( var dpageName in dpages ) {
dpage = dpages[ dpageName ];
dpage.style.width = newW + units;
dpage.style.height = newH + units;
}


var shimdiv = csget( "DFS__shimdiv" + idx );
shimdiv.style.width  = "" + perc + units;
shimdiv.style.height = "" + perc + units;


var dshims = CSExt.dshims[ pageName ];
for ( var dpageName in dshims ) {
dshim = dshims[ dpageName ];
dshim.style.width  = "" + perc + units;
dshim.style.height = "" + perc + units;
}
var cshims = CSExt.cshims[ pageName ];
for ( var dpageName in cshims ) {
cshim = cshims[ dpageName ];
cshim.style.width  = "" + perc + units;
cshim.style.height = "" + perc + units;
}
}




for ( var name in CSBarcode.barcode ) {
CSBarcode.barcode[name].zoom( perc );
}




for ( var name in CSIV.viewers ) {
var vw = CSIV.viewers[ name ];
vw._pageZoom( perc );
}



if (VTwk.buttonHiding) { VTwk.fixHidingButtons( percent ) }

if (VTwk.textareaSizing) { VTwk.resizeTextareas( percent ) }


csget("DFS__ctrlZoom").value = percent;
cs_moveToolbarBot( CSExt.VisiblePage );
}

function cs_moveToolbarBotOld( doc, percent ) {
var baseH = CSExt.physSize.pages[CSExt.VisiblePage].h;
if (!percent) percent = doc.getElementById("DFS__ctrlZoom").value;
var units = CSExt.physSize.units;
doc.getElementById("DFS__toolbarBot").style.top = ((baseH * percent / 100) + 0.3) + units;
}

function cs_moveToolbarBot( pageNum ) {
var pgdiv = CSExt.pages[ pageNum ];
var dpages = CSExt.dpages[ CSExt.pages[ pageNum ].id ];
if ( pgdiv ) {
var tb = csget( "DFS__toolbarBot" );
var padding = 0;
var top = parseInt( pgdiv.offsetTop );
var height = parseInt( pgdiv.offsetHeight );


if ( dpages ) {
var pages = CSExt.dpages[ CSExt.pages[ pageNum ].id ].length;
height = pages * height;
}

tb.style.top = ( top + height + padding  ) + "px";
}
}



function cs_beginComboEdit( fld ) {
if (fld.name && CSExt.f[fld.name].fmt.listboxType == "combo") {
var entry = document.getElementById( "entry" + fld.name );
if (fld.options[fld.selectedIndex].value == "DFS__OtherInCombo") {
fld.style.visibility = "hidden";
entry.style.visibility = "visible";
entry.onblur = csblur;
entry.orig = fld;
entry.value = "";
entry.focus();
entry.select();
}
}
}

CSExt.OnBlur_bEP.Combo = function( fld ) {
if (fld.name) {
var fmt = CSExt.f[fld.name].fmt;
if (fmt.listboxType && fld.value == "DFS__OtherInCombo") {


CSExt.preventDefault();
}

if (fld.orig) {
cs_endComboEdit( fld.orig, fld );
}
}
}




function cs_endComboEdit( droplist, entry ) {
if ( entry.value != "" ) {

var chobj = new CSChoices_Obj( droplist );
chobj.insertAt(chobj.getCount(), entry.value, entry.value);
droplist.selectedIndex = chobj.getCount() - 1;

if (chobj.getAt(droplist.selectedIndex, false) != entry.value) {
chobj.setSelections( [chobj.getCount()] );
}
} else {
droplist.selectedIndex = 0;
}
entry.style.visibility = "hidden";
droplist.style.visibility = "visible";
csblur(null, droplist); 
}





function cs_SyncCombo( entity ) {
var value = "";
var f1 = CSForm.getField("DFS__" + entity);
var f2 = CSForm.getField( entity );
if (!f2) return;
value = f2.getValue();
var combo = f2.getChoices();
var index = -1;

if (combo.getCount() == 0) {
if (value.length > 0) {
combo.insertAt(0, value, value);
} else {
combo.insertAt(0, "", CS_CHOOSE_COMBO_STR);
}
combo.insertAt(1, "DFS__OtherInCombo", CS_OTHER_COMBO_STR);
index = 0;
} else {  

var found = false;
for(var i= 0; (i < combo.getCount()) && (!found); i++) {
if(combo.getAt(i, false) == value){
index = i;
found = true;
}
}

if ((value.length > 0) && (!found)) {
combo.insertAt(0, value, value);
index = 0;
}

var hasOther = false;
for (var j=0; j < combo.hc.options.length; j++) {
if (combo.hc.options[j].innerHTML == CS_OTHER_COMBO_STR) {
hasOther = true;
}
}
if (!hasOther) {
combo.insertAt(combo.getCount() + 1, "DFS__OtherInCombo", CS_OTHER_COMBO_STR);
}
}
if (index >= 0) {
combo.setSelections( [index] );
}
}

function CS_HTML_SetValue_Callback( field_name, value, subValues, internal_value, param) {
var targetField = CSForm.getField( field_name );



targetField.setValue( value );
var f = CSCalc.fldLookupClbk( field_name );
CSFmt.setIntVal( f, internal_value );
if (f != null) {
f.displayVal = value;
f.displayValExtended = subValues;
}
}

function CS_HTML_LookupFO_Callback( fieldname ) {



return CSExt.f[fieldname].fmt;
}

function CS_HTML_SetProp_Callback( fieldname, propname, propvalue ) {
var csfld = CSForm.getField( fieldname );
if (csfld) {



if (propname == "required") { csfld.setRequired( propvalue ); }
if (propname == "readonly") { csfld.setReadOnly( propvalue ); }
if (propname == "fgcolor") { csfld.setTextColor( propvalue ); }
if (propname == "bgcolor") { csfld.setFillColor( propvalue ); }
if (propname == "hidden" ) { csfld.setHidden( propvalue ); }
}
}

function CS_HTML_GetProp_Callback( fieldname, propname ) {
var csfld =  CSForm.getField( fieldname );
var rc = null;
if (csfld) {
if (propname == "type") { rc = csfld.getType(); }
if (propname == "value") { rc = csfld.getValue(); }
}
return rc;
}


function cs_CalculationStructure() {
CSCnv.setFieldLookupCallback( CS_HTML_LookupFO_Callback );
CSCnv.setSetFieldAttributeCallback( CS_HTML_SetProp_Callback );
CSCnv.setGetFieldAttributeCallback( CS_HTML_GetProp_Callback );
CSCalc.setFieldLookupCallback( CS_HTML_LookupFO_Callback );
CSCalc.setSetValueCallback( CS_HTML_SetValue_Callback );
cs_addcalcs();
}






function cs_CalculationAction( fld ) {
if (CSExt.RecalcEnable == 1) {
if (!CSExt.inCalculationAction || CSExt.inCalculationAction == false) {
CSExt.RecalcCount++;
CSExt.inCalculationAction = true;
CSCalc.fieldChanged( fld.name );

CSCalc.calculateValues( null );
CSCalc.calculateAttributes( null );
CSCalc.clearFieldChanged();
CSExt.inCalculationAction = false;
}
}
}





function cs_ManageAttachments( sURL ) {
var fAction = CSExt.getFld("DFS__Action");
var fURL      = CSExt.getFld("DFS__SubmitURL");
var useURL    = sURL;

if (fURL !=  null && fURL.value != null && fURL.value.length != 0) {
useURL = fURL.value;
}
if (fAction == null || useURL == "") {
alert( CS_ERR_NOTPUBLISHED );
return;
}
fAction.value = "RoutePrepareAttachments";



var urlstr = CSExt.getFldVal("DFS__SubmitURL");
var rc = cs_ajax_submit(urlstr, "");
if (rc==0) {
var redirect = CSExt.RedirectURL;
if (redirect && redirect.length > 0) {
location.replace(redirect);
}
} else if (rc==1) { 
alert( CS_OFFLINE_ERR_OFFLINE );
}
}

CSExt.OnButtonClick_bEP.Sigs = function( btn ) {
var sigReallyChanged = false;
var storf = null;
if (btn.name.substr(0,5) == "SIG__") {
storf = CSExt.getFld( btn.name.substr(5) ); 
} else {

if (btn.type == "radio" || btn.type == "checkbox") {


cs_CalculationAction(btn);
}
return; 
}
fmt = null;
if (CSExt.f[storf.name] && CSExt.f[storf.name].fmt) {
fmt = CSExt.f[storf.name].fmt;
}
if ( storf && (storf != null) && !storf.readOnly && fmt != null && (fmt.authWith=="clickthrough" || fmt.authWith=="password")) {
var username = CS_DIGITAL_APPROVE_USER;
if (CSExt.getFldVal("LF__User") != "")
username = CSExt.getFldVal("LF__User");
var dname = CS_DIGITAL_APPROVE_USER;
if (CSExt.getFldVal("DFS__DisplayName") != "")
dname = CSExt.getFldVal("DFS__DisplayName");
var todaydate = new Date().toLocaleString(); 
var formname = CSExt.ftitle;

var dispStr = CS_FormatMessage( CS_DIGITAL_APPROVE_CLICK,dname,todaydate,fmt.affirmation,fmt.role,formname,storf.name,fmt.desc );

if ( fmt.authWith == "clickthrough" ) { 

if ( storf.value == "" ) {

var isValid  = true;
var affected = CS_getAffectedFields( storf.name );
if (affected.length > 0) {
isValid = CSExt.validateFields( affected, "onsign" );
}

if (isValid) {
if (confirm(dispStr)) {
CS_SetSig( btn, storf, username, dname, todaydate );
sigReallyChanged = true;
}
}
} else { 
if (CS_HasClearPermission( storf, username, fmt )) {
if (confirm( CS_DIGITAL_APPROVE_CLEAR_MSG )) {
CS_ClearSig( btn, storf );
sigReallyChanged = true;
}
}
}

} else if (fmt.authWith == "password" ) { 

var fAction = CSExt.getFld("DFS__Action");
var fURL      = CSExt.getFld("DFS__SubmitURL");
if (fAction == null || fURL == "") {
alert( CS_ERR_NOTPUBLISHED );
return;
}


if ( storf.value == "") {
if (confirm( CS_DIGITAL_APPROVE_SUBMIT )) {

btn.onchange();


var oldRequired = fmt.required;
fmt.required = false;

var serverCommand = "SignatureDoSubmit";
var FPNodeIDField = cs_getQSValue("DFS__FormPacketNodeID");    
var FPNodeID = (FPNodeIDField != "") ? FPNodeIDField : null;   

var FPNodeIDT3 = (document.htmlform.DFS__T3) ? document.htmlform.DFS__T3.value : "";
if (!FPNodeID) {
FPNodeID = FPNodeIDT3;
}
if (FPNodeID) {
serverCommand = "SignatureDoSubmitFormPacketNode";  
}

CSExt.setFldVal("DFS__Action", serverCommand);
CSExt.setFldVal("DFS__Field", storf.name);


CS_sigToggleDynamicTableBtns( storf.name, CS_getAffectedFields( storf.name ), true );

var isValid = csformsubmit();
if (isValid) isValid = cs_OnSubmitLookup();
if (isValid) {

cs_prepare_for_submit();
var redirect = CSExt.RedirectURL;
if (redirect && redirect.length > 0) {
location.replace(redirect);
} else {
document.htmlform.submit();
}
}
fmt.required = oldRequired;
}
} else {

if (fmt.clearPolicy == "verify") {

CS_SigVerify( btn, storf, fmt );

} else {

if (CS_HasClearPermission( storf, username, fmt )) {
if (confirm( CS_DIGITAL_APPROVE_CLEAR_MSG )) {
CS_ClearSig( btn, storf );
sigReallyChanged = true;
}
}
}
}
}
}
if (sigReallyChanged) {
cs_CalculationAction(storf);


btn.onchange();
} else {
cs_CalculationAction(btn);  
}
}

function CS_SigVerify( btn, storf, fmt ) {
var isvalid = true;

if (CSExt.fldExists("DFS__SubmitURL")) {
var urlstr = CSExt.getFldVal("DFS__SubmitURL");

CSExt.setFldVal("DFS__Action", "SignatureDoVerify");
CSExt.setFldVal("DFS__Field", storf.name);
var rc = cs_ajax_submit( urlstr, "" );
if (rc==0) {

if (CSExt.getFldVal("DFS__StatusMsg") != "") {
alert( CSExt.getFldVal("DFS__StatusMsg") );
CSExt.setFldVal("DFS__StatusMsg", "");
isvalid = false;
}

if (CSExt.getFldVal("DFS__SetFocusTo") != "") {
CSExt.focustimer = setTimeout( "cs_focus_hack();", 0);
}
} else if (rc==1) { 
alert( CS_OFFLINE_ERR_OFFLINE );
return;
}
} else {
alert( CS_ERR_NOTPUBLISHED );
return;
}

var dorollback = false;
if (isvalid) {

alert( CS_SIG_VERIFY_OK );
CS_SetSigIcon( btn, "valid" );
return;

} else {

dorollback = confirm( CS_SIG_VERIFY_FAILED );
}

if (!dorollback) {

CS_SetSigIcon( btn, "invalid" );

} else {

CSExt.setFldVal("DFS__Action", "SignatureDoRollback");
CSExt.setFldVal("DFS__Field", storf.name);
var rc = cs_ajax_submit( urlstr, "" );
if (rc==0) {
CS_SetSigIcon( btn, "valid" );
}



}
}

function CS_SigVerifyQuiet() {
var doVerify = false;


for ( var fname in CSExt.f ) {
var f = CSExt.f[ fname ];
if ( f.fmt.htype == "Signature"
&& f.fmt.authWith == "password"
&& f.fld.value != "" ) {
doVerify = true;
}
}

if ( !doVerify ) return;


if (CSExt.fldExists("DFS__SubmitURL")) {
var urlstr = CSExt.getFldVal("DFS__SubmitURL");

CSExt.setFldVal("DFS__Action", "ValidateAllSignatures");
var rc = cs_ajax_submit( urlstr, "" );
if (rc!=0) {


if (CSExt.getFldVal("DFS__StatusMsg") != "") {

CSExt.setFldVal("DFS__StatusMsg", "");
}
} else if (rc==1) { 
alert( CS_OFFLINE_ERR_OFFLINE );
return;
}
} else {              
alert( CS_ERR_NOTPUBLISHED );
return;
}


var status = CSExt.getFldVal("DFS__StatusMsg");
var sigStates = status.split("|");


for ( var i=0; i< sigStates.length; i++ ) {
var parts = sigStates[i].split(":");
var sigName = parts[0];
var state = (parts[1] == 1) ? "valid" : "invalid";
var LOsig = CSExt.f[ "SIG__" + sigName ];
if ( LOsig ) {
var sigBtn = LOsig.fld;
CS_SetSigIcon( sigBtn, state );
}
}
return;
}


function CS_SetSig( btn, storf, uname, dname, date ) {
var saveVal = uname + "\t" + dname + "\t" + date;
storf.value = saveVal;
CS_RefreshSig( btn, storf );
}

function CS_SetSigIcon( btn, iname ) {
if (!btn) return;
if (!iname) return;

var sigdiv = btn.firstChild;
if (typeof sigdiv.firstChild.tagName == "undefined" || sigdiv.firstChild.tagName != "IMG") {
var imgtag = '<img src="' + eval("CSExt." + iname + "Img") + '" border="0" hspace="5">';
sigdiv.innerHTML = imgtag + sigdiv.innerHTML;

if (CSUtil.isSafari) {
var origH = btn.style.height;
btn.style.height = btn.style.offsetHeight;  
}
} else {
sigdiv.firstChild.src =  eval("CSExt." + iname + "Img");
}
}

function CS_ClearSig( btn, storf ) {
storf.value = "";
CS_RefreshSig( btn, storf );
}

function CS_HasClearPermission( storf, uname, fmt ) {
var permission = false;
var parseArr = storf.value.split("\t");

if (fmt.clearPolicy == "all")
permission = true;

if (fmt.clearPolicy == "signer" && uname==parseArr[0])
permission = true;

return permission;
}

function CS_RefreshSig( btn, storf ) {

if (!btn) return;
if (!storf) return;

var locking = (storf.value != "");

if (locking) {

if (btn.DFS__storecolor) {
btn.style.backgroundColor = btn.DFS__storecolor;
}
var parseArr = storf.value.split("\t");
var fontstr = '\"Monotype Corsiva\"';
var stamp = parseArr[2];

var breakPos = stamp.search(/\d\d\d\d/) + 4;
stamp = stamp.substr( 0, breakPos ) + "<br/> " + stamp.substr( breakPos+1, stamp.length );

btn.innerHTML = "<div style='font-family: " + fontstr + ", cursive;'>" + parseArr[1] + "</div>" +
"<div class='CSSigTimeStamp'>"+ stamp + "</div>";
} else {

btn.innerHTML = "<div>" + storf.lo.desc + "</div>";
btn.DFS__storecolor = btn.style.backgroundColor;
if (btn.style.backgroundColor != "transparent") {
btn.style.backgroundColor = "#C0C0C0";
}
}

if (CSExt.lock && CSExt.lock[storf.name] ) {
var affected = CS_getAffectedFields( storf.name );
for( var idx=0; idx < affected.length; idx++) {
affected[idx].cs_setLock( storf.name, locking ); 
}
}


CS_sigToggleDynamicTableBtns( storf.name, affected, locking );

}


function CS_sigToggleDynamicTableBtns( sigName, affected, setLocked ) {


if ( cs_fieldInTable( cs_getBaseName( sigName ) ) != null ) return;


if ( !CSExt.DFS__DHTML_OnLoad ) {
var tablesToSet = {};
for( var jdx=0; jdx < affected.length; jdx++) {
var tableName = cs_fieldInTable( cs_getBaseName( affected[jdx].getName() ) );
if ( tableName ) {
var isDyn = CSForm.getTable( tableName ).isDynamic();
if ( tableName && isDyn && !tablesToSet[ tableName ] ) {
tablesToSet[ tableName ] = "";
}
}
}
for ( var tname in tablesToSet ) {
var table = CSForm.getTable( tname );


if ( !setLocked ) {

for ( var i=0; i<table.tbo.lockedBy.length; i++ ) {
if ( table.tbo.lockedBy[i] == sigName ) {
table.tbo.lockedBy.splice( i, 1 );
break;
}
}


if ( table.tbo.lockedBy.length == 0 ) {


if ( table.tbo.startingRowControl == 0 || table.tbo.startingRowControl == 1 ) {
table.setRowAdditionAllowed( true );
}

if ( table.tbo.startingRowControl == 0 || table.tbo.startingRowControl == 2 ) {
table.setRowRemovalAllowed( true );
}
}
}


if ( setLocked ) {
table.setRowAdditionAllowed( false );
table.setRowRemovalAllowed( false );
table.tbo.lockedBy.push( sigName );
}
}
}
}


function CS_getAffectedFields( storfname ) {





if ( CSExt.adding_rows ) return [];

var formobj = new CSForm_Obj();
var numfields = formobj.getNumberOfFields();
var flds = new Array();
var ofs = 0;

if ( CSExt.lock[storfname].all ) {

for( var idx=0; idx < CSExt.UserFieldList.length; idx++) {
flds[ofs++] = new CSField_Obj( CSExt.getFld(CSExt.UserFieldList[idx]) );
}

} else if ( CSExt.lock[storfname].these ) {

for( idx=0; idx < numfields; idx++ ) {
var numberedfld = formobj.getField( idx );
var name = numberedfld.getName();
var ok = false;
for ( var jdx = 0; jdx < CSExt.lock[storfname].these.length; jdx++ ) {
if ( CSExt.lock[storfname].these[jdx] == name || "SIG__" + CSExt.lock[storfname].these[jdx] == name) ok = true;
}
if (ok)
flds[ofs++] = numberedfld;
}

} else if ( CSExt.lock[storfname].except ) {

for( idx=0; idx < numfields; idx++ ) {
var numberedfld = formobj.getField( idx );
var name = numberedfld.getName();
var excepted = false;
for ( var jdx = 0; jdx < CSExt.lock[storfname].except.length; jdx++ ) {
if ( CSExt.lock[storfname].except[jdx] == name || "SIG__" + CSExt.lock[storfname].except[jdx] == name) excepted = true;
}
if ( !excepted ) {
flds[ofs++] = numberedfld;
}
}

} else if ( CSExt.lock[storfname].allInRow ) {

var sig = new CSField_Obj( CSExt.getFld( storfname ) );
var sigTblName = cs_fieldInTable( sig.getFmt().baseName );
var sigRow = sig.getRow();
var tbl = CSForm.getTable( sigTblName );
var fieldsInRow = tbl.tbo.fnames;
for ( var idx=0; idx < fieldsInRow.length; idx++ ) {
flds[ofs++] = tbl.getAt( sigRow, fieldsInRow[idx] );
}

} else if ( CSExt.lock[storfname].exceptInRow ) {

var sig = new CSField_Obj( CSExt.getFld( storfname ) );
var sigTblName = cs_fieldInTable( sig.getFmt().baseName );
var sigRow = sig.getRow();
var tbl = CSForm.getTable( sigTblName );
var fieldsInRow = tbl.tbo.fnames;
var fieldsToSkipRaw = CSExt.lock[storfname].exceptInRow;

var fieldsToSkip = [];
for ( var i=0; i<fieldsToSkipRaw.length; i++ ) {
if ( fieldsToSkipRaw[i] ) {
var f = new CSField_Obj(  CSExt.getFld( fieldsToSkipRaw[i] ) );
if ( f ) {
fieldsToSkip.push( f.getFmt().baseName );
}
}
}
for ( var idx=0; idx < fieldsInRow.length; idx++ ) {
var excepted = false;
for ( var jdx=0; jdx<fieldsToSkip.length; jdx++ ) {
if ( fieldsInRow[idx] == fieldsToSkip[jdx] ) {
excepted = true;
}
}
if ( !excepted ) {
flds[ofs++] = tbl.getAt( sigRow, fieldsInRow[idx] );
}
}
}
return flds;
}

function cs_foreach_sig( fld, fname ) {
if (fld != null) {
var fmt = CSExt.f[fld.name].fmt;
if (fmt.authWith) {
CS_RefreshSig( CSExt.getFld("SIG__" + fname), fld );
}
}
}

CSExt.Form_OnLoad_bEP.Format = function( f ) {
var formobj = new CSForm_Obj();
var entries = CSExt.UserFieldList;
for (var idx = 0; idx < entries.length; idx++) {
var fname = entries[idx];
var fld = CSExt.getFld(fname);
var fmt = CSExt.getFmt(fname);


cs_foreach_sig( fld, fname );


CS_FireOnChange( fld );


cs_foreach_initval( fld, fmt );
}

if (CSExt.getFldVal("DFS__SetFocusTo") != "") {

CSForm.setFocus( fname );
}

CSInk.initializeInk();

cs_profile("bEP.Format done");
}

CSExt.Form_OnLoad_aEP.SigVerify = function( htmlform ) {


CS_SigVerifyQuiet();
}



function cs_PerformActionList() {
var dfsAction = document.htmlform.DFS__ActionList.options[document.htmlform.DFS__ActionList.selectedIndex].value;
CSExt.setFldVal("DFS__Action", dfsAction);
var doSubmit = true;

var delimLoc = dfsAction.indexOf("\t");
var searchStr = dfsAction;
if (delimLoc != -1)
searchStr = dfsAction.substring(0, delimLoc);

if (searchStr.indexOf("Reset") != -1) {
cs_PerformReset();
doSubmit = false;
}

if (dfsAction.length == 0) {
doSubmit = false;
} else if ((searchStr.indexOf("Reset") < 0) && (searchStr.indexOf("Save") < 0) &&
(searchStr.indexOf("Reject") < 0) && (searchStr.indexOf("Transfer") < 0)) {
doSubmit = csformsubmit();
}

if (doSubmit) doSubmit = cs_OnSubmitLookup();

if (doSubmit) {
cs_prepare_for_submit();
var redirect = CSExt.RedirectURL;
if (redirect && redirect.length > 0) {
location.replace(redirect);
} else {
document.htmlform.submit();
}
}
}








function cs_ajax_submit( sURL, sMsg ) {
var rc = cs_submit_xfdf_load_xfdf( sURL, sMsg );




if ( CSUtil.isSafari && CSExt.RedirectURL ) {
CSExt.RedirectURL = CSExt.RedirectURL.replace(/&#38;/g, "&");
}

return rc;
}



CSExt.Form_OnLoad_bEP.Lookup = function() {
var ct = 0;
try {
if (!window.ActiveXObject)
return;

for( var ref1 in CSExt.Lookups)
++ct;

for( var ref2 in CSExt.Validations)
++ct;

if (ct == 0)
return;
} catch(el) {
return;
}

var xobj;
try {
new ActiveXObject( "Msxml2.XMLHTTP" );
} catch(e1) {
try {
xobj = new ActiveXObject( "Msxml2.XMLHTTP" );
} catch(e2) {
CSExt.flags.msxml_warn = true;
alert( CS_MSXML_WARN );
}
}
}

CSExt.OnChange_aEP.Lookup = function( f ) {
if (f.value == "" || CSExt.DFS__DHTML_OnLoad) {
return;
}
if (!CSExt.fldExists("DFS__SubmitURL")) {
if (CSExt.Lookups[f.name] || CSExt.Validations[f.name]) {
alert( CS_ERR_NOTPUBLISHED );
}
return;
}
var urlstr = CSExt.getFldVal("DFS__SubmitURL");


if ((CSExt.Lookups[f.name] != null) &&
(CSExt.Lookups[f.name].action != null) &&
(CSExt.Lookups[f.name].action == "tabout") &&
(CSExt.DFS__DHTML_OnLoad == false)) {
CSExt.setFldVal("DFS__Action", "DBCommandsOnTabOut");
CSExt.setFldVal("DFS__Field", f.name);
if (cs_ajax_submit( urlstr, CSExt.Lookups[f.name].sending )==0) {


cs_checkAddLookupRows();


if (CSExt.getFldVal("DFS__StatusMsg") != "") {
alert( CSExt.getFldVal("DFS__StatusMsg") );
CSExt.setFldVal("DFS__StatusMsg", "");
}


if (CSExt.getFldVal("DFS__SetFocusTo") != "") {
CSExt.focustimer = setTimeout( "cs_focus_hack();", 0);
}
}
} else {

if ((CSExt.Validations[f.name] != null) &&
(CSExt.Validations[f.name].onTabOut != null) &&
(CSExt.Validations[f.name].onTabOut == true) &&
(CSExt.DFS__DHTML_OnLoad == false)) {
CSExt.setFldVal("DFS__Action","DBCommandsOnTabOut");
CSExt.setFldVal("DFS__Field", f.name);

if (cs_ajax_submit( urlstr, "" )==0) {

if (CSExt.getFldVal("DFS__StatusMsg") != "") {
alert( CSExt.getFldVal("DFS__StatusMsg") );
CSExt.setFldVal("DFS__StatusMsg", "");
}

if (CSExt.getFldVal("DFS__SetFocusTo") != "") {
CSExt.focustimer = setTimeout( "cs_focus_hack();", 0);

}
}
}
}
}

CSExt.OnButtonClick_aEP.Lookup = function( f ) {
if (CSExt.Lookups && CSExt.Lookups[f.name] &&
CSExt.Lookups[f.name].action &&
CSExt.Lookups[f.name].action == "click") {
if (CSExt.fldExists("DFS__SubmitURL")) {
var urlstr = CSExt.getFldVal("DFS__SubmitURL");

CSExt.setFldVal("DFS__Action", "DBCommandsOnButton");
CSExt.setFldVal("DFS__Field", f.name);
var rc = cs_ajax_submit( urlstr, CSExt.Lookups[f.name].sending );
if (rc==0) {


cs_checkAddLookupRows();


if (CSExt.getFldVal("DFS__StatusMsg") != "") {
alert( CSExt.getFldVal("DFS__StatusMsg") );
CSExt.setFldVal("DFS__StatusMsg", "");
}

if (CSExt.getFldVal("DFS__SetFocusTo") != "") {
CSForm.setFocus( f.name );
}
} else if (rc==1) { 
alert( CS_OFFLINE_ERR_OFFLINE );
}
} else {
alert( CS_ERR_NOTPUBLISHED );
}
}
}

CSExt.Form_OnLoad_aEP.Barcode = function( htmlform ) {
window.setTimeout( cs_init_barcodes, 50 );
}

CSExt.Form_OnLoad_aEP.ImageViewer = function() {
if ( CSIV.cnt > 0 ) {
CSIV._init();
CSIV._setFirstFocus();
}
}


CSExt.OnChange_aEP.Barcode = function( fld ) {
var csfo = new CSField_Obj( fld );

if (csfo.getType() == "Barcode") {
var barcode = CSBarcode.barcode[csfo.getName()];
barcode.applyParam( CSBarcode.DATA_TO_ENCODE, csfo.getValue() );
}
}

CSExt.Initialize.SetPixelsPerInch = function() {
var page = CSExt.pages[CSExt.VisiblePage];
var shim = CSExt.dshims[page.id][0];

CSUtil.WPxPerInch = shim.offsetWidth;
CSUtil.HPxPerInch = shim.offsetHeight;
}
var CS_PAGE_BREAK_LBL_SHOW    = true;               
var CS_PAGE_BREAK_LBL_OFFSET  = 0.1;                
var CS_PAGE_BREAK_DISPLAYED   = true;               
var CS_PAGE_BREAK_STYLE       = "1px dashed blue";  
var CS_PAGE_BREAK_DIV_DISPLAY = CSUtil.isSafari;
var CS_TEXT_PREFIX            = "textWrapper_";





function cs_initDynTables() {
var numTables,   
pgHeight,    
tbo,         
tname,       
table;       

numTables = CSForm.getNumberOfTables();
CSExt.table_rebuild = false;
CSExt.page_bottomStyle = CSUtil.getStyle( "div.pgdiv", "" )["borderBottom"];





for ( var tblCount = 0; tblCount < numTables; ++tblCount ) {

table    = CSForm.getTable( tblCount );
tbo      = table.tbo;
tname    = tbo.tname;
pgHeight = Math.round( parseFloat( CSExt.pages[tbo.page].style.height ) * 100 );

tbo.ink = [];
tbo.startingRowControl = table.cs_getTableRowControlCode();
tbo.lockedBy = [];

tbo.addBtnOffsetY = tbo.bottom - tbo.addBtnY;
tbo.remBtnOffsetY = tbo.remBtnY - tbo.top;

tbo.currPage = 0;       

tbo.rowsBeforeAddPage = Math.floor( (pgHeight - tbo.bottom) / tbo.rowHeight );
tbo.rowsPerPage       = Math.floor( pgHeight / tbo.rowHeight );



table.tbo.aggCalcs = [];


for ( var i=1; i<=table.tbo.rows; i++ ) {
var rname = "DTB__" + tname + "_r" + i;
var r = csget( rname );
var parentID = r.parentNode.id;
var dshimPos = parentID.indexOf( "dshim" );
var page;
if ( dshimPos != -1 ) {
page = parseInt( parentID.substring( dshimPos+5, parentID.length ) );
} else {
page = 0;
}
CSExt.entityInfo[ rname ] = { dPageIdx: page };    
}

if ( table.tbo.dynamic != true ) {
continue;
}


tbo.lastRowRemoved = -1;


table.tbo.originalRows = table.tbo.rows;


tbo.templateRow = csget( "DTB__" + tname + "_r1" );   


var ruleName = "#DTB__" + tname + "_r" + table.tbo.rows;
table.tbo.rowStyleText = CSUtil.getRule( ruleName );



if ( table.tbo.fnames.length > 0 ) {    
cs_sortTableFieldNames( table );
table.tbo.lastIndex = table.getAt( table.tbo.rows - 1, table.tbo.fnames.length - 1 ).getTabIndex();
}


table.tbo.tfields = new Array();
for ( var idx=0; idx<table.tbo.fnames.length; idx++ ) {
var fld = table.getAt( 0, idx )
table.tbo.tfields[idx] = fld;


var titleInsideField = CSExt.tiRects[fld.getName()];
if ( titleInsideField ) {
table.tbo.tfields[idx].getFmt().tifFieldTop = fld.hf.offsetTop;
}


if ( fld.getType() == "InkPicture" ) {
var fromInkProps = CSInk.inkProps[ fld.getName() ];
var inkProps = new cs_cloneObject( fromInkProps );
table.tbo.ink[ fld.getName() ] = inkProps;
}
}




table.tbo.tshapes = new Array();
for ( var jdx=0; jdx<table.tbo.rows; jdx++ ) {
for ( var idx=0; idx<table.tbo.snames.length; idx++ ) {
var shapeEl = cs_getShape( tname, jdx, table.tbo.snames[idx] );
if ( shapeEl ) {
if ( jdx == 0 ) {

table.tbo.tshapes[idx] = shapeEl;
}

shapeEl.style.top = CSUtil.dynpxperc( shapeEl.offsetTop ) + "%";
}
}
}

for ( var target in CSExt["ValueCalculations"] ) {
if ( cs_fieldInTable( cs_getBaseName( target ) ) != tname ) {

var calc = CSExt["ValueCalculations"][target];

for ( var trigger in calc.trs ) {
if (trigger.indexOf( "DTB__" + table.tbo.tname ) == 0) {

table.tbo.aggCalcs.push( calc );
break;
}
}
}
}

for ( var aspect in CSExt["AttributeCalculations"] ) {
for ( var target in CSExt["AttributeCalculations"][aspect] ) {
if ( cs_fieldInTable( cs_getBaseName( target ) ) != tname ) {

var calc = CSExt["AttributeCalculations"][aspect][target];

for ( var trigger in calc.trs ) {
if (trigger.indexOf( "DTB__" + table.tbo.tname ) == 0) {

table.tbo.aggCalcs.push( calc );
break;
}
}
}
}
}



if ( !CSForm.isOffline() ) {  
table.tbo.addButton = cs_createAddButton( tbo );


for (var rowCount = 0; rowCount < table.tbo.rows; ++rowCount) {
cs_createRemoveButton( table.tbo, rowCount );
}
}





for (var idx=0; idx<table.tbo.entitiesToMove.length; ++idx) {
var ename = table.tbo.entitiesToMove[idx];

CSExt.entityInfo[ ename ] = { dPageIdx: 0 };

var label = CSExt.fieldLabels[ ename ];
if ( label ) {
var labelDiv = cs_getAncestorWithAtt( label, "className", "txtblock" );
CSExt.entityInfo[ labelDiv.id ] = { dPageIdx: 0 };
}



if (CSExt.tiRects[ename]) {



CSExt.tiRects[ename].style.top = CSUtil.dynpxperc( CSExt.tiRects[ename].offsetTop ) + "%";
} else if (!CSForm.getTable( ename ) && !CSForm.getField( ename )) {



var el = csget( table.tbo.entitiesToMove[idx] );

if (el && el.tagName != "A") {
el.style.top = CSUtil.dynpxperc( el.offsetTop ) + "%";
}
}
}


if ( CSForm.isOffline() ) {
cs_doTablesOffline( table );
}

} 


if ( !CSForm.isOffline() ) {
cs_checkAddPreviousRows();
}

}




function cs_checkAddPreviousRows() {
var prevData = cs_getDynTablesObj();
if ( prevData ) {
cs_recreatePreviousRows( prevData );
}
}









function cs_recreatePreviousRows( dataObj ) {
if ( dataObj == null || typeof dataObj == "undefined" ) return;

CSExt.table_rebuild = true;

for ( var tbl in dataObj) {
var tableName = tbl;
var table = CSForm.getTable( tableName );
if ( !table.isDynamic() ) continue;         


var rowCtrl = dataObj[tbl].rowcontrol;
table.cs_setTableRowControlCode( rowCtrl );

cs_updateRowCounts();

var origRows = table.tbo.originalRows;
var rowsToAdd = dataObj[tbl].rows;
var data = dataObj[tbl].data;
cs_addRows( tableName, rowsToAdd );
for ( var f in data ) {
var fld = CSExt.f[ f ].fld;
var csfld = new CSField_Obj( fld );
if ( csfld.getType() == "List" ) {
csfld.setValues( data[f] );
} else if ( csfld.getType() == "Combo" ) {
csfld.setValues( data[f] );
cs_SyncCombo( csfld.hf.id );
} else if ( csfld.getType() == "Signature" ) {

var arr = data[f][0].split("\t");
var toBtn = CSExt.f[ "SIG__" + f ].fld;
CS_SetSig( toBtn, fld, arr[0], arr[1], arr[2] );
} else {
csfld.setValue( data[f].toString() );
}
}

table.setRowAdditionAllowed( table.tbo.rowAdditionAllowed );
table.setRowRemovalAllowed( table.tbo.rowRemovalAllowed );
}
CSExt.table_rebuild = false;
}




function cs_checkAddLookupRows() {
var lookupData = cs_getDynTablesObj();
if ( lookupData ) {
cs_createLookupRows( lookupData );
cs_populateDynTableListsFromLookup( lookupData );
}
}

function cs_populateDynTableListsFromLookup( lookupData ) {
var numTables = CSForm.getNumberOfTables();

for ( var n = 0; n < numTables; n++ ) {

var table    = CSForm.getTable( n );
var cache    = table.tbo.cachedList;
if ( cache ) {
for ( var fname in cache ) {
var opts = cache[ fname ];
var base = cs_getBaseName( fname );
var temp = fname.replace( "DTB__" + table.tbo.tname + "_", "" );
var row = parseInt( temp.replace( "_" + base, "" ) );
var f = table.getAt( row, base );
if ( f ) {
var chcs = f.getChoices();

var initCnt = chcs.getCount();
for ( var k=0; k<initCnt; k++ ) {
chcs.deleteAt( 0 );
}
for ( var i=0; i<opts.length; i++ ) {
var opt = opts[ i ];
chcs.insertAt( 0, opt[0], opt[0] );
}

var data = lookupData[ table.tbo.tname ].data;
var data_array = [ "" ];
if ( data[ fname ] ) {
data_array = data[ fname ];
}
f.setValues( data_array );
}
}
}
}
}

function cs_getDynTablesObj() {
var ret = null;
var dtServerFld = CSForm.getField( "DFS__DTServer" );
if ( dtServerFld ) {
var lookupData = dtServerFld.getValue();
if ( lookupData ) {
ret = eval( '(' + lookupData + ')' );
}
}
return ret;
}









function cs_createLookupRows( dataObj ) {
if ( dataObj == null || typeof dataObj == "undefined" ) return;

CSExt.table_rebuild = true;

for ( var tbl in dataObj) {
var tableName = tbl;
var table = CSForm.getTable( tableName );
if ( !table.isDynamic() ) continue;         





var data = dataObj[tbl].data;
var origRows = table.tbo.originalRows;
var rowsToAdd = dataObj[tbl].rows;
var currRows = table.tbo.rows;
var rowsNeeded = (rowsToAdd + origRows) - currRows;

if ( rowsNeeded < 0 ) {
table.deleteRows( Math.abs( rowsNeeded ), (rowsToAdd + origRows) );
} else if ( rowsNeeded > 0 ) {
cs_addRows( tableName, rowsNeeded );
} else {
continue;
}

cs_updateRowCounts();

for ( var f in data ) {
var fld = CSExt.f[ f ].fld;
var csfld = new CSField_Obj( fld );
if ( csfld.getType() == "List" ) {
csfld.setValues( data[f] );
} else if ( csfld.getType() == "Signature" ) {

var arr = data[f][0].split("\t");
var toBtn = CSExt.f[ "SIG__" + f ].fld;
CS_SetSig( toBtn, fld, arr[0], arr[1], arr[2] );
} else {
csfld.setValue( data[f] );
}
}



}
CSExt.table_rebuild = false;
}











function cs_doTablesOffline( table ) {
var tname = table.tbo.tname;


var dynRows = cs_getOfflineRows( tname );
var actualRows = dynRows + table.tbo.originalRows;


table.tbo.rows = actualRows;


for ( var dynRow=0; dynRow<dynRows; dynRow++ ) {
var curRow = table.tbo.originalRows + dynRow;
for ( var idx=0; idx<table.tbo.fnames.length; idx++ ) {

var fromField = table.getAt( 0, idx );
var newField  = csget( cs_newHandle( table, fromField.getName(), curRow ) ); 
if ( fromField.getType() == "Radio" ) {
cs_setupData( table, fromField.hf[0], document.htmlform[ newField.name ], curRow );
} else {
newField.name = newField.id;  
cs_setupData( table, fromField.hf, newField, curRow );
}

if ( fromField.getType() == "Signature" ) {
var sigBtn = CSExt.f[ "SIG__" + fromField.getName() ].fld;
var newSigBtn = csget( "SIG__" + newField.id ); 
newSigBtn.name = newSigBtn.id;
cs_setupData( table, sigBtn, newSigBtn, curRow );
}

if ( fromField.getType() == "InkPicture" ) {


var fromName = fromField.getName();
var toName = newField.name;
var fromInkProps = CSInk.inkProps[ fromName ];
var newInkProps = new cs_cloneObject( fromInkProps );
newInkProps.tooltip = toName;
CSInk.inkProps[ toName ] = newInkProps;
table.tbo.ink[ toName ] = newInkProps;

var ink = csget( "INK__" + toName );
ink.name = toName;                  
new CSInk_Obj( toName );
CSInk.createInk( toName );
}
}
}


for ( var j=0; j< table.tbo.rows; j++ ) {
var rb = csget( "DFS__" + tname + "_removeRow_" + j ); 
rb.parentNode.removeChild( rb );
}


var ab = csget( "DFS__" + tname + "_addRow" )
ab.parentNode.removeChild( ab );


var dpage = null;
for ( var p=1; p<CSExt.countPage+1; p++ ) {
var pageName = CSExt.pages[p].id;
var i = 1;
do {
dpage = csget( pageName + "_dpage" + i );
if ( dpage ) {
CSExt.dpages[pageName][i] = dpage;
CSExt.dshims[pageName][i] = csget( pageName + "_dshim" + i );
CSExt.cshims[pageName][i] = csget( pageName + "_cshim" + i );

}
i++;
} while ( dpage );
}



var row = null;
var rowPrefix = "DTB__" + tname + "_r";
var rowsOnLastPage;


var dshims = CSExt.dshims[CSExt.pages[table.tbo.page].id];
for ( var d=0; d<dshims.length; d++ ) {
var dshim = dshims[d];
var dshimID = dshim.id;
var pageNum = 0;
if (d > 0) {
pageNum = parseInt( dshimID.substring( dshimID.lastIndexOf("dshim")+5, dshimID.length ) );
}
var els = dshim.childNodes;
rowsOnLastPage = 0;
for ( var i=0; i<els.length; i++ ) {
var el = els[i];
if ( el.id && el.id.indexOf( rowPrefix ) != -1 && !CSExt.entityInfo[ el.id ]) {
CSExt.entityInfo[ el.id ] = { dPageIdx: pageNum };
rowsOnLastPage++;
}
}
}
table.tbo.currPage = rowsOnLastPage;     



var firstRow = csget("DTB__" + tname + "_r1" );
table.tbo.top = parseInt( firstRow.style.top );
table.tbo.bottom = table.tbo.top + table.tbo.rows * table.tbo.rowHeight;


if ( rowsOnLastPage == 0 ) {
var pageHeight = parseFloat( CSExt.pages[table.tbo.page].style.height ) * 100;
table.tbo.rowsBeforeAddPage = Math.floor( (pageHeight - table.tbo.bottom) / table.tbo.rowHeight );
} else {
table.tbo.rowsBeforeAddPage = table.tbo.rowsPerPage - rowsOnLastPage;
}

for ( var rowIdx = 0; rowIdx < table.tbo.rows; ++rowIdx ) {
cs_createRemoveButton( table.tbo, rowIdx );
cs_moveRemoveButton( table.tbo, rowIdx );
}


table.tbo.addButton = cs_createAddButton( table.tbo );
cs_moveAddButton( table.tbo );
}










function cs_copyField( table, fromField, fromType, currentRow ) {

var RECURSIVE = true;
var pageName = CSExt.pages[table.tbo.page].id
var container = CSExt.dshims[pageName][ table.tbo.currPage ];
var newField = null;
var newLabel = null;
var newLabelDiv = null;
var newHandle = "";

var rowPerc = table.tbo.rowHeight * currentRow;


if (CSExt.fieldLabels[fromField.id]) {

var fromLabel = CSExt.fieldLabels[fromField.id];
var fromLabelDiv = cs_getAncestorWithAtt( fromLabel, "className", "txtblock" );

newLabelDiv = fromLabelDiv.cloneNode( RECURSIVE );
newLabelDiv.id = fromLabelDiv.id + "_" + currentRow;
newLabelDiv.style.top = parseInt( fromLabelDiv.style.top ) + rowPerc + "%";
newLabelDiv.style.zIndex = 1;

newLabel = cs_getDescendantLabel( newLabelDiv );
newHandle = cs_newHandle( table, fromField.id, currentRow );
newLabel.id = fromLabel.id + "_" + currentRow;
newLabel.htmlFor = newHandle;


container.appendChild( newLabelDiv );


CSExt.fieldLabels[ newHandle ] = newLabel;
}



if (fromType == "Radio") {

var fromLabelDiv = CSExt.fieldLabels[fromField[0].name];

if (fromLabelDiv) {
var fromLabel = cs_getDescendantLabel( fromLabelDiv );

newLabelDiv = fromLabelDiv.cloneNode( RECURSIVE );
newLabelDiv.id = cs_newHandle( table, fromLabelDiv.id, currentRow );
newLabelDiv.style.top = parseInt( fromLabelDiv.style.top ) + rowPerc + "%";

newLabel = cs_getDescendantLabel( newLabelDiv );
newLabel.id = fromLabel.id + "_" + currentRow;
newLabel.htmlFor = cs_newHandle( table, fromLabel.htmlFor, currentRow );

container.appendChild( newLabelDiv );


CSExt.fieldLabels[newLabel.htmlFor] = newLabelDiv;
}

var numButtons = fromField.length;
for (var idx = 0; idx < numButtons; ++idx) {
newField = cs_copyField( table, fromField[idx], "RadioButton", currentRow, container );
}


cs_setupData( table, fromField[0], document.htmlform[ newField.name ], currentRow );

} else if (fromType == "RadioButton" && navigator.userAgent.toLowerCase().indexOf("msie") != -1) {

var newTag = '<input type="radio" ';
newTag += 'id="' + cs_newHandle( table, fromField.id, currentRow ) + '" ';
newTag += 'name="' + cs_newHandle( table, fromField.name, currentRow ) + '" ';
newTag += 'value="' + fromField.value + '" ';
newTag += '/>';

newField = document.createElement( newTag );
newField.style.cssText = fromField.style.cssText;
newField.style.top = parseInt(fromField.style.top) + rowPerc + "%";
newField.tabIndex = table.tbo.lastIndex;

container.appendChild( newField );



} else if ( fromType == "Combo" ) {

newField = fromField.cloneNode( RECURSIVE );
newField.id = cs_newHandle( table, fromField.id, currentRow );
newField.name = cs_newHandle( table, fromField.name, currentRow );
newField.style.top = parseInt(fromField.style.top) + rowPerc + "%";
newField.tabIndex = table.tbo.lastIndex;


container.appendChild( newField );
cs_setupData( table, fromField, newField, currentRow );


var fromCombo = CSForm.getField("DFS__" + fromField.id).hf;
var newCombo = fromCombo.cloneNode( RECURSIVE );
newCombo.id = cs_newHandle( table, fromCombo.id, currentRow );
newCombo.name = cs_newHandle( table, fromCombo.name, currentRow );
newCombo.style.top = parseInt(fromCombo.style.top) + rowPerc + "%";
newCombo.tabIndex = table.tbo.lastIndex;
document.htmlform[ newCombo.name ] = newCombo;

container.appendChild( newCombo );

cs_setupData( table, fromCombo, newCombo, currentRow );

cs_SyncCombo( newField.id );

} else if ( fromType == "Signature" ) {


var sigBtn = CSExt.f[ "SIG__" + fromField.id ].fld;
var newSigBtn = sigBtn.cloneNode( RECURSIVE );
newSigBtn.id = cs_newHandle( table, sigBtn.id, currentRow );
newSigBtn.name = cs_newHandle( table, sigBtn.name, currentRow );
newSigBtn.style.top = parseInt(sigBtn.style.top) + rowPerc + "%";
newSigBtn.tabIndex = table.tbo.lastIndex;
newSigBtn.style.backgroundColor = sigBtn.DFS__storecolor;

container.appendChild( newSigBtn );


newField = document.createElement( fromField.tagName );
newField.type = "hidden";
newField.id = cs_newHandle( table, fromField.id, currentRow );
newField.name = cs_newHandle( table, fromField.name, currentRow );
newField.tabIndex = table.tbo.lastIndex;

container.appendChild( newField );

cs_setupData( table, fromField, newField, currentRow );
cs_setupData( table, sigBtn, newSigBtn, currentRow );

CS_ClearSig( newSigBtn, newField );






cs_foreach_inithid( newField, CSExt.f[ newField.name ].fmt );

} else if ( fromType == "InkPicture" ) {





var csFromInkObj = CSInk.getInkPicture( fromField.id );
var fromInkAx = csFromInkObj.ax;
var fromWrapper = csFromInkObj.wrp;
var fromBGDiv = csFromInkObj.bgdiv;
var fromBGImg = csFromInkObj.img;


var newWrapper = fromWrapper.cloneNode( !RECURSIVE );     
newWrapper.id = cs_newHandle( table, fromWrapper.id, currentRow );
newWrapper.style.top = parseInt(fromWrapper.style.top) + rowPerc + "%";
newWrapper.tabIndex = table.tbo.lastIndex;
container.appendChild( newWrapper );



newField = document.createElement( fromField.tagName );
newField.type = "hidden";
newField.id = cs_newHandle( table, fromField.id, currentRow );
newField.name = cs_newHandle( table, fromField.name, currentRow );
newField.tabIndex = table.tbo.lastIndex;
fromWrapper.appendChild( newField );


if ( fromBGDiv && fromBGImg ) {
var newBGDiv = fromBGDiv.cloneNode( !RECURSIVE );
newBGDiv.id = cs_newHandle( table, fromBGDiv.id, currentRow );
var newBGImg = fromBGImg.cloneNode( !RECURSIVE );
newBGImg.id = cs_newHandle( table, fromBGImg.id, currentRow );
newBGDiv.appendChild( newBGImg );
newWrapper.appendChild( newBGDiv );
}


var name = newField.id;
var inkProps = table.tbo.ink[ fromField.name ];
CSInk.inkProps[ name ] = new cs_cloneObject( inkProps, 3 );


var newInkObj = new CSInk_Obj( name );
var newInkAx = CSInk.createInk( name );
CSInk.initOneInk( name );


cs_fldi( newInkAx );  
cs_setupData( table, fromField, newField, currentRow );

} else if ( fromType == "Barcode" ) {


var csFromBCObj = CSBarcode.barcode[fromField.id];
var fromWrapper = csFromBCObj.getWrapper();


var newWrapper = fromWrapper.cloneNode( !RECURSIVE );     
newWrapper.id = cs_newHandle( table, fromWrapper.id, currentRow );
newWrapper.style.top = parseInt(fromWrapper.style.top) + rowPerc + "%";
container.appendChild( newWrapper );



newField = document.createElement( fromField.tagName );
newField.type = "hidden";
newField.id = cs_newHandle( table, fromField.id, currentRow );
newField.name = cs_newHandle( table, fromField.name, currentRow );
newField.setAttribute( "maxLength", fromField.getAttribute( "maxLength" ) );
newWrapper.appendChild( newField );


var csNewBCObj = csFromBCObj.clone();
csNewBCObj.name = newField.id;
CSBarcode.barcode[newField.id] = csNewBCObj;



cs_setupData( table, fromField, newField, currentRow );

} else if ( CSExt.tiRects[fromField.id] ) {

if ( fromField.type == "text" ) {                                       
var fromWrap = csget("wrapper__HTobj__CalLaunch_DTB__" + table.tbo.tname + "_0_" + cs_getBaseName(fromField.id));
if ( fromWrap ) {
var children = fromWrap.childNodes;
var fromCal;
for ( var i=0; i<children.length; i++ ) {
if ( children[i].tagName == "IMG" ) {
fromCal = children[i];
}
}

var newWrap = fromWrap.cloneNode( RECURSIVE );
newWrap.id = cs_newHandle( table, newWrap.id, currentRow );
newWrap.style.top = parseInt(fromField.style.top) + rowPerc + "%";

children = newWrap.childNodes;
var newCal, newIframe;
for ( var i=0; i<children.length; i++ ) {
if ( children[i].tagName == "IMG" ) {
newCal = children[i];
}
if ( children[i].tagName == "IFRAME" ) {
newIframe = children[i];
}
}
var fldFormat = new cs_cloneObject( CSExt.f[fromField.name].fmt, 4 );
newCal.id = cs_newHandle( table, newCal.id, currentRow );
newCal.onmouseover = function() { CSExt.cal.doMouseOver( newField, fldFormat ); }
newCal.onmouseout  = function() { CSExt.cal.doMouseOut( newField ); }
newCal.onclick     = function() { CSExt.cal.doMouseClick( newField, fldFormat.fmtdt.mnv, fldFormat.fmtdt.mxv ); }
if ( newIframe ) {
newIframe.id = cs_newHandle( table, newIframe.id, currentRow );
}

container.appendChild( newWrap );
}
}



newField = fromField.cloneNode( RECURSIVE );
newField.id = cs_newHandle( table, fromField.id, currentRow );
newField.name = cs_newHandle( table, fromField.name, currentRow );
newField.style.top = parseInt( fromField.style.top ) + rowPerc + "%";
newField.tabIndex = table.tbo.lastIndex;
newField.style.zIndex = 1;

container.appendChild( newField );

cs_setupData( table, fromField, newField, currentRow );


var fromFrame = CSExt.tiRects[fromField.id];
if ( fromFrame ) {
var newFrame = fromFrame.cloneNode( RECURSIVE );
newFrame.id = newField.name + "_rect";
container.appendChild( newFrame );
var styleString = "#" + fromField.name + "_rect";
newFrame.style.cssText = CSUtil.getRule( styleString );
newFrame.setAttribute("className", fromFrame.getAttribute("className") );
newFrame.setAttribute("class", fromFrame.getAttribute("class") );
newFrame.style.zIndex = 0;
newFrame.style.top = parseInt( fromFrame.style.top ) + rowPerc + "%";
newFrame.style.height = fromFrame.style.height; 
CSExt.tiRects[newField.id] = newFrame;
}

} else {















var passOver = table.getAt(currentRow-1, cs_getBaseName(fromField.name) ).getValue();  

newField = fromField.cloneNode( RECURSIVE );

if ( fromType != "List" ) {
table.getAt(currentRow-1, cs_getBaseName(fromField.name) ).setValue( passOver );  
}

newField.id = cs_newHandle( table, fromField.id, currentRow );
newField.setAttribute( "name", cs_newHandle( table, fromField.name, currentRow ) );   
newField.style.top = parseInt(fromField.style.top) + rowPerc + "%";
newField.tabIndex = table.tbo.lastIndex;

container.appendChild( newField );


if ( fromField.type == "text" ) {                                       
var fromWrap = csget("wrapper__HTobj__CalLaunch_DTB__" + table.tbo.tname + "_0_" + cs_getBaseName(fromField.id));
if ( fromWrap ) {
var children = fromWrap.childNodes;
var fromCal;
for ( var i=0; i<children.length; i++ ) {
if ( children[i].tagName == "IMG" ) {
fromCal = children[i];
}
}

var newWrap = fromWrap.cloneNode( RECURSIVE );
newWrap.id = cs_newHandle( table, newWrap.id, currentRow );
newWrap.style.top = parseInt(fromField.style.top) + rowPerc + "%";

children = newWrap.childNodes;
var newCal, newIframe;
for ( var i=0; i<children.length; i++ ) {
if ( children[i].tagName == "IMG" ) {
newCal = children[i];
}
if ( children[i].tagName == "IFRAME" ) {
newIframe = children[i];
}
}
var fldFormat = new cs_cloneObject( CSExt.f[fromField.name].fmt, 4 );
newCal.id = cs_newHandle( table, newCal.id, currentRow );
newCal.onmouseover = function() { CSExt.cal.doMouseOver( newField, fldFormat ); }
newCal.onmouseout  = function() { CSExt.cal.doMouseOut( newField ); }
newCal.onclick     = function() { CSExt.cal.doMouseClick( newField, fldFormat.fmtdt.mnv, fldFormat.fmtdt.mxv ); }
if ( newIframe ) {
newIframe.id = cs_newHandle( table, newIframe.id, currentRow );
}

container.appendChild( newWrap );
}
}





if (fromType != "RadioButton" ) {
cs_setupData( table, fromField, newField, currentRow );
}

}

return newField;
}










function cs_setupData( table, fromField, toField, currentRow ) {


var el = toField;
if ( toField[0] && toField[0].type == "radio" ) {
el = toField[0];
}


var csfldTo   = new CSField_Obj( toField );
var csfldFrom = new CSField_Obj( fromField );
var fromFmt   = csfldFrom.getFmt();

if ( toField.id && toField.id.indexOf( "SIG__" ) != -1 ) {
fromFmt = CSExt.f[ fromField.id ].fmt;
}

var newFmt    = new cs_cloneObject( fromFmt, 4 );    

newFmt.row = currentRow;
newFmt.lockedBy = null;
newFmt.cal = {};


if ( newFmt.htype == "Signature" ) {

newFmt.uictrl = "SIG__" + el.name;

var newProps = new Object();
for ( var propName in CSExt.lock[ fromField.name ] ) {
var prop = CSExt.lock[ fromField.name ][propName];
newProps[ propName ] = new Array();

for ( var idx = 0; prop[idx] != undefined; ++idx ) {
var item = CSExt.lock[ fromField.name ][propName][idx];
newProps[propName][idx] = cs_newHandle( table, item, currentRow );
}
CSExt.lock[ el.name ] = newProps;
}
} 



csattach( newFmt, CSExt.f, el.name );


if ( el.type == "radio" ) {
for ( var i=0; i<toField.length; i++ ) {
toField[i].readOnly = false;
toField[i].disabled = false;
}
} else {
el.readOnly = false;
el.disabled = false;
}

if ( el.name.indexOf("DFS__") == -1 && newFmt.htype != "Ink" && newFmt.htype != "Barcode" ) {

el.style.display    = "block";
el.style.visibility = "visible";
el.style.color      = newFmt.textcolor;

if ( newFmt.htype != "Radio" && newFmt.htype != "Check" ) {
el.style.backgroundColor = newFmt.fillcolor;
}
}


if ( el.tagName.toUpperCase() == "BUTTON" ) {
var printStyle = CSUtil.getStyle( "#" + fromField.id, "print" );
if ( printStyle && printStyle.display == "none" ) {
var cls = "";
if ( el.getAttribute( "class" ) ) {
cls = el.getAttribute( "class" )
} else {
cls = el.getAttribute( "className" )
}
if ( cls == null ) {        
cls = "";
} else if ( cls != "" ) {   
cls += " ";
}
cls += "noPrint";
el.setAttribute( "className", cls );
el.setAttribute( "class", cls );
}
}


var opts = newFmt.staticOptions;
if ( opts ) {
el.innerHTML = "";
for ( var i=0; i<opts.length; i++ ) {
el.options[i] = new Option( opts[i].disp, opts[i].val );
}
}


var lups = CSExt.Lookups[ fromField.id ];
if ( lups != null ) {
CSExt.Lookups[ el.name ] = lups;
}



if (!(CSForm.isOffline() && CSExt.DFS__DHTML_OnLoad)) {
if (newFmt.initval != null && newFmt.initval != undefined) {
var vals = newFmt.initval.split("\t");



var skipBtn = (CSUtil.isIE && newFmt.htype == "Button" && fromField.firstChild
&& fromField.firstChild.tagName && fromField.firstChild.tagName.toUpperCase() == "IMG");
if (!skipBtn) {   

csfldTo.setValues( vals, true );
}

newFmt.oldValue = newFmt.userVal =
newFmt.displayVal = newFmt.displayValExtended =
newFmt.internalVal = newFmt.useIntVal = newFmt.reserved = null;
el.cmpvalue = newFmt.initval;
}
}


if ( el.type == "radio" ) {   
for ( var i=0; i<toField.length; i++ ) {
cs_fldi( toField[i] );
}
} else {
cs_fldi( el );
}

CSExt.validate( el, "onchange" );
CSExt.format( el );
}







function cs_copyCalculations( table, rowsAdded ) {
var basename, 
expr,     
row,      
startIdx, 
tbo,      
calc,     
trg,      
trs;      

tbo      = table.tbo;
startIdx = tbo.rows - rowsAdded;


for ( var fidx = 0; fidx < tbo.fnames.length; ++fidx ) {
basename = tbo.fnames[fidx];

var calcList = "ValueCalculations";
calc = CSExt["ValueCalculations"]["DTB__" + tbo.tname + "_0_" + basename];
if (calc) {
for ( row = startIdx; row < tbo.rows; ++row ) {
trg  = cs_newHandle( table, calc.trg, row );
expr = cs_newHandle( table, calc.expr, row );
trs  = [];
for ( var t in calc.trs ) {


var tnew = cs_newHandle( table, t, row )
trs.push( tnew );
CSCalc.fieldChanged( tnew );
}

var newCalc = CSCalc.addCalculation( trg, trs, expr, calc.aspect, calc.gen );
CSExt[calcList]["DTB__" + tbo.tname + "_" + row + "_" + basename] = newCalc;



var tablesChecked = {};
for ( var t in newCalc.trs ) {
var outsideTableName = cs_fieldInTable( cs_getBaseName( t ) );

if (!tablesChecked[outsideTableName]
&&
outsideTableName != null
&&
outsideTableName != tbo.tname)
{
tablesChecked[outsideTableName] = true;
var outsideTbl = CSForm.getTable( outsideTableName );
outsideTbl.tbo.aggCalcs.push( newCalc );
}
}
}
}

var aspects = CSExt["AttributeCalculations"];
for ( var aspect in aspects ) {
calc = CSExt["AttributeCalculations"][aspect]["DTB__" + tbo.tname + "_0_" + basename];
if (calc) {
for ( row = startIdx; row < tbo.rows; ++row ) {
trg  = cs_newHandle( table, calc.trg, row );
expr = cs_newHandle( table, calc.expr, row );
trs  = [];
for ( var t in calc.trs ) {


var tnew = cs_newHandle( table, t, row )
trs.push( tnew );
CSCalc.fieldChanged( tnew );
}

var newCalc = CSCalc.addCalculation( trg, trs, expr, calc.aspect, calc.gen );
CSExt[calcList]["DTB__" + tbo.tname + "_" + row + "_" + basename] = newCalc;



var tablesChecked = {};
for ( var t in newCalc.trs ) {
var outsideTableName = cs_fieldInTable( cs_getBaseName( t ) );

if (!tablesChecked[outsideTableName]
&&
outsideTableName != null
&&
outsideTableName != tbo.tname)
{
tablesChecked[outsideTableName] = true;
var outsideTbl = CSForm.getTable( outsideTableName );
outsideTbl.tbo.aggCalcs.push( newCalc );
}
}

}
}
}


for ( var cidx = 0; cidx < tbo.aggCalcs.length; ++cidx ) {
calc = tbo.aggCalcs[cidx];

for ( row = startIdx; row < tbo.rows; ++row ) {
calc.trs["DTB__" + tbo.tname + "_" + row + "_" + basename] = 1;
}
}

}




CSCalc.Calcs.sort( cs_compareProperty( "gen", "Numeric" ) );
CSCalc.updateIndices();
CSCalc.calculateValues( null );
CSCalc.calculateAttributes( null );
CSCalc.clearFieldChanged();
}











function cs_removeCalc( fieldName, currentRow ) {
for ( var i=CSCalc.Calcs.length-1; i>=0; i-- ) {
var calc = CSCalc.Calcs[i];
if ( calc.trg == fieldName ) {
CSCalc.Calcs.splice( i, 1 );
}
}
CSCalc.updateIndices();
}









function cs_newHandle( table, fromHandle, toRow ) {
var regex = new RegExp( "(DTB__" + table.tbo.tname + "_)0", "g");
return fromHandle.replace( regex, "$1" + toRow );
}









function cs_addRows( tableId, rowsToAdd ) {
var ROW_STEP = 7;
var rowsAdded = 0;
CSExt.adding_rows = true;

if ( rowsToAdd > rowsAdded ) {

var starttime = cs_profile( "TABLE: pre adjustments beginnng" );
cs_preAdjustments( tableId, rowsToAdd );

cs_profile( "TABLE: doAddRows beginnng" );
while (rowsAdded + ROW_STEP < rowsToAdd) {

cs_doAddRows( tableId , ROW_STEP );

rowsAdded = rowsAdded + ROW_STEP;

window.status = "Adding rows " + rowsAdded + " of " + rowsToAdd + " ...";
}


cs_doAddRows( tableId, rowsToAdd - rowsAdded );
window.status = "Done";

cs_profile( "TABLE: doAddRows completed" );


cs_finalAdjustments( tableId, rowsToAdd );

var endtime = cs_profile( "TABLE: final adjustments completed" );
var time = (endtime - starttime)
var strTime = "" + time;
strTime = strTime.substr(0,5);
cs_profile( "TABLE: total elapsed: " + strTime );
}
CSExt.adding_rows = false;
}







function cs_doAddRows( tableId, rowsToAdd ) {
var RECURSIVE = true;
var table = CSForm.getTable( tableId );
if (!table) return;

var rowFields;
var tbo      = table.tbo;
var lastRow  = table.tbo.rows - 1;
var tName    = table.tbo.tname;
var rHeight  = table.tbo.rowHeight;
var pageName = CSExt.pages[table.tbo.page].id
var shimdiv  = CSExt.dshims[pageName][ table.tbo.currPage ];
var curRow   = null;
var currPage = table.tbo.currPage;

var fromField = null;
var newField = null;
var newFieldName = "";
var newShape = null;

var prevRowRect = csget( "DTB__" + tName + "_r" + tbo.rows );
var bottomWidth = prevRowRect.style.borderBottomWidth;
prevRowRect.style.borderBottomWidth = "0in";


for (var rowCount = 1; rowCount < rowsToAdd + 1; ++rowCount) {
curRow = lastRow + rowCount;
rowFields = new Array();
shimdiv = CSExt.dshims[pageName][ table.tbo.currPage ];


var srcRect = table.tbo.templateRow;
var newRect = srcRect.cloneNode( RECURSIVE );
newRect.id              = "DTB__" + tName + "_r" + (curRow+1);  


newRect.style.top       = table.tbo.top + rHeight * curRow + "%";

if (rowCount == rowsToAdd) {
newRect.style.borderBottomWidth = bottomWidth;
}

CSExt.entityInfo[ newRect.id ] = {};

shimdiv.appendChild( newRect );


table.tbo.currPage = CSExt.entityInfo[ newRect.id ].dPageIdx = cs_placeItemDown( table, newRect, currPage, table.tbo.currPage );
if ( currPage != table.tbo.currPage ) {
prevRowRect.style.borderBottomWidth = bottomWidth;
currPage = table.tbo.currPage;
}

prevRowRect = newRect;



for (var fldCount=0; fldCount<table.tbo.fnames.length; fldCount++) {


fromField = table.tbo.tfields[fldCount];
cs_copyField( table, fromField.hf, fromField.getType(), curRow );
}



table.tbo.rows++;


for ( var s=0; s<table.tbo.snames.length; s++ ) {
var fromShape = table.tbo.tshapes[s];
if ( fromShape ) {
shimdiv = CSExt.dshims[pageName][ table.tbo.currPage ];


newShape = fromShape.cloneNode( RECURSIVE );
newShape.id = cs_newHandle( table, fromShape.id, curRow );





var clsName = fromShape.getAttribute( "className" ) || fromShape.getAttribute( "class" );
if ( clsName == "rect"  || clsName == "line" ) {
var shapeStyle = CSUtil.getRule( "." + clsName );
var idStyle = CSUtil.getRule( "#" + fromShape.id );
newShape.style.cssText = shapeStyle + ";" + idStyle;
}
newShape.style.top = parseInt(fromShape.style.top) + table.tbo.rowHeight * curRow + "%";
shimdiv.appendChild( newShape );
}
}


cs_createRemoveButton( table.tbo, curRow );


if ( !CSExt.table_rebuild ) {
CSExt.dispatchTableUserScript( table, "_OnRowAdded" );
}
} 
}








function cs_preAdjustments( tableId, rowsAdded ) {
var table = CSForm.getTable( tableId );
if (!table) return;




var nRows = rowsAdded;
var zoom = parseFloat( CSExt.zoom.value ) / 100;
var pageName = CSExt.pages[table.tbo.page].id;
var pageHeight = parseFloat( CSExt.pages[table.tbo.page].style.height ) * 100 / zoom;
var nFit = table.tbo.rowsBeforeAddPage;
var moveAmt = rowsAdded * table.tbo.rowHeight;
var targetPage = table.tbo.currPage;
var shimAdjustment = parseInt( CSExt.dshims[pageName][targetPage].style.top );
if (!shimAdjustment) {
shimAdjustment = 0;
}

table.tbo.bottom += Math.min( nFit, rowsAdded ) * table.tbo.rowHeight;
table.tbo.rowsBeforeAddPage -= Math.min( nFit, rowsAdded );

while ( nRows > nFit ) {
nRows -= nFit;
nFit = Math.min( nRows, table.tbo.rowsPerPage );


cs_addPage( table, ++targetPage );


var dshim = CSExt.dshims[pageName][ targetPage ];
shimAdjustment = -1 * Math.min( table.tbo.bottom, pageHeight * targetPage );
dshim.style.top = shimAdjustment + "%";


table.tbo.bottom += nFit * table.tbo.rowHeight;
table.tbo.rowsBeforeAddPage = table.tbo.rowsPerPage - nFit;

}


cs_resetShims( table.tbo.page, targetPage );


var extraSpace = pageHeight * targetPage + shimAdjustment;



if ( extraSpace > table.tbo.rowHeight ) {

extraSpace = table.tbo.rowHeight;

}
var targetPageIdx = Math.floor( (moveAmt + extraSpace) / pageHeight );



















cs_moveItemsDown( table, rowsAdded, moveAmt, targetPageIdx );


CSExt.cal.closeCalendar();
}

function cs_getPageHeight( page ) {
var zoom = parseFloat( CSExt.zoom.value ) / 100;
return parseFloat( page.style.height ) * 100 / zoom;
}

function cs_getShimTop( shim ) {
var top = parseInt( shim.style.top );
return isNaN( top ) ? 0 : top;
}

function cs_getPage( pageIndex ) {
return CSExt.pages[pageIndex];
}

function cs_getShim( page, dPageIdx ) {
return CSExt.dshims[page.id][dPageIdx];
}

function cs_resetShims( pageIndex, dPageIdx ) {
var page = cs_getPage( pageIndex );
var pageHeight = cs_getPageHeight( page );
var dShim = cs_getShim( page, dPageIdx );
var top = cs_getShimTop( dShim );

var idx = dPageIdx + 1;
var dShim = cs_getShim( page, idx );

while (dShim) {
top -= pageHeight;
dShim.style.top = top + "%";
dShim = cs_getShim( page, ++idx );

}
}







function cs_moveItemsDown( table, rowsAdded, moveAmt, targetPageIdx ) {
var tbo,
tblUnder,
itemsToMove,
item,
pageName,
pageHeight,
zoom;

tbo = table.tbo;
pageName = CSExt.pages[tbo.page].id;
zoom = parseFloat( CSExt.zoom.value ) / 100;
pageHeight = parseFloat( CSExt.pages[tbo.page].style.height ) * 100 / zoom;

if (tbo.rows + rowsAdded > tbo.datum) {



for (var entIdx = 0; entIdx < tbo.entitiesToMove.length; ++entIdx) {
var ename = tbo.entitiesToMove[entIdx];




tblUnder = CSForm.getTable( ename );

if (tblUnder) {
tblUnder.tbo.top += moveAmt;
tblUnder.tbo.remBtnY += moveAmt;
tblUnder.tbo.bottom += moveAmt;

for ( var rowIdx = 0; rowIdx < tblUnder.tbo.rows; rowIdx++ ) {
var listOfItems = [];




for ( var fldIdx = 0; fldIdx < tblUnder.tbo.fnames.length; fldIdx++ ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( "DTB__" + tblUnder.tbo.tname + "_" + rowIdx + "_" + tblUnder.tbo.fnames[fldIdx] ) );
}




for ( var shpIdx = 0; shpIdx < tblUnder.tbo.snames.length; shpIdx++ ) {
var fromShape = tblUnder.tbo.tshapes[shpIdx];
if ( fromShape ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( cs_newHandle( tblUnder, fromShape.id, rowIdx ) ) );
}
}




if ( tblUnder.isDynamic() ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( "DFS__" + tblUnder.tbo.tname + "_removeRow_" + rowIdx ) );
}




var rname = "DTB__" + tblUnder.tbo.tname + "_r" + (rowIdx + 1);
item = csget( rname );
item.style.top = parseInt( item.style.top ) + moveAmt + "%";

var cpg   = CSExt.entityInfo[rname].dPageIdx;
var tpg   = cpg + targetPageIdx;

tpg = CSExt.entityInfo[rname].dPageIdx = cs_placeItemDown( table, item, cpg, tpg );


if ( cpg != tpg ) {
var prevName = "DTB__" + tblUnder.tbo.tname + "_r" + (rowIdx );
var prevRow = csget( prevName );
if ( prevRow ) {
prevRow.style.borderBottom = prevRow.style.borderTop;
}
}





if (rowIdx == 0) {
CSExt.entityInfo[ename].dPageIdx = tpg;
}

if (rowIdx == tblUnder.tbo.rows - 1) {
tblUnder.tbo.currPage = tpg;
}

for ( var itmIdx = 0; itmIdx < listOfItems.length; ++itmIdx ) {
item = listOfItems[itmIdx];
if ( item.id == "" ) continue;    
item.style.top = parseInt( item.style.top ) + moveAmt + "%";
cs_placeItemDown( tblUnder, item, cpg, tpg );   
}
}




var shimTop = parseInt( CSExt.dshims[pageName][tblUnder.tbo.currPage].style.top );
if (!shimTop) {
shimTop = 0;
}
var availableSpace = Math.max( pageHeight - tblUnder.tbo.bottom - shimTop, 0 );
tblUnder.tbo.rowsBeforeAddPage = Math.floor( availableSpace / tblUnder.tbo.rowHeight );

if ( tblUnder.isDynamic() ) {
cs_moveAddButton( tblUnder.tbo );
}
} else {


var cpg   = CSExt.entityInfo[ename].dPageIdx;
var tpg   = cpg + targetPageIdx;




itemsToMove = cs_getElementsToMove( ename );

if (itemsToMove.length < 1) {
continue;
}




item = itemsToMove[0];
item.style.top = parseInt( item.style.top ) + moveAmt + "%";
tpg = CSExt.entityInfo[ename].dPageIdx = cs_placeItemDown( table, item, cpg, tpg );




for ( var itmIdx = 1; itmIdx < itemsToMove.length; ++itmIdx ) {
item = itemsToMove[itmIdx];
item.style.top = parseInt( item.style.top ) + moveAmt + "%";
cs_placeItemDown( table, item, cpg, tpg );   

}
}
}


cs_moveToolbarBot( tbo.page );
}
}








function cs_placeItemDown( table, item, currentItemIdx, targetPageIdx ) {

var tbo  = table.tbo;
var page = cs_getPage( tbo.page );
var pageHeight = cs_getPageHeight( page );

var dshim = cs_getShim( page, targetPageIdx );             
var shimTop = 0;
if ( dshim ) {
shimTop = cs_getShimTop( dshim );
}











if (!dshim) {

cs_addPage( table, CSExt.dshims[page.id].length );

dshim = cs_getShim( page, targetPageIdx );             













var shimAdjustment = cs_getShimTop( cs_getShim( page, targetPageIdx - 1 ) ) - pageHeight;
dshim.style.top = shimAdjustment + "%";


shimTop = cs_getShimTop( dshim );
}





var entityHeight = parseInt( item.style.height );
if (!entityHeight) {
entityHeight = 0;
}

var entityTop = parseInt( item.style.top );
var entityPos = Math.round(entityTop + entityHeight + shimTop);
var entityPage = currentItemIdx;

var itemFits = entityPos <= pageHeight;
var onTarget = entityPage == targetPageIdx;



var nextPageIdx = targetPageIdx;                            












if ( !itemFits ) {
dshim = cs_getShim( page, ++nextPageIdx );




if (!dshim) {            
cs_addPage( table, nextPageIdx );                  
dshim = cs_getShim( page, nextPageIdx );
dshim.style.top = (shimTop - pageHeight) + "%";

}

shimTop = cs_getShimTop( dshim );
}

if ( !itemFits || !onTarget ) {



if ( item.parentNode ) {                                  
item.parentNode.removeChild( item );
}
dshim.appendChild( item ); 

}




if (entityTop + shimTop < 0) {
dshim.style.top = (-1 * entityTop) + "%";

}

return nextPageIdx;
}








function cs_placeItemUp( table, item, currentItemIdx, targetPageIdx ) {

var tbo  = table.tbo;
var page = cs_getPage( tbo.page );
var pageHeight = cs_getPageHeight( page );

var dshim = cs_getShim( page, targetPageIdx );             
var shimTop = cs_getShimTop( dshim );





var entityHeight = parseInt( item.style.height );
if (!entityHeight) {
entityHeight = 0;
}

var entityTop = parseInt( item.style.top );
var entityPos = Math.round(entityTop + entityHeight + shimTop);
var entityPage = currentItemIdx;

var itemFits = entityPos < pageHeight;
var onTarget = entityPage == targetPageIdx;



var nextPageIdx = targetPageIdx;                            









if (!itemFits) {
++nextPageIdx;
dshim = cs_getShim( page, nextPageIdx );
shimTop = cs_getShimTop( dshim )
}

if ( itemFits && !onTarget ) {



if ( item.parentNode ) {                                  
item.parentNode.removeChild( item );
}
dshim.appendChild( item ); 

}




if (entityTop + shimTop < 0) {
dshim.style.top = (-1 * entityTop) + "%";

}

return nextPageIdx;
}









function cs_addPage( table, newPageIdx ) { 
var zoom,       
dPage,      
dShim,      
cShim,      
nameStem,   
prevPage,   
pgBrDiv,    
pgBr,       
pgBrLabel,  
tbo;        

tbo   = table.tbo;
nameStem = CSExt.pages[tbo.page].id;
dPage = CSExt.dpages[nameStem][newPageIdx];
zoom  = parseFloat(CSExt.zoom.value) / 100;

if (!dPage) {

prevPage = CSExt.dpages[nameStem][newPageIdx - 1];

dPage = document.createElement( "div" );
dPage.style.cssText = prevPage.style.cssText;
dPage.setAttribute( "id", nameStem + "_dpage" + newPageIdx );
dPage.setAttribute( "className", "dpgdivAll dpgdiv" + tbo.page );
dPage.setAttribute( "class", "dpgdivAll dpgdiv" + tbo.page );
dPage.style.borderTop = (CS_PAGE_BREAK_DISPLAYED) ? CS_PAGE_BREAK_STYLE : 0;
dPage.style.zIndex = 0;                  


prevPage.style.borderBottom = "0in";

CSExt.dpages[nameStem][newPageIdx] = dPage;


dShim = document.createElement( "div" );
dShim.setAttribute( "id", nameStem + "_dshim" + newPageIdx );
dShim.setAttribute( "className", "shim" );
dShim.setAttribute( "class", "shim" );




CSExt.dshims[nameStem][newPageIdx] = dShim;


cShim = document.createElement( "div" );
cShim.setAttribute( "id", nameStem + "_cshim" + newPageIdx );
cShim.setAttribute( "className", "shim" );
cShim.setAttribute( "class", "shim" );
cShim.style.width = parseFloat(CSUtil.getStyle( "div.shim", "screen" ).width) * zoom + "in";
cShim.style.height = parseFloat(CSUtil.getStyle( "div.shim", "screen" ).height) * zoom + "in";

CSExt.cshims[nameStem][newPageIdx] = cShim;


pgBr = document.createElement( "br" );
pgBr.className = "pagebreak";
pgBr.id = nameStem + "_pgBr" + newPageIdx;

pgBrDiv = document.createElement( "div" );
pgBrDiv.className = "pagebreak";
pgBrDiv.id = nameStem + "_pgBrDiv" + newPageIdx;

if (VTwk.displayPBreakDiv) {
pgBrDiv.style.display = "block";
}




if (CS_PAGE_BREAK_LBL_SHOW) {
pgBrLabel = document.createElement( "div" );

pgBrLabel.setAttribute( "id", nameStem + "_pgBrLabel" + newPageIdx );
pgBrLabel.className = "pgBrLabel dynTableHide";

pgBrLabel.style.position   = "absolute";
pgBrLabel.style.left       = Math.round( (CSExt.physSize.pages[tbo.page].w + CS_PAGE_BREAK_LBL_OFFSET) * 100 ) + "%";







pgBrLabel.style.top        = "-8%";

var pgBrImg = csget( "pageBreakImage" );
var pgBrIcon = document.createElement("IMG");
pgBrLabel.setAttribute( "id", nameStem + "_pgBrIcon" + newPageIdx );
pgBrIcon.setAttribute( "src", pgBrImg.src );
pgBrIcon.setAttribute( "title", CS_PAGE_BREAK_LBL_TEXT );
pgBrIcon.onclick = function () { cs_togglePageBreak(); }
pgBrLabel.appendChild( pgBrIcon );

}

if (pgBrLabel) {
cShim.appendChild( pgBrLabel );
}
cShim.appendChild( dShim );
dPage.appendChild( cShim );
document.htmlform.insertBefore( dPage, prevPage.nextSibling );
document.htmlform.insertBefore( pgBrDiv, prevPage.nextSibling );
document.htmlform.insertBefore( pgBr, prevPage.nextSibling );

}
}

function cs_togglePageBreak() {
var icons = document.getElementsByTagName("IMG");
for ( var i=0; i<icons.length; i++ ) {
var page = icons[i].parentNode.parentNode.parentNode;
if ( page.id.indexOf( "_dpage" ) != -1 ) {
var style = ( CS_PAGE_BREAK_DISPLAYED ) ? 0 : CS_PAGE_BREAK_STYLE;
page.style.borderTop = style;
}
}
CS_PAGE_BREAK_DISPLAYED = !CS_PAGE_BREAK_DISPLAYED;
}







function cs_finalAdjustments( tableId, rowsAdded ) {
var table = CSForm.getTable( tableId );
if (!table) return;


cs_copyCalculations( table, rowsAdded );


cs_moveAddButton( table.tbo );


cs_updateRowCounts();


cs_init_barcodes();


if ( table.tbo.maxRows && table.tbo.rows >= table.tbo.maxRows ) {
table.setRowAdditionAllowed( false );
}


if ( table.tbo.addBtnPressed ) {
var firstFld = table.getAt( table.tbo.rows-1, 0 );
if ( firstFld ) {   
if ( firstFld.getFmt().htype == "InkPicture" ) {
CSInk.inkSetFocus( firstFld.name );   
} else {
firstFld.setFocus();
}
}
table.tbo.addBtnPressed = false;
}
}








function cs_moveItemsUp( table, numRows ) {
var tbo,
tblUnder,
moveAmt,
itemsToMove,
item,
pageName,
pageHeight,
zoom;

tbo     = table.tbo;
moveAmt = tbo.rowHeight * numRows;
pageName = CSExt.pages[tbo.page].id;
zoom = parseFloat( CSExt.zoom.value ) / 100;
pageHeight = parseFloat( CSExt.pages[tbo.page].style.height ) * 100 / zoom;

if( tbo.rows >= tbo.datum ) {



for (var entIdx = 0; entIdx < tbo.entitiesToMove.length; ++entIdx) {
var ename = tbo.entitiesToMove[entIdx];




tblUnder = CSForm.getTable( ename );

if (tblUnder) {
tblUnder.tbo.top -= moveAmt;
tblUnder.tbo.remBtnY -= moveAmt;
tblUnder.tbo.bottom -= moveAmt;

for ( var rowIdx = 0; rowIdx < tblUnder.tbo.rows; rowIdx++ ) {
var listOfItems = [];




for ( var fldIdx = 0; fldIdx < tblUnder.tbo.fnames.length; fldIdx++ ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( "DTB__" + tblUnder.tbo.tname + "_" + rowIdx + "_" + tblUnder.tbo.fnames[fldIdx] ) );
}




for ( var shpIdx = 0; shpIdx < tblUnder.tbo.snames.length; shpIdx++ ) {
var fromShape = tblUnder.tbo.tshapes[shpIdx];
if ( fromShape ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( cs_newHandle( tblUnder, fromShape.id, rowIdx ) ) );
}
}




if ( tblUnder.isDynamic() ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( "DFS__" + tblUnder.tbo.tname + "_removeRow_" + rowIdx ) );
}




var rname = "DTB__" + tblUnder.tbo.tname + "_r" + (rowIdx + 1);
item = csget( rname );
item.style.top = parseInt( item.style.top ) - moveAmt + "%";

var cpg   = CSExt.entityInfo[rname].dPageIdx;
var tpg   = Math.max( cpg - 1, 0 );

tpg = CSExt.entityInfo[rname].dPageIdx = cs_placeItemUp( table, item, cpg, tpg );


if ( cpg != tpg ) {
var prevName = "DTB__" + tblUnder.tbo.tname + "_r" + (rowIdx );
var prevRow = csget( prevName );
if ( prevRow ) {
prevRow.style.borderBottom = 0;
}
}





if (rowIdx == 0) {
CSExt.entityInfo[ename].dPageIdx = tpg;
}

if (rowIdx == tblUnder.tbo.rows - 1) {
tblUnder.tbo.currPage = tpg;
}

for ( var itmIdx = 0; itmIdx < listOfItems.length; ++itmIdx ) {
item = listOfItems[itmIdx];
if ( item.id == "" ) continue;    
item.style.top = parseInt( item.style.top ) - moveAmt + "%";
cs_placeItemUp( tblUnder, item, cpg, tpg );   
}
}




var shimTop = parseInt( CSExt.dshims[pageName][tblUnder.tbo.currPage].style.top );
if (!shimTop) {
shimTop = 0;
}
var availableSpace = Math.max( pageHeight - tblUnder.tbo.bottom - shimTop, 0 );
tblUnder.tbo.rowsBeforeAddPage = Math.floor( availableSpace / tblUnder.tbo.rowHeight );

if ( tblUnder.isDynamic() ) {
cs_moveAddButton( tblUnder.tbo );
}
} else {
var cpg   = CSExt.entityInfo[ename].dPageIdx;
var tpg   = Math.max( cpg - 1, 0 );




itemsToMove = cs_getElementsToMove( ename );

if (itemsToMove.length < 1) {
continue;
}




item = itemsToMove[0];
item.style.top = parseInt( item.style.top ) - moveAmt + "%";
tpg = CSExt.entityInfo[ename].dPageIdx = cs_placeItemUp( table, item, cpg, tpg );




for ( var itmIdx = 1; itmIdx < itemsToMove.length; ++itmIdx ) {
item = itemsToMove[itmIdx];
item.style.top = parseInt( item.style.top ) - moveAmt + "%";
cs_placeItemUp( table, item, cpg, tpg );   
}
}
}


cs_moveToolbarBot( tbo.page );

}
}











function cs_getElementsToMove( entityName ) {
var listOfItems,
tableEntity,
fieldEntity,
identifiedEntity,
textEntity,
addItem,
bottom;




addItem = function( item ) {
var itemToAdd;





if (item.style.top == "") {
if (item.parentNode.className != "shim" && item.parentNode.style.top != "") {
itemToAdd = item.parentNode;
}
} else {
itemToAdd = item;
}

if (itemToAdd) {
var itmBottom = parseInt( itemToAdd.style.top );





if (itemToAdd.style.height != "") {
itmBottom += parseInt( itemToAdd.style.height );
}





if (!bottom || itmBottom > bottom) {
bottom = itmBottom;
listOfItems.unshift( itemToAdd );
} else {
listOfItems.push( itemToAdd )
}
}
}

listOfItems = [];

do {





tableEntity = CSForm.getTable( entityName );

if (tableEntity) {
var tbo = tableEntity.tbo;

for ( var rowIdx = 0; rowIdx < tbo.rows; rowIdx++ ) {



for ( var fldIdx = 0; fldIdx < tbo.fnames.length; fldIdx++ ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( "DTB__" + tbo.tname + "_" + rowIdx + "_" + tbo.fnames[fldIdx] ) );
}




for ( var shpIdx = 0; shpIdx < tbo.snames.length; shpIdx++ ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( "DTB__" + tbo.tname + "_" + rowIdx + "_" + tbo.snames[shpIdx] ) );
}




listOfItems = listOfItems.concat( cs_getElementsToMove( "DTB__" + tbo.tname + "_r" + (rowIdx + 1) ) );




listOfItems = listOfItems.concat( cs_getElementsToMove( "DFS__" + tbo.tname + "_removeRow_" + rowIdx ) );
}




for ( var colIdx = 1; colIdx <= tbo.cols; colIdx++ ) {
listOfItems = listOfItems.concat( cs_getElementsToMove( "DTB__" + tbo.tname + "_c" + colIdx ) );
}




listOfItems = listOfItems.concat( cs_getElementsToMove( "DFS__" + tbo.tname + "_addRow" ) );

break;
}




fieldEntity = CSExt.f[ entityName ];      

if (fieldEntity) {
var csfld,
combo,
entryFrame,
lbl,
type;

csfld = CSForm.getField( entityName );
type  = csfld.getType();
lbl   = CSExt.fieldLabels[entityName];




if (lbl) {
addItem( cs_getAncestorWithAtt( lbl, "className", "txtblock" ) );
}




if (type == "Radio") {



for ( var i = 0; i < csfld.hf.length; i++ ) {
lbl = CSExt.fieldLabels[csfld.hf[i].id];
if (lbl) {
addItem( cs_getAncestorWithAtt( lbl, "className", "txtblock" ) );
}

addItem( csfld.hf[i] );
}
} else if (type == "Signature") {



addItem( csget( "SIG__" + entityName ) );
} else if (type == "InkPicture") {



addItem( CSInk.getInkPicture( entityName ).wrp );
} else if (type == "Barcode") {



addItem( CSBarcode.barcode[entityName].getWrapper() );
} else {



addItem( csfld.hf );




entryFrame = CSExt.tiRects[csfld.hf.id];
if (entryFrame) {
addItem( entryFrame );
}




combo = CSExt.f["DFS__" + entityName];
if (combo) {
addItem( combo.fld );
}
}

break;
}




identifiedEntity = csget( entityName );

if (identifiedEntity) {
if (identifiedEntity.tagName == "A") {



addItem( cs_getAncestorWithAtt( identifiedEntity, "className", "txtblock" ) );
} else if (identifiedEntity.tagName == "IMG") {
addItem( identifiedEntity.parentNode );
} else {



addItem( identifiedEntity );
}

break;
}




textEntity = csget( CS_TEXT_PREFIX + entityName );

if (textEntity) {
addItem( textEntity );
break;
}

cs_trace( "ERROR: could not find entity named: " + entityName, 0, "red" );
} while (false);

return listOfItems;
}







function cs_removeRow( tableId, row ) {

var table = CSForm.getTable( tableId );
if (!table) return;

var tName = table.tbo.tname;
var lastRow = table.tbo.rows - 1;
var rHeight = table.tbo.rowHeight;
var pageName = CSExt.pages[table.tbo.page].id;


table.tbo.lastRowRemoved = row;


if ( row > 0 ) {
var btnTargetRemove = csget( "DFS__" + table.tbo.tname + "_removeRow_" + (row-1) ); 
if ( btnTargetRemove && btnTargetRemove.style.display != "none" ) {  
btnTargetRemove.focus();
}
}



if ( table.tbo.rows <= table.tbo.originalRows ) {

lastRow = table.tbo.rows-1;
if ( row == lastRow ) {
cs_clearData( table, row );
} else {
cs_moveDataTo( table, row-1 );
cs_clearData( table, lastRow );
}



for (var i=0; i<table.tbo.tfields.length; i++ ) {
var fld = table.tbo.tfields[i].hf;
cs_CalculationAction( fld );
}


CSExt.dispatchTableUserScript( table, "_OnRowDeleted" );

return;
}



if ( row != table.tbo.rows-1 ) {
cs_moveDataTo( table, row-1 );

row = table.tbo.rows-1;
}

var delFields = new Array();


for (var fldCount=0; fldCount<table.tbo.fnames.length; ++fldCount) {


delFields[fldCount] = table.getAt( row, fldCount );
var fieldName = delFields[fldCount].getName();


if ( delFields[fldCount].getType() == "Radio" ) {


var len = delFields[fldCount].hf.length;
for (var i=len-1; i>=0; i-- ) {


var lbl = CSExt.fieldLabels[ delFields[fldCount].hf[i].id ];
if ( lbl ) {
var lblDiv = cs_getAncestorWithAtt( lbl, "className", "txtblock" );
if ( lblDiv ) {
lblDiv.parentNode.removeChild( lblDiv );
delete CSExt.fieldLabels[ fieldName ];
}
}


var groupLabel = csget( "lbldivfor_" + fieldName ); 
if (groupLabel) {
groupLabel.parentNode.removeChild( groupLabel );
}
var hf = delFields[fldCount].hf[i];
hf.parentNode.removeChild( hf );

}
} else {




var lbl = CSExt.fieldLabels[ fieldName ];
if ( lbl ) {
var lblDiv = cs_getAncestorWithAtt( lbl, "className", "txtblock" );
if ( lblDiv ) {
lblDiv.parentNode.removeChild( lblDiv );
delete CSExt.fieldLabels[ fieldName ];
}
}


if ( delFields[fldCount].getType() == "Text" ) {
CSExt.cal.closeCalendar();
var calCtrl = csget("HTobj__CalLaunch_DTB__" + table.tbo.tname + "_0_" + cs_getBaseName(delFields[fldCount].getName())); 
if ( calCtrl ) {
CSExt.cal.hideCalLauncher( delFields[fldCount].hf, 0 );
}
}


var entryFrame = csget( fieldName + "_rect" ); 
if ( entryFrame ) {
entryFrame.parentNode.removeChild( entryFrame );
}


if ( delFields[fldCount].getType() == "InkPicture" ) {

CSInk.removeInkPicture( fieldName );
} else if ( delFields[fldCount].getType() == "Barcode" ) {

CSBarcode.removeBarcode( fieldName );
} else {

var hf = delFields[fldCount].hf;
hf.parentNode.removeChild( hf );
}


if ( delFields[fldCount].getType() == "Signature" ) {
var sigBtn = CSExt.getFld( "SIG__" + fieldName );
sigBtn.parentNode.removeChild( sigBtn );
delete CSExt.lock[ fieldName ];
delete CSExt.f[ sigBtn.id ];
}

}


delete CSExt.f[ fieldName ];
for ( var i=0; i<CSExt.UserFieldList.length; i++ ) {
if ( CSExt.UserFieldList[i] == fieldName ) {
CSExt.UserFieldList.splice( i, 1)
break;
}
}


cs_removeCalc( fieldName, row );

} 



for (var s=0; s<table.tbo.snames.length; s++ ) {
var shape = cs_getShape( tName, row, table.tbo.snames[s] );
if (shape) {
shape.parentNode.removeChild( shape );
}
}



var rowRectID = "DTB__" + tName + "_r" + (row+1);
var rowRect = csget( rowRectID ); 
rowRect.parentNode.removeChild( rowRect );
delete CSExt.entityInfo[ rowRectID ];

var prevRowRect = csget( "DTB__" + tName + "_r" + row );
prevRowRect.style.borderBottom = rowRect.style.borderBottom;


table.tbo.rows--;



for (var i=0; i<table.tbo.tfields.length; i++ ) {
var fld = table.tbo.tfields[i].hf;
cs_CalculationAction( fld );
}


var rmvBtn = csget( "DFS__" + table.tbo.tname + "_removeRow_" + table.tbo.rows ); 
rmvBtn.parentNode.removeChild( rmvBtn );


cs_finalRemovalAdjustments( table, 1 )
cs_moveItemsUp( table, 1 );




var lastPage = CSExt.dpages[pageName].length - 1;
if ( !cs_pageHasItems( table, lastPage ) ) {              
cs_removePage( pageName, lastPage );                       
}


cs_moveAddButton( table.tbo );


cs_updateRowCounts();


CSExt.dispatchTableUserScript( table, "_OnRowDeleted" );

}








function cs_finalRemovalAdjustments( table, rowsRemoved ) {
if (!table) return;


table.tbo.bottom -= rowsRemoved * table.tbo.rowHeight;
table.tbo.rowsBeforeAddPage = (table.tbo.rowsBeforeAddPage+1) % table.tbo.rowsPerPage;


if ( table.tbo.rowsBeforeAddPage == 0 ) {

table.tbo.currPage--;
}

cs_resetShims( table.tbo.page, table.tbo.currPage );


if ( table.tbo.maxRows && table.tbo.rows < table.tbo.maxRows
&& (table.tbo.startingRowControl == 0 || table.tbo.startingRowControl == 1) ) {
table.setRowAdditionAllowed( true );
}
}







function cs_pageHasItems( table, pageIdx ) {

var itemsExist = false;
for ( var name in CSExt.entityInfo ) {
var item = CSExt.entityInfo[ name ];
if ( item.dPageIdx == pageIdx ) {
itemsExist = true;
break;
}
}
return itemsExist;
}







function cs_removePage( pageName, dPageIdx ) { 
var dpage = CSExt.dpages[pageName][dPageIdx];
if (dpage && dPageIdx > 0) {
CSExt.cshims[pageName].splice( dPageIdx, 1 );
CSExt.dshims[pageName].splice( dPageIdx, 1 );
CSExt.dpages[pageName].splice( dPageIdx, 1 );

dpage.parentNode.removeChild( csget( pageName + "_pgBr" + dPageIdx ) );
dpage.parentNode.removeChild( csget( pageName + "_pgBrDiv" + dPageIdx ) );
dpage.parentNode.removeChild( dpage );

var lastPage = CSExt.dpages[pageName][dPageIdx - 1];
lastPage.style.marginBottom = 0;
lastPage.style.borderBottom = CSExt.page_bottomStyle;
}
}







function cs_clearData( table, row ) {
var fieldNames = table.tbo.fnames;
for ( var fieldCount=0; fieldCount<fieldNames.length; fieldCount++ ) {
var csfld = table.getAt( row, fieldNames[fieldCount] );
if (csfld.getType() == "Signature") {

var sigName = csfld.getName();
var fld = CSExt.f[ sigName ].fld;
var btn = CSExt.f[ "SIG__" + sigName ].fld;
var storecolor = btn.DFS__storecolor;  
CS_ClearSig( btn, fld );
btn.DFS__storecolor = storecolor;
} else if (csfld.getType() == "List") {

csfld.getChoices().setSelections( new Array() );
csfld.setValues( csfld.getFmt().initval.split( "\t" ), true );
} else if (csfld.getType() == "Barcode") {
csfld.setValue( csfld.getFmt().initval );
} else if (csfld.getType() != "Button") {

csfld.setValue( csfld.getFmt().initval, true );


if ( csfld.getFmt().fmtdt && csfld.getFmt().fmtdt.subtype == "date" ) {
CSExt.cal.closeCalendar();
var calCtrl = csget("HTobj__CalLaunch_DTB__" + table.tbo.tname + "_0_" + cs_getBaseName(csfld.getName())); 
if ( calCtrl ) {
CSExt.cal.hideCalLauncher( csfld.hf, 0 );
}
}
}


var newFmt = csfld.getFmt();
newFmt.oldValue = newFmt.userVal =
newFmt.displayVal = newFmt.displayValExtended =
newFmt.internalVal = newFmt.useIntVal = newFmt.reserved = null;

var el = csfld.hf;
if (csfld.getType() == "Radio") {
el = el[0];
}
el.cmpvalue = csfld.getFmt().initval;
CSExt.validate( el, "onchange" );
CSExt.format( el );
}
}







function cs_moveDataTo( table, row ) {
var fieldNames = table.tbo.fnames;
var end = table.tbo.rows-1;
for ( var i=row+1; i<end; i++ ) {
for ( var fieldCount=0; fieldCount<fieldNames.length; fieldCount++ ) {
var csToFld = table.getAt( i , fieldCount );
var csFromFld = table.getAt( i+1 , fieldCount );
if (csToFld.getType() == "Signature") {

var fromSigName = csFromFld.getName();
var fromFld = CSExt.f[ fromSigName ].fld;
var fromBtn = CSExt.f[ "SIG__" + fromSigName ].fld;
var toSigName = csToFld.getName();
var toFld = CSExt.f[ toSigName ].fld;
var toBtn = CSExt.f[ "SIG__" + toSigName ].fld;

toFld.value = fromFld.value;
if ( toFld.value == "" ) {
CS_ClearSig( toBtn, toFld );
} else {
var ary = fromFld.value.split("\t");
toBtn.DFS__storecolor = fromBtn.DFS__storecolor;
CS_SetSig( toBtn, toFld, ary[0], ary[1], ary[2] );
}
CS_ClearSig( fromBtn, fromFld );
} else if (csToFld.getType() == "List") {
csToFld.getChoices().setSelections( new Array() );
csToFld.setValues( csFromFld.getValues(), true );
} else if (csToFld.getType() == "Barcode") {
csToFld.setValue( csFromFld.getValue() );
} else if (csToFld.getType() != "Button") {

csToFld.setValue( csFromFld.getValue(), true );
}

var newFmt = new cs_cloneObject( csFromFld.getFmt(), 4 );
newFmt.row = csToFld.getFmt().row;
CSExt.setFmt( csToFld.getName(), newFmt );

csToFld.hf.cmpvalue = csFromFld.hf.cmpvalue;
}
}
}









function cs_moveRemoveButton( tbo, row ) {
var remBtn,   
trgShim;  

remBtn  = csget( "DFS__" + tbo.tname + "_removeRow_" + row );
trgShim = CSExt.dshims[CSExt.pages[tbo.page].id][ CSExt.entityInfo[ "DTB__" + tbo.tname + "_r" + (row+1) ].dPageIdx ];




var rowDiv = csget("DTB__" + tbo.tname + "_r" + (row+1));
var rowTop = parseInt( rowDiv.style.top );
remBtn.style.top = rowTop + tbo.remBtnOffsetY + "%";





if (remBtn.parentNode != trgShim) {
trgShim.appendChild( remBtn.parentNode.removeChild( remBtn ) );
}
}







function cs_moveAddButton( tbo ) {
var addBtn,   
trgShim;  

addBtn  = tbo.addButton;
trgShim = CSExt.dshims[CSExt.pages[tbo.page].id][tbo.currPage];




addBtn.style.top = tbo.bottom - tbo.addBtnOffsetY + "%";





trgShim.appendChild( addBtn.parentNode.removeChild( addBtn ) );
}








function cs_createAddButton( tbo ) {
var addBtn = document.createElement( "BUTTON" );




addBtn.style.position  = "absolute";
addBtn.style.left      = tbo.addBtnX + "%";
addBtn.style.top       = tbo.addBtnY + "%";
addBtn.style.width     = tbo.addBtnWidth + "%";
addBtn.style.height    = tbo.addBtnHeight + "%";
addBtn.style.fontSize  = "100%";
addBtn.style.textAlign = "center";
addBtn.style.padding   = "0 !important";
addBtn.style.display   = tbo.rowAdditionAllowed ? "block" : "none";




addBtn.setAttribute( "id", "DFS__" + tbo.tname + "_addRow" );
addBtn.setAttribute( "title", CS_TABLE_ADD_ROW );
addBtn.setAttribute( "className", "dynTableHide" );
addBtn.setAttribute( "class", "dynTableHide" );
addBtn.setAttribute( "tabIndex", tbo.lastIndex );
addBtn.setAttribute( "table", tbo.tname );

addBtn.appendChild( document.createTextNode( " + " ) );
CSExt.dshims[CSExt.pages[tbo.page].id][tbo.currPage].appendChild( addBtn );


if (VTwk.buttonsTooWide) {
VTwk.fixButtonsFunc( addBtn );
}



addBtn.onclick = function ( evt ) {
var tname = this.getAttribute( "table" )
CSForm.getTable( tname ).tbo.addBtnPressed = true;
cs_addRows( tname, 1 );
return false;
}

return addBtn;
}








function cs_createRemoveButton( tbo, row ) {
var remBtn = document.createElement( "BUTTON" );




remBtn.style.position   = "absolute";
remBtn.style.left       = tbo.remBtnX + "%";
remBtn.style.top        = tbo.remBtnY + (tbo.rowHeight * row) + "%";
remBtn.style.width      = tbo.remBtnWidth + "%";
remBtn.style.height     = tbo.remBtnHeight + "%";
remBtn.style.fontSize   = "100%";
remBtn.style.textAlign  = "center";
remBtn.style.padding    = "0 !important";
remBtn.style.fontFamily = "'lucida sans unicode', serif";
remBtn.style.display    = tbo.rowRemovalAllowed ? "block" : "none";




remBtn.setAttribute( "id", "DFS__" + tbo.tname + "_removeRow_" + row );
remBtn.setAttribute( "title", CS_TABLE_REMOVE_ROW + " " + new String( row ) );
remBtn.setAttribute( "className", "dynTableHide" );
remBtn.setAttribute( "class", "dynTableHide" );
remBtn.setAttribute( "tabIndex", 0 );
remBtn.table = tbo.tname;
remBtn.row = row;

remBtn.onclick = function ( evt ) {
cs_removeRow( this.table, this.row );
return false;
}

remBtn.appendChild( document.createTextNode( "-" ) );
CSExt.dshims[CSExt.pages[tbo.page].id][tbo.currPage].appendChild( remBtn );


if (VTwk.buttonsTooWide) {
VTwk.fixButtonsFunc( remBtn );
}
}














function cs_cloneObject( srcObj, depth ) {

depth--;
for (var i in srcObj) {
if ( typeof srcObj[i] == "object" && srcObj[i] != null && depth >= 0 ) {
if ( srcObj[i] instanceof Array ) {
this[i] = new Array();
this[i] = srcObj[i];
} else if ( srcObj[i] instanceof RegExp ) {
this[i] = srcObj[i];
} else {
this[i] = new cs_cloneObject( srcObj[i], depth );
}
} else {
this[i] = srcObj[i];
}
}
}











function cs_getOtherTables( table, where ) {

var arr = new Array();

var numTables = CSForm.getNumberOfTables();
var otherTable;

for ( var i=0; i<numTables; i++ ) {
otherTable = CSForm.getTable( i );


if ( otherTable.tbo.tname == table.tbo.tname ) {
continue;
}


if ( otherTable.tbo.container.id != table.tbo.container.id ) {
continue;
}




var otherTableAbove = false;
for ( var j=0; j<otherTable.tbo.entitiesToMove.length; j++ ) {
if ( otherTable.tbo.entitiesToMove[j] == table.tbo.tname ) {
otherTableAbove = true;
break;
}
}
if ( where == "above" && otherTableAbove ) {
arr.push( otherTable.tbo.tname );
} else if ( where == "below" && !otherTableAbove ) {
arr.push( otherTable.tbo.tname );
} else if ( typeof where == "undefined" ){
arr.push( otherTable.tbo.tname );
}
}

return arr;
}







function cs_fieldInTable( fieldName ) {
var inTable = null;
var numTables = CSForm.getNumberOfTables();
for ( var i=0; i<numTables; i++ ) {
var tbl = CSForm.getTable(i);
for ( var j=0; j<tbl.tbo.fnames.length; j++ ) {
if ( fieldName == tbl.tbo.fnames[j] ) {
inTable = tbl.tbo.tname;
break;
}
}
}
return inTable;
}





function cs_updateRowCounts() {
var dtClientFld = CSForm.getField( "DFS__DTClient" );
if ( dtClientFld ) {
var str = "";
var numTables = CSForm.getNumberOfTables();
for ( var i=0; i<numTables; i++ ) {
var tbl = CSForm.getTable(i);
var newRows = tbl.getNumberOfRows() - tbl.tbo.originalRows;
var rowCtrls = tbl.cs_getTableRowControlCode();

if ( tbl.isDynamic() && ( newRows > 0 || tbl.tbo.startingRowControl != rowCtrls ) ) {
str += tbl.tbo.tname + ":" + newRows + ":" + rowCtrls + " ";
}
}
dtClientFld.setValue( str );
}
}



function cs_getShape( tableName, rowIdx, shapeName ) {
var shape      = undefined;
var prefixList = [ "imageWrapper_", "textWrapper_", "hyperlinkWrapper_", "" ];   

for ( var pIdx = 0; pIdx < prefixList.length && !shape; ++pIdx ) {
shape = csget( prefixList[pIdx] + "DTB__" + tableName + "_" + rowIdx + "_" + shapeName );
if ( shape ) break;
}

return shape;
}










function cs_getOfflineRows( tname ) {
var dtClientFld = CSForm.getField( "DFS__DTClient" );
if ( dtClientFld ) {
var str = dtClientFld.getValue();
var tables = str.split(" ");
for ( var i=0; i<tables.length-1; i++ ) {
var ary = tables[i].split(":");
if ( ary[0] == tname ) {
return parseInt( ary[1] );
}
}
}
return 0;  
}




function cs_showTabindex() {
var form = document.forms[0];
for ( var i=0; i<form.elements.length; i++ ) {
var el = form.elements[i];
if ( el.tabIndex && el.tabIndex != 0 ) {
el.onmouseover = function () { cs_trace( this.id + ": " + this.tabIndex, 1); }
}
}
}














function cs_sortTableFieldNames( table ) {
var fnames = table.tbo.fnames;
var flist = [];
var map = [];


for ( var i = 0; i < fnames.length; i++ ) {
var f = table.getAt( 0, fnames[i] );
var ti = f.getTabIndex();
if (f.getType() == "Barcode") {
ti = Infinity;
}
map[i] = { name: fnames[i], order: ti };
}


map.sort( cs_compareProperty( "order", "Numeric" ) );


for ( var i = 0; i < map.length; i++ ) {
flist.push( map[i].name );
}


table.tbo.fnames = flist;
}








CSExt.dispatchTableUserScript = function( table, evt ) {

var tname = table.tbo.tname;
var func_ch = tname + evt;
if (window[func_ch]) {

var event = (window.event) ? window.event : "";
window[func_ch]( table, event );
}

}








CSTable_Obj.prototype.isDynamic = function() {
return this.tbo.dynamic;
}






CSTable_Obj.prototype.addRows = function( rows ) {
var rowsToAdd = parseInt( rows );
var rowsAdded = 0;
if ( rowsToAdd > -1 ) {
cs_addRows( this.tbo.tname, rowsToAdd );
rowsAdded = rowsToAdd;
}
return rowsAdded;
}









CSTable_Obj.prototype.deleteRows = function( rows, index ) {
var rowsToRemove = parseInt( rows );
var idx = parseInt( index );
var rowsRemoved = 0;
if ( rowsToRemove > -1 && ( idx > -1 && idx <= this.tbo.rows ) ) {
for ( var i=0; i<rowsToRemove; i++ ) {
if ( this.tbo.rows > 0 ) {
cs_removeRow( this.tbo.tname, idx );
rowsRemoved++;
}
}
}
return rowsRemoved;
}






CSTable_Obj.prototype.setRowAdditionAllowed = function( b ) {
var display = ( b == true || b == "true" ) ? "block" : "none";
this.tbo.addButton.style.display = display;
this.tbo.rowAdditionAllowed = (display == "block") ? true : false;
this.tbo.rowcontrolChanged = true;
cs_updateRowCounts();
}







CSTable_Obj.prototype.setRowRemovalAllowed = function( b ) {
var display = ( b == true || b == "true" ) ? "block" : "none";
for ( var i=0; i<this.tbo.rows; i++ ) {
var btn = csget( "DFS__" + this.tbo.tname + "_removeRow_" + i );  
if ( btn ) {
btn.style.display = display;
}
}
this.tbo.rowRemovalAllowed = (display == "block") ? true : false;
this.tbo.rowcontrolChanged = true;
cs_updateRowCounts();
}






CSTable_Obj.prototype.isRowAdditionAllowed = function() {
return this.tbo.rowAdditionAllowed;
}






CSTable_Obj.prototype.isRowRemovalAllowed = function() {
return this.tbo.rowRemovalAllowed;
}






CSTable_Obj.prototype.getMaximumRows = function() {
var rows;
if ( this.isDynamic() ) {
rows = this.tbo.maxRows;
} else {
rows = this.tbo.rows;
}
return rows;
}






CSTable_Obj.prototype.cs_getNumberOfDynamicRows = function() {
var dRows;
if ( this.isDynamic() ) {
dRows = this.tbo.rows - this.tbo.originalRows;
} else {
dRows = 0;
}
return dRows;
}








CSTable_Obj.prototype.cs_getTableRowControlCode = function() {
var rowCtrls = 0;
if ( !this.tbo.rowRemovalAllowed )  rowCtrls = 1;
if ( !this.tbo.rowAdditionAllowed ) rowCtrls = 2;
if ( !this.tbo.rowAdditionAllowed && !this.tbo.rowRemovalAllowed ) rowCtrls = 3;
return rowCtrls;
}








CSTable_Obj.prototype.cs_setTableRowControlCode = function( code ) {
switch ( code ) {
case 3:
this.tbo.rowAdditionAllowed = false;
this.tbo.rowRemovalAllowed  = false;
break;

case 2:
this.tbo.rowAdditionAllowed = false;
this.tbo.rowRemovalAllowed  = true;
break;

case 1:
this.tbo.rowAdditionAllowed = true;
this.tbo.rowRemovalAllowed  = false;
break;

case 0:
this.tbo.rowAdditionAllowed = true;
this.tbo.rowRemovalAllowed  = true;
break;

default:
break;
}
}


var CSCanvases = {};

CSCanvas.DRAWING_CURSOR = "pointer";
CSCanvas.DEFAULT_CURSOR = "default";
CSCanvas.GUIDE_COLOR    = "#c0c0c0";
CSCanvas.GUIDE_WIDTH    = 3;
CSCanvas.fieldPrefix    = "";
CSCanvas.fieldSuffix    = "";
CSCanvas.addGuideAsInk  = false;
CSCanvas.insertingGuide = false;









function CSCanvas( canvasID, initData, bgColor, bgImage, guide ) {
this.debug = false;
if (canvasID) {
this.name   = canvasID;
this.canvas = document.getElementById( canvasID );
var loc   = CSUtil.getDim( this.canvas );
this.ctx  = this.canvas.getContext("2d");
this.guide = parseInt(guide) || 0;
if (this.ctx) {
this.x    = loc.x;
this.y    = loc.y;
this.w    = 0;
this.h    = 0;
this.ver  = "";
this.data = "";
this.type = "";
this.strokes = new Array();
this.waitForInitDraw = false;
this.penColor = "";
this.penWidth = 0;
this.backgroundColor = "";


if (initData) {
this.parseData( initData );
}

if (this.type == "LOIC") {
this.field = document.getElementById( CSCanvas.fieldPrefix + canvasID.replace( /INK__/, "") + CSCanvas.fieldSuffix );
this.baseLOICOutput = "av " + this.ver + "&" + "ex " + this.w + "," + this.h + "&";
if (initData && this.field) {
this.field.value = initData;
}
}

if (!bgColor) {
bgColor = "#ffffff";
}
this.setBackgroundColor( bgColor );
if (this.debug) cs_trace( this.name + " bg: " + bgColor,  1 );


if (bgImage) {
this.bgImage = bgImage;
this.waitForInitDraw = true;
this.createBGImage();
} else {

this.drawInitialData( this.data );
}

if (!CSCanvases[ canvasID ]) {
CSCanvases[ canvasID ] = this;
}
}
}
return this;
}





CSCanvas.prototype.getType = function() {
return this.type;
}






CSCanvas.prototype.setType = function( t ) {
this.type = t;
}




CSCanvas.prototype.insertWritingGuide = function( addGuideAsInk ) {
if (this.guide == 0) return;

CSCanvas.insertingGuide = true;
if (typeof addGuideAsInk != "undefined") {
CSCanvas.addGuideAsInk = addGuideAsInk;
}


var color = this.ctx.strokeStyle;
var width = this.ctx.lineWidth;

this.setPenColor( CSCanvas.GUIDE_COLOR );
this.setPenWidth( CSCanvas.GUIDE_WIDTH );

var yStart = parseInt(this.h * 0.66);
var xStart = parseInt(this.w * 0.12);
var xLineEnd = parseInt(this.w * 0.88);

if (this.guide == 2) {

this.drawLine( xStart, yStart, xStart + 16, yStart + 22 );
this.drawLine( xStart + 16, yStart, xStart, yStart + 22 );
}
if (this.guide >= 1) {

this.drawLine( xStart, yStart + 22 + 3, xLineEnd, yStart + 22 + 3 );
}
if (!CSCanvas.addGuideAsInk) {
this.strokes = new Array();
}


this.setPenColor( color );
this.setPenWidth( width );
CSCanvas.insertingGuide = false;
}




CSCanvas.prototype.drawLine = function( x1, y1, x2, y2 ) {
this.createNewStroke( x1, y1 );
this.addPointToCurrentStroke( x2, y2 );
CSCanvas.endStroke( this.name ); 
this.drawStrokes();
}




CSCanvas.prototype.clear = function() {  
this.ctx.clearRect( 0, 0, this.canvas.width, this.canvas.height );
this.strokes = new Array();

this.setBackgroundColor( this.backgroundColor );
if (this.debug) cs_trace( this.name + " bg: " + this.backgroundColor,  1 );


if (this.bgImage) {        
this.waitForInitDraw = true;
this.createBGImage();
} 
this.insertWritingGuide( false );
}






CSCanvas.prototype.addPointToCurrentStroke = function( x, y ) {
var stroke = this.strokes[ this.strokes.length - 1 ];
if (stroke) {
stroke.addPoint(x, y );
}

}







CSCanvas.prototype.createNewStroke = function( x, y ) {
var color = this.ctx.strokeStyle;
var width = this.ctx.lineWidth;
var stroke = new CSCanvas.Stroke( color, width );
if (x && y) {
stroke.addPoint( x, y );
}
this.strokes[ this.strokes.length ] = stroke;
}




CSCanvas.prototype.getCurrentStroke = function() {
return this.strokes[ this.strokes.length - 1 ];
}





CSCanvas.prototype.oninkready = function() {
this.cacheStrokes();
if (!CSCanvas.insertingGuide) {
if (this.field.onchange) this.field.onchange();
CS_FireOnChange( this.field );
cs_destroyTooltip();
}
}





CSCanvas.prototype.cacheStrokes = function() {
if (this.getType() == "LOIC") {
var out = this.baseLOICOutput;
for (var s = 0; s < this.strokes.length; ++s ) {
var stroke = this.strokes[ s ];
if (stroke) {
if (s != 0) {
out += "&";
}
out += "sc " + CSCanvas.hexToRGBString( stroke.getColor() ) + "&";
out += "sw " + stroke.getWidth() + "&";
out += "pt ";
var points = stroke.getPoints();
for (var p = 0; p < points.length; ++p ) {
if (p != 0) {
out += ":";
}
var point = points[ p ];
out += point.x + "," + point.y;
}
}
}
this.field.value = out;
}

}





CSCanvas.prototype.drawStrokes = function() {
for (var s = 0; s < this.strokes.length; ++s ) {
var stroke = this.strokes[ s ];
if (stroke) {
this.ctx.strokeStyle = stroke.getColor();
this.ctx.lineWidth   = stroke.getWidth();
this.ctx.beginPath();

var points = stroke.getPoints();
for (var p = 0; p < points.length; ++p ) {
var point = points[ p ];
var x = point.x;
var y = point.y;
if (p == 0) {
this.ctx.moveTo( x, y );
} else {
this.ctx.lineTo( x, y );
}
x = 0; y = 0;
}
this.ctx.stroke();
}
}
}




CSCanvas.prototype.getPenColor = function() {
return this.penColor;
}






CSCanvas.prototype.setPenColor = function( color ) {
this.ctx.beginPath();
this.ctx.strokeStyle = color;
this.penColor = color;
}




CSCanvas.prototype.getBackgroundColor = function() {
return this.backgroundColor;
}





CSCanvas.prototype.setBackgroundColor = function( color ) {

this.ctx.fillStyle = color;
this.ctx.fillRect( 0, 0, this.w, this.h );
this.backgroundColor = color;
this.drawStrokes();
}




CSCanvas.prototype.getPenWidth = function() {
return this.penWidth;
}





CSCanvas.prototype.setPenWidth = function( width ) {
this.ctx.beginPath();
this.ctx.lineWidth = parseInt( width );
this.penWidth = width;
}






CSCanvas.prototype.parseData = function( data ) {
var fmt = "none";
if (data && data.length > 0 && data.substr( 0, 8 ) == "av 1&ex ") {

fmt = "LOIC";
this.setType( fmt );
try {
var parts = data.split( "&" );
var verPart = parts[0];
this.ver = verPart.split( " " )[1];
var extPart = parts[1];
var xy = extPart.split( " " )[1];
this.w = parseInt( xy.split( "," )[0] );
this.h = parseInt( xy.split( "," )[1] );
var beginDataPos = verPart.length + extPart.length + 2;
this.data = data.substr( beginDataPos, data.length );

} catch( e ) {
cs_trace( "LOIC parse failed", 1, "red" );
}
}

if (this.debug) cs_trace( this.name + " format: " + fmt, 1 );
}






CSCanvas.prototype.drawInitialData = function( data ) {
this.insertWritingGuide( false );
if (data) {
if (data && data.length > 0 && this.getType() == "LOIC") {

this.drawLOIC( data );
}
}

}




CSCanvas.prototype.getSignature = function() {
return this.field.value;
}




CSCanvas.prototype.setSignature = function( data ) {
if (data) {
if (data && data.length > 0 && this.getType() == "LOIC") {

this.drawLOIC( data );
}
}
}






CSCanvas.prototype.drawLOIC = function( data ) {
if (this.debug) cs_trace( "Begin LOIC drawing.", 1 );
var dataParts = data.split( "&" );
for(var idx in dataParts) {
var subParts = dataParts[ idx ].split( " " );
var pi = subParts[0];
var dx = subParts[1];
if (pi == "sc") {

this.ctx.strokeStyle = "rgb(" + dx + ")";
this.penColor = CSCanvas.rgbToHexString( dx );
} else if (pi == "sw") {

this.ctx.lineWidth = dx;
} else if (pi == "pt") {

this.ctx.beginPath();

this.createNewStroke( x, y );

var pts = dx.split( ":" );
for (var pdx in pts) {
var pt = pts[pdx];
var x = parseInt( pt.split( "," )[0] );
var y = parseInt( pt.split( "," )[1] );
this.addPointToCurrentStroke( x, y );
if (pdx == 0) {
this.ctx.moveTo( x, y );
} else {
this.ctx.lineTo( x, y );
}
x = 0; y = 0;
}
this.ctx.stroke();
}
}
if (this.debug) cs_trace( "Drawing complete: " + this.name, 1 );
}




CSCanvas.prototype.createBGImage = function() {
if (this.bgImage) {
var i    = this.bgImage;
var img  = new Image();
this.img = img;
img.canvas = this;
img.onload = function() {
this.canvas.ctx.drawImage( this.canvas.img, i.x, i.y, i.w, i.h );
if (this.canvas.debug) cs_trace( "Loading image... " + this.canvas.name, 1 );
if (this.canvas.waitForInitDraw) {
if (this.canvas.debug) cs_trace( "Drawing... " + this.canvas.name, 1 );
this.canvas.drawInitialData( this.canvas.data );
}
if (this.debug) cs_trace( "image complete: " + this.canvas.name, 1 );
}
img.src = i.src;
}
}





CSCanvas.prototype.getDrawingEnabled = function() {
return this.drawingEnabled;
}





CSCanvas.prototype.setDrawingEnabled = function( b ) {
this.drawingEnabled = b;
var useCursor = (b) ? CSCanvas.DRAWING_CURSOR : CSCanvas.DEFAULT_CURSOR;
this.canvas.onmouseover = this.canvas.style.cursor = useCursor;
}






CSCanvas.beginStroke = function ( canvasID, evt ) {

var cnv = CSCanvases[ canvasID ];
if (cnv) {
var x = evt.clientX - cnv.x;
var y = evt.clientY - cnv.y;
if (x >= 0 && y >= 0 && x <= cnv.w && y <= cnv.h) {
cnv.ctx.moveTo( x, y );

cnv.createNewStroke( x, y );
}
}
}







CSCanvas.drawStroke = function ( canvasID, evt ) {

var cnv = CSCanvases[ canvasID ];
if (cnv) {
var x = evt.clientX - cnv.x;
var y = evt.clientY - cnv.y;
if (x >= 0 && y >= 0 && x <= cnv.w && y <= cnv.h) {
cnv.addPointToCurrentStroke( x, y );
} else {

}
cnv.ctx.lineTo( x, y );
cnv.ctx.stroke();

}
}





CSCanvas.endStroke = function ( canvasID ) {

var cnv = CSCanvases[ canvasID ];
if (cnv) {
cnv.oninkready();
}
}





CSCanvas.hexToRGBString = function ( hex ) {
hex = (hex.charAt(0) == "#") ? hex.substring( 1, 7 ) : hex;
var r = parseInt( hex.substring( 0, 2 ), 16 );
var g = parseInt( hex.substring( 2, 4 ), 16 );
var b = parseInt( hex.substring( 4, 6 ), 16 );
return r + "," + g + "," + b;
}





CSCanvas.rgbToHexString = function ( rgb ) {
var decToHex="";
var arr = new Array();
var numStr = new String();
numStr = rgb;
arr = numStr.split(",");
for(var i=0;i<3;i++) {
var hexArray = new Array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" );
var code1 = Math.floor(arr[i] / 16);
var code2 = arr[i] - code1 * 16;
decToHex += hexArray[code1];
decToHex += hexArray[code2];
}
return "#" + decToHex;
}







CSCanvas.Stroke = function( color, width ) {
this.color = color;
this.width = width;
this.points = new Array();

}




CSCanvas.Stroke.prototype.getColor = function() {
return this.color;
}




CSCanvas.Stroke.prototype.getWidth = function() {
return this.width;
}




CSCanvas.Stroke.prototype.getPoints = function() {
return this.points;
}






CSCanvas.Stroke.prototype.addPoint = function( x, y ) {
this.points[ this.points.length ] = { x:x, y:y };
}






CSCanvas.doMouseDown = function ( e ) {
var evt = (window.event) ? event : arguments[0];
this.el = (window.event) ? event.srcElement : arguments[0].target;

var cnv = CSCanvases[ this.el.id ];
if (!cnv || !cnv.drawingEnabled) return;
CSCanvas.beginStroke( this.el.id, evt );


if ((CSUtil.isIE || CSUtil.isSafari) && evt.button != 1) {
return;
}
if (!CSUtil.isIE && !CSUtil.isSafari && evt.button != 0) {
return;
}

if ( this.el.tagName.toUpperCase() == "CANVAS" ) {
this.mm_x = evt.clientX;
this.mm_y = evt.clientY;
document.onmousemove = CSCanvas.doMouseMove;
}
}





CSCanvas.doMouseMove = function ( e ) {
var evt = (window.event) ? event : arguments[0];
if ( CSCanvas.el ) {
CSCanvas.drawStroke( CSCanvas.el.id, evt );
}
}




CSCanvas.doMouseUp = function  () {

if ( CSCanvas.el != null ) {
CSCanvas.endStroke( CSCanvas.el.id );
CSCanvas.el = null;
document.onmousemove = CSUtil.getMouseXY;
}
}












var CSInk = {
iSign_cabversion: "3.1.0.5049",
iSign_codebase: "iSign.cab",
iSign_classid: "clsid:93E5204A-4344-4381-8912-8A7091E0FAE5",
LOImg_cabversion: "1,0,0,6",
LOImg_codebase: "LOImgCtrl.cab",
LOImg_classid: "clsid:7D433378-9569-4F7D-AB1C-D9A6EEF028D0",
inkpics: new Array(),
first: new Array(),
hasFocus: "",
clearMouseoverFocus: false,
initDelay: 1000      
}


function CSInk_Obj( fldName ) {
if (!fldName) return null;
var inkname = "INK__" + fldName;

this.name = inkname;
this.fldName = fldName;
this.ax    = csget( inkname );
this.wrp   = csget( "inkWrapper_" + fldName );
this.fld   = csget( fldName );
this.bgdiv = csget( "DFS__inkBG_Wrapper_" + fldName );
this.img   = csget( "DFS__inkBG_" + fldName );
this.axSupported = CSUtil.isIE;
this.cvSupported = CSUtil.isFF || CSUtil.isSafari;


if ( !CSInk.inkpics[ fldName ] ) {
CSInk.inkpics[ fldName ] = this;
}
}

CSInk.getInkPicture = function ( inkname ) {
return CSInk.inkpics[ inkname ];
}

CSInk.removeInkPicture = function ( inkname ) {
var inkObj = CSInk.inkpics[ inkname ];
if ( inkObj ) {
var inkProps = CSInk.inkProps[ inkname ];
var wrp = csget( inkObj.wrp.id );
var fld = csget( inkObj.fld.id );
fld.parentNode.removeChild( fld );
wrp.parentNode.removeChild( wrp );
delete CSInk.inkProps[ inkname ];
delete CSInk.inkpics[ inkname ];
delete CSExt.f[ inkname ];
delete CSExt.f[ "INK__" + inkname ];
inkObj = null;
}
}











CSInk.createInk = function( name ) {

var ink = null;
var inkname  = "INK__" + name;
var inkObj   = CSInk.getInkPicture( name );
var wrapper  = inkObj.wrp;
var inkProps = CSInk.inkProps[ name ];
var width    = parseInt( inkProps.width * CSExt.physSize.baseShim );
var height   = parseInt( inkProps.height * CSExt.physSize.baseShim );

if ( !CSUtil.isIE ) {


var cnvs = document.createElement( "canvas" );
cnvs.setAttribute( "id", inkname );
cnvs.setAttribute( "width", width );
cnvs.setAttribute( "height", height );
wrapper.appendChild( cnvs );

var fldData = "";
var fld = inkObj.fld;
if (fld && fld.value != "" && fld.value.indexOf( "av 1&ex" ) != -1) {
fldData = fld.value;
} else {
fldData = "av 1&ex " + width + "," + height +
"&sc "+ CSCanvas.hexToRGBString( inkProps.inkcolor ) +
"&sw "+ inkProps.inkwidth;
}


var bgImgObj = {};
if (inkObj.bgdiv != null) {
bgImgObj.src = decodeURI( inkObj.img.src );
bgImgObj.x = parseFloat(inkObj.img.offsetLeft);
bgImgObj.y = parseFloat(inkObj.img.offsetTop);
bgImgObj.w = parseFloat(inkObj.img.offsetWidth);
bgImgObj.h = parseFloat(inkObj.img.offsetHeight);

inkObj.bgdiv.style.display = "none";
} else {
bgImgObj = null;
}
inkObj.cnvObj = new CSCanvas( inkname, fldData, inkProps.bgColor, bgImgObj, inkProps.guide );
inkObj.cnvObj.setDrawingEnabled( true );




} else {  


var classid = this.iSign_classid;
var cabversion = this.iSign_cabversion;
var codebase = this.iSign_codebase;

if ( inkProps.SupportSigningDevices !== "true" ) {

classid = this.LOImg_classid;
cabversion = this.LOImg_cabversion;
codebase = this.LOImg_codebase;
}










if ( !inkObj.ax ) {   

wrapper.innerHTML = "<object codeBase=\"" + CSExt.staticpath + codebase +
"#version="+ cabversion + "\">" + "</object>";

ink = wrapper.firstChild;
ink.classid = classid;
wrapper.appendChild( inkObj.fld );
} else {
ink = wrapper.firstChild;    
}

ink.width = width;
ink.height = height;
ink.id = inkname;
ink.setAttribute( "name", inkname );

ink.onmouseover = function () {

CSInk.inkSetFocus( this.id.replace(/INK__/, "") );
CSInk.checkInkReadyAttached( this.id );
};
ink.onmouseout = cs_destroyTooltip;
ink.onmousemove = CSUtil.getMouseXY;
ink.tooltip = inkProps.tooltip;

wrapper.onmouseover = csmouseover;
wrapper.onmouseout = csmouseout;


inkObj.ax = ink;


ink.BorderStyle = 0;
inkObj.setBackgroundColor( inkProps.bgcolor );
inkObj.setInkColor( inkProps.inkcolor );
inkObj.setWritingGuide( inkProps.guide );
inkObj.setInkWidth( inkProps.inkwidth );



if ( inkObj.axSupported ) {


if (inkObj.ax.attachEvent) {
inkObj.ax.attachEvent("oninkready", make_callback( inkObj.fld, inkObj.ax ));
}


window.setTimeout( "CSInk.setTimeout('" + inkObj.name + "');", 0);

} 

}



return ink;


function make_callback( fld, ink ) { 
return function() {
fld.value = ink.Signature;  
fld.onchange();
CS_FireOnChange(fld);
cs_destroyTooltip();
}
}
}

CSInk.checkInkReadyAttached = function( inkid ) {
var ink = csget( inkid );
if ( !ink.oninkreadyAttached ) {
ink.oninkreadyAttached = true;
CSInk.createInk( inkid.replace(/INK__/, "") );
}
}

CSInk.setTimeout = function( inkname ) {
var ink = csget( inkname );
if ( ink.Initialized == 1 ) {
ink.Timeout = 0;
} else {
window.setTimeout( "CSInk.setTimeout('" + ink.id + "');", CSInk.initDelay );
}
}



CSInk.initializeInk = function() {



for (var name in CSInk.inkpics) {
var csink = CSInk.getInkPicture( name );
if ( csink.ax ) {
CSInk.initOneInk( name );
}
}
CSInk.inkIDFirstFocusTargets();


}

CSInk.inkIDFirstFocusTargets = function() {
for ( var p=1; p<=CSExt.countPage; p++ ) {
var lowest = 9999;
for ( var inkName in CSInk.inkProps ) {
var inkProps = CSInk.inkProps[ inkName ];
if ( inkProps.page == p ) {
if ( Math.min( inkProps.order, lowest ) < lowest ) {
CSInk.first[ inkProps.page ] = inkName;
lowest = inkProps.order;
}
}
}
}
}

CSInk.inkSetFocusToFirstInk = function() {
if ( CSInk.first[ CSExt.VisiblePage ] ) {
CSInk.inkSetFocus( CSInk.first[ CSExt.VisiblePage ] );
}
}



CSInk.initOneInk = function( name ) {
window.setTimeout( "CSInk.initOneInkII('" + name + "');", 500);

}

CSInk.initOneInkII = function( name ) {

var csink = CSInk.getInkPicture( name );
var ink = csink.ax;
var csfld = new CSField_Obj( csink.fld );


cs_fldi( ink );


if ( csink.bgdiv ) {
if ( csink.axSupported ) {
var src = decodeURI( csink.img.src );
src = src.replace( /^file:\/\/\//, "" );     
if ( typeof ink.loadImage == "unknown" ) {
ink.loadImage( src, 0 );
}
csink.bgdiv.style.display = "none";   
}
csink.bgdiv.appendChild( csink.img );
csink.wrp.appendChild( csink.bgdiv );
}


if (csink.axSupported && ink) {


if ( !csfld.cs_isEmpty() ) {

csfld.setReadOnly(true);
}


var lockedBy = CSExt.f[ name ].fmt.lockedBy;
if ( lockedBy ) {
var isReadOnly = CSExt.f[ name ].fmt.lockedBy["CSField.setReadOnly"];
if ( isReadOnly ) {   
csink.setEnabled( false );

}
}


if ( csink.fld.value != "" ) {
var val = csink.fld.value;


var idx = val.indexOf("|av 1&ex ");
if ( idx != -1 ) {
val = val.substring( idx + 1 );
}

try {                          
ink.Signature = val;
} catch(e2) { cs_trace( "Error in ink init:" + e2, 0, "red");}
}

}


if ( !csink.axSupported && !csfld.cs_isEmpty() ) {









var img = document.createElement('img');
img.setAttribute('id', "IMG__" + csink.fld.id);
with (img.style) {
width = "100%";
height = "100%";

}
csink.wrp.appendChild( img );


var fullurl = document.location.href;
fullurl = fullurl.split("?");
var url = fullurl[0];

var serverCommand = "GetInkPicture";

var FPNodeIDField = cs_getQSValue("DFS__FormPacketNodeID");
var FPNodeID = (FPNodeIDField != "") ? FPNodeIDField : null;

var FPNodeIDT3 = (document.htmlform.DFS__T3) ? document.htmlform.DFS__T3.value : "";
if (!FPNodeID) {
FPNodeID = FPNodeIDT3;
}                                                                       

if (FPNodeID) {
serverCommand = "GetFormPacketNodeInkPicture";
}

var theGetInkPart = "?DFS__Action=" + serverCommand + "&DFS__Field=";

var eventField = (document.htmlform.DFS__EventID) ? document.htmlform.DFS__EventID.value : "";

var eventID = (eventField != "") ? eventField : null;                   

var trackerID = cs_getQSValue("DFS__TrackerID");                        


var imgsrc = url + theGetInkPart + csink.fld.id;
if (eventID) {
imgsrc +=  "&DFS__EventID=" + eventID;
} else if (trackerID) {
imgsrc += "&DFS__TrackerID=" + trackerID;
} else {
imgsrc = "";
}
if (imgsrc != "" && FPNodeID) {
imgsrc += "&DFS__FormPacketNodeID=" + FPNodeID;
}    




if ( imgsrc != "" ) {
img.src = imgsrc;

}


window.setTimeout( "CSInk.checkImg('" + img.id + "', 0);", 250);


if (CSUtil.isSafari || CSUtil.isME) {
img.style.position = "absolute";
img.style.top = "0px";
img.style.left = "0px";
if (CSUtil.isME) img.style.left = "0px";
}

} 



}


CSInk.checkImg = function ( imgID, cnt ) {
var img = csget( imgID );

if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
if ( cnt < 8 ) {

window.setTimeout( "CSInk.checkImg('" + imgID + "', " + ++cnt + ");", 250);
} else {

img.parentNode.removeChild( img );

}
}
}


CSInk.loadInkPicsByPage = function( page ) {
var inksList = CSInk.inkProps;
if ( inksList ) {
for ( var name in inksList ) {
var inkProps = inksList[name];
if ( inkProps.page == page ) {
var inkObj = CSInk.getInkPicture( name );
var wrapper = inkObj.wrp;
var inkAx = inkObj.ax;


if ( !inkAx && CSExt.defaultView == CS_PAGED_MODE ) {
CSInk.createInk ( name );
if ( !CSExt.DFS__DHTML_OnLoad ) {
CSInk.initOneInk( name );
}
}
}
}
}
}

CSInk.getActiveInkPicture = function() {
return this.hasFocus;
}


CSInk_Obj.prototype.isEnabled = function () {
var ret = null;
if ( this.axSupported ) {
if ( this.ax.Enabled == 0 )
ret = false;
else if ( this.ax.Enabled == 1 )
ret = true;
} else if (this.cvSupported) {
ret = this.cnvObj.getDrawingEnabled();
}
return ret;
}
CSInk_Obj.prototype.setEnabled = function ( b ) {
if (this.axSupported) {
if ( b || b == 1 ) {
this.ax.Enabled = 1;
CSInk.hasFocus = this.name;
} else if ( !b || b == 0 )  {
this.ax.Enabled = 0;
}

} else if (this.cvSupported) {
this.cnvObj.setDrawingEnabled( b );
}
}

CSInk.inkSetFocus = function( targetName ) {

var csfld = new CSField_Obj( this.inkpics[ targetName ].fld );

if (!csfld.isReadOnly()) {
for (var inkName in CSInk.inkpics) {
var inkObj = CSInk.getInkPicture( inkName );
if ( inkObj.ax ) {
inkObj.setEnabled( inkName == targetName );

if ( CSInk.clearMouseoverFocus ) {
inkObj.ax.onmouseover = function () { CSExt.OnMouseOver_bEP.ToolTip( this ) };
}
}
}
} else {

}
}


CSInk_Obj.prototype.getBackgroundColor = function () {
if (this.axSupported) {
return this.rgbToGbr(cs_format_rgb(cs_decToHex(this.ax.BackgroundColor)));
} else if (this.cvSupported) {
return this.cnvObj.getBackgroundColor();
} else {
return cs_format_rgb( this.wrp.style.backgroundColor );
}
}

CSInk_Obj.prototype.setBackgroundColor = function ( rbg ) {

if (rbg == "") rbg = "ffffff";
rbg = rbg.replace(/#/,"");
if (rbg.toLowerCase() == "transparent") return;
if (rbg.length > 6) return;
var clr = cs_hexToDec(this.rgbToGbr(rbg));
CSInk.inkProps[ this.fldName ].bgcolor = rbg;
this.wrp.style.backgroundColor = "#" + rbg;
if ( this.ax ) {
this.ax.BackgroundColor = clr;
} else if (this.cnvObj) {
this.cnvObj.setBackgroundColor( "#" + rbg );
}
}


CSInk_Obj.prototype.getBorderColor = function () {
return this.wrp.style.borderColor;
}

CSInk_Obj.prototype.setBorderColor = function ( rbg ) {

this.wrp.style.borderColor = rbg;
}


CSInk_Obj.prototype.getBorderWidth = function () {
return this.wrp.style.borderLeftWidth;
}

CSInk_Obj.prototype.setBorderWidth = function ( n ) {

if ( !isNaN(n) ) {
this.wrp.style.borderWidth = n;
}
}


CSInk_Obj.prototype.getInkColor = function () {
if (this.axSupported) {
return this.rgbToGbr(cs_format_rgb(cs_decToHex(this.ax.InkColor)));
} else if (this.cvSupported) {
return this.cnvObj.getPenColor();
} else {
return "";
}
}

CSInk_Obj.prototype.setInkColor = function ( rbg ) {
if (rbg == "") rbg = "#000000";
if (this.axSupported) {
rbg = rbg.replace(/#/,"");
if (rbg.toLowerCase() == "transparent") return;
var clr = cs_hexToDec(this.rgbToGbr(rbg));
CSInk.inkProps[ this.fldName ].inkcolor = rbg;
if ( this.ax ) {
this.ax.InkColor = clr;
}
} else if (this.cvSupported) {
this.cnvObj.setPenColor( rbg );
CSInk.inkProps[ this.fldName ].inkcolor = rbg;
}
}


CSInk_Obj.prototype.getInkWidth = function () {
if (this.axSupported) {
return this.ax.InkWidth;
} else if (this.cvSupported) {
return this.cnvObj.getPenWidth();
} else {
return "";
}
}
CSInk_Obj.prototype.setInkWidth = function ( n ) {
if (this.axSupported) {
n = parseInt(n);
if ( !isNaN(n) ) {
this.ax.InkWidth = n;
}
} else if (this.cvSupported) {
this.cnvObj.setInkWidth( n );
}
}


CSInk_Obj.prototype.hasWritingGuide = function () {
if (this.axSupported) {
return this.ax.WritingGuide;
} else {
return "";
}
}
CSInk_Obj.prototype.setWritingGuide = function ( n ) {
if (this.axSupported) {
n = parseInt(n);
if ( !isNaN(n) ) {
CSInk.inkProps[ this.fldName ].guide = n;
if ( this.ax ) {
this.ax.WritingGuide = n;
}
}
}
}


CSInk_Obj.prototype.getSignature = function () {
if (this.axSupported) {
return this.ax.Signature;
} if (this.cvSupported) {
return this.cnvObj.Signature;
} else {
var inkfld = new CSField_Obj( this );
return inkfld.getValue();
}
}
CSInk_Obj.prototype.setSignature = function ( val ) {
if (this.axSupported || this.cvSupported) {
var csfld = new CSField_Obj( this.fld );   
if ( CSExt.table_rebuild || !csfld.isReadOnly() ) {



var idx = val.indexOf("|av 1&ex ");
if ( idx != -1 ) {
val = val.substring( idx + 1 );
}

CSInk.inkProps[ this.fldName ].sig = val;
if (this.axSupported) {
if ( this.bgdiv && val === "" ) {
this.ax.ClearSignature();
} else {
this.ax.Signature = val;
}
} else if (this.cvSupported) {
if (val === "") {
this.cnvObj.clear();
} else {
this.cnvObj.setSignature( val );
}
}
this.fld.value = val;
} else {

}
} else if (this.cvSupported) {

} else {

this.fld.value = val; 
}
}

CSInk_Obj.prototype.undo = function () {
var inkProps = CSInk.inkProps[ this.fldName ];
if ( inkProps && this.axSupported && inkProps.SupportSigningDevices !== "true" ) {
var lockedBy = CSExt.f[ this.fldName ].fmt.lockedBy;
var enforceLock = false;
for( var lock in lockedBy ) {
enforceLock = true;
}
if ( !enforceLock ) {
this.ax.Undo();
}
}
}

CSInk_Obj.prototype.redo = function () {
var inkProps = CSInk.inkProps[ this.fldName ];
if ( inkProps && this.axSupported && inkProps.SupportSigningDevices !== "true" ) {

}
}

CSInk_Obj.prototype.rgbToGbr = function ( str ) {
return str.substr(4,2) + str.substr(2,2) + str.substr(0,2);
}

function cs_decToHex( str ) {
var result = undefined;
var n      = parseInt( str );

if (!isNaN( n )) {
if (n == 0) {
result = "000000";
} else {
result = n.toString( 16 );
}
}

return result;
}

function cs_hexToDec( str ) {
return parseInt( str, 16 );
}

function cs_rgbToBgr( str ) {
return str.substr( 4, 2 ) + str.substr( 2, 2 ) + str.substr( 0, 2 );
}

function cs_bgrToRgb( str ) {
return str.substr( 4, 2 ) + str.substr( 2, 2 ) + str.substr( 0, 2 );
}









function cs_init_barcodes() {
for ( var name in CSBarcode.barcode) {
if (CSBarcode.barcode[name].needsInit()) {
CSBarcode.barcode[name].refreshDisplay();
}
}
}

function CSBarcode( name, dimensions, zoomRatio ) {
this.name       = name;
this.dimensions = dimensions;
this.zoomRatio  = (zoomRatio == undefined) ? 1.0 : zoomRatio;

this.barcodeParams = {};

this.barcode       = null;
this.printBarcode  = null;
this.backingField  = null;
this.wrapper       = null;

for ( var param in dimensions ) {
this.setParam( param, dimensions[param] );
}
}


CSBarcode.initForm = function () {

CSBarcode.paramNameMap     = {};
CSBarcode.booleanParamList = {};
CSBarcode.objectAttributes = {};

CSBarcode.USE_APPLET       = !CSUtil.isIE || CSBarcode.forceAppletInIE;

CSBarcode.OBJECT_WIDTH                 = "ObjectWidth";
CSBarcode.OBJECT_HEIGHT                = "ObjectHeight";

CSBarcode.SYMBOLOGY_ID                 = "SymbologyId";
CSBarcode.SYMBOLOGY_NAME               = "SymbologyName";
CSBarcode.SYMBOLOGY_TYPE               = "SymbologyType";
CSBarcode.DATA_TO_ENCODE               = "BarcodeDataToEncode";

CSBarcode.BAR_COLOR                    = "BarColor";
CSBarcode.FILL_COLOR                   = "FillColor";
CSBarcode.ORIENTATION                  = "Orientation";
CSBarcode.LEFT_MARGIN                  = "LeftMargin";
CSBarcode.TOP_MARGIN                   = "TopMargin";

CSBarcode.FONT                         = "Font";
CSBarcode.FONT_NAME                    = "FontFace";
CSBarcode.FONT_SIZE                    = "FontSize";
CSBarcode.FONT_BOLD                    = "FontBold";
CSBarcode.FONT_ITALIC                  = "FontItalic";
CSBarcode.FONT_COLOR                   = "FontColor";

CSBarcode.SHOW_TEXT                    = "ShowText";
CSBarcode.BAR_HEIGHT                   = "BarHeight";
CSBarcode.NARROW_BAR_WIDTH             = "NarrowBarWidth";
CSBarcode.WIDE_TO_NARROW_RATIO         = "WideToNarrowRatio";
CSBarcode.ADD_CHECK_DIGIT              = "AddCheckDigit";
CSBarcode.ADD_CHECK_DIGIT_TO_TEXT      = "AddCheckDigitToText";
CSBarcode.CODABAR_START_CHAR           = "CodabarStartChar";
CSBarcode.CODABAR_STOP_CHAR            = "CodabarStopChar";
CSBarcode.CODE128_CHARSET              = "Code128CharSet";
CSBarcode.UPCE_SYSTEM                  = "UPCESystem";
CSBarcode.EAN_UPC_SUPPLEMENT_LENGTH    = "EANUPCSupp";
CSBarcode.EAN_UPC_SUPPLEMENT_TO_ENCODE = "EANUPCSuppToEncode";

CSBarcode.PDF_MODE                     = "PDFMode";
CSBarcode.PDF_COLUMNS                  = "PDFColumns";
CSBarcode.PDF_ROWS                     = "PDFRows";
CSBarcode.PDF_ERROR_CORRECTION_LEVEL   = "PDFCorrectionLevel";
CSBarcode.PDF_TRUNCATED                = "PDFTruncate";
CSBarcode.PDF_X_TO_Y_RATIO             = "PDFRatio";


if ( CSBarcode.USE_APPLET ) {
CSBarcode.bcTrueValue  = "Y";
CSBarcode.bcFalseValue = "N";
CSBarcode.objectAttributes["id"]      = "BCJ__#NAME#";
CSBarcode.objectAttributes["type"]    = "application/x-java-applet";
CSBarcode.objectAttributes["classid"] = {
linear: "java:com.idautomation.linear.BCApplet.class",
pdf417: "java:com.idautomation.pdf417.PDF417Applet.class"
};
CSBarcode.objectAttributes["archive"] = {
linear: "#PATH#LinearBarCode.jar",
pdf417: "#PATH#IDAPDF417.jar"
};
if ( CSUtil.isIE ) {
CSBarcode.objectAttributes["classid"] = "clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA";
CSBarcode.objectAttributes["codebase"] = {
linear: "http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0",
pdf417: "http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0"
};
}

CSBarcode.paramNameMap[CSBarcode.SYMBOLOGY_NAME]               = "CODE_TYPE";
CSBarcode.paramNameMap[CSBarcode.BAR_COLOR]                    = "BAR_COLOR";
CSBarcode.paramNameMap[CSBarcode.FILL_COLOR]                   = "BACK_COLOR";
CSBarcode.paramNameMap[CSBarcode.ORIENTATION]                  = "ROTATE";
CSBarcode.paramNameMap[CSBarcode.LEFT_MARGIN]                  = "LEFT_MARGIN";
CSBarcode.paramNameMap[CSBarcode.TOP_MARGIN]                   = "TOP_MARGIN";
CSBarcode.paramNameMap[CSBarcode.DATA_TO_ENCODE]               = "BARCODE";
CSBarcode.paramNameMap[CSBarcode.FONT]                         = "TEXT_FONT";
CSBarcode.paramNameMap[CSBarcode.FONT_COLOR]                   = "FONT_COLOR";
CSBarcode.paramNameMap[CSBarcode.SHOW_TEXT]                    = "ST";
CSBarcode.paramNameMap[CSBarcode.BAR_HEIGHT]                   = "BAR_HEIGHT";
CSBarcode.paramNameMap[CSBarcode.NARROW_BAR_WIDTH]             = "X";
CSBarcode.paramNameMap[CSBarcode.WIDE_TO_NARROW_RATIO]         = "N";
CSBarcode.paramNameMap[CSBarcode.ADD_CHECK_DIGIT]              = "CHECK_CHAR";
CSBarcode.paramNameMap[CSBarcode.ADD_CHECK_DIGIT_TO_TEXT]      = "CHECK_CHARINTEXT";
CSBarcode.paramNameMap[CSBarcode.CODABAR_START_CHAR]           = "CODABAR_START";
CSBarcode.paramNameMap[CSBarcode.CODABAR_STOP_CHAR]            = "CODABAR_STOP";
CSBarcode.paramNameMap[CSBarcode.CODE128_CHARSET]              = "CODE128_SET";
CSBarcode.paramNameMap[CSBarcode.UPCE_SYSTEM]                  = "UPCE_SYSTEM";
CSBarcode.paramNameMap[CSBarcode.EAN_UPC_SUPPLEMENT_LENGTH]    = "SUPPLEMENT";
CSBarcode.paramNameMap[CSBarcode.EAN_UPC_SUPPLEMENT_TO_ENCODE] = "SUPPLEMENT_CODE";
CSBarcode.paramNameMap[CSBarcode.PDF_MODE]                     = "MODE";
CSBarcode.paramNameMap[CSBarcode.PDF_COLUMNS]                  = "COL";
CSBarcode.paramNameMap[CSBarcode.PDF_ROWS]                     = "ROWS";
CSBarcode.paramNameMap[CSBarcode.PDF_ERROR_CORRECTION_LEVEL]   = "ECL";
CSBarcode.paramNameMap[CSBarcode.PDF_TRUNCATED]                = "TRN";
CSBarcode.paramNameMap[CSBarcode.PDF_X_TO_Y_RATIO]             = "XYR";















CSBarcode.formatColor = function( colorStr ) {
return "#" + colorStr.replace( /#/, "" );
}

CSBarcode.prototype.afterRefresh = function() {}

CSBarcode.prototype.getBarcodeParameter = function( name ) {
return this.barcode.getParameter( name );
}

CSBarcode.prototype.setBarcodeParameter = function( name, value ) {
this.barcode.setParameter( name, value );
this.barcode.refresh();
if ( CSUtil.isIE ) {
this.refreshDisplay();
}
}

CSBarcode.prototype.setType = function( value ) {
this.setParam( CSBarcode.SYMBOLOGY_TYPE, value );

if (CSUtil.isIE) {
if (value == "linear") {
this.setParam( "code", "com.idautomation.linear.BCApplet.class" );
} else {
this.setParam( "code", "com.idautomation.pdf417.PDF417Applet.class" );
}

var archive = CSBarcode.objectAttributes["archive"][value];
archive = archive.replace( /#PATH#/g, CSExt.staticpath );

this.setParam( "archive", archive );
this.setParam( "type", "application/x-java-applet" );
}
}
} else {

CSBarcode.bcTrueValue  = "1";
CSBarcode.bcFalseValue = "0";
CSBarcode.objectAttributes["id"]       = "BCX__#NAME#";
CSBarcode.objectAttributes["codebase"] = {
linear: "#PATH#IDAutomationLinear.cab",
pdf417: "#PATH#IDAutomationPDF417.cab"
};
CSBarcode.axclassid = {
linear: "clsid:5CE983F4-DF7D-4206-AD93-B1C86296A14E",
pdf417: "clsid:21547025-31F7-4b77-83F5-ACE6142705BD"
};

CSBarcode.paramNameMap[CSBarcode.SYMBOLOGY_ID]                 = "SymbologyID";
CSBarcode.paramNameMap[CSBarcode.BAR_COLOR]                    = "ForeColor";
CSBarcode.paramNameMap[CSBarcode.FILL_COLOR]                   = "BackColor";
CSBarcode.paramNameMap[CSBarcode.ORIENTATION]                  = "Orientation";
CSBarcode.paramNameMap[CSBarcode.LEFT_MARGIN]                  = "LeftMarginCM";
CSBarcode.paramNameMap[CSBarcode.TOP_MARGIN]                   = "TopMarginCM";
CSBarcode.paramNameMap[CSBarcode.DATA_TO_ENCODE]               = "DataToEncode";
CSBarcode.paramNameMap[CSBarcode.SHOW_TEXT]                    = "ShowText";
CSBarcode.paramNameMap[CSBarcode.BAR_HEIGHT]                   = "BarHeight";
CSBarcode.paramNameMap[CSBarcode.NARROW_BAR_WIDTH]             = "NarrowBarWidth";
CSBarcode.paramNameMap[CSBarcode.WIDE_TO_NARROW_RATIO]         = "Wide2NarrowRatio";
CSBarcode.paramNameMap[CSBarcode.ADD_CHECK_DIGIT]              = "AddCheckDigit";
CSBarcode.paramNameMap[CSBarcode.ADD_CHECK_DIGIT_TO_TEXT]      = "AddCheckDigitToText";
CSBarcode.paramNameMap[CSBarcode.CODABAR_START_CHAR]           = "CodabarStartCharacter";
CSBarcode.paramNameMap[CSBarcode.CODABAR_STOP_CHAR]            = "CodabarStopCharacter";
CSBarcode.paramNameMap[CSBarcode.CODE128_CHARSET]              = "Code128CharSet";
CSBarcode.paramNameMap[CSBarcode.UPCE_SYSTEM]                  = "UPCESystem";
CSBarcode.paramNameMap[CSBarcode.EAN_UPC_SUPPLEMENT_LENGTH]    = "EANUPCSupplement";
CSBarcode.paramNameMap[CSBarcode.EAN_UPC_SUPPLEMENT_TO_ENCODE] = "SupplementToEncode";
CSBarcode.paramNameMap[CSBarcode.PDF_MODE]                     = "PDFMode";
CSBarcode.paramNameMap[CSBarcode.PDF_COLUMNS]                  = "PDFColumns";
CSBarcode.paramNameMap[CSBarcode.PDF_ROWS]                     = "PDFRows";
CSBarcode.paramNameMap[CSBarcode.PDF_ERROR_CORRECTION_LEVEL]   = "PDFErrorCorrectionLevel";
CSBarcode.paramNameMap[CSBarcode.PDF_TRUNCATED]                = "Truncated";
CSBarcode.paramNameMap[CSBarcode.PDF_X_TO_Y_RATIO]             = "XtoYRatio";

CSBarcode.formatColor = function( colorStr ) {
return cs_hexToDec( cs_rgbToBgr( colorStr.replace( /#/, "" ) ) );
}

CSBarcode.prototype.afterRefresh = function() {




if (!this.barcode.classid || this.barcode.classid == "") {
this.barcode.classid      = CSBarcode.axclassid[this.getType()];
this.printBarcode.classid = CSBarcode.axclassid[this.getType()];
}

if (this.barcode.Font && this.printBarcode.Font) {
this.barcode.Font.Name   = this.printBarcode.Font.Name   = this.barcodeParams[CSBarcode.FONT_NAME];
this.barcode.Font.Size   = this.printBarcode.Font.Size   = this.barcodeParams[CSBarcode.FONT_SIZE];
this.barcode.Font.Bold   = this.printBarcode.Font.Bold   = this.barcodeParams[CSBarcode.FONT_BOLD];
this.barcode.Font.Italic = this.printBarcode.Font.Italic = this.barcodeParams[CSBarcode.FONT_ITALIC];
} else {




cs_trace( "Barcode activeX not installed", 0, "red" );
window.setTimeout( "CSBarcode.barcode[\"" + this.name + "\"].afterRefresh()", 5000 );
}
}

CSBarcode.prototype.getBarcodeParameter = function( name ) {
return this.barcode[name];
}

CSBarcode.prototype.setBarcodeParameter = function( name, value ) {
this.barcode[name] = value;
}

CSBarcode.prototype.setType = function( value ) {
this.setParam( CSBarcode.SYMBOLOGY_TYPE, value );
}
}

CSBarcode.objectAttributes["name"]  = CSBarcode.objectAttributes["id"];
CSBarcode.objectAttributes["style"] = "position:absolute; width:100%; height:100%;";

CSBarcode.booleanParamList[CSBarcode.SHOW_TEXT]               = true;
CSBarcode.booleanParamList[CSBarcode.ADD_CHECK_DIGIT]         = true;
CSBarcode.booleanParamList[CSBarcode.ADD_CHECK_DIGIT_TO_TEXT] = true;
CSBarcode.booleanParamList[CSBarcode.PDF_TRUNCATED]           = true;
} 






CSBarcode.formatBoolean = function( value ) {
return value.toLowerCase() == "true" ? CSBarcode.bcTrueValue : CSBarcode.bcFalseValue;
}

CSBarcode.getNameForParameter = function( param ) {
var result = CSBarcode.paramNameMap[param];

if (!result) {
result = param;
}

return result;
}

CSBarcode.removeBarcode = function ( name ) {
var bcObj = CSBarcode.barcode[name];

if (bcObj) {
var wrp = bcObj.getWrapper();
var fld = bcObj.getField();
var bc  = bcObj.getBarcode();

delete CSBarcode.barcode[name];
delete CSExt.f[fld.name];

wrp.parentNode.removeChild( wrp );

bc    = null;
fld   = null;
wrp   = null;
bcObj = null;
}
}





CSBarcode.prototype.getBarcode = function() {
return this.barcode;
}

CSBarcode.prototype.getWrapper = function() {
if (this.needsInit()) {
this.init();
}
return this.wrapper;
}

CSBarcode.prototype.getField = function() {
if (this.needsInit()) {
this.init();
}
return this.backingField;
}






CSBarcode.prototype.getObjectAttributes = function() {
var commonAttr = CSBarcode.objectAttributes;

var width  = parseFloat( this.getParam( CSBarcode.OBJECT_WIDTH ) ) * CSUtil.WPxPerInch;
var height = parseFloat( this.getParam( CSBarcode.OBJECT_HEIGHT ) ) * CSUtil.HPxPerInch;

var attributes = {
width: new String( width ),
height: new String( height )
};

for ( var attr in commonAttr ) {
attributes[attr] = commonAttr[attr];
}

return attributes;
}

CSBarcode.prototype.getParam = function( name ) {
return this.barcodeParams[name];
}

CSBarcode.prototype.setParam = function( name, value ) {
this.barcodeParams[name] = value;
}

CSBarcode.prototype.applyParam = function( param, value ) {   



this.setParam( param, value );

do {



if (this.needsInit()) {
break;
}

value = this.formatParam( param );




if (value == undefined) {
break;
}


this.refreshDisplay();  
} while (false);
}

CSBarcode.prototype.formatParam = function( param ) {
var value = this.getParam( param );





if (!CSBarcode.getNameForParameter( param ) || value == null) {
value = undefined;
}

if (value != undefined) {
if (CSBarcode.booleanParamList[param]) {
value = CSBarcode.formatBoolean( value );
} else if (param.toLowerCase().indexOf( "color" ) != -1) {
value = CSBarcode.formatColor( value );
} else if (param == CSBarcode.CODE128_CHARSET && value.toLowerCase() == "auto") {
value = "0";
}
}

return value;
}

CSBarcode.prototype.getBarColor = function() {
return this.getParam( CSBarcode.BAR_COLOR );
}

CSBarcode.prototype.setBarColor = function( rgb ) {
this.setParam( CSBarcode.BAR_COLOR, rgb );
}

CSBarcode.prototype.getFillColor = function() {
return this.getParam( CSBarcode.FILL_COLOR );
}

CSBarcode.prototype.setFillColor = function ( rgb ) {
this.setParam( CSBarcode.FILL_COLOR, rgb );
}

CSBarcode.prototype.setFont = function( face, size, color, bold, italic ) {
if (!face) {
face = "ARIAL";
}

if (!size) {
size = "11";
}

if (!color) {
color = "#000000";
}

this.setParam( CSBarcode.FONT, face.toUpperCase() + "|" + (bold ? "BOLD" : "NORMAL") + "|" + size );

this.setParam( CSBarcode.FONT_NAME, face );
this.setParam( CSBarcode.FONT_SIZE, size );
this.setParam( CSBarcode.FONT_COLOR, color );
this.setParam( CSBarcode.FONT_BOLD, bold );
this.setParam( CSBarcode.FONT_ITALIC, italic );
}

CSBarcode.prototype.getType = function() {
return this.getParam( CSBarcode.SYMBOLOGY_TYPE );
}

CSBarcode.prototype.needsInit = function() {
return this.barcode == null;
}

CSBarcode.prototype.refreshDisplay = function() {
var html;





if (this.needsInit()) {
this.init();
}

this.printBarcode = null;
this.barcode      = null;

this.setParam( CSBarcode.DATA_TO_ENCODE, this.getField().value );

this.setZoom( 0.8 );
html = this.getObjectHtml( "_print" );

this.setZoom( this.zoomRatio );
html += this.getObjectHtml( "_screen", "dynTableHide" );

this.wrapper.innerHTML = html;
this.wrapper.appendChild( this.backingField );

this.printBarcode = this.wrapper.firstChild;
this.barcode      = this.printBarcode.nextSibling;


this.printBarcode.style.zIndex = "0";
this.barcode.style.zIndex = this.wrapper.style.zIndex;


var showBarcode = ( this.getField().value != null && this.getField().value.length > 0 );
this.wrapper.style.display = ( showBarcode ) ? '' : "none";

this.afterRefresh();
}

CSBarcode.prototype.init = function() {         



if (!this.backingField) {
this.backingField = csget( this.name );
}
if (!this.wrapper) {
this.wrapper = this.backingField.parentNode;
}
}

CSBarcode.prototype.getObjectHtml = function( nameSuffix, cssClass ) {
var html;

html = "";

if (cssClass) {
cssClass = " class=\"" + cssClass + "\"";
} else {
cssClass = "";
}

if (!nameSuffix) {
nameSuffix = "";
}

var objAttribs = this.getObjectAttributes();

for ( var attr in objAttribs ) {
var value = objAttribs[attr];

if (value == undefined) {
continue;
} else if (value[this.getType()] != undefined) {
value = value[this.getType()];
}

value = value.replace( /#NAME#/g, this.name + nameSuffix );
value = value.replace( /#PATH#/g, CSExt.staticpath );

html += " " + attr + "=\"" + value + "\"";
}

html = "<object" + cssClass + html + ">";

for ( var param in this.barcodeParams ) {
var value = this.formatParam( param );

if (value != undefined) {
html += "<param name=\"" + CSBarcode.getNameForParameter( param ) + "\" value=\"" + value + "\"/>";
}
}

html += "</object>";



return html;
}

CSBarcode.prototype.clone = function() {
var result = new CSBarcode( this.name, this.dimensions, this.zoomRatio );

for ( var name in this.barcodeParams ) {
result.barcodeParams[name] = this.barcodeParams[name];
}

return result;
}

CSBarcode.prototype.setZoom = function( ratio ) {
for ( var name in this.dimensions ) {
this.setParam( name, new String( parseFloat( this.dimensions[name] ) * ratio ) );
}
}

CSBarcode.prototype.zoom = function( ratio ) {
this.zoomRatio = ratio;
this.setZoom( ratio );
this.refreshDisplay();
}







CSExt.KeystrokeFilter = function( fld, evt ) {

document.htmlform.DFS__ttfld = fld;
document.htmlform.DFS__tttimer = setTimeout( "cs_tt_hack();", 0);

if (!evt) evt = window.event;
if ( !CSExt.f[ fld.id ] && evt.keyCode == 13 || evt.keyCode == 3 ) {
return false;
}

return true;
}

function cs_tt_hack() {
var fld = document.htmlform.DFS__ttfld;
var fmt = CSExt.f[fld.name].fmt;
var show = true;
if (fld.value == "") show = false;
fmt.userVal = fld.value;
if ( CSFmt.validate( fmt ) == CSErr.ERR_SUCCESS ) {
show = false;
}
if ( fld.type == "checkbox" || fld.type == "radio" ) {

show = false;
}
if ( show ) {
var msg = cs_getTooltipTemplate( fld );
msg = msg.replace(  /[\\!]/g, "");
cs_showTooltip( fld, msg, "val" );
} else {

cs_closeTooltip( fld.id, "val" );
}
clearTimeout(document.htmlform.DFS__tttimer);
}

CSExt.OnChange_bEP.CSValidate = function( fld ) { 

var res = false;
if (CSExt.validate( fld, "onchange" )) {
CSExt.format( fld );
res = true;
}

return res;
}


CSExt.OnFocus_aEP.ToolTip = function( fld ) {
var msg = "";
var fmt = CSExt.f[fld.name].fmt;
if (fmt.fmtdt) msg = fmt.fmtdt.tmpl;
if (fmt.fmttmpl) msg = fmt.fmttmpl.tmpl;
if ( (msg != "") && (fld.value.length != 0) && (CSFmt.validate( fmt ) != CSErr.ERR_SUCCESS) ) {
var msg = cs_getTooltipTemplate( fld );
msg = msg.replace(  /[\\!]/g, "");
cs_showTooltip( fld, msg, "val" );
fmt.userVal = fld.value;
}
return true;
}

CSExt.OnBlur_aEP.ToolTip = function( fld ) {
cs_closeTooltip( fld.id, "val" );
return true;
}

CSExt.OnMouseOver_bEP.ToolTip = function( fld ) {
var tt = csget( "DFS__tipdiv" + fld.id );
if ( !tt ) {
var msg = cs_getTooltipMessage( fld );
if ( msg != "" ) {
cs_showTooltip( fld, msg.replace(  /[\\!]/g, "" ) );
}
}
return true;
}

CSExt.OnMouseOut_bEP.ToolTip = function( fld ) {
cs_closeTooltip( fld.id, "txt" );
return true;
}

function cs_getTooltipMessage( fld ) {
var msg = "";
var elID = fld.id;


if ( elID && elID.indexOf( "inkWrapper_" ) != -1 ) {
fld = csget( elID.replace( /inkWrapper_/, "" ) );
}

if ( elID && elID.indexOf( "BarcodeWrapper_" ) != -1 ) {
fld = csget( elID.replace( /BarcodeWrapper_/, "" ) );
}

if ( fld && fld.id.search( /^entry/ ) != -1 && fld.name.search( /DFS__/ ) != -1 ) {
fld = fld.orig;
}

if ( fld && fld.name && fld.name.indexOf("SIG__") != -1 ) {
fld = CSExt.f[ fld.name.replace( /SIG__/, "" ) ].fld;
}

if ( fld && fld.name && fld.name.indexOf("DFS__GO") != -1 ) {
var desc = fld.getAttribute( "userdesc" );
if ( desc ) {
msg = desc;
}
fld = null;
}

if ( fld && fld.tagName == "A" ) {
var desc = fld.getAttribute( "userdesc" );
if ( desc ) {
msg = desc;
}
fld = null;
}

if ( fld && fld.id.search( /_rect$/ ) != -1 && fld.tagName == "DIV" ) {
fld = csget( fld.id.replace( /_rect$/, "" ) );
}

if ( fld ) {
var fmt = CSExt.f[ fld.name ].fmt;
if ( fmt ) {
if ( fmt.desc ) {
msg = fmt.desc;
}
if ( msg == "" && fmt.title ) {
msg = fmt.title;
}
if ( msg == "" && fld.name ) {
msg = fld.name;
}
}
}
return msg;
}

function cs_getTooltipTemplate( fld ) {
var msg = "";
var fmt = CSExt.f[ fld.name ].fmt;
if ( fmt ) {
if ( fmt.fmtdt ) {
msg = fmt.fmtdt.tmpl;
}
if ( fmt.fmttmpl ) {
msg = fmt.fmttmpl.tmpl;
}
}
return msg;
}






CSExt.validateFields = function( fldList, strictness ) {

if(!fldList.length || !fldList[0]) {
return false;
}


var strEval = "";
if (typeof(fldList[0]) == "string") { 
strEval = "CSExt.getFld( fldList[idx] )";
} else if (fldList[0].getObjectType && fldList[0].getObjectType() == "CSField") { 
strEval = "fldList[idx].hf";
} else { 
strEval = "fldList[idx]";
}


var curFld = null;
var isValid = true;
for (var idx = 0; (idx < fldList.length) && isValid; ++idx) {
curFld = eval( strEval );
isValid = CSExt.validate( curFld, strictness );
}

return isValid;
}

CSExt.validate = function( fld, strictness ) {
cs_assert( fld, "CSExt.validate fld");
cs_assert( strictness=="onsubmit" || strictness=="onchange" || strictness=="onsign", "CSExt.validate strictness", strictness);

var isValid = true;
var message = "No message";
var field;
var fmt;
if (fld.name) {
field = CSForm.getField( fld.name );
fmt = CSExt.f[fld.name].fmt;
} else {
field = CSForm.getField( fld[0].name );
fmt = CSExt.f[fld[0].name].fmt;
}

do {

if (!field) {
break;
}

if (CSExt.DFS__DHTML_OnLoad && field.getValue()=="") {
break;
}

if (strictness=="onchange" && CSExt.ValueCalculations[field.getName()]) {
break;
}
CSExt.ValidateCount++;

if ((field.isRequired()) && strictness!="onchange") {

if (fmt.listboxType && fmt.listboxType != "listboxmulti") {
if (field.getValue() == fmt.initval) {
isValid = false;
message = CS_ERR_ENTRY_REQUIRED_STR;
break;
}
} else {
if (field.cs_isEmpty()) {
if (strictness=="onsign" && field.getType()=="Signature") {


} else {



isValid = false;
message = CS_ERR_ENTRY_REQUIRED_STR;
break;

}
}
}
}

if (fmt.fmt == null) {
break;
}

if (fld.value == "=now()" || fld.value == "=today()") {

var thefield = CSExt.f[fld.id];
var nowDate = new Date();
var nowCSDate = new CSDate( nowDate.getFullYear(), (nowDate.getMonth()+1), nowDate.getDate(), nowDate.getHours(), nowDate.getMinutes(), nowDate.getSeconds() );
CSFmt.setIntVal( thefield.fmt, nowCSDate );
CSFmt.useIntVal( thefield.fmt, nowCSDate );
CSFmt.format( thefield.fmt );
if (nowCSDate.res) {
fmt.userVal = nowCSDate.res[0];
} else {
fmt.userVal = "";
}
} else if (fld.value == "=uniquenum()") {
fmt.userVal = "";
fld.value = "";
} else {
fmt.userVal = fld.value;
}

if (CSFmt.validate( fmt ) != CSErr.ERR_SUCCESS) {
isValid = false;
message = CSFmt.getErrStr( fmt );
break;
}



if (!(CSUtil.isSafari && parseInt(CSUtil.safari.buildMaj) >= 312 && parseInt(CSUtil.safari.buildMaj) < 417) && CSFmt.charsValid( fmt ) != CSErr.ERR_SUCCESS) {
isValid = false;
message = CSFmt.getErrStr( fmt );
break;
}
} while(false);

if (!isValid) {
if (CSExt.highlightInvalid && field.getType()=="Text") {
field.cs_setClass("loinvalid");
}
var txt = field.getFmt().title;
if ( !txt || txt == "" ) {
txt = field.name;
}
if (confirm( message + "\n(" + txt + ")" )) {
if (fld.type != "hidden") {


CSExt.setFldVal("DFS__SetFocusTo", fld.name);
CSExt.focustimer = setTimeout( "cs_focus_hack();", 0);

}
}

if ( !CSExt.highlightInvalid ) {
fld.value = "";
if (fmt.oldValue != null) {
fld.value = fmt.oldValue;
}
}

if (fmt.fmt && fmt.fmt != "txt") {
if (fmt.reserved) {
fmt.reserved.internalVal = 0;
}
}
} else {
if (CSExt.highlightInvalid && field.getType()=="Text") {
field.cs_setClass("lovalid");
}
fmt.oldValue = fld.value;
CSFmt.updateIntVal( CSExt.f[field.getName()].fmt );
CSCalc.fieldChanged( field.getName() );
}
return isValid;
}





function cs_focus_hack() {
var focusTo = CSExt.getFldVal("DFS__SetFocusTo");
if (focusTo != "" && focusTo != "undefined") CSForm.setFocus(focusTo);
clearTimeout(CSExt.focustimer);
CSExt.setFldVal("DFS__SetFocusTo", "");
}

function cs_setInitialFocus() {
var focusTo = CSExt.getFldVal("DFS__SetFocusTo");
if (focusTo == "") {
var pg = CSExt.VisiblePage;
var ti = 0;
var cnt = 0;
for (var f in CSExt.f) {
var csfld = new CSField_Obj(CSExt.getFld(f));
var fld = null;
if (csfld.getType() == "InkPicture") {
continue;
} else if (csfld.getType() == "Barcode") {
continue;
} else if (csfld.getType() == "Radio") {
fld = csfld.hf[0];
} else {
fld = csfld.hf;
}
var fpg = "";
if (fld.parentNode.id != "undefined" && typeof fld.parentNode.id == "string") {
fpg = fld.parentNode.id;
}
fpg = fpg.replace(/DFS__shimdiv/,"");
if (fpg == pg) {
var fi = fld.tabIndex;  
if (cnt == 0) {
ti = fi;
focusTo = f;
}
cnt++;
if (fi < ti && fi != 0 && csfld.getName() != "DFS__ActionList"
&& csfld.getName() != "DFS__GO" && csfld.getType() != "Hidden") {    
ti = fi;
focusTo = f;
}
}
}
}
if (focusTo != "") {


var pg = new CSField_Obj(CSExt.getFld(focusTo)).cs_getPageNumber();
if ( pg == CSExt.VisiblePage ) {
CSForm.setFocus(focusTo);
}
}
}

CSExt.format = function( fld ) {
cs_assert( fld, "CSExt.format fld");
cs_assert( fld.name, "CSExt.format fld.name");
if (!fld || !fld.name)
return;
var fmt = CSExt.f[fld.name].fmt;
if (fmt.fmt != null) {
CSExt.FormatCount++;



fmt.userVal = fld.value;
if (CSFmt.format( fmt ) == CSErr.ERR_SUCCESS) {
CSFmt.updateIntVal( fmt );





if (fmt.fmtnmbr) {






if (fmt.displayVal) {
fmt.internalVal = parseFloat( CS_NumToString( fmt.internalVal, fmt.fmtnmbr.dp, ".", "", "", false, true ) );
}
}
}
fld.value = fmt.displayVal;
fmt.oldValue = fld.value;
}
}




function cs_OnSubmitLookup() {
var isValid = true;
if (CSExt.getFldVal("DFS__SubmitURL") != "") {
var urlstr = CSExt.getFldVal("DFS__SubmitURL");
var rc = cs_ajax_submit( urlstr, "" );
if (rc ==1) {

alert( CS_OFFLINE_ERR_OFFLINE );
return false;
} else if (rc == 0) {

var rurl = "";
try {
rurl = CSExt.RedirectURL;
} catch (e) {}
if (rurl.length == 0) {
isValid = false;

if (CSExt.getFldVal("DFS__StatusMsg") != "") {
alert(CSExt.getFldVal("DFS__StatusMsg"));
CSExt.setFldVal("DFS__StatusMsg", "");
}

if (CSExt.getFldVal("DFS__SetFocusTo") != "") {
CSExt.focustimer = setTimeout( "cs_focus_hack();", 0);
}
}
}
}

return isValid;
}




CSExt.Form_OnSubmit_bEP.StaticLookup = function( f ) {

if (!CSExt.validateFields( CSExt.UserFieldList, "onsubmit" )) {
CSExt.preventDefault();
}
}




















var CS_CAL_MONTHSARRAY = new Array(
CS_DATETIME_JANUARY,
CS_DATETIME_FEBRUARY,
CS_DATETIME_MARCH,
CS_DATETIME_APRIL,
CS_DATETIME_MAY,
CS_DATETIME_JUNE,
CS_DATETIME_JULY,
CS_DATETIME_AUGUST,
CS_DATETIME_SEPTEMBER,
CS_DATETIME_OCTOBER,
CS_DATETIME_NOVEMBER,
CS_DATETIME_DECEMBER
);

var CS_CAL_DAYSARRAY = new Array(
CS_CAL_SUN,
CS_CAL_MON,
CS_CAL_TUE,
CS_CAL_WED,
CS_CAL_THU,
CS_CAL_FRI,
CS_CAL_SAT
);

var CS_CAL_DAYSLONGARRAY = new Array(
CS_CAL_SUNDAY,
CS_CAL_MONDAY,
CS_CAL_TUESDAY,
CS_CAL_WEDNESDAY,
CS_CAL_THURSDAY,
CS_CAL_FRIDAY,
CS_CAL_SATURDAY
);



CSExt.cal = {

NAMESTEM: CSUtil.NAMESTEM + "CalControl_",  
LAUNCH_NAMESTEM: CSUtil.NAMESTEM + "CalLaunch_", 




datesAlign: "center",
datesValign: "middle",
cellPadding: 2,
border: 1,


font: "arial",
fontSize: "90%",


borderColor: "#808080",
todayColor: "lightgreen",
theDayColor: "lightblue",       
navColor: "lightblue",
daysColor: "white",             
fontColor: "black",
blanksColor: "#c0c0c0",         
notRangeColor: "#dfdfdd",       
notRangeFontColor: "#808080",
SelectColor: "red",             
exitColor: "#ff8080",
exitColorOver: "red",
cancelColor: "#ffff80",
daysOfWeek: "#444444",          
dayOfWeekColor: "#ffffff",
selectBg: "#ececf0",            
selectOverBg: "#93A070",        
dateDisplayBg: "black",
dateDisplayColor: "white",


canDrag: true,
dragBarHeight: 16,
dragColor: "#C0C0C0",
pointerCursor: "pointer",
defaultCursor: "default",
shadow: false,
shadowBgColor: "gray",
shadowOffset: 6,


abbrevDays: true,




disabled: false,
visible: false,
todayDate: null,
lastDate: null,
displayDate: null,
firstOfMonth: null,
lastOfMonth: null,
targetElement: null,
targetDate: null,
width: 0,
targetDim: null,
minDate: null,
maxDate: null,
launchTimeout: null,
page: 0,
focus: "",
mouse: "",


GOTO_TODAY: 1,
SELECT_MONTH: 2,
SELECT_YEAR: 3

};


if (CSUtil.isIE && CSUtil.isMac)
CSExt.cal.disabled = true;




CSExt.cal.newCalendar = function ( pTargetElement, pMinDate, pMaxDate ) {

if (CSExt.cal.disabled)
return;

var newDate = new Date();
CSExt.cal.todayDate = new Date(newDate.getMonth()+1 + "/" + newDate.getDate() + "/" + CSExt.cal.getDisplayableYear( newDate.getFullYear() ));
CSExt.cal.minDate   = null;
CSExt.cal.maxDate   = null;

if (pTargetElement) {

if (pMinDate) {
pMinDate = pMinDate.replace(/-/g,"/");
CSExt.cal.minDate = (pMinDate == 'true') ? new Date (CSExt.cal.todayDate) : new Date( pMinDate );
}
if (pMaxDate) {
pMaxDate = pMaxDate.replace(/-/g,"/");
CSExt.cal.maxDate = (pMaxDate == 'true') ? new Date (CSExt.cal.todayDate) : new Date( pMaxDate );
}



CSExt.cal.targetElement = pTargetElement;

var calf = CSExt.f[CSExt.cal.targetElement.id];


if ( calf.fmt.internalVal && calf.fmt.internalVal.day ) {
var d = calf.fmt.internalVal.day;
var m = calf.fmt.internalVal.month;
var y = calf.fmt.internalVal.year;


if (typeof d == "undefined") {
d = 1;
}
if (typeof m == "undefined") {
m = 1;
}
if (typeof y == "undefined") {
y = CSExt.cal.getDisplayableYear( newDate.getFullYear() );
}
CSExt.cal.targetDate = new Date( m + "/" + d + "/" + y );
CSExt.cal.displayDate = new Date( m + "/" + d + "/" + y );
} else {
CSExt.cal.targetDate = newDate;
CSExt.cal.displayDate = newDate;
}

CSExt.cal.lastDate         = CSExt.cal.getLastDate( CSExt.cal.displayDate );
CSExt.cal.firstOfMonth     = new Date( CSExt.cal.displayDate );
CSExt.cal.firstOfMonth.setDate( 1 );
CSExt.cal.lastOfMonth      = new Date( CSExt.cal.displayDate );
CSExt.cal.lastOfMonth.setDate( CSExt.cal.lastDate  );






CSExt.cal.targetDim = CSUtil.getDim( CSExt.cal.targetElement );
CSExt.cal.x = CSExt.cal.targetDim.x;
CSExt.cal.y = CSExt.cal.targetDim.y + CSExt.cal.targetDim.h;





return CSExt.cal.buildCalendar();

}

return false;
}





CSExt.cal.buildCalendar = function () {




if (document.getElementById( CSExt.cal.NAMESTEM + 'calCtrlContainer' )) {
CSExt.cal.closeCalendar();
}




document.onkeydown = CSExt.cal.checkEscape;


CSExt.cal.targetDim.y = CSUtil.continousAdj( CSExt.cal.targetDim.y, CSExt.cal.page );


var zoom = document.getElementById('DFS__ctrlZoom').value;
var yAdjustment = -8;
if (zoom == 80)
yAdjustment = 0;
else if (zoom == 120)
yAdjustment = 2;




var oMonthFrame = document.createElement( 'div' );
oMonthFrame.setAttribute( 'id', CSExt.cal.NAMESTEM + 'calCtrlContainer' );
with ( oMonthFrame.style ) {
position     = 'absolute';
left        = CSUtil.pxperc( CSExt.cal.x - 4, CSExt.cal.page ) + "%";
top         = CSUtil.pxperc( CSExt.cal.targetDim.y + ((document.all)?yAdjustment:2), CSExt.cal.page ) + "%";
zIndex      = 99999;
}

var shimDiv = CSUtil.getShimDiv( CSExt.cal.targetElement );
shimDiv.appendChild( oMonthFrame );

var oCalTable = document.createElement( 'table' );
oCalTable.setAttribute( 'id', CSExt.cal.NAMESTEM + 'calTable' );
oCalTable.setAttribute( 'border', CSExt.cal.border );
oCalTable.setAttribute( 'borderColor', CSExt.cal.borderColor );
oCalTable.setAttribute( 'cellPadding', CSExt.cal.cellPadding );
CSExt.cal.setFontsStyle( oCalTable );
oCalTable.style.borderCollapse  = "collapse";
oMonthFrame.appendChild( oCalTable );

var oTBody = document.createElement( 'tbody' );
oTBody.setAttribute( 'id', CSExt.cal.NAMESTEM + 'tBody');
oCalTable.appendChild( oTBody );




if (CSExt.cal.canDrag) {
var oHandleRow = document.createElement( 'tr' );
oHandleRow.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oHandleRow' );
oTBody.appendChild( oHandleRow );
var oHandle = document.createElement( 'td' );
oHandle.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oHandle' );
oHandle.setAttribute( 'title', CS_POP_CLICKTODRAG );
oHandle.setAttribute( 'colSpan', 7 );
CSExt.cal.setDragStyles( oHandle );
oHandle.style.cursor = "move";













oHandleRow.appendChild( oHandle );
CSUtil.moveApproved( CSExt.cal.NAMESTEM + 'calCtrlContainer', CSExt.cal.NAMESTEM + 'oHandle' );
if(!document.all) { 
oHandleRow.setAttribute("onmouseup","javascript:CSUtil.doMouseUp(event);");
}
if (0 && CSExt.cal.targetElement.title) {
var titlediv = document.createElement( 'span' );
with (titlediv.style) {
backgroundColor = "#404040";
color = "white";
paddingLeft = "5px";
paddingRight = "5px";
fontFamily = CSExt.cal.font;
height = "30px";
marginTop = 0;
marginLeft = 0;
}
titlediv.innerHTML = CSExt.cal.targetElement.title;
oHandle.appendChild( titlediv );
}

}





var oToolRow = document.createElement( 'tr' );
oToolRow.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oToolRow' );
oTBody.appendChild( oToolRow );




var oJumpButton = document.createElement( 'td' );
oJumpButton.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oJumpButton' );
oJumpButton.setAttribute( 'title', CS_CAL_GOTO );
oJumpButton.setAttribute( 'colSpan', 2 );
oJumpButton.onclick = function () { CSExt.cal.showJumpControlSwitch( this ) };
CSExt.cal.setNavStyles( oJumpButton );
oJumpButton.innerHTML = CS_CAL_GOTO;
oToolRow.appendChild( oJumpButton );




var oNavLastYear = document.createElement( 'td' );
oNavLastYear.setAttribute( 'id', CSExt.cal.NAMESTEM + 'lastYear' );
oNavLastYear.onclick =  function () { CSExt.cal.changeYear( (parseInt(CSExt.cal.getDisplayableYear( CSExt.cal.displayDate.getFullYear() ))-1) ) }
CSExt.cal.setNavStyles( oNavLastYear );
oNavLastYear.innerHTML = "&lt;&lt;";
oToolRow.appendChild( oNavLastYear );

var oNavLastMonth = document.createElement( 'td' );
oNavLastMonth.setAttribute( 'id', CSExt.cal.NAMESTEM + 'lastMonth' );
oNavLastMonth.onclick =  function () { CSExt.cal.changeMonth( CSExt.cal.displayDate.getMonth()-1 ) }
CSExt.cal.setNavStyles( oNavLastMonth );
oNavLastMonth.innerHTML = "&lt;";
oToolRow.appendChild( oNavLastMonth );

var oNavNextMonth = document.createElement( 'td' );
oNavNextMonth.setAttribute( 'id', CSExt.cal.NAMESTEM + 'nextMonth' );
oNavNextMonth.onclick =  function () { CSExt.cal.changeMonth( CSExt.cal.displayDate.getMonth()+1 ) }
CSExt.cal.setNavStyles( oNavNextMonth );
oNavNextMonth.innerHTML = "&gt;";
oToolRow.appendChild( oNavNextMonth );

var oNavNextYear = document.createElement( 'td' );
oNavNextYear.setAttribute( 'id', CSExt.cal.NAMESTEM + 'nextYear' );
oNavNextYear.onclick =  function () { CSExt.cal.changeYear( (parseInt(CSExt.cal.getDisplayableYear( CSExt.cal.displayDate.getFullYear() ))+1) ) }
CSExt.cal.setNavStyles( oNavNextYear );
oNavNextYear.innerHTML = "&gt;&gt;";
oToolRow.appendChild( oNavNextYear );

var oNavClose = document.createElement( 'td' );
oNavClose.setAttribute( 'id', CSExt.cal.NAMESTEM + 'closeCal' );
oNavClose.setAttribute( 'title', CS_CAL_CLOSE );
oNavClose.onclick =  function () { CSExt.cal.closeCalendar(); }
CSExt.cal.setNavStyles( oNavClose );
oNavClose.style.backgroundColor = CSExt.cal.exitColor;
oNavClose.style.fontSize = (parseInt(oNavClose.style.fontSize) * 1.2) + "%";
oNavClose.innerHTML = "&times;";
oToolRow.appendChild( oNavClose );







var oJumpToolsFrame = document.createElement( 'div' );
oJumpToolsFrame.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oJumpToolsFrame' );
oMonthFrame.appendChild( oJumpToolsFrame );
CSExt.cal.setToolBarFrameStyles( oJumpToolsFrame, oNavClose.scrollHeight );
oJumpToolsFrame.style.borderRight = "none";




var oJumpCtrl = document.createElement( 'div' );
oJumpCtrl.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oJumpCtrl' );
CSExt.cal.setDropDownFrameStyles( oJumpCtrl );
oJumpToolsFrame.appendChild( oJumpCtrl );




var oGoToInstruction = document.createElement( 'div' );
oGoToInstruction.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oGoToInstruction' );
CSExt.cal.setDropDownInstrStyles( oGoToInstruction, oNavClose.scrollHeight );
oGoToInstruction.innerHTML = CS_CAL_GOTO + ":";
oJumpCtrl.appendChild( oGoToInstruction );




var oChoice1 = document.createElement( 'div' );
oChoice1.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oChoice1' );
oChoice1.onmouseover = function () { CSExt.cal.setDropDownMouseOverStyles( this ); };
oChoice1.onmouseout  = function () { CSExt.cal.setDropDownMouseOutStyles( this ); };
oChoice1.onclick     = function () { CSExt.cal.processJumpSelection( 1 ) };
CSExt.cal.setDropDownStyles( oChoice1 );
oChoice1.innerHTML = CS_CAL_GOTO_TODAY;
oJumpCtrl.appendChild( oChoice1 );




var oChoice2 = document.createElement( 'div' );
oChoice2.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oChoice2' );
oChoice2.onmouseover = function () { CSExt.cal.setDropDownMouseOverStyles( this ); };
oChoice2.onmouseout  = function () { CSExt.cal.setDropDownMouseOutStyles( this ); };
oChoice2.onclick     = function () { CSExt.cal.processJumpSelection( 2 ) };
CSExt.cal.setDropDownStyles( oChoice2 );
oChoice2.innerHTML = CS_CAL_GOTO_MONTH;
oJumpCtrl.appendChild( oChoice2 );




var oChoice3 = document.createElement( 'div' );
oChoice3.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oChoice3' );
oChoice3.onmouseover = function () { CSExt.cal.setDropDownMouseOverStyles( this ); };
oChoice3.onmouseout  = function () { CSExt.cal.setDropDownMouseOutStyles( this ); };
oChoice3.onclick     = function () { CSExt.cal.processJumpSelection( 3 ) };
CSExt.cal.setDropDownStyles( oChoice3 );
oChoice3.innerHTML = CS_CAL_GOTO_YEAR;
oJumpCtrl.appendChild( oChoice3 );




var oJumpMonth = document.createElement( 'div' );
oJumpMonth.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oJumpMonth' );
CSExt.cal.setDropDownFrameStyles( oJumpMonth );
oJumpToolsFrame.appendChild( oJumpMonth );




var oMonthInstruction = document.createElement( 'div' );
oMonthInstruction.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oMonthInstruction' );
CSExt.cal.setDropDownInstrStyles( oMonthInstruction, oNavClose.scrollHeight );
oMonthInstruction.innerHTML = CS_CAL_SELECT_MONTH + ":";
oJumpMonth.appendChild( oMonthInstruction );




for (var i = 0; i < CS_CAL_MONTHSARRAY.length; i++) {
var oMonthOption = new Array();
oMonthOption[i] = document.createElement( 'div' );
oMonthOption[i].setAttribute( 'id',  i ); 
oMonthOption[i].onmouseover = function () { CSExt.cal.setDropDownMouseOverStyles( this ); };
oMonthOption[i].onmouseout  = function () { CSExt.cal.setDropDownMouseOutStyles( this ); };
oMonthOption[i].onclick     = function () { CSExt.cal.jumpToMonth( this.id ) };
CSExt.cal.setDropDownStyles( oMonthOption[i] );
oMonthOption[i].innerHTML = CS_CAL_MONTHSARRAY[i];
oJumpMonth.appendChild( oMonthOption[i] );
}




var oYearChangeField = document.createElement( 'input' );
oYearChangeField.setAttribute( 'id', CSExt.cal.NAMESTEM + 'changeYearField' );

oYearChangeField.setAttribute( 'maxLength', '4' );






                                                                           

oYearChangeField.onkeypress = function ( e ) { return CSExt.cal.validateYear( e ); };

CSExt.cal.setYearEditableStyle( oYearChangeField, oNavClose.scrollHeight-2 ); 
oJumpToolsFrame.appendChild( oYearChangeField );




var oDisplayRow = document.createElement( 'tr' );
oDisplayRow.setAttribute( 'id', CSExt.cal.NAMESTEM + 'displayRow' );
oTBody.appendChild( oDisplayRow );




var oDisplayFrame = document.createElement( 'td' );
oDisplayFrame.setAttribute( 'id', CSExt.cal.NAMESTEM + 'cellDiplayFrame' );
oDisplayFrame.setAttribute( 'colSpan', 7 );
oDisplayFrame.setAttribute( 'align', 'center' );
oDisplayFrame.setAttribute( 'valign', 'middle' );
CSExt.cal.setDateDisplayStyle( oDisplayFrame );
oDisplayRow.appendChild( oDisplayFrame );




var oDateDisplay = document.createElement( 'span' );
oDateDisplay.setAttribute( 'id', CSExt.cal.NAMESTEM + 'displayDate' );
oDisplayFrame.appendChild( oDateDisplay );




var oYearHelp = document.createElement( 'div' );
oYearHelp.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oYearHelp');
with( oYearHelp.style ) {
position = 'absolute';
backgroundColor = CSExt.cal.navColor;
color = CSExt.cal.fontColor;
fontWeight = 'normal';
border = "1px solid " + CSExt.cal.borderColor;
fontFamily = CSExt.cal.font;
paddingTop = "8px";
display = "none";
}
var oYearHelpInstr = document.createElement( 'ul' );
with( oYearHelpInstr.style ) {
textAlign = 'left';
listStyleType = 'square';
}
oYearHelp.appendChild( oYearHelpInstr );


var enterFormat = "font-weight:bold;font-family:courier;";
if (CS_CAL_YEAR_INSTRUCTION_B.indexOf("Enter") != -1) {
CS_CAL_YEAR_INSTRUCTION_B = CS_CAL_YEAR_INSTRUCTION_B.replace(/Enter/, "<span style='" + enterFormat + "'>Enter</span>");
}

oYearHelpInstr.innerHTML = "<li>" + CS_CAL_YEAR_INSTRUCTION_A + "</li><li>" + CS_CAL_YEAR_INSTRUCTION_B + "</li>";
oDisplayFrame.appendChild( oYearHelp );




var oDaysRow = document.createElement( 'tr' );
oDaysRow.setAttribute( 'id', CSExt.cal.NAMESTEM + 'daysRow' );
oTBody.appendChild( oDaysRow );




var oDay = new Array(CS_CAL_DAYSARRAY.length);

for (var i = 0; i < oDay.length; i++) {
oDay[i] = document.createElement( 'td' );
oDay[i].setAttribute( 'id', CSExt.cal.NAMESTEM + CS_CAL_DAYSARRAY[i] );
oDay[i].setAttribute( 'title', CS_CAL_DAYSLONGARRAY[i] );
CSExt.cal.setDaysOfWeekStyle( oDay[i] );
oDay[i].innerHTML = (CSExt.cal.abbrevDays) ? CS_CAL_DAYSARRAY[i] : CS_CAL_DAYSLONGARRAY[i];
oDaysRow.appendChild( oDay[i] );
}


CSExt.cal.computeSizes();





var boxNum = 1;
for (var i = 0; i < 6; i++) {
var oWeek = document.createElement( 'tr' );
oWeek.setAttribute( 'id', CSExt.cal.NAMESTEM + 'oWeek' + i );
oTBody.appendChild( oWeek );
for (var d = 0; d < 7; d++) {
var oDateCell = document.createElement( 'td' );
oDateCell.setAttribute( 'id', CSExt.cal.NAMESTEM + 'box' + boxNum );
oDateCell.setAttribute( 'align', CSExt.cal.datesAlign );
oDateCell.onmouseover  = function () { CSExt.cal.dateOnMouseOver( this ); };
oDateCell.onmouseout   = function () { CSExt.cal.dateOnMouseOut( this ); };
oDateCell.onclick      = function () { CSExt.cal.insertDateSelected( this ); };
oDateCell.innerHTML = "&nbsp;";
oWeek.appendChild( oDateCell );
boxNum++;
}
}







if (CSExt.cal.minDate &&
!CSExt.cal.dateInRange( CSExt.cal.minDate , CSExt.cal.firstOfMonth , CSExt.cal.lastOfMonth ) &&
CSExt.cal.getDateDifference( CSExt.cal.todayDate, CSExt.cal.minDate ) > 0) {
CSExt.cal.displayDate = new Date( CSExt.cal.minDate );                              
}

CSExt.cal.insertDates();





if (CSUtil.createIFrame( oMonthFrame )) {

document.getElementById(oMonthFrame.id + "_iFrame").style.width = CSUtil.pxperc(oMonthFrame.offsetWidth+2, CSExt.VisiblePage) + "%";
}

CSUtil.createIFrame( oJumpMonth );




if (CSExt.cal.shadow) {
var oCalDim = CSUtil.getDim( oMonthFrame );
var oShadow = document.createElement( 'div' );
oShadow.setAttribute( 'id', CSExt.cal.NAMESTEM + 'shadow' );
with ( oShadow.style ) {
position       = 'absolute';
left            = oCalDim.x - CSExt.cal.shadowOffset;
top             = oCalDim.y + CSExt.cal.shadowOffset;
width           = oCalDim.w;
height          = oCalDim.h;
backgroundColor = CSExt.cal.shadowBgColor;
zIndex          = 0;
}
oShadow.innerHTML = "&nbsp;";
document.body.appendChild( oShadow );
CSUtil.createIFrame( oShadow );

}





CSUtil.repositionIt( oMonthFrame, CSExt.cal.targetElement );

return true;
}






CSExt.cal.computeSizes = function() {

var oCalTable = document.getElementById(CSExt.cal.NAMESTEM + 'calTable');
var widestCell = 0;
var oDay = new Array(CS_CAL_DAYSARRAY.length);



if (oCalTable) {


for (var i = 0; i < 7; i++) {
oDay[i] = document.getElementById(CSExt.cal.NAMESTEM + CS_CAL_DAYSARRAY[i]);
var oDayDim = CSUtil.getDim( oDay[i] );
if (oDayDim.w > widestCell) {
widestCell = oDayDim.w;
}

}


if (document.all && CSUtil.ua.indexOf("MSIE 5.5") == -1 && CSExt.CSForm.isOffline() == false)      
oCalTable.style.width = CSUtil.pxperc( widestCell * 7, CSExt.cal.page ) + "%";
else
oCalTable.style.width = (widestCell * 7)+ "px";


for (var i = 0; i < oDay.length; i++) {
oDay[i].style.width = widestCell + "px";
}


var oToolRow = document.getElementById(CSExt.cal.NAMESTEM + 'oToolRow');
var toolRowDim = CSUtil.getDim( oToolRow );

var oJumpToolsFrame = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpToolsFrame');
var oJumpCtrl = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpCtrl');
var oJumpMonth = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpMonth');
var oGoToInstruction = document.getElementById(CSExt.cal.NAMESTEM + 'oGoToInstruction');
var oMonthInstruction = document.getElementById(CSExt.cal.NAMESTEM + 'oMonthInstruction');
var oChangeYearField = document.getElementById(CSExt.cal.NAMESTEM + 'changeYearField');
var oYearHelp = document.getElementById(CSExt.cal.NAMESTEM + 'oYearHelp');


oJumpToolsFrame.style.left  = widestCell * 2 + CSExt.cal.cellPadding/2 + "px";
oJumpToolsFrame.style.width = widestCell * 4 + CSExt.cal.cellPadding/2 - 3 + "px";
oJumpCtrl.style.width       = widestCell * 4 + CSExt.cal.cellPadding/2 - 3 + "px";
oJumpMonth.style.width      = widestCell * 4 + CSExt.cal.cellPadding/2 - 3 + "px";

if (CSUtil.isSafari) {
oJumpToolsFrame.style.top = ((CSExt.cal.canDrag)?parseInt(oJumpToolsFrame.style.top) + 4 :0) + "px";
oYearHelp.style.top = ((CSExt.cal.canDrag)? 24 + 22 :24) + "px";
oJumpToolsFrame.style.height = 22 + "px";
oGoToInstruction.style.height = 22 + "px";
oMonthInstruction.style.height = 22 + "px";
oChangeYearField.style.height = 24 + "px";
}
if (!document.all && !CSUtil.isSafari) {
oJumpToolsFrame.style.height = 19 + "px";
oGoToInstruction.style.height = 19 + "px";
oMonthInstruction.style.height = 19 + "px";
oChangeYearField.style.height = 19 + "px";
oYearHelp.style.top = ((CSExt.cal.canDrag)?CSExt.cal.dragBarHeight:0) + parseInt(oJumpToolsFrame.style.height)+2 + "px";
}
oYearHelp.style.left = "2px";
oYearHelp.style.width = ((document.all)?"102%":toolRowDim.w-8 + "px");
if (document.all) oYearHelp.style.paddingTop = "12px";




if (CSClient.getLanguageCode() == "de") {
var oChoice1 = document.getElementById(CSExt.cal.NAMESTEM + 'oChoice1');
var oChoice2 = document.getElementById(CSExt.cal.NAMESTEM + 'oChoice2');
var oChoice3 = document.getElementById(CSExt.cal.NAMESTEM + 'oChoice3');


oCalTable.style.width = "200%";
oJumpToolsFrame.style.width = "121px";
oJumpCtrl.style.width = "121px";
oJumpMonth.style.width = "128px";
oGoToInstruction.style.width = "121px";
oMonthInstruction.style.width = "123px";
oChoice1.style.width = "121px";
oChoice2.style.width = "121px";
oChoice3.style.width = "121px";


oChangeYearField.style.height = "20px";
oGoToInstruction.style.height = "20px";
oMonthInstruction.style.height = "20px";
}
}

}




CSExt.cal.getLastDate = function ( pDate ) {

var bRet = null;
var tmpDate = new Date( pDate );

for (var a = 28; a <= 31; a++) {
tmpDate.setDate( a );                      
if (tmpDate.getMonth() == pDate.getMonth()){
bRet = a;
}
}

return bRet;
}





CSExt.cal.insertDates = function () {

var dd = CSExt.cal.getDateParts( CSExt.cal.displayDate );




var tmpDate = new Date( CSExt.cal.displayDate );
tmpDate.setDate( 1 );
var displayFirstDay = tmpDate.getDay() + 1;




var displayLastDate = CSExt.cal.getLastDate ( CSExt.cal.displayDate );




document.getElementById(CSExt.cal.NAMESTEM + 'displayDate').innerHTML  = dd.monthName + "&nbsp;" + dd.year;
document.getElementById(CSExt.cal.NAMESTEM + 'changeYearField').value  = dd.year;




document.getElementById(CSExt.cal.NAMESTEM + 'lastMonth').title       = CS_CAL_GOTO + " " + CSExt.cal.getMonthName( dd.month-1 );
document.getElementById(CSExt.cal.NAMESTEM + 'nextMonth').title       = CS_CAL_GOTO + " " + CSExt.cal.getMonthName( dd.month+1 );
document.getElementById(CSExt.cal.NAMESTEM + 'lastYear').title       = CS_CAL_GOTO + " " + ( parseInt(dd.year)-1 );
document.getElementById(CSExt.cal.NAMESTEM + 'nextYear').title       = CS_CAL_GOTO + " " + ( parseInt(dd.year)+1 );






var d = 1;
var oCell = null;

for (var i = 1; i <= 42; i++){
oCell = document.getElementById(CSExt.cal.NAMESTEM + 'box' + i);


oCell.innerHTML = "&nbsp;";
oCell.setAttribute( 'title', "" );
CSExt.cal.setBlanksStyle( oCell );




if (i >= displayFirstDay && d <= displayLastDate){
oCell.innerHTML = d;
oCell.setAttribute( 'title', dd.monthName + " " + d + ", " + dd.year );
CSExt.cal.setDateInRangeStyle( oCell );




var testDate = (dd.month+1) + "/" + d  + "/" + dd.year;
if (CSExt.cal.minDate || CSExt.cal.maxDate) {
if ( !CSExt.cal.dateInRange( testDate, CSExt.cal.minDate, CSExt.cal.maxDate ) ) {
CSExt.cal.setDateOutOfRangeStyle( oCell );
}
}




var tempDate = new Date( testDate );
if (tempDate.toString() == CSExt.cal.targetDate.toString()) {
CSExt.cal.setTargetDateStyle( oCell );
}




if (CSExt.cal.todayDate.getDate() == d && CSExt.cal.todayDate.getMonth() == CSExt.cal.displayDate.getMonth() && CSExt.cal.todayDate.getFullYear() == CSExt.cal.displayDate.getFullYear()) {
CSExt.cal.setTodayDateStyle( oCell );
oCell.setAttribute( 'title', CS_CAL_GOTO_TODAY + ": " + dd.monthName + " " + d + ", " + dd.year );
}

d++;
}
}

return true;
}




CSExt.cal.dateInRange = function ( testDate, pMinDate, pMaxDate ) {


var bRet = false;
var tDate = new Date( testDate );



if (pMaxDate == "true" && tDate < CSExt.cal.todayDate) {
bRet = true;
} else if (pMinDate == "true" && tDate > CSExt.cal.todayDate) {
bRet = true;
} else if (pMinDate && pMaxDate) {          
if (tDate >= pMinDate && tDate <= pMaxDate) {
bRet = true;
}
} else if (pMinDate) {
if (tDate >= pMinDate) {
bRet = true;
}
} else if (pMaxDate) {
if (tDate <= pMaxDate) {
bRet = true;
}
} else {
bRet = true;
}

return bRet;
}





CSExt.cal.getTargetFieldDate = function  ( el ) {

var bRetDate = new Date();
var targetDate = el.value;

if (targetDate != ""){


if (targetDate.indexOf(".") != -1) {
targetDate = targetDate.replace(/\./g,"/");
}


var tryDate = new Date( targetDate );
if (tryDate && !isNaN( tryDate )) {
bRetDate = tryDate;
}
}

return bRetDate;
}





CSExt.cal.checkEscape = function ( e ){

var obj = document.getElementById(CSExt.cal.NAMESTEM + 'calCtrlContainer');
if (!e) e = window.event;

if(obj && e.keyCode == 27) {
return CSExt.cal.closeCalendar();
}
}





CSExt.cal.closeCalendar = function () {

var obj = document.getElementById(CSExt.cal.NAMESTEM + 'calCtrlContainer');
var shadow = document.getElementById(CSExt.cal.NAMESTEM + 'shadow');

if (obj) {

var dragHandle = document.getElementById( CSExt.cal.NAMESTEM + 'oHandle' );
if( dragHandle ) {
dragHandle.style.backgroundImage = "";
}
obj.parentNode.removeChild(obj);


if (document.getElementById('DFS__ctrlZoom')) {
if (document.all) {
document.getElementById('DFS__ctrlZoom').detachEvent( 'onchange', CSExt.cal.computeSizes );
} else {
document.getElementById('DFS__ctrlZoom').removeEventListener( 'change', CSExt.cal.hideJumpControl, false );
}
}

if (shadow) {
shadow.parentNode.removeChild(shadow);
}
return true;
}
return false;
}





CSExt.cal.getMonthName = function ( pMonthNum ) {

var month = parseInt(pMonthNum);

if (month > 11) {
month = 0;
} else if (month < 0) {
month = 11;
}

return CS_CAL_MONTHSARRAY[month];
}






CSExt.cal.getDisplayableYear = function ( pYear ) {

var yy = pYear.toString();
var theYear = yy;


if(document.all) {
if (yy.length == 1) {
theYear = "190" + yy;
} else if (yy.length == 2) {
theYear = "19" + yy;
}
}

if (theYear > 9999)
theYear = null;

if (!document.all && theYear.length < 4) {
theYear = parseInt(theYear) + 1900;
}


return theYear;
}




CSExt.cal.changeMonth = function ( pMonth ) {

var newMonth = pMonth;
var newDate  = CSExt.cal.displayDate.getDate();
var tmpDate  = CSExt.cal.displayDate;


if ( newMonth == -1 ) {
newMonth = 11;
CSExt.cal.changeYear( tmpDate.getFullYear() - 1 );
}

if ( newMonth == 12 ) {
newMonth = 0;
CSExt.cal.changeYear( tmpDate.getFullYear() + 1 );
}




tmpDate.setMonth( newMonth );
if (tmpDate.getMonth() != newMonth) {



newDate -= tmpDate.getDate();
}

CSExt.cal.displayDate.setMonth( newMonth, newDate );
if (CSExt.cal.displayDate.getFullYear() > 9999 || (!document.all && CSExt.cal.displayDate.getFullYear() >= 8100)) return;
document.getElementById(CSExt.cal.NAMESTEM + 'lastMonth').title = CSExt.cal.getMonthName( newMonth-1 );
document.getElementById(CSExt.cal.NAMESTEM + 'nextMonth').title = CSExt.cal.getMonthName( newMonth+1 );
CSExt.cal.insertDates();

}




CSExt.cal.changeYear = function ( newYear ) {

if (newYear.toString().length > 4) return;
CSExt.cal.displayDate.setFullYear( CSExt.cal.getDisplayableYear(newYear) );
document.getElementById(CSExt.cal.NAMESTEM + 'lastYear').title = parseInt(newYear - 1);
document.getElementById(CSExt.cal.NAMESTEM + 'nextYear').title = parseInt(newYear + 1);
CSExt.cal.insertDates();

}






CSExt.cal.validateYear = function ( e ) {    

var val = document.getElementById(CSExt.cal.NAMESTEM + 'changeYearField').value;


if(val.search(/^(\d){1,4}$/) == -1 || val.search(/^[^0]/) == -1) {

document.getElementById(CSExt.cal.NAMESTEM + 'changeYearField').value = val.substring(0, val.length-1);
}





if (!e) e = window.event;

if((e.keyCode == 13 || e.keyCode == 3) && val.length == 4  && parseInt(val) >= 1000) {
CSExt.cal.changeYear( val );
CSExt.cal.yearOnBlur();
CSExt.cal.hideJumpControl();
return false; 
}
}





CSExt.cal.yearOnBlur = function () {

var ty = document.getElementById(CSExt.cal.NAMESTEM + 'changeYearField');
var yh = document.getElementById(CSExt.cal.NAMESTEM + 'oYearHelp');

ty.value = CSExt.cal.getDisplayableYear( CSExt.cal.displayDate.getFullYear() );
ty.style.visibility = "hidden";
ty.blur();
yh.style.display = 'none';
}





CSExt.cal.dateOnMouseOver = function ( cell ) {

var d = parseInt(cell.innerHTML);
var dd = CSExt.cal.getDateParts( CSExt.cal.displayDate );

var testDate = new Date( (dd.month+1) + "/" + d + "/" + dd.year );
if (!isNaN( d ) && CSExt.cal.dateInRange ( testDate, CSExt.cal.minDate, CSExt.cal.maxDate )) {
CSExt.cal.setDateHoverStyle( cell );
}
}





CSExt.cal.dateOnMouseOut = function ( cell ) {

var d = parseInt(cell.innerHTML);
var dd = CSExt.cal.getDateParts( CSExt.cal.displayDate );
var testDate = new Date( (dd.month+1) + "/" + d + "/" + dd.year );
var tempDate = new Date( testDate );


if (CSExt.cal.todayDate.getDate() == d && CSExt.cal.todayDate.getMonth() == CSExt.cal.displayDate.getMonth() && CSExt.cal.todayDate.getFullYear() == CSExt.cal.displayDate.getFullYear()) {
CSExt.cal.setTodayDateStyle( cell );
} else if (tempDate.toString() == CSExt.cal.targetDate.toString()) {    
CSExt.cal.setTargetDateStyle( cell );
} else if (!isNaN( d )) {
if(CSExt.cal.dateInRange ( testDate, CSExt.cal.minDate, CSExt.cal.maxDate )) {
CSExt.cal.setDateInRangeStyle( cell );
}
}
}





CSExt.cal.insertDateSelected = function ( cell ) {

var d = parseInt(cell.innerHTML);
var dd = CSExt.cal.getDateParts( CSExt.cal.displayDate );
var dateString = (dd.month+1) + "/" + d + "/" + dd.year;
var testDate = new Date( dateString );

if (isNaN( d ) || !CSExt.cal.dateInRange ( testDate, CSExt.cal.minDate, CSExt.cal.maxDate )) {
return;
} else {
CSExt.cal.displayDate.setDate( d );


var calf = CSExt.f[CSExt.cal.targetElement.id];

var calCSDate = new CSDate( dd.year, (dd.month+1), d );
CSFmt.setIntVal( calf.fmt, calCSDate );
CSFmt.useIntVal( calf.fmt, calCSDate );
CSFmt.format( calf.fmt );

CSExt.cal.targetElement.value = calCSDate.res[0];
CSExt.cal.closeCalendar();
CS_FireOnChange(CSExt.cal.targetElement);

CSExt.cal.targetElement.focus();

return true;
}
}




CSExt.cal.getDateParts = function ( pDate ) {

var oDate     = new Date( pDate );
var month     = oDate.getMonth();
var monthName = CSExt.cal.getMonthName(oDate.getMonth() );
var date      = oDate.getDate();
var year      = CSExt.cal.getDisplayableYear( oDate.getFullYear() );
var day       = oDate.getDay();

return { month:month, monthName:monthName, date:date, year:year, day:day }
}




CSExt.cal.showJumpControlSwitch = function ( cell ) {
if (cell.innerHTML == CS_CAL_GOTO) {
CSExt.cal.showJumpControl();
} else {
CSExt.cal.hideJumpControl();
}
}





CSExt.cal.showJumpControl = function () {

var oJC = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpCtrl');
var oJTF = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpToolsFrame');
var oJB = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpButton');

oJC.style.visibility = "visible";
oJTF.style.visibility = "visible";  
oJB.innerHTML = CS_CAL_CANCEL;
oJB.title = CS_CAL_CANCEL;
oJB.style.backgroundColor = CSExt.cal.cancelColor;


if (document.getElementById('DFS__ctrlZoom')) {
if (document.all) {
document.getElementById('DFS__ctrlZoom').attachEvent( 'onchange', CSExt.cal.computeSizes );
} else {
document.getElementById('DFS__ctrlZoom').addEventListener( 'change', CSExt.cal.hideJumpControl, false );
}
}
}





CSExt.cal.hideJumpControl = function () {

var oJT = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpToolsFrame');
var oJB = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpButton');
var oJC = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpCtrl');
var oJM = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpMonth');

oJT.style.visibility = "hidden";
oJC.style.visibility = "hidden";
oJB.innerHTML = CS_CAL_GOTO;
oJB.title = CS_CAL_GOTO;
oJB.style.backgroundColor = CSExt.cal.navColor;
oJM.style.visibility = "hidden";
CSExt.cal.yearOnBlur();
}




CSExt.cal.processJumpSelection = function ( pChoice ) {

var oJT = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpToolsFrame');

var oJC = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpCtrl');
var oJM = document.getElementById(CSExt.cal.NAMESTEM + 'oJumpMonth');
var oDY = document.getElementById(CSExt.cal.NAMESTEM + 'changeYearField');
var oYH = document.getElementById(CSExt.cal.NAMESTEM + 'oYearHelp');

if(pChoice == CSExt.cal.GOTO_TODAY) {

CSExt.cal.displayDate = new Date();
CSExt.cal.insertDates();
CSExt.cal.hideJumpControl();

} else if (pChoice == CSExt.cal.SELECT_MONTH) {

oJC.style.visibility = "hidden";
oJM.style.visibility = "visible";

} else if (pChoice == CSExt.cal.SELECT_YEAR) {

oJC.style.visibility = "hidden";
oJT.style.visibility = "visible";
oDY.style.visibility = "visible";
oYH.style.display = "block";
oDY.onfocus = null;
oDY.focus();
oDY.select(3, 2);
}
}





CSExt.cal.jumpToMonth = function ( pMonth ) {

CSExt.cal.changeMonth( pMonth );
CSExt.cal.hideJumpControl();

}


CSExt.cal.getDateDifference = function ( pDate1, pDate2 ) {

var retDiff = null;
var d1, d2  = null;
var diff    = null;

if (pDate1) {
d1 = pDate1;
}
if (pDate2) {
d2 = pDate2;
}

if (d1 && d2) {
diff = Math.floor((d2 - d1) / (1000 * 60 * 60 * 24));
}
if (!isNaN( diff )) {
retDiff = diff;
}

return retDiff;
}







CSExt.cal.setDragStyles = function ( el ) {
if (el) {
with ( el.style ) {
border          = "1px solid " + CSExt.cal.borderColor;
height = CSExt.cal.dragBarHeight + "px";
backgroundColor = CSExt.cal.dragColor;
backgroundImage = "url(" + CSExt.handleImg + ")";
}
CSExt.cal.setFontsStyle( el );
}
}


CSExt.cal.setNavStyles = function ( el ) {
if (el) {
try { el.style.cursor = CSExt.cal.pointerCursor } 
catch(e) { CSExt.cal.pointerCursor = "default"; }
with ( el.style ) {
textAlign       = "center";
border          = "1px solid " + CSExt.cal.borderColor;
backgroundColor = CSExt.cal.navColor;
cursor          = CSExt.cal.pointerCursor;
}
CSExt.cal.setFontsStyle( el );
}
}


CSExt.cal.setToolBarFrameStyles = function ( el, h ) {
if (el && parseInt(h)) {
with ( el.style ) {
position        = "absolute";
top             = ((CSExt.cal.canDrag) ? CSExt.cal.dragBarHeight + ((CSUtil.isNS)?-1:1) : 0) + "px";
height          = h + ((document.all) ? 0 : -15) + "px";
border          = "1px solid gray";
backgroundColor = CSExt.cal.navColor;
visibility      = "hidden";
zIndex          = 0;
}
}
}


CSExt.cal.setDropDownFrameStyles = function ( el ) {
if (el) {
with ( el.style ) {
position        = "absolute";
top             = "-1px";
left            = "-1px";
textAlign       = "left";
border          = "1px solid gray";
visibility      = "hidden";
zIndex          = 2;
}
}
}


CSExt.cal.setDropDownInstrStyles = function ( el, h ) {
if (el && parseInt(h)) {
with ( el.style ) {
height          = h + ((document.all) ? -1 : -15) + "px";
backgroundColor = CSExt.cal.navColor;
borderBottom    = "1px solid gray";
paddingTop      = "1px";
paddingLeft     = "4px";
cursor          = CSExt.cal.defaultCursor;
}
CSExt.cal.setFontsStyle( el );
}
}


CSExt.cal.setDropDownStyles = function ( el ) {
if (el) {
with ( el.style ) {
paddingTop      = "1px";
paddingBottom   = "1px";
paddingLeft     = "8px";
backgroundColor = CSExt.cal.selectBg;
cursor          = CSExt.cal.pointerCursor;
}
CSExt.cal.setFontsStyle( el );
}
}


CSExt.cal.setDropDownMouseOverStyles = function ( el ) {
if (el) {
with ( el.style ) {
color = "white";
backgroundColor = CSExt.cal.selectOverBg;
}
}
}


CSExt.cal.setDropDownMouseOutStyles = function ( el ) {
if (el) {
with ( el.style ) {
color = "black";
backgroundColor = CSExt.cal.selectBg;
}
}
}


CSExt.cal.setYearEditableStyle = function ( el, h ) {
if (el && parseInt(h)) {
with ( el.style ) {
position        = "absolute";
top             = "0px";
left            = "0px";
width           = "38px";
height          = h + ((document.all) ? 0 : -16) + "px";
visibility      = "hidden";
zIndex          = 2;
color           = "black";
backgroundColor = CSExt.cal.selectBg;
border          = "1px solid gray";
}
CSExt.cal.setFontsStyle( el );
}
}


CSExt.cal.setDaysOfWeekStyle = function ( el ) {
if (el) {
with ( el.style ) {
textAlign         = "center";
backgroundColor   = CSExt.cal.daysOfWeek;
color             = CSExt.cal.dayOfWeekColor;
cursor            = CSExt.cal.defaultCursor;
}
CSExt.cal.setFontsStyle( el );
}
}


CSExt.cal.setDateDisplayStyle = function ( el ) {
if (el) {
with ( el.style ) {
backgroundColor     = CSExt.cal.dateDisplayBg;
color               = CSExt.cal.dateDisplayColor;
fontWeight          = "bold";
textAlign           = "center";
border              = "0px";
padding             = "4px";
cursor              = CSExt.cal.defaultCursor;
}
CSExt.cal.setFontsStyle( el );
}
}


CSExt.cal.setBlanksStyle = function ( el ) {
if (el) {
with ( el.style ) {
backgroundColor     = CSExt.cal.blanksColor;
cursor          = CSExt.cal.defaultCursor;
}
}
}


CSExt.cal.setDateInRangeStyle = function ( el ) {
if (el) {
with ( el.style ) {
backgroundColor     = CSExt.cal.daysColor;
color             = CSExt.cal.fontColor;
cursor           = CSExt.cal.pointerCursor;
}
}
}


CSExt.cal.setDateOutOfRangeStyle = function ( el ) {
if (el) {
with ( el.style ) {
backgroundColor   = CSExt.cal.notRangeColor;
color             = CSExt.cal.notRangeFontColor;
cursor            = CSExt.cal.defaultCursor;
}
}
}


CSExt.cal.setTargetDateStyle = function ( el ) {
if (el) {
with ( el.style ) {
backgroundColor =  CSExt.cal.theDayColor;
}
}
}


CSExt.cal.setTodayDateStyle = function ( el ) {
if (el) {
with ( el.style ) {
backgroundColor = CSExt.cal.todayColor;
}
}
}


CSExt.cal.setDateHoverStyle = function ( el ) {
if (el) {
with ( el.style ) {
backgroundColor = CSExt.cal.SelectColor;
}
}
}


CSExt.cal.setFontsStyle = function ( el ) {
if (el) {
with ( el.style ) {
fontSize        = CSExt.cal.fontSize;
fontFamily      = CSExt.cal.font;
}
}
}







CSExt.cal.showCalLauncher = function( pField, pMinDate, pMaxDate ) {
var field     = null;
var fldFormat = null;
var minDate   = null;
var maxDate   = null;

if (pField) {
field = pField;
}
if (pMinDate) {
minDate = pMinDate;
}
if (pMaxDate) {
maxDate = pMaxDate;
}

if (CSExt.cal.disabled || pField.readOnly || !CSExt.f[field.name]) {
return false;
}



fldFormat = CSExt.f[field.name].fmt;
if (fldFormat.cal.launchTimeout != null) {
window.clearTimeout( fldFormat.cal.launchTimeout );
fldFormat.cal.launchTimeout = null;
}

CSExt.cal.page = CSClient.getPageNumber( field );





var oCalCtrlImage = csget( CSExt.cal.LAUNCH_NAMESTEM + field.id);
if ( oCalCtrlImage instanceof Array ) {       
return;
}
if ( typeof oCalCtrlImage.style == "undefined" ) {

oCalCtrlImage = oCalCtrlImage[0];
}

with ( oCalCtrlImage.style ) {
position  = "absolute";
display   = "block";
zIndex    = 9999;
}
oCalCtrlImage.setAttribute( 'title',  CS_CAL_SHOW_CAL );
oCalCtrlImage.onmouseover = function() { CSExt.cal.doMouseOver( field, fldFormat ); }
oCalCtrlImage.onmouseout  = function() { CSExt.cal.doMouseOut( field ); }
oCalCtrlImage.onclick     = function() { CSExt.cal.doMouseClick( field, minDate, maxDate ); }


var oCalCtrlDiv = csget( "wrapper__" + CSExt.cal.LAUNCH_NAMESTEM + field.id);
if ( typeof oCalCtrlDiv.style == "undefined" ) {

oCalCtrlDiv = oCalCtrlDiv[0];
}
with ( oCalCtrlDiv.style ) {
position  = "absolute";
left    = parseInt( field.style.left ) + parseInt( field.style.width ) + "%";
top      = parseInt( field.style.top ) + "%";
display   = "block";
width     = oCalCtrlImage.offsetWidth;
height    = oCalCtrlImage.offsetHeight;
zIndex    = 9999;
}

CSUtil.createIFrame( oCalCtrlDiv );

CSUtil.repositionIt( oCalCtrlDiv, field );

return true;
}





CSExt.cal.hideCalLauncher = function ( fld, delay ) {
if (fld) {
var calProp = CSExt.f[fld.name].fmt.cal;





if (calProp.launchVisible && CSExt.cal.focus != fld.id && CSExt.cal.mouse != fld.id) {


if (calProp.launchTimeout != null) {
window.clearTimeout( calProp.launchTimeout );
calProp.launchTimeout = null;

}


if (!delay) {
delay = 0;
}



var func = "CSExt.cal.hide('"+fld.id+"','"+fld.name+"')";
calProp.launchTimeout = CSUtil.timeout( func, delay );
}
}
}





CSExt.cal.hide = function ( field_id, field_name ) {


if ( CSExt.f[field_name] ) {
var calProp = CSExt.f[field_name].fmt.cal;
calProp.launchTimeout = null;
calProp.launchVisible = false;
}

var launcher = document.getElementById( "wrapper__" + CSExt.cal.LAUNCH_NAMESTEM + field_id );
if ( typeof launcher.style == "undefined" ) {

launcher = launcher[0];
}
launcher.style.display = "none";
}

CSExt.cal.doMouseOver = function( fld, fmt ) {

CSExt.cal.mouse = fld.id;
fmt.cal.launchVisible = CSExt.cal.showCalLauncher( fld, fmt.fmtdt.mnv, fmt.fmtdt.mxv );
}

CSExt.cal.doMouseOut = function( fld ) {




if (CSExt.cal.mouse == fld.id) {

CSExt.cal.mouse = "";
CSExt.cal.hideCalLauncher( fld, 3 );
}
}

CSExt.cal.doMouseClick = function( fld, minDate, maxDate ) {




CSExt.cal.mouse = "";
CSExt.cal.hideCalLauncher( fld, 0.2 );
CSExt.cal.visible = CSExt.cal.newCalendar( fld, minDate, maxDate );
}

CSExt.OnFocus_bEP.Cal = function( fld ) {
cs_assert( fld.name, "fld.name on date field focus" );
if (!fld.name) return;
var fmt = CSExt.f[fld.name].fmt;
if (typeof fmt.fmtdt != "undefined") {
if (fmt.fmtdt.subtype == "date") {

CSExt.cal.focus = fld.id;
fmt.cal.launchVisible = CSExt.cal.showCalLauncher( fld, fmt.fmtdt.mnv, fmt.fmtdt.mxv );
}
}


if (CSExt.cal.visible) {
CSExt.cal.visible = !CSExt.cal.closeCalendar();
}
}

CSExt.OnBlur_aEP.Cal = function( fld ) {
cs_assert( fld.name, "fld.name on date field blur" );
if (!fld.name) return;
var fmt = CSExt.f[fld.name].fmt;
if (typeof fmt.fmtdt != "undefined") {
if (fmt.fmtdt.subtype == "date") {


CSExt.cal.focus = "";
CSExt.cal.hideCalLauncher( fld, 0.2 );
}
}
}

CSExt.OnMouseOver_bEP.Cal = function( fld ) {
cs_assert( fld.name, "fld.name on cal mousover" );
if (!fld.name
|| fld.name.indexOf( "inkWrapper_" ) == 0
|| fld.name.indexOf( "BarcodeWrapper_" ) == 0
|| (fld.name.indexOf( "_rect" ) != -1 && fld.tagName.toUpperCase() == "div".toUpperCase() )) return;
var fmt = CSExt.f[fld.name].fmt;
if (typeof fmt.fmtdt != "undefined") {
if (fmt.fmtdt.subtype == "date") {

CSExt.cal.doMouseOver( fld, fmt );
}
}
}

CSExt.OnMouseOut_aEP.Cal = function( fld ) {
cs_assert( fld.name, "fld.name on cal mousover" );
if (!fld.name
|| fld.name.indexOf( "inkWrapper_" ) == 0
|| fld.name.indexOf( "BarcodeWrapper_" ) == 0
|| (fld.name.indexOf( "_rect" ) != -1 && fld.tagName.toUpperCase() == "div".toUpperCase() )) return;
var fmt = CSExt.f[fld.name].fmt;
if (typeof fmt.fmtdt != "undefined") {
if (fmt.fmtdt.subtype == "date") {

CSExt.cal.doMouseOut( fld );
}
}
}

























var CSIV = {
viewers: {},
imagesLoading: [],
cnt: 0,
actions: null,
hasFocus: "",
path: "attachments/",
panInc: 50,
zoomInc: 0.1,
loadDelay: 200,
hightlightBarColor: "yellow",
hightlightAreaColor: "lightblue",
ctrlbuttons: null,
ATTACHMENT_FILE: 0,
ATTACHMENT_URL: 1,
EXTERNAL_URL: 2,
image_types : [ "ATTACHMENT FILE", "ATTACHMENT URL", "EXTERNAL URL" ]
}




function CSIV_Obj( ivname, show_toolbar, disable_toolbar, no_attachments ) {
if ( ivname ) {
this.name = ivname;
this.show_toolbar     = show_toolbar    == "true";
this.disable_toolbar  = disable_toolbar == "true";
this.do_attachments   = no_attachments  != "true";


this.wrp          = csget( "CSIV_wrapper_" + ivname );
this.port         = csget( "CSIV_port_" + ivname );
this.imgEl        = csget( "CSIV_image_" + ivname );
this.ctrlframe    = csget( "CSIV_ctrl_frame_" + ivname );
this.ctrldiv      = csget( "CSIV_controls_" + ivname );
this.preload      = csget( "CSIV_preload_" + ivname );
this.pageinfoSpan = csget( "CSIV_pageinfo_" + ivname );
this.fcurr        = csget( "CSIV_curr_" + ivname );
this.ftotal       = csget( "CSIV_total_" + ivname );
this.nav          = csget( "CSIV_nav_" + ivname );
this.showCtrls    = csget( "CSIV_ctrllaunch_" + ivname );
this.toolbar      = csget( "CSIV_toolbar_" + ivname );
this.statusDiv    = csget( "CSIV_statusDiv_" + ivname );
this.statusSpan   = csget( "CSIV_status_" + ivname );
this.zoomSpan     = csget( "CSIV_zoom_" + ivname );
this.field        = csget( ivname );
this.csfld        = null;

this.imgset = null;
this.currPageset = null;
this.currImg = null;
this.currPage = null;

this.panInc = CSIV.panInc;
this.zoomInc = CSIV.zoomInc;
this.scaleFactor = 1.0;
this.hostPage = this.getLOPageNum();
this.roomForPageInfo = true;

this.imgEl.src = CSExt.blankImg;
this.port.style.height = Math.round((parseInt(this.wrp.style.height) / 100 ) * 96) - 38 + "px";
this.portSize = {
w: Math.round((parseInt(this.wrp.style.width) / 100 ) * 96),
h: Math.round((parseInt(this.wrp.style.height) / 100 ) * 96) - 38
};



if ( !CSIV.actions ) {
CSIV._initActions();
}

this._creatNavButtons();
this.highlightBar = this._createHighlightBar();
this.hightlightBarOn = false;
this.highlightArea = this._createHighlightArea();
this.highlightAreaOn = false;
this.highlightAreaCache = { x:0, y:0, w:0, h:0 };


if ( CSIV.cnt == 0 ) {
CSIV.first = ivname;
}
this.num = ++CSIV.cnt;
CSIV.viewers[ ivname ] = this;
this.setFocus();


this.tbHeight = this.toolbar.offsetHeight;
this.tbWidth = this.toolbar.offsetWidth;



this._setNavEmpty();
this.toolbar.style.display = "block";
with ( this.ctrldiv.style ) {
display = "block";
backgroundColor = "#e0e0e0";
}
this.ctrlframe.style.backgroundColor = "#e0e0e0";
if ( this.show_toolbar ) {
this.toolbar_visible = false;   
this.showToolbar();
} else {
this.toolbar_visible = true;    
this.hideToolbar();
}        
this._adjustToolbar();


this.lastScrollTop = this.port.scrollTop;
this.lastScrollLeft = this.port.scrollLeft;

this.preload.parentNode.removeChild( this.preload );
document.body.appendChild( this.preload );

}
}




CSIV._init = function() {

for ( var name in this.viewers ) {
var vw = this.viewers[ name ];
vw.csfld = CSForm.getField( name );
}  


var isPubd = CSForm.getField( "DFS__SubmitURL" );
if ( isPubd && !CSForm.isOffline() ) {

CSIV.cmdView = "RouteViewAttachments";
CSIV.cmdList = "RouteListAttachments";
if ( CSForm.getField( "DFS__EventID" ).getValue() == "" ) {
CSIV.cmdView = "RouteViewOriginalAttachment";
CSIV.cmdList = "RouteOriginalAttachments";
}                 


var getAttachments = false;
for ( var name in this.viewers ) {
var vw = this.viewers[ name ];
getAttachments = vw.do_attachments;
var args = "&DFS__AttachID=";
var url = csajx_getCommandURL( CSIV.cmdView, args );
if ( url != "" ) {
vw.cmdpath = location.protocol + "//" + location.host + url;
} else {
vw.cmdpath = "";
}
}


if ( getAttachments ) {
CSIV._setLoading( true );
CSIV._timeout = window.setTimeout( "CSIV._checkLoading()", 8000 );
csajx_getAttachmentsList();
}
}
}

CSIV._finishInit = function() {
for ( var name in this.viewers ) {
var vw = this.viewers[ name ];
vw._refresh();
}
CSIV._setFirstFocus();
}

CSIV._setLoading = function( b ) {
this.loading = b;
for ( var name in this.viewers ) {
var vw = this.viewers[ name ];
if ( b ) {
vw.setStatus( CS_IV_LOADING );
} else {
vw.clearStatus();
}
}
}

CSIV._checkLoading = function() {
for ( var name in this.viewers ) {
var vw = this.viewers[ name ];
if ( vw.getStatus() == CS_IV_LOADING ) {
vw.setStatus( CS_IV_AJAX_FAILED );
} 
}
}

CSIV._setFirstFocus = function() {
CSIV.setFocus( CSIV.first );
}

CSIV._setFirstFocusOnPage = function() {
var LOcurrPage = CSExt.VisiblePage;
for ( var name in CSIV.viewers ) {
var vw = CSIV.viewers[ name ];
if ( vw.getLOPageNum() == LOcurrPage ) {
vw.setFocus();
break;
}
}
}

CSIV._initActions = function() {
this.actions = {

prev:     { text:"prev",      alt:"pg up", key:33,   mask:"ctrlKey", show:true,  fx:"prevPage" },       
next:     { text:"next",      alt:"pg dn", key:34,   mask:"ctrlKey", show:true,  fx:"nextPage"  },      
zoomin:   { text:"zoom+",     alt:"[",     key:219,  mask:"ctrlKey", show:true,  fx:"zoomIn" },         
zoomout:  { text:"zoom-",     alt:"]",     key:221,  mask:"ctrlKey", show:true,  fx:"zoomOut" },        
fit:      { text:"fit",       alt:"*",     key:106,  mask:"ctrlKey", show:true,  fx:"fitToViewer" },    
reset:    { text:"reset",     alt:"/",     key:111,  mask:"ctrlKey", show:true,  fx:"resetZoom" },      
panUp:    { text:"up.gif",    alt:"up",    key:38,   mask:"ctrlKey", show:true,  fx:"panUp" },          
panRight: { text:"right.gif", alt:"right", key:39,   mask:"ctrlKey", show:true,  fx:"panRight" },       
panDown:  { text:"down.gif",  alt:"down",  key:40,   mask:"ctrlKey", show:true,  fx:"panDown" },        
panLeft:  { text:"left.gif",  alt:"left",  key:37,   mask:"ctrlKey", show:true,  fx:"panLeft" },        
home:     { text:"home",      alt:"home",  key:36,   mask:"ctrlKey", show:true,  fx:"home" },           
end:      { text:"end",       alt:"end",   key:35,   mask:"ctrlKey", show:true,  fx:"end" },            

previmg:  { text:"prev image",alt:"<",     key:188,  mask:"ctrlKey", show:false, fx:"prevImage" },      
nextimg:  { text:"next image",alt:">",     key:190,  mask:"ctrlKey", show:false, fx:"nextImage" },      

controls: { text:"controls",  alt:"",      key:69,   mask:"ctrlKey", show:false, fx:"_toggleControls" },    
toolbar:  { text:"toolbar",   alt:"",      key:84,   mask:"ctrlKey", show:false, fx:"_doTBToggle" },        
HLbar:    { text:"highlight", alt:"",      key:72,   mask:"ctrlKey", show:false, fx:"_toggleHighlightBar" } 
}
}




CSIV._keyFilter = function( e ) {
e = (window.event) ? event : arguments[0];
var letEventPass = true;

var pa  = CSIV.actions;
for ( var name in pa ) {
var a = pa[ name ];
if ( e.keyCode == a.key ) {
if ( a.mask == "" && !e.ctrlKey && !e.shiftKey && !e.altKey ) {
eval( "CSIV." + a.fx + "()" );
letEventPass = false;
break;
} else {
var mask = a.mask;
if ( mask.indexOf( "|" ) != -1 ) {

mask = mask.split( "|" );
if ( e[mask[0]] && e[mask[1]] ) {
eval( "CSIV." + a.fx + "()" );
letEventPass = false;
break;
}
} else {

if ( e[a.mask] ) {
eval( "CSIV." + a.fx + "()" );
letEventPass = false;
break;
}
}
}
}
}
if ( !letEventPass ) {
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
}
return letEventPass;
}
document.onkeydown = CSIV._keyFilter;




CSIV_Obj.prototype._refresh = function() {
var nav = this.nav;
nav.innerHTML = "";

if ( this.imgset == null ) {
this._setNavEmpty();
} else {

for ( var i=0;  i<this.imgset.length; i++ ) {
nav.options[i] = new Option( this.imgset[i].name, i+1 );
}
}


this._adjustToolbar();
}

CSIV_Obj.prototype._adjustToolbar = function() {
var nav = this.nav;
var ivwidth = this.portSize.w;
var maxDropWidth = parseInt( ivwidth * 0.7 );
if ( ivwidth < 280 ) {

this.showCtrls.style.display = "none";
maxDropWidth = parseInt( ivwidth * 0.9 );
}
if ( ivwidth < 340 ) {

this.pageinfoSpan.style.display = "none";
this.roomForPageInfo = false;
maxDropWidth = parseInt( ivwidth * 0.9 );
}
if ( ivwidth < 135 ) {

this.disable_toolbar = true;
this.hideToolbar();
} else if ( nav.offsetWidth >= maxDropWidth ) {

nav.style.position = "absolute";
nav.style.width = maxDropWidth + "px";
}  
this.port.style.width = parseInt(this.portSize.w * (csget("DFS__ctrlZoom").value/100)) + "px";
}

CSIV_Obj.prototype._getSrc = function( page ) {
var src = "";
if ( page.type == CSIV.ATTACHMENT_FILE ) {
src = this.cmdpath + page.attachID;
} else {
src = page.url;
}

return src;
}

CSIV_Obj.prototype._setNavEmpty = function() {
var nav = this.nav;
nav.options[0] = new Option( CS_IV_NO_IMAGES, "null" );
this.pageinfoSpan.style.display = "none";
this.imgEl.src = CSExt.blankImg;
}

CSIV_Obj.prototype._setPageset = function() {      
if ( this.imgset && this.currImg != null ) {
this.currPageset = this.imgset[ this.currImg ].pages;
var page =  this.imgset[ this.currImg ].pages[ this.currPage ];
this.imgEl.src = this._getSrc( page );
this._checkImageStatus( page );
this.fcurr.innerHTML = this.currPage + 1;   
this.ftotal.innerHTML = this.currPageset.length;
this.nav.selectedIndex = this.currImg;
this.pageinfoSpan.style.display = ( this.currPageset.length > 1
&& this.roomForPageInfo ) ? "inline" : "none";  
this._setLastViewed();
this._setDefaultSize();
}
}

CSIV_Obj.prototype._checkImageStatus = function( page ) {
if ( page.failed ) {
this.imgEl.src = CSExt.blankImg;
this.setStatus( CS_IV_IMAGE_FAILED );
} else {
this.clearStatus();
}
}




CSIV_Obj.prototype._preloadImage = function( imgid, pageid ) {     
var cimage = this.imgset[ imgid ];
var page = cimage.pages[ pageid ];
var tmpImg = document.createElement( "IMG" );
tmpImg.setAttribute( "id", "CSIV_preload_" + page.imagename + "_" + imgid + "_" + pageid );
this.preload.appendChild( tmpImg );
tmpImg.src = this._getSrc( page );
CSIV.imagesLoading.push( imgid );

window.setTimeout( "CSIV._testImagesLoadHandler('" + this.name + "', '" + imgid + "', '" + pageid + "')", CSIV.loadDelay );
}

CSIV_Obj.prototype._testImageLoaded = function( imgid, pageid ) {  
var cimage = this.imgset[ imgid ];
var page = cimage.pages[ pageid ];
var img = csget( "CSIV_preload_" + page.imagename + "_" + imgid + "_" + pageid );
if ( typeof img.loadCnt == "undefined" ) {
img.loadCnt = 1;
}
img.loadComplete = img.width > 28 && img.height > 28;

if ( img.loadComplete ) {

page.w = img.width;
page.h = img.height;


img.parentNode.removeChild( img );
img = null;
delete CSIV.imagesLoading[ imgid ];
} else {
if ( img.loadCnt++ < 5 ) {

window.setTimeout( "CSIV._testImagesLoadHandler('" + this.name + "', '" + imgid + "', '" + pageid + "')", CSIV.loadDelay );
} else {

page.failed = true;
delete CSIV.imagesLoading[ imgid ];
this._setIVtoLastViewed();
}
}


var allComplete = true;
for ( var i=0; i<CSIV.imagesLoading.length; i++ ) {
if ( CSIV.imagesLoading[i] ) {
allComplete = false;
break;
}
}
if ( allComplete ) {
CSIV._setLoading( false );
this._setIVtoLastViewed();    
CSIV._initialized();
}
}

CSIV._initialized = function() {
for ( var name in this.viewers ) {
var vw = this.viewers[ name ];
CSExt.dispatchIVUserScript( vw, "_OnIVInitialized" );
}
}

CSIV._testImagesLoadHandler = function( name, imgid, pageid ) {
var obj = CSIV.viewers[ name ];
obj._testImageLoaded( imgid, pageid );
}

CSIV_Obj.prototype._setLastViewed = function() {
if ( !CSIV.loading ) {   
var page = this.imgset[ this.currImg ].pages[ this.currPage ];
var val = ( page.type == CSIV.EXTERNAL_URL ) ? page.url : page.attachID;
this.csfld.setValue( val );
}
}

CSIV_Obj.prototype._setIVtoLastViewed = function() {
var sLast = this.csfld.getValue();     
var found = false;
if ( sLast != "" ) {
var nLast = parseInt( sLast );
var isURL = isNaN( nLast );

for ( var i=0; i<this.imgset.length; i++ ) {
var pages = this.imgset[i].pages;
for ( var j=0; j<pages.length; j++ ) {
if ( isURL ) {
found = pages[j].url == sLast;
} else {
found = pages[j].attachID == nLast;
}
if ( found ) {
this.setImage( i+1 );
this.setPage( j+1 );
break;
}
}
if ( found ) {
break;
}
}
}
if ( !found ) {

this.currImg = 0;
this.currPage = 0;
this._setPageset();
}
}

CSIV_Obj.prototype._setDefaultSize = function() {
if ( this.imgset[ this.currImg ].pages[ this.currPage ].w > this.portSize.w ) {
this.fitToViewer();
} else {
this.zoomTo( 100 );
}
}




CSIV.setImage = function( n ) {
var obj = CSIV.focus;
if ( obj  ) {
obj.setImage( n );
}
}

CSIV.setFocus = function( viewer ) {
var vw = null;
if ( viewer ) {

if ( typeof viewer == "object" && CSIV.viewers[ viewer.name ] ) {
vw = viewer;
} else if ( typeof viewer == "string" && CSIV.viewers[ viewer ] ) {
vw = CSIV.viewers[ viewer ];
}
if ( vw ) {

vw.setFocus();
}
}  
return vw;
}

CSIV.hasFocus = function() {
return CSIV.focus.name;
}

CSIV.prevImage = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.prevImage();
}
}

CSIV.nextImage = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.nextImage();
}
}

CSIV.nextPage = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.nextPage();
}
return false; 
}


CSIV.prevPage = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.prevPage();
}
return false;
}

CSIV.panRight = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.port.scrollLeft += obj.panInc;
}
return false;
}

CSIV.panLeft = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.port.scrollLeft -= obj.panInc;
}
return false;
}

CSIV.panDown = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.port.scrollTop += obj.panInc;
}
return false;
}

CSIV.panUp = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.port.scrollTop -= obj.panInc;
}
return false;
}

CSIV.home = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.home();
}
return false;
}

CSIV.end = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.end();
}
return false;
}

CSIV.setPosition = function( x, y ) {
var obj = CSIV.focus;
if ( obj ) {
obj.setPosition( x, y );
}
}

CSIV_Obj.prototype._createHighlightBar = function() {
var hi = document.createElement( "DIV" );
hi.setAttribute( "id", "CSIV_highlightBar_" + this.name );
var imgElHeight = 0;
if ( this.currImg ) {
imgElHeight = this.imgset[ this.currImg ].pages[ this.currPage ].h;
}
with ( hi.style ) {
position = "absolute";
backgroundColor = CSIV.hightlightBarColor;
border = "1px solid gray";
zIndex = 99999;
display = "none";
top = "25%";
left = "0px";
width = this.portSize.w - CSIV._getVertScrollSize( imgElHeight, this.port ) + "px";
height = "20px";
lineHeight = 0;
fontSize = 0;
cursor = "crosshair";
}
cs_setOpacity( hi, 0.3 );
this.wrp.appendChild( hi );
return hi;
}

CSIV._toggleHighlightBar = function() {
var obj = CSIV.focus;
var hi = obj.highlightBar;
var imgElHeight = this.imgset[ this.currImg ].pages[ this.currPage ].h;
if ( obj.hightlightBarOn ) {
hi.style.display = "none";
obj.hightlightBarOn = false;

} else {
hi.style.display = "block";
hi.style.width = obj.portSize.w - CSIV._getVertScrollSize( imgElHeight, obj.port ) + "px";
obj.hightlightBarOn = true;

}
}

CSIV_Obj.prototype._createHighlightArea = function() {
var hi = document.createElement( "DIV" );
hi.setAttribute( "id", "CSIV_highlightArea_" + this.name );
with ( hi.style ) {
position = "absolute";
backgroundColor = CSIV.hightlightAreaColor;
border = "1px solid gray";
zIndex = 99999;
display = "none";
lineHeight = "1px";
cursor = "crosshair";
}
cs_setOpacity( hi, 0.3 );     
this.port.appendChild( hi );
return hi;
}

CSIV.setHighlightAreaColor = function( color ) {
var obj = CSIV.focus;
if ( color ) {
obj.setHighlightAreaColor( color );
}
}

CSIV.setHighlightBarOn = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.setHighlightBarOn();
}
}

CSIV.isHighlightBarOn = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.isHighlightBarOn();
}
}

CSIV.isHighlightAreaOn = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.isHighlightAreaOn();
}
}

CSIV_Obj.prototype._centerOnHighlight = function() {
this.port.scrollTop  = this.highlightAreaCache.y * this.scaleFactor - 2;
this.port.scrollLeft = this.highlightAreaCache.x * this.scaleFactor - 2;
}

CSIV.onScroll = function() {

var obj = CSIV.focus;
var port = obj.port;
var imgEl = obj.imgEl;
CSIV._setImgPos( port.scrollLeft, port.scrollTop );

if ( CSUtil.isFF ) {
var wrap = obj.wrp;
var hi = obj.highlightArea;
var horizScrollSize = CSIV._getHorizScrollSize( imgEl.width, port );
var vertScrollSize  = CSIV._getVertScrollSize( imgEl.height, port );
if ( obj.highlightAreaOn ) {


hi.style.display = "block";

with ( hi.style ) {
top = (obj.highlightAreaCache.y * obj.scaleFactor) - port.scrollTop + "px";
left = (obj.highlightAreaCache.x * obj.scaleFactor) - port.scrollLeft + "px";
width = (obj.highlightAreaCache.w * obj.scaleFactor) + "px";
height = (obj.highlightAreaCache.h * obj.scaleFactor) + "px";
}

if ( hi.offsetTop + hi.offsetHeight + wrap.offsetTop <= wrap.offsetTop ||        
hi.offsetTop >= port.offsetHeight - horizScrollSize ||                      
hi.offsetLeft + hi.offsetWidth + wrap.offsetLeft <= wrap.offsetLeft ||      
hi.offsetLeft >= wrap.offsetWidth - vertScrollSize ) {                      
hi.style.display = "none";
} else {


if ( hi.offsetTop + wrap.offsetTop <= wrap.offsetTop ) {
var adj = ((obj.highlightAreaCache.y + obj.highlightAreaCache.h) * obj.scaleFactor) - port.scrollTop;
hi.style.top = 0;
hi.style.height = adj + "px"; 
}

if ( hi.offsetTop + hi.offsetHeight >= port.offsetHeight - horizScrollSize ) {
var adj = port.offsetHeight - horizScrollSize - hi.offsetTop;
hi.style.height = adj + "px";
}

if ( hi.offsetLeft <= port.offsetLeft ) {
var adj = hi.offsetLeft + hi.offsetWidth - port.offsetLeft;
hi.style.left = 0;
hi.style.width = adj + "px";
}

if ( hi.offsetLeft + hi.offsetWidth >= port.offsetLeft + port.offsetWidth - vertScrollSize ) {
var adj = port.offsetLeft + port.offsetWidth - vertScrollSize - hi.offsetLeft;
hi.style.width = adj + "px";
}

hi.style.display = "block";
}
obj.lastScrollTop = port.scrollTop;
obj.lastScrollLeft = port.scrollLeft;
}
}
}

CSIV._setMousePosToggle = function() {
var b = CSIV.mousePosToggle.checked;
CSUtil.showMousePos = b;
var obj = CSIV.focus;
var coords = obj.statusDiv;
coords.style.display = (b) ? "inline" : "none";
document.onmousemove = (b) ? CSUtil.getMouseXY : null;
}

CSIV._setImgPos = function(  ) {



}

CSIV._setMousePos = function( x, y ) {
var obj = CSIV.focus;
var display = obj.statusSpan;
var wrap = obj.wrp;
var port = obj.port;
var imgElHeight = this.imgset[ this.currImg ].pages[ this.currPage ].h;
var shim = obj.wrp.parentNode;
var page = shim.parentNode;
var vertScrollSize = CSIV._getVertScrollSize( imgElHeight, port );

x -= page.offsetLeft;
y -= page.offsetTop;
var dispX = parseInt( ( x - wrap.offsetLeft + port.scrollLeft ) / obj.scaleFactor );
var dispY = parseInt( ( y - wrap.offsetTop + port.scrollTop ) / obj.scaleFactor );
if ( x < wrap.offsetLeft || x > wrap.offsetLeft + wrap.offsetWidth - vertScrollSize ||
y < wrap.offsetTop  || y > wrap.offsetTop + wrap.offsetHeight - obj.tbHeight ) {  
dispX = 0; dispY = 0;
}
display.innerHTML = "mouse: (" + dispX + ", " + dispY + ")";
}

CSIV.zoomIn = function() {
CSIV._doZoom( true );
return false;
}

CSIV.zoomOut = function() {
CSIV._doZoom( false );
return false;
}

CSIV_Obj.prototype._doZoom = function( zoom_in ) {
if ( this.imgset ) {
var deltaW = parseInt( this.imgEl.width * this.zoomInc );
var deltaH = parseInt( this.imgEl.height * this.zoomInc );
if ( !zoom_in ) {
deltaW *= -1;
deltaH *= -1;
}
var perc = (this.imgEl.width + deltaW) / this.imgset[ this.currImg ].pages[ this.currPage ].w;
this._zoomTo( perc );
}
}

CSIV._doZoom = function( zoom_in ) {
var obj = CSIV.focus;
if ( obj ) {             
obj._doZoom( zoom_in );
}
}

CSIV_Obj.prototype._zoomTo = function( percent ) {      
if ( this.currImg != null && percent ) {
if ( percent < 0.05 ) percent = 0.05;
if ( percent > 8 ) percent = 8;
var imgW = this.imgset[ this.currImg ].pages[ this.currPage ].w;
var imgH = this.imgset[ this.currImg ].pages[ this.currPage ].h;

this.scaleFactor = parseFloat( percent );
var perc = 1 - this.scaleFactor;

var deltaW = parseInt( imgW * perc ) * -1;
var deltaH = parseInt( imgH * perc )* -1;
this.imgEl.width = imgW + deltaW;
this.imgEl.height = imgH + deltaH;


if ( this.isHighlightAreaOn() ) {
this.setHighlightAreaPos( this.highlightAreaCache.x, this.highlightAreaCache.y );
this.setHighlightAreaSize( this.highlightAreaCache.w, this.highlightAreaCache.h );
CSIV.onScroll();


var hiArea = this.highlightArea;
if ( hiArea.style.display == "none" ||        
parseInt(hiArea.style.width)  < this.highlightAreaCache.w * this.scaleFactor ||    
parseInt(hiArea.style.height) < this.highlightAreaCache.h * this.scaleFactor       
) {
this._centerOnHighlight();
}
}

if ( CSIV.isHighlightBarOn() ) {
var hiBar = this.highlightBar;
var imgElHeight = this.imgset[ this.currImg ].pages[ this.currPage ].h;
var vertScrollHt  = CSIV._getVertScrollSize( imgElHeight, this.port );
hiBar.style.width = this.port.offsetWidth - vertScrollHt + "px";
}
this._setZoomSpan( percent );
}
return false;
}

CSIV_Obj.prototype._setZoomSpan = function( percent ) {
if( percent ) {
this.zoomSpan.innerHTML = CS_IV_ZOOM + ": " + Math.round( percent * 100 ) + "%";
}
}

CSIV.resetZoom = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.resetZoom();
}
return false;
}

CSIV.fitToViewer = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.fitToViewer();
}
return false;
}

CSIV._getVertScrollSize = function( imgElHeight, port ) {
var portHeight = ( port.offsetHeight == 0 ) ? parseInt( port.style.height ) : port.offsetHeight;
var width = ( imgElHeight >= portHeight ) ? 18 : 0;
width = width - ((CSUtil.isIE) ? 2 : 0);
return width;
}

CSIV._getHorizScrollSize = function( imgElWidth, port ) {
var portWidth = ( port.offsetWidth == 0 ) ? parseInt( port.style.width ) : port.offsetWidth;
var height = ( imgElWidth >= portWidth ) ? 18 : 0;
height = height - ((CSUtil.isIE) ? 2 : 0);
return height;
}

CSIV._toggleControls = function() {
if ( CSIV.ctrlbuttons ) {
if ( CSIV.ctrlbuttons.style.display == "block" ) {
this.hideControlPanel();
} else {
this.showControlPanel();
}
}
}

CSIV.showControlPanel = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.showControlPanel();
}
}

CSIV.hideControlPanel = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.hideControlPanel();
}
}

CSIV.showToolbar = function() {
var obj = CSIV.focus;
if ( obj ) {
obj.showToolbar();
}
}

CSIV.hideToolbar = function() {       
var obj = CSIV.focus;
if ( obj ) {
obj.hideToolbar();
}
}

CSIV._doTBToggle = function() {
var obj = CSIV.focus;
if ( obj && obj.toolbar.style.display == "block" ||
obj.toolbar.style.display == "" ) {
this.hideToolbar();
} else {
this.showToolbar();
}
}


CSIV_Obj.prototype._pageZoom = function( perc ) {
if ( perc > 1 ) {
this.port.style.height = parseInt( this.portSize.h * perc ) + "px";
this.port.style.width = parseInt( this.portSize.w * perc ) + "px";
} else if ( perc < 1 ) {
this.port.style.height = parseInt( this.portSize.h * perc ) - 4 + "px";
this.port.style.width = parseInt( this.portSize.w * perc ) + "px";
} else {
this.port.style.height = this.portSize.h + "px";
this.port.style.width = this.portSize.w + "px";
}
}

CSIV_Obj.prototype._creatNavButtons = function() {

var pa  = CSIV.actions;
var btns = {};


for ( var name in pa ) {
var a = pa[ name ];
if ( a.show ) {
var btn = document.createElement( "BUTTON" );
with ( btn.style ) {
width = "50px";
}
var text = a.text;
var hasImage = a.text.indexOf(".gif") != -1;
if ( a.text != "" && hasImage ) {
text = (hasImage) ? a.text.replace(/\.gif/, "") : a.text;
var img = document.createElement( "IMG" );
img.src = eval( "CSExt." + text + "Img" );
btn.appendChild( img );
} else {
btn.innerHTML = a.text;
}
var mask = (a.mask == "") ? a.mask : a.mask + " + ";
btn.setAttribute( "id", "CSIV_ctrlbutton_" + name );
btn.title = text + " ( " + mask + a.alt + " )";
btn.onclick = CSIV[ a.fx ];


if ( name == "panUp" ) {
btn.onclick = function () { return false; };
btn.onmousedown = function () { CSUtil.mousedownhelper( CSIV.panUp ); };
btn.onmouseup = CSUtil.setmouseup;
}
if ( name == "panRight" ) {
btn.onclick = function () { return false; };
btn.onmousedown = function () { CSUtil.mousedownhelper( CSIV.panRight ); };
btn.onmouseup = CSUtil.setmouseup;
}
if ( name == "panDown" ) {
btn.onclick = function () { return false; };
btn.onmousedown = function () { CSUtil.mousedownhelper( CSIV.panDown ); };
btn.onmouseup = CSUtil.setmouseup;
}
if ( name == "panLeft" ) {
btn.onclick = function () { return false; };
btn.onmousedown = function () { CSUtil.mousedownhelper( CSIV.panLeft ); };
btn.onmouseup = CSUtil.setmouseup;
}

btns[ name ] = btn;
}
}

var c = CSIV.ctrlbuttons;
if ( !c ) {
c = document.createElement( "DIV" );
c.setAttribute( "id", "CSIV_ctrlbuttons" );
with ( c.style ) {
fontFamily = "arial";
position = "absolute";
border = "1px solid gray";
backgroundColor = "#efefef";
width = "200px";
height = (CSUtil.isIE) ? "310px" : "340px";
zIndex = 99999;
display = "none";
}
var drag = document.createElement( "DIV" );
drag.setAttribute( "id", "CSIV_ctrlbuttons_drag" );
with ( drag.style ) {
backgroundColor = "#808080";
backgroundImage = "url(" + CSExt.handleImg + ")";
borderBottom = "1px solid gray";
width = "100%";
height = "20px";
cursor = "move";
}
var x = document.createElement( "DIV" );
with ( x.style ) {
backgroundColor = "#FF8080";
borderLeft = "1px solid gray";
width = "20px";
height = "20px";
cssFloat = "right";
styleFloat = "right";
textAlign = "center";
cursor = "pointer";
}
x.onclick = CSIV.hideControlPanel;
x.innerHTML = "x";


this.wrp.parentNode.appendChild( c );

drag.appendChild( x );
c.appendChild( drag );

var c2 = document.createElement( "DIV" );
with ( c2.style ) {
fontSize = "10pt";
marginTop = "2px";
padding = "8px";
textAlign = "center";
}
c.appendChild( c2 );


var f_pgnav = document.createElement( "FIELDSET" );
f_pgnav.setAttribute( "id", "CSIV_pgnav_fieldset" );

var l_pgnav = document.createElement( "LEGEND" );
var d_pgnav = document.createElement( "DIV" );
d_pgnav.style.margin = "4px";
l_pgnav.innerHTML = CS_IV_PAGE_NAV;
f_pgnav.appendChild( l_pgnav );
f_pgnav.appendChild( d_pgnav )
c2.appendChild( f_pgnav );
d_pgnav.appendChild( btns[ "prev" ] );
d_pgnav.appendChild( btns[ "next" ] );
d_pgnav.appendChild( document.createElement( "BR" ) );
d_pgnav.appendChild( btns[ "home" ] );
d_pgnav.appendChild( btns[ "end" ] );


var f_pan = document.createElement( "FIELDSET" );
f_pan.setAttribute( "id", "CSIV_pan_fieldset" );
var l_pan = document.createElement( "LEGEND" );
var d_pan = document.createElement( "DIV" );
d_pan.style.margin = "4px";
l_pan.innerHTML = CS_IV_PAGE_PAN;
f_pan.appendChild( l_pan );
f_pan.appendChild( d_pan );    
c2.appendChild( f_pan );
d_pan.appendChild( btns[ "panUp" ] );
d_pan.appendChild( document.createElement( "BR" ) );
d_pan.appendChild( btns[ "panLeft" ] );
d_pan.appendChild( btns[ "panRight" ] );
d_pan.appendChild( document.createElement( "BR" ) );
d_pan.appendChild( btns[ "panDown" ] );


var f_zoom = document.createElement( "FIELDSET" );
f_zoom.setAttribute( "id", "CSIV_zoom_fieldset" );
var l_zoom = document.createElement( "LEGEND" );
var d_zoom = document.createElement( "DIV" );
d_zoom.style.margin = "4px";
l_zoom.innerHTML = CS_IV_ZOOM;
f_zoom.appendChild( l_zoom );
f_zoom.appendChild( d_zoom );
c2.appendChild( f_zoom );
d_zoom.appendChild( btns[ "zoomin" ] );
d_zoom.appendChild( btns[ "zoomout" ] );
d_zoom.appendChild( document.createElement( "BR" ) );
d_zoom.appendChild( btns[ "fit" ] );
d_zoom.appendChild( btns[ "reset" ] );














































CSIV.ctrlbuttons = c;

CSUtil.moveApproved( "CSIV_ctrlbuttons", "CSIV_ctrlbuttons_drag" );
}


var previmg = pa[ "previmg" ];
var nextimg = pa[ "nextimg" ];
this.nav.title = " ( " + previmg.mask + previmg.alt + " ) " + previmg.text + " | "
+ nextimg.text + " ( " + previmg.mask + nextimg.alt + " )";
}







function csajx_getAttachmentsList() {
var DFS__Client = "JSP";
var args = "&DFS__Client=" + DFS__Client + "&DFS__UsePage=/jsp/data_xml.jsp&DFS__Field=ATTACHID&DFS__Field=TITLE&DFS__Field=PATH&DFS__Field=ISURL";
var url = csajx_getCommandURL( CSIV.cmdList, args );
if ( url ) {
cs_callAjax( url, "", csajx_getAttachmentsListCallback );
} else {
cs_trace( "Ajax error: url component", 0, "red" );
}
}


function csajx_getAttachmentsListCallback() {   
if ( this.xhr ) {
var xml = this.xhr.responseXML;
if ( xml ) {
CSIV._parseAttachmentsXML( xml );
}
CSIV._finishInit();
}
}


CSIV._parseAttachmentsXML = function( xml ) {
if ( xml ) {
var cnt = 0;

var fields = xml.getElementsByTagName( "field" );

var type = CSIV.ATTACHMENT_URL;
var isURL = "";
var title = "";
var url = "";
var attachID = "";
var vw = null;
var cimage = null;

if ( fields.length > 0 ) {
for( var idx=0; idx<fields.length; idx++ ) {
var fid = fields[idx].getAttribute( "id" );
if ( fid == "ATTACHID" ) {
attachID = fields[idx].getAttribute( "value" );
}
if ( fid == "TITLE" ) {
title = fields[idx].getAttribute( "value" );
}
if ( fid == "ISURL" ) {
isURL = fields[idx].getAttribute( "value" );
}
if ( fid == "PATH" ) {
var testURL = fields[idx].getAttribute( "value" );
if ( testURL.search( /\.jpg$|\.gif$|\.png$/i ) != -1 ) {
url = testURL;
}
}

if ( attachID != "" && title != "" && url != "" && isURL != "" ) {

if ( isURL == "0" ) {
type = CSIV.ATTACHMENT_FILE;
}

for ( var name in CSIV.viewers ) {
vw = CSIV.getImageViewer( name );
if ( vw.do_attachments ) {
cnt++;
cimage = vw.addImage( title );
cimage._addPage( type, attachID, url );
}
}


type = CSIV.ATTACHMENT_URL;
attachID = "";
title = "";
url = "";
isURL = "";
vw = null;
cimage = null;
}
} 
} 
if ( cnt == 0 ) {
CSIV._setLoading( false );
}
}
}








CSExt.dispatchIVUserScript = function( iv, evt ) {
var ivname = iv.name;
var func_ch = ivname + evt;
if (window[func_ch]) {
var event = (window.event) ? window.event : "";
window[func_ch]( iv, event );
}
}





function CSIV_Image( viewer, name ) {
this.id = viewer.imgset.length;
this.viewer = viewer;
this.name = name;
this.pages = [];
return this;
}

function CSIV_Page( id, imageName, type, attachID, url ) {
this.id = id;
this.imagename = imageName;
this.type = type;
this.attachID = ( attachID != "" ) ? attachID : -1;
this.url = url;
this.w = 0;
this.h = 0;
this.imgType = url.toLowerCase().substr( url.search( /\.jpg$|\.gif$|\.png$/i ), url.length );
return this;
}

CSIV_Obj.prototype._getImageId = function( name ) {
return this.imgmap[ name ];
}

CSIV_Obj.prototype._isValidImageType = function( type ) {
return type > -1 && type <= 2;
}









CSIV_Obj.prototype.addImage = function( name, resource ) {
var cimage = null;
if ( name && name != "" ) {
if ( !this.imgset ) {
this.imgset = [];
this.imgmap = {};
}
cimage = new CSIV_Image( this, name );
this.imgset.push( cimage );
this.imgmap[ name + "_" + cimage.id ] = cimage.id;
}
if ( resource ) {
cimage.addPage( resource );
}
return cimage;
}

CSIV_Image.prototype._addPage = function( type, attachID, resource ) {
var id = this.id;
var pageid = this.viewer.imgset[ id ].pages.length;
var page = new CSIV_Page( pageid, this.name, type, attachID, resource );
if ( page ) {
this.viewer.imgset[ id ].pages.push( page );
this.viewer._preloadImage( id, this.viewer.imgset[ id ].pages.length-1 );
}
}

CSIV_Image.prototype.addPage = function( resource ) {
this._addPage( CSIV.EXTERNAL_URL, "", resource );
this.viewer._refresh();
}

CSIV_Image.prototype.deletePage = function( page_num ) {
if ( this.imgset ) {
var page_index = page_num-1;
var pages = this.viewer.imgset[ this.id ].pages;
var page = pages[ page_index ];
if ( page ) {
var cnt = 0;
var arr = [];
for ( var i=0; i<pages.length; i++ ) {
if ( i != page_index ) {
arr[ cnt++ ] = pages[ i ];
}
}
if ( arr.length == 0 ) {
this.viewer.deleteImage( this.id + 1 );
} else {
this.viewer.imgset[ this.id ].pages = arr;
if ( this.viewer.currPage != 0 ) {
this.viewer.currPage--;
}
}
this.viewer._refresh();
this.viewer._setPageset();
}
}
}


CSIV_Image.prototype.getName = function() {
return this.name;
}

CSIV_Image.prototype.getUrl = function() {
return this.pages[ this.viewer.currPage ].url;
}

CSIV_Image.prototype.getAttachmentID = function() {
return this.pages[ this.viewer.currPage ].attachID;
}

CSIV_Image.prototype.getType = function() {
return CSIV.image_types[ this.pages[ this.viewer.currPage ].type ];
}

CSIV_Image.prototype.getImageType = function() {
return this.pages[ this.viewer.currPage ].imgType;
}



CSIV_Obj.prototype.deletePage = function( img_num, page_num ) {
if ( this.imgset ) {
var img = this.getImageObject( img_num-1 );
if ( img ) {
img.deletePage( page_num-1 );
}
}
}

CSIV_Obj.prototype.getImageObject = function( img_num ) {
var imgObj = null;
if ( this.imgset ) {
imgObj = this.imgset[ img_num-1 ];
}
return imgObj;
}

CSIV_Obj.prototype.getNumberOfImages = function() {
var imgs = 0;
if ( this.imgset ) {
imgs = this.imgset.length;
}
return imgs;
}

CSIV_Obj.prototype.getCurrentImageObject = function() {
var imgObj = null;
if ( this.imgset ) {
imgObj = this.imgset[ this.currImg ];
}
return imgObj;
}

CSIV_Obj.prototype.getCurrentImageNum = function() {
var imgnum = -1;
if ( this.imgset ) {
imgnum = this.currImg + 1;  
}
return imgnum;
}

CSIV_Obj.prototype.deleteImage = function( img_num ) {
if ( this.imgset ) {
var img_index = img_num - 1;
var img = this.imgset[ img_index ];
if ( img ) {
var cnt = 0;
var imgset = [];
var imgmap = {};
for ( var i=0; i<this.imgset.length; i++ ) {
if ( i != img_index ) {
var cimage = this.imgset[ i ];
cimage.id = cnt;
imgset[ cnt ] = cimage;
imgmap[ cimage.name + "_" + cimage.id ] = cimage.id;
cnt++;
}
}
if ( imgset.length == 0 ) {
this.deleteImageSet();
} else {
this.imgset = imgset;
this.imgmap = imgmap;
if ( this.currImg != 0 ) {
this.currImg--;
}
}
this._refresh();
this._setPageset();
}
} 
}

CSIV_Obj.prototype.deleteImageSet = function() {
this.imgset = null;
this.currImg = null;
this.imgEl.src = CSExt.blankImg;
this.imgEl.width = "101";
this.imgEl.height = "101";
this._refresh();
}

CSIV_Obj.prototype.refresh = function() {
this._refresh();
}

CSIV_Obj.prototype.getVisibleImageName = function() {
var ret = null;
if ( this.currImg != null ) {
ret = this.imgset[ this.currImg ].name;
}
return ret;
}

CSIV_Obj.prototype.getVisibleImageNumber = function() {
var ret = null;
if ( this.currImg != null ) {
var cimage = this.imgset[ this.currImg ];
ret = this._getImageId( cimage.name + "_" + cimage.id ) + 1;
}
return ret;
}

CSIV_Obj.prototype.getVisiblePageNumber = function() {
var ret = null;
if ( this.currPage != null ) {
ret = this.currPage + 1;
}
return ret;
}

CSIV_Obj.prototype.getVisiblePageType = function() {
var ret = null;
if ( this.currImg && this.currPage ) {
var page = this.viewer.imgset[ this.currImg ].pages[ this.currPage ];
ret = page.imgType;
}
return ret;
}





CSIV_Obj.prototype.prevImage = function() {
if ( this.imgset && this.currImg > 0 ) {
this.currImg--;
this.currPage = 0;
this._setPageset();
}
}

CSIV_Obj.prototype.nextImage = function() {
if ( this.imgset && this.currImg < this.imgset.length-1 ) {
this.currImg++;
this.currPage = 0;
this._setPageset();
}
}

CSIV_Obj.prototype.setImage = function( n ) {
if ( this.imgset ) {
n = parseInt(n);
if ( n > 0 && n <= this.imgset.length ) {
this.currImg = n-1;  
this.currPage = 0;
this._setPageset();
}
}
}





CSIV_Obj.prototype.nextPage = function() {
if ( this.imgset && this.currPage < this.currPageset.length-1 ) {
var page = this.imgset[ this.currImg ].pages[ ++this.currPage ];
this.imgEl.src = this._getSrc( page );
this.imgEl.width = page.w;
this.imgEl.height = page.h;
this._setDefaultSize();
this._checkImageStatus( page );
this.fcurr.innerHTML = this.currPage + 1;
this._setLastViewed()
CSIV.home();
}
}

CSIV_Obj.prototype.prevPage = function() {
if ( this.imgset && this.currPage > 0 ) {
var page = this.imgset[ this.currImg ].pages[ --this.currPage ];
this.imgEl.src = this._getSrc( page );
this.imgEl.width = page.w;
this.imgEl.height = page.h;
this._setDefaultSize();
this._checkImageStatus( page );
this.fcurr.innerHTML = this.currPage + 1;
this._setLastViewed()
CSIV.home();
}
}

CSIV_Obj.prototype.setPage = function( n ) {
if ( this.imgset ) {
if ( n > 0 && n <= this.imgset[ this.currImg ].pages.length ) {
this.currPage = n-1;  
this._setPageset();
}
}
}





CSIV_Obj.prototype.panRight = function() {
this.port.scrollLeft += this.panInc;
}

CSIV_Obj.prototype.panLeft = function() {
this.port.scrollLeft -= this.panInc;
}

CSIV_Obj.prototype.panDown = function() {
this.port.scrollTop += this.panInc;
}

CSIV_Obj.prototype.panUp = function() {
this.port.scrollTop -= this.panInc;
}

CSIV_Obj.prototype.home = function() {
this.port.scrollTop = 0;
this.port.scrollLeft = 0;
}

CSIV_Obj.prototype.end = function() {
this.port.scrollTop = this.port.scrollHeight;
}

CSIV_Obj.prototype.setPosition = function( x, y ) {
var adjX = parseInt(x * this.scaleFactor);
var adjY = parseInt(y * this.scaleFactor);
if ( typeof y != "undefined" && y >= 0 ) {
this.port.scrollTop = adjY;
}
if ( typeof x != "undefined" && x >= 0 ) {
this.port.scrollLeft = adjX;
}
this.lastScrollTop  = this.port.scrollTop;
this.lastScrollLeft = this.port.scrollLeft;
}





CSIV_Obj.prototype.setHighlightBarHeight = function( n ) {
if ( n && n <= parseInt(this.port.style.height) ) {
this.highlightBar.style.height = n + "px";
}
}

CSIV_Obj.prototype.setHighlightBarOn = function() {
var b = CSIV.highlightToggle.checked;
var imgElHeight = this.imgset[ this.currImg ].pages[ this.currPage ].h;
with ( this.highlightBar.style ) {
display = (b) ? "block" : "none";
width = this.portSize.w - CSIV._getVertScrollSize( imgElHeight, this.port ) + "px";
}
this.hightlightBarOn = b;
}

CSIV_Obj.prototype.isHighlightBarOn = function() {
return this.hightlightBarOn;
}

CSIV_Obj.prototype.setHighlightBarColor = function( color ) {
if ( color ) {
this.highlightBar.style.backgroundColor = color;
}
}

CSIV_Obj.prototype.setHighlightBarOpacity = function( opacity ) {
if ( opacity && opacity >= 0 && opacity < 1 ) {
cs_setOpacity( this.highlightBar, opacity );
}
}





CSIV_Obj.prototype.setHighlightAreaPos = function( x, y ) {
var hi = this.highlightArea;

if ( this &&
x > 0 && x < this.imgset[ this.currImg ].pages[ this.currPage ].w &&
y > 0 && y < this.imgset[ this.currImg ].pages[ this.currPage ].h ) {

this.highlightAreaCache.x = x;
this.highlightAreaCache.y = y;

var adjX = parseInt(x * this.scaleFactor);
var adjY = parseInt(y * this.scaleFactor);


if ( CSUtil.isIE ) {
adjX += this.port.scrollLeft;
adjY += this.port.scrollTop;
}


adjX -= this.port.scrollLeft;
adjY -= this.port.scrollTop;

with ( hi.style ) {
left = adjX + "px";
top = adjY + "px";
}
}
}

CSIV_Obj.prototype.setHighlightAreaSize = function( w, h ) {
var hi = this.highlightArea;
if ( this &&
w > 0 && w < this.imgset[ this.currImg ].pages[ this.currPage ].w &&
h > 0 && h < this.imgset[ this.currImg ].pages[ this.currPage ].h ) {

this.highlightAreaCache.w = w;
this.highlightAreaCache.h = h;

var adjW = parseInt(w * this.scaleFactor);
var adjH = parseInt(h * this.scaleFactor);

with ( hi.style ) {
width = adjW + "px";
height = adjH + "px";
}
}
}

CSIV_Obj.prototype.setHighlightAreaOn = function( on ) {
this.highlightArea.style.display = (on) ? "block" : "none";
this.highlightAreaOn = on;
}

CSIV_Obj.prototype.isHighlightAreaOn = function() {
return this.highlightAreaOn;
}

CSIV_Obj.prototype.setHighlightAreaColor = function( color ) {
if ( color ) {
this.highlightArea.style.backgroundColor = color;
}
}

CSIV_Obj.prototype.setHighlightAreaOpacity = function( opacity ) {
if ( opacity && opacity >= 0 && opacity < 1 ) {
cs_setOpacity( this.highlightArea, opacity );
}
}





CSIV_Obj.prototype.zoomIn = function() {
this._doZoom( true );
}

CSIV_Obj.prototype.zoomOut = function() {
this._doZoom( false );
}

CSIV_Obj.prototype.zoomTo = function( percent ) {
if ( !percent ) return;
var perc = parseFloat( percent ) / 100;
if ( perc > 0 ) {
this._zoomTo( perc );
}
}

CSIV_Obj.prototype.resetZoom = function() {
if ( this.imgset ) {
this.imgEl.width = this.imgset[ this.currImg ].pages[ this.currPage ].w;
this.imgEl.height = this.imgset[ this.currImg ].pages[ this.currPage ].h;
this.scaleFactor = 1.0;
this._setZoomSpan( this.scaleFactor );

if ( this.isHighlightAreaOn() ) {
this.setHighlightAreaPos( this.highlightAreaCache.x, this.highlightAreaCache.y );
this.setHighlightAreaSize( this.highlightAreaCache.w, this.highlightAreaCache.h );
this._centerOnHighlight();
} else {
CSIV.home();
}
}
return false;
}

CSIV_Obj.prototype.fitToViewer = function() {
if ( this.imgset ) {


var imgW = this.imgset[ this.currImg ].pages[ this.currPage ].w;
var imgH = this.imgset[ this.currImg ].pages[ this.currPage ].h;
var portHeight = ( this.port.offsetHeight == 0 ) ? parseInt( this.port.style.height ) : this.port.offsetHeight;
var vertScrollSize = CSIV._getVertScrollSize( imgH, this.port );
var perc = (this.portSize.w - vertScrollSize) / imgW;
var scaledHeight = parseInt( imgH * perc );
if ( scaledHeight < portHeight ) {
perc = (this.portSize.w) / imgW;
}
this._zoomTo( perc );
if ( this.isHighlightAreaOn() ) {
this._centerOnHighlight();
} else {
CSIV.home();
}
}
return false;
}





CSIV_Obj.prototype.showControlPanel = function() {
var ctrls = CSIV.ctrlbuttons;
var wrp = this.wrp;
var shim = ctrls.parentNode;
var ctrlPage = -1;
if ( shim && shim.id ) {
ctrlPage = parseInt( shim.id.replace( /DFS__shimdiv/, "" ) );
}
if ( ctrlPage != CSExt.VisiblePage ) {
ctrls.parentNode.removeChild( ctrls );
wrp.parentNode.appendChild( ctrls );
}
with ( ctrls.style ) {
display = "block";
top = wrp.style.top;
left = parseInt(wrp.style.left) + parseInt(wrp.style.width) + 6 + "%";
}
}

CSIV_Obj.prototype.hideControlPanel = function() {
CSIV.ctrlbuttons.style.display = "none";
}

CSIV_Obj.prototype.showToolbar = function() {
if ( !this.disable_toolbar && !this.toolbar_visible ) {
this.toolbar.style.display = "block";
this.port.style.height = parseInt(this.port.style.height) - this.tbHeight + 5 + "px";
this.toolbar_visible = true;
}
}

CSIV_Obj.prototype.hideToolbar = function() {
if ( this.toolbar_visible ) {
this.toolbar.style.display = "none";
this.tbHeight = this.wrp.offsetHeight - parseInt(this.port.style.height);
this.port.style.width = this.portSize.w + "px";
this.port.style.height = this.wrp.offsetHeight - 5 + "px";
this.toolbar_visible = false;
}
}





CSIV.getImageViewer = function( name ) {
return CSIV.viewers[ name ];
}

CSIV.getImageViewerNames = function() {
var arr = [];
for ( var name in CSIV.viewers ) {
arr.push( name );
}
return arr;
}

CSIV.getNumberOfImageViewers = function() {
return CSIV.cnt;  
}

CSIV_Obj.prototype.hasFocus = function() {
return CSIV.focus.name == this.name;
}

CSIV_Obj.prototype.setFocus = function() {
CSIV.focus = this;


for ( var vname in CSIV.viewers ) {
var v = CSIV.viewers[ vname ];
v.wrp.style.borderColor = "gray";
v.imgEl.style.cursor = "pointer";
v.wrp.title = CS_IV_CLICK_SET_FOCUS;
}


this.wrp.style.borderColor = "navy";
this.imgEl.style.cursor = "crosshair";
this.wrp.title = "";











if ( CSIV.ctrlbuttons.style.display == "block" ) {
CSIV.showControlPanel();
}
}





CSIV_Obj.prototype.setPanIncrement = function( n ) {
if ( n > 0 ) {
this.panInc = n;
}
}

CSIV_Obj.prototype.setZoomIncrement = function( n ) {
if ( n > 0 ) {
this.zoomInc = n;
}
}

CSIV_Obj.prototype.getLOPageNum = function() {
var ret = -1;
var page = this.wrp.parentNode;
if ( page && page.id ) {
ret = parseInt( page.id.replace( /DFS__shimdiv/, "" ) );
}
return ret;
}

CSIV_Obj.prototype.setStatus = function( msg ) {
this.statusDiv.style.display = "block";
this.statusSpan.innerHTML = msg;
}

CSIV_Obj.prototype.getStatus = function() {
return this.statusSpan.innerHTML;
}

CSIV_Obj.prototype.clearStatus = function() {
this.statusDiv.style.display = "none";
this.statusSpan.innerHTML = "";
}

CSIV_Obj.prototype.getAttachmentsList = function( callback, type ) {
var DFS__Client = "JSP";
var args = "&DFS__Client=" + DFS__Client + "&DFS__UsePage=/jsp/data_xml.jsp&DFS__Field=ATTACHID&DFS__Field=TITLE&DFS__Field=PATH&DFS__Field=ISURL";
var url = csajx_getCommandURL( CSIV.cmdList, args );
if ( url ) {
CSIV.userCallback = callback;
CSIV.userAjaxType = type;
cs_callAjax( url, "", CSIV._userGetAttachmentsListCallback );
} else {
cs_trace( "Ajax error: url component", 0, "red" );
}
}

CSIV._userGetAttachmentsListCallback = function() {
if ( this.xhr ) {
var xml = this.xhr.responseXML;
var txt = this.xhr.responseText;
var passback = ( CSIV.userAjaxType == "xml" ) ? xml : txt;
CSIV.userCallback( passback );
}
}







CSOff = { reconnecting:false, path:"", didRedir:false };

CSExt.Initialize.Online = function() {
if (!window.ActiveXObject) return;
if (!document.htmlform.DFS__OfflineEnabled) return;
if ( document.htmlform.DFS__OfflineEnabled.value != "1") return;
if (document.location.protocol=="file:") {
CSOff.path = unescape(document.location.pathname);
if (CSOff.path.indexOf('/')==0) 
CSOff.path = CSOff.path.substr(1);

}
if ( document.htmlform.LF__Offline.value == "1") {
CSOff.setOffline();
} else {
CSOff.setOnline();
}
CSOff.setDirty(false);
}

CSExt.OnChange_aEP.Offline = function( f ) {
if (CSExt.CSForm.isOffline() && !CSExt.DFS__DHTML_OnLoad) {
CSOff.setDirty(true);
}
}



CSExt.OnButtonClick_aEP.Offline = function( f ) {
if (CSExt.CSForm.isOffline() && !CSExt.DFS__DHTML_OnLoad) {
CSOff.setDirty(true);
}
}

CSExt.CheckOnline.LF__Offline = function( p ) {
if (document.htmlform.LF__Offline && document.htmlform.LF__Offline.value == "1" && CSOff.reconnecting==false) {
CSExt.preventDefault();
}
}

function cs_workOffline() {
if (!ActiveXObject) return; 


var saveDFSSI = "";
var si = document.getElementById('DFS__SI');
if (si) {
saveDFSSI = si.value;
si.value = "";
}  

CSOff.setOffline();
var rc = CSOff.save();
if (!rc) {
CSOff.setOnline();
}


if (si)
si.value = saveDFSSI;
}

function cs_save() {
CSOff.save(CSOff.path);
}

function cs_saveAs() {
CSOff.save("");
}

function cs_reconnect() {
CSOff.reconnect();
}


CSOff.setOnline =  function( user ) {

if (user && user != document.htmlform.LF__User.value) {
alert( CS_OFFLINE_ERR_USER );
return false;
}
var div = document.getElementById("DFS__workoffline");
if (div) div.style.display = "block";
CSUtil.createIFrame(document.getElementById('DFS__workoffline'));
div = document.getElementById("DFS__reconnect");
CSUtil.createIFrame(document.getElementById('DFS__reconnect'));
if (div) div.style.display = "none";
document.htmlform.LF__Offline.value = "0";
return true;
}

CSOff.setOffline =  function() {   
if (document.htmlform.DFS__SubmitURL) {
CSOff.getCurURL();
} else {
alert(CS_OFFLINE_MSG_PREVIEW);
}
var div = document.getElementById("DFS__reconnect");
if (div) div.style.display = "block";
CSUtil.createIFrame(document.getElementById('DFS__reconnect'));
div = document.getElementById("DFS__workoffline");
CSUtil.createIFrame(document.getElementById('DFS__workoffline'));
if (div) div.style.display = "none";
document.htmlform.LF__Offline.value = "1";
if ( CSForm.isOffline() ) {
this.removeSrcFromIframes();
}
return true;
}

CSOff.removeSrcFromIframes = function() {



var recon_ifr = csget( "DFS__reconnect_iFrame" );
recon_ifr.src = "";
var off_ifr = csget( "DFS__workoffline_iFrame" );
off_ifr.src = "";    
}


CSOff.archiveX = function(reqver) {
var rc = null;
var wa = null;
try {
wa = new ActiveXObject("WebArchiveX.Builder");
} catch(e) {}

CSOff.aXCurVer = "4.2";
try {
CSOff.aXCurVer = wa.Version;
} catch(e2) {}

if (reqver == "" ||
CSOff.aXCurVer == reqver ||
parseFloat(CSOff.aXCurVer) >= parseFloat(reqver)) {
rc = wa;
}
return rc;
}

CSOff.getCurURL = function() {

if (document.htmlform.DFS__SubmitURL) {
var olds = document.htmlform.DFS__SubmitURL.value;
var news = olds;
if (news.indexOf("http") != 0) {
news = window.location.protocol + "//" + window.location.host + olds;
document.htmlform.DFS__SubmitURL.value = news;
document.htmlform.action = news;
}
var olds2 = document.htmlform.DFS__DownloadURL.value;
var news2 = olds2;
if (news2.indexOf("http") != 0) {
news2 = window.location.protocol + "//" + window.location.host + olds2;
document.htmlform.DFS__DownloadURL.value = news2;
}
}
}


CSOff.installControl = function() {
if (document.htmlform.DFS__SubmitURL) {
var aXloc = "/jsp/archiveX.jsp";  
if (document.htmlform.DFS__DownloadURL && document.htmlform.DFS__DownloadURL.value != "")
aXloc = document.htmlform.DFS__DownloadURL.value;
window.open( aXloc );
}
}



CSOff.save = function(path) {
if (!path || path=="") {
path = "webarchivex-prompt:"; 
}

CSOff.getCurURL();
var wa = CSOff.archiveX(CSOff.aXReqVer);
if (!wa) {
wa = CSOff.archiveX(""); 
if (!wa) {

CSOff.installControl();
return false;
} else {

if (!CSOff.didRedir) {
CSOff.installControl();
CSOff.didRedir = true;
return false;
}
}
}
var rc = false;
var olddfso = document.htmlform.DFS__Offline.value;
document.htmlform.DFS__StatusMsg.value = "";
try {
wa.Initialize();
wa.AddResourceTag( "applet", "archive" );
wa.AddResourceTag( "param", "value" );
wa.SetCharset("UTF-8");

document.htmlform.DFS__Offline.value = "1";

if (parseFloat(CSOff.aXCurVer) < 4.201) { 
rc = wa.MakeArchiveFromDoc( document, "webarchivex-prompt:" );
} else {
wa.FakeLocalPath = true;
rc = wa.MakeArchiveFromDoc2( document, path );
}
if ( (typeof rc=="string" && rc!="") || (typeof rc=="boolean" && rc) ) {
CSOff.setDirty(false);
if (typeof rc=="string") {
CSOff.path = rc;
}

} else {
document.htmlform.DFS__Offline.value = olddfso;
}
} catch(e) {
alert( CS_OFFLINE_ERR_SAVE + "\n" + e.description + "\n" + rc );
document.htmlform.DFS__Offline.value = olddfso;
}

return rc;
}

CSOff.reconnect = function() {
CSOff.reconnecting = true;
if (!document.htmlform.DFS__SubmitURL) return;
var urlstr = document.htmlform.DFS__SubmitURL.value;
document.htmlform.DFS__Action.value = "FormsOfflineCheck";
CSExt.open = "";

var rc = cs_ajax_submit( urlstr, "" );
while(1) {
if (rc != 0) break;
if (CSExt.open.length > 0) {

CSOff.rcwnd = window.open(document.htmlform.DFS__SubmitURL.value + CSExt.open);
CSOff.rctimer = setInterval( "cs_reconhack()", 500 );
CSOff.rccnt = 0; 
CSOff.rctotal = 0;
break;
}

if (document.htmlform.DFS__StatusMsg && document.htmlform.DFS__StatusMsg.value.length > 0) {
alert( document.htmlform.DFS__StatusMsg.value );
document.htmlform.DFS__StatusMsg.value = "";
} else {
CSOff.setOnline();
}
break;
}

if (rc != 0 && urlstr.indexOf("https://") != -1) {
alert(CS_OFFLINE_WARN_NEED_CERT);
}  

CSOff.reconnecting = false;
}

function cs_reconhack() {
cs_trace( "reconHack " + CSOff.rcwnd.closed );
CSOff.rctotal++;
if (CSOff.rcwnd.closed) CSOff.rccnt++;
var val = window.status;
var tagstr = "UID:";
if (val.indexOf(tagstr)==0) {
var username =val.substring(tagstr.length);
cs_trace(username);
CSOff.setOnline(username);
clearInterval(CSOff.rctimer);
window.status="";
return;
}
if (CSOff.rccnt > 2) { 
alert( CS_OFFLINE_WARN_RECONNECT );
clearInterval(CSOff.rctimer);
return;
}
}

CSOff.setDirty = function(d) {
var savelem = document.getElementById("DFS__saveme");
if (savelem != null) {
var newtxt = CS_OFFLINE_SAVE;
if (d) {
newtxt += "*";
}
savelem.innerHTML = newtxt;
}
CSOff.dirtFlag = d;
}















VTwk = { shimsiz:100 }; 

CSExt.Initialize.patch = function() {

VTwk.ua = navigator.userAgent;
var isIE = VTwk.ua.indexOf("MSIE") > 0;
var isSafari = VTwk.ua.indexOf("Safari") > 0;
var isGecko = VTwk.ua.indexOf("Gecko") > 0;
VTwk.badBoxModel = VTwk.ua.indexOf("MSIE 5") > 0;
VTwk.fixedSizeDropList = isIE || isSafari;

VTwk.entryTooWideTall = isGecko;
VTwk.buttonsTooWide = isSafari;
VTwk.noButtonsInDom0 = isSafari;
VTwk.displayPBreakDiv = CSUtil.isSafari;
VTwk.textareaSizing = (VTwk.ua.indexOf("MSIE 6") > 0) || (VTwk.ua.indexOf("MSIE 7") > 0);
VTwk.buttonHiding = (VTwk.ua.indexOf("MSIE 6") > 0) || (VTwk.ua.indexOf("MSIE 7") > 0);
VTwk.inkSupported = (VTwk.ua.indexOf("MSIE 6") > 0) || (VTwk.ua.indexOf("MSIE 7") > 0);
VTwk.doIFrame = (VTwk.ua.indexOf("MSIE 6") > 0) || (VTwk.ua.indexOf("MSIE 7") > 0)
|| CSUtil.isFF && CSUtil.isMac    
|| CSBarcode.barcode;             

if (VTwk.buttonHiding) { VTwk.fixHidingButtons( 100 ) }



if (window.LO__adjust) {

LO__adjust(VTwk);
}
}

CSExt.Form_OnLoad_bEP.patch = function() {

if (VTwk.badBoxModel) { VTwk.fixBoxModel(); }
if (VTwk.buttonsTooWide) { VTwk.fixButtons(); }
if (VTwk.noButtonsInDom0) { VTwk.fixButtonDom(); }
if (VTwk.entryTooWide) { VTwk.fixEntryW(); }
if (VTwk.entryTooWideTall) { VTwk.fixEntryWH(); }
if (VTwk.textareaSizing) { VTwk.resizeTextareas(); }
if (VTwk.displayPBreakDiv) { VTwk.fixPageBreaks(); }
cs_profile("finished layout adjust");
}

CSExt.Form_OnLoad_aEP.patch = function() {


}

CSExt.Form_Loaded = function() {


if (CSUtil.ua.indexOf("MSIE 6") > 0) VTwk.fixTextareasOnLoad();
} 


VTwk.for_each = function( tagname, condition, do_this ) {
var cnt = 0;
var tags = document.getElementsByTagName( tagname );
for (var idx=0; idx < tags.length; idx++ ) {
var tag = tags[idx];
var proceed =  false;
try {
if (condition==null || condition(tag)) proceed = true;
} catch(e) {}
if (proceed) {
do_this(tag);
cnt++;
}
}
cs_profile( "Adjusted " + cnt + " " + tagname + "s" );
}

VTwk.get = function( stylestr ) {
return parseFloat( stylestr );
}

VTwk.set = function( stylestr, units ) {
return stylestr.replace( /[0-9]+/, units );
}

VTwk.adjust = function( stylestr, units ) {

}

VTwk.fixBoxModel = function() {

VTwk.for_each( "div", function(div) { return div.className=="rect"}, VTwk.fixBoxModelFunc );
}
VTwk.fixBoxModelFunc = function(div) {
var origB = div.currentStyle.borderWidth;
if (origB=="1px") return;
var origW = div.currentStyle.width;
var origH = div.currentStyle.height;


var adjustment = VTwk.get(origB) * VTwk.shimsiz;
div.style.width = VTwk.set( origW, VTwk.get(origW) + adjustment * 2);
div.style.height = VTwk.set( origH, VTwk.get(origH) + adjustment * 2);


}

VTwk.fixButtons = function() {

VTwk.for_each( "button", null, VTwk.fixButtonsFunc );
}
VTwk.fixButtonsFunc = function(div) {
var origW = div.style.width;
var origH = div.style.height;
div.style.width = VTwk.set( origW, VTwk.get(origW) - (0.06 * VTwk.shimsiz));
div.style.height = VTwk.set( origH, VTwk.get(origH) - (0.08 * VTwk.shimsiz));
}


VTwk.fixButtonDom = function() {
VTwk.for_each( "button", function(b) {return b.form.id=="htmlform"}, cs_fldi);
}



VTwk.fixPageBreaks = function() {
VTwk.for_each( "div", function( div ) { return div.className=="pagebreak"; }, VTwk.fixPageBreaksFunc );
}
VTwk.fixPageBreaksFunc = function( div ) {
div.style.display = "block";
}


VTwk.fixEntryW = function() {
VTwk.for_each( "input", function(b) {return b.type=="text"}, VTwk.fixEntryWFunc);
}
VTwk.fixEntryWFunc = function(ctrl) {
var origW = ctrl.style.width;
ctrl.style.width = VTwk.set( origW, VTwk.get(origW) - (0.03 * VTwk.shimsiz));
}



VTwk.fixEntryWH = function() {
VTwk.for_each( "input", function(b) {return b.type=="text"}, VTwk.fixEntryWHFunc);
}
VTwk.fixEntryWHFunc = function(ctrl) {

var origH = ctrl.style.height;
if (origH >= "26%") {
ctrl.style.height = VTwk.set( origH, VTwk.get(origH) - (0.03 * VTwk.shimsiz));
} else {
ctrl.style.height = VTwk.set( origH, VTwk.get(origH) + (0.03 * VTwk.shimsiz));

var rect = document.getElementById(ctrl.id + "_rect");
if (rect) {
rect.style.height = VTwk.set( origH, (CSExt.f[ctrl.id].fmt.height) + (0.03 * VTwk.shimsiz));
}    
}
}


VTwk.fixHidingButtons = function( percent ) {   
if (!percent) percent = 100;


for (var j=0; j<CSForm.getNumberOfFields(); j++) {
var fld = CSForm.getField(j);
var el = null;











































if (fld.getType() == "InkPicture") {
fname = fld.getName();
var inkProps = CSInk.inkProps[ fname ];
var inkObj = CSInk.getInkPicture( fname );
var wrapper = inkObj.wrp;            
el = inkObj.fld;

if (percent == 80) {
wrapper.style.clip = "rect(0 " + (CSExt.f[fname].fmt.width+6)*(percent/100) + " " + (CSExt.f[fname].fmt.height+4)*(percent/100) + " 0)";
} else {
if ( wrapper.style.clip != "" ) {
wrapper.style.clip = "rect(auto)";
}
}
}
}



var tbls = CSForm.getNumberOfTables();
for ( var i=0; i<tbls; i++ ) {
var tbl = CSForm.getTable(i);
if ( tbl.isDynamic() == true ) {
var addBtn = tbl.addButton;
if ( addBtn ) {
addBtn.style.height = tbl.tbo.addBtnHeight * percent/100 + "px";
addBtn.style.width  = tbl.tbo.addBtnWidth * percent/100 + "px";
}
for ( var j=0; j<tbl.tbo.rows; j++ ) {
var remBtn = csget( "DFS__" + tbl.tbo.tname + "_removeRow_" + j );
if ( remBtn ) {
remBtn.style.height = tbl.tbo.remBtnHeight * percent/100 + "px";
remBtn.style.width  = tbl.tbo.remBtnWidth * percent/100 + "px";
}
}
}
}

function fixit( obj, fname, perc ) {
if (!obj || !fname) return;
if (!perc) perc = 100;
var newH = (CSExt.f[fname]) ? CSExt.f[fname].fmt.height : obj.offsetHeight;
var newW = (CSExt.f[fname]) ? CSExt.f[fname].fmt.width : obj.offsetWidth;
obj.style.height = newH * perc/100 + "px";   
obj.style.width  = newW * perc/100 + "px";       
}  




function fixlist( obj, fname, perc ) {
if (!obj || !fname) return;
if (!perc) perc = 100;
var newH = (CSExt.f[fname]) ? CSExt.f[fname].fmt.height : obj.offsetHeight;
var newW = (CSExt.f[fname]) ? CSExt.f[fname].fmt.width : obj.offsetWidth;
newH = Math.round(newH * perc/100);   
newW = Math.round(newW * perc/100);  
var tempH = newH - 22;  
do {
if (isNaN(tempH)) break;
if (tempH % 16 == 0) {  
newH = tempH + 22;
break;
}  
tempH++;          
} while ( true );
obj.style.height = newH + "px";   
obj.style.width  = newW + "px";       
}    
}


VTwk.resizeTextareas = function( percent ) {
if (CSExt.DFS__DHTML_OnLoad) return;
var ta = document.getElementsByTagName("textarea");
for (var i=0; i<ta.length; i++) {  
var text = null;
var rect = document.getElementById(ta[i].id + "_rect");
if (rect) {

var el = rect;
while (el.nextSibling) {
el = el.nextSibling;
var elClass   = "";
if (typeof el.className != "undefined") {
elClass = el.className;
}
if (el.className != null && el.className != "undefined" && elClass.indexOf("txtblock") != -1) {
text = el;
break;
}  
}          
ta[i].style.height = (( CSExt.f[ta[i].id].fmt.height - parseInt((parseInt(text.style.height)/100)*96) ) - 10)*(percent/100) + "px";
} else {

ta[i].style.height = ( CSExt.f[ta[i].id].fmt.height - 5)*(percent/100) + "px";
}  

}  
}



VTwk.fixTextareasOnLoad = function() {








}  

