Advertisement
ranveer5289

PopUp Calendar JavaScript

May 30th, 2011
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.11 KB | None | 0 0
  1.  
  2.  
  3. // default settings
  4. var fontFace="verdana";
  5. var fontSize=9;
  6.  
  7. var titleWidth=90;
  8. var titleMode=1;
  9. var dayWidth=12;
  10. var dayDigits=1;
  11.  
  12. var titleColor="#cccccc";
  13. var daysColor="#cccccc";
  14. var bodyColor="#ffffff";
  15. var dayColor="#ffffff";
  16. var currentDayColor="#333333";
  17. var footColor="#cccccc";
  18. var borderColor="#333333";
  19.  
  20. var titleFontColor = "#333333";
  21. var daysFontColor = "#333333";
  22. var dayFontColor = "#333333";
  23. var currentDayFontColor = "#ffffff";
  24. var footFontColor = "#333333";
  25.  
  26. var calFormat = "yyyy/mm/dd";
  27.  
  28. var weekDay = 0;
  29. // ------
  30.  
  31. // codes
  32. var calWidth=200, calHeight=200, calOffsetX=-200, calOffsetY=16;
  33. var calWin=null;
  34. var winX=0, winY=0;
  35. var cal="cal";
  36. var cals=new Array();
  37. var currentCal=null;
  38.  
  39. var yxMonths=new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  40. var yxDays=new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
  41. var yxLinks=new Array("[close]", "[clear]");
  42.  
  43. var nav=navigator.userAgent.toLowerCase();;
  44. var isOpera=(nav.indexOf("opera")!=-1)?true:false;
  45. var isOpera5=(nav.indexOf("opera 5")!=-1 || nav.indexOf("opera/5")!=-1)?true:false;
  46. var isOpera6=(isOpera && parseInt(navigator.appVersion)>=6)?true:false;
  47. var isN6=(nav.indexOf("gecko")!=-1);
  48. var isN4=(document.layers)?true:false;
  49. var isMac=(nav.indexOf("mac")!=-1);
  50. var isIE=(document.all && !isOpera && (!isMac || navigator.appVersion.indexOf("MSIE 4")==-1))?true:false;
  51.  
  52. if (isN4) {
  53. fontSize+=2;
  54. }
  55.  
  56. var span2="</span>";
  57.  
  58. function span1(tag) {
  59. return "<span class='"+tag+"'>";
  60. }
  61. function spanx(tag, color) {
  62. return "."+tag+" { font-family:"+fontFace+"; font-size:"+fontSize+"px; color:"+color+"; }\n";
  63. }
  64.  
  65. function a1(tag) {
  66. return "<a class='"+tag+"' href=";
  67. }
  68.  
  69. function ax(tag, color) {
  70. return "."+tag+" { text-decoration:none; color:"+color+"; }\n";
  71. }
  72.  
  73. function calOBJ(name, title, field, form) {
  74. this.name = name;
  75. this.title = title;
  76. this.field = field;
  77. this.formName = form;
  78. this.form = null
  79. }
  80.  
  81. function setFont(font, size) {
  82. if (font != "") {
  83. fontFace=font;
  84. }
  85. if (size > 0) {
  86. fontSize=size;
  87.  
  88. if (isN4) {
  89. fontSize+=2;
  90. }
  91. }
  92. }
  93.  
  94. function setWidth(tWidth, tMode, dWidth, dDigits) {
  95. if (tWidth > 0) {
  96. titleWidth=tWidth;
  97. }
  98. if (tMode == 1 || tMode == 2) {
  99. titleMode=tMode;
  100. }
  101. if (dWidth > 0) {
  102. dayWidth=dWidth;
  103. }
  104. if (dDigits > 0) {
  105. dayDigits=dDigits;
  106. }
  107. }
  108.  
  109. function setColor(tColor, dsColor, bColor, dColor, cdColor, fColor, bdColor) {
  110. if (tColor != "") {
  111. titleColor=tColor;
  112. }
  113. if (dsColor != "") {
  114. daysColor=dsColor;
  115. }
  116. if (bColor != "") {
  117. bodyColor=bColor;
  118. }
  119. if (dColor != "") {
  120. dayColor=dColor;
  121. }
  122. if (cdColor != "") {
  123. currentDayColor=cdColor;
  124. }
  125. if (fColor != "") {
  126. footColor=fColor;
  127. }
  128. if (bdColor != "") {
  129. borderColor=bdColor;
  130. }
  131. }
  132.  
  133. function setFontColor(tColorFont, dsColorFont, dColorFont, cdColorFont, fColorFont) {
  134. if (tColorFont != "") {
  135. titleFontColor=tColorFont;
  136. }
  137. if (dsColorFont != "") {
  138. daysFontColor=dsColorFont;
  139. }
  140. if (dColorFont != "") {
  141. dayFontColor=dColorFont;
  142. }
  143. if (cdColorFont != "") {
  144. currentDayFontColor=cdColorFont;
  145. }
  146. if (fColorFont != "") {
  147. footFontColor=fColorFont;
  148. }
  149. }
  150.  
  151. function setFormat(format) {
  152. calFormat = format;
  153. }
  154.  
  155. function setSize(width, height, ox, oy) {
  156. if (width > 0) {
  157. calWidth=width;
  158. }
  159. if (height > 0) {
  160. calHeight=height;
  161. }
  162.  
  163. calOffsetX=ox;
  164. calOffsetY=oy;
  165. }
  166.  
  167. function setWeekDay(wDay) {
  168. if (wDay == 0 || wDay == 1) {
  169. weekDay = wDay;
  170. }
  171. }
  172.  
  173. function setMonthNames(janName, febName, marName, aprName, mayName, junName, julName, augName, sepName, octName, novName, decName) {
  174. if (janName != "") {
  175. yxMonths[0] = janName;
  176. }
  177. if (febName != "") {
  178. yxMonths[1] = febName;
  179. }
  180. if (marName != "") {
  181. yxMonths[2] = marName;
  182. }
  183. if (aprName != "") {
  184. yxMonths[3] = aprName;
  185. }
  186. if (mayName != "") {
  187. yxMonths[4] = mayName;
  188. }
  189. if (junName != "") {
  190. yxMonths[5] = junName;
  191. }
  192. if (julName != "") {
  193. yxMonths[6] = julName;
  194. }
  195. if (augName != "") {
  196. yxMonths[7] = augName;
  197. }
  198. if (sepName != "") {
  199. yxMonths[8] = sepName;
  200. }
  201. if (octName != "") {
  202. yxMonths[9] = octName;
  203. }
  204. if (novName != "") {
  205. yxMonths[10] = novName;
  206. }
  207. if (decName != "") {
  208. yxMonths[11] = decName;
  209. }
  210. }
  211.  
  212. function setDayNames(sunName, monName, tueName, wedName, thuName, friName, satName) {
  213. if (sunName != "") {
  214. yxDays[0] = sunName;
  215. yxDays[7] = sunName;
  216. }
  217. if (monName != "") {
  218. yxDays[1] = monName;
  219. }
  220. if (tueName != "") {
  221. yxDays[2] = tueName;
  222. }
  223. if (wedName != "") {
  224. yxDays[3] = wedName;
  225. }
  226. if (thuName != "") {
  227. yxDays[4] = thuName;
  228. }
  229. if (friName != "") {
  230. yxDays[5] = friName;
  231. }
  232. if (satName != "") {
  233. yxDays[6] = satName;
  234. }
  235. }
  236.  
  237. function setLinkNames(closeLink, clearLink) {
  238. if (closeLink != "") {
  239. yxLinks[0] = closeLink;
  240. }
  241. if (clearLink != "") {
  242. yxLinks[1] = clearLink;
  243. }
  244. }
  245.  
  246. function addCalendar(name, title, field, form) {
  247. cals[cals.length] = new calOBJ(name, title, field, form);
  248. }
  249.  
  250. function findCalendar(name) {
  251. for (var i = 0; i < cals.length; i++) {
  252. if (cals[i].name == name) {
  253. if (cals[i].form == null) {
  254. if (cals[i].formName == "") {
  255. if (document.forms[0]) {
  256. cals[i].form = document.forms[0];
  257. }
  258. }
  259. else if (document.forms[cals[i].formName]) {
  260. cals[i].form = document.forms[cals[i].formName];
  261. }
  262. }
  263.  
  264. return cals[i];
  265. }
  266. }
  267.  
  268. return null;
  269. }
  270.  
  271. function getDayName(y,m,d) {
  272. var wd=new Date(y,m,d);
  273. return yxDays[wd.getDay()].substring(0,3);
  274. }
  275.  
  276. function getMonthFromName(m3) {
  277. for (var i = 0; i < yxMonths.length; i++) {
  278. if (yxMonths[i].toLowerCase().substring(0,3) == m3.toLowerCase()) {
  279. return i;
  280. }
  281. }
  282.  
  283. return 0;
  284. }
  285.  
  286. function getFormat() {
  287. var calF = calFormat;
  288.  
  289. calF = calF.replace(/\\/g, '\\\\');
  290. calF = calF.replace(/\//g, '\\\/');
  291. calF = calF.replace(/\[/g, '\\\[');
  292. calF = calF.replace(/\]/g, '\\\]');
  293. calF = calF.replace(/\(/g, '\\\(');
  294. calF = calF.replace(/\)/g, '\\\)');
  295. calF = calF.replace(/\{/g, '\\\{');
  296. calF = calF.replace(/\}/g, '\\\}');
  297. calF = calF.replace(/\</g, '\\\<');
  298. calF = calF.replace(/\>/g, '\\\>');
  299. calF = calF.replace(/\|/g, '\\\|');
  300. calF = calF.replace(/\*/g, '\\\*');
  301. calF = calF.replace(/\?/g, '\\\?');
  302. calF = calF.replace(/\+/g, '\\\+');
  303. calF = calF.replace(/\^/g, '\\\^');
  304. calF = calF.replace(/\$/g, '\\\$');
  305.  
  306. calF = calF.replace(/dd/i, '\\d\\d');
  307. calF = calF.replace(/mm/i, '\\d\\d');
  308. calF = calF.replace(/yyyy/i, '\\d\\d\\d\\d');
  309. calF = calF.replace(/day/i, '\\w\\w\\w');
  310. calF = calF.replace(/mon/i, '\\w\\w\\w');
  311.  
  312. return new RegExp(calF);
  313. }
  314.  
  315. function getDateNumbers(date) {
  316. var y, m, d;
  317.  
  318. var yIdx = calFormat.search(/yyyy/i);
  319. var mIdx = calFormat.search(/mm/i);
  320. var m3Idx = calFormat.search(/mon/i);
  321. var dIdx = calFormat.search(/dd/i);
  322.  
  323. y=date.substring(yIdx,yIdx+4)-0;
  324. if (mIdx != -1) {
  325. m=date.substring(mIdx,mIdx+2)-1;
  326. }
  327. else {
  328. var m = getMonthFromName(date.substring(m3Idx,m3Idx+3));
  329. }
  330. d=date.substring(dIdx,dIdx+2)-0;
  331.  
  332. return new Array(y,m,d);
  333. }
  334.  
  335. function hideCal() {
  336. calWin.close();
  337. calWin = null;
  338. window.status = "";
  339. }
  340.  
  341. function getLeftIE(x,m) {
  342. var dx=0;
  343. if (x.tagName=="TD"){
  344. dx=x.offsetLeft;
  345. }
  346. else if (x.tagName=="TABLE") {
  347. dx=x.offsetLeft;
  348. if (m) { dx+=(x.cellPadding!=""?parseInt(x.cellPadding):2); m=false; }
  349. }
  350. return dx+(x.parentElement.tagName=="BODY"?0:getLeftIE(x.parentElement,m));
  351. }
  352. function getTopIE(x,m) {
  353. var dy=0;
  354. if (x.tagName=="TR"){
  355. dy=x.offsetTop;
  356. }
  357. else if (x.tagName=="TABLE") {
  358. dy=x.offsetTop;
  359. if (m) { dy+=(x.cellPadding!=""?parseInt(x.cellPadding):2); m=false; }
  360. }
  361. return dy+(x.parentElement.tagName=="BODY"?0:getTopIE(x.parentElement,m));
  362. }
  363.  
  364. function getLeftN4(l) { return l.pageX; }
  365. function getTopN4(l) { return l.pageY; }
  366.  
  367. function getLeftN6(l) { return l.offsetLeft; }
  368. function getTopN6(l) { return l.offsetTop; }
  369.  
  370. function lastDay(d) {
  371. var yy=d.getFullYear(), mm=d.getMonth();
  372. for (var i=31; i>=28; i--) {
  373. var nd=new Date(yy,mm,i);
  374. if (mm == nd.getMonth()) {
  375. return i;
  376. }
  377. }
  378. }
  379.  
  380. function firstDay(d) {
  381. var yy=d.getFullYear(), mm=d.getMonth();
  382. var fd=new Date(yy,mm,1);
  383. return fd.getDay();
  384. }
  385.  
  386. function dayDisplay(i) {
  387. if (dayDigits == 0) {
  388. return yxDays[i];
  389. }
  390. else {
  391. return yxDays[i].substring(0,dayDigits);
  392. }
  393. }
  394.  
  395. function calTitle(d) {
  396. var yy=d.getFullYear(), mm=yxMonths[d.getMonth()];
  397. var s;
  398.  
  399. if (titleMode == 2) {
  400. s="<tr align='center' bgcolor='"+titleColor+"'><td colspan='7'>\n<table cellpadding='0' cellspacing='0' border='0'><tr align='center' valign='middle'><td align='right'>"+span1("title")+"<b>"+a1("titlea")+"'javascript:if(window.opener && !window.opener.closed && window.opener.moveYear) window.opener.moveYear(-10)'>&nbsp;&#171;</a>&nbsp;"+a1("titlea")+"'javascript:if(window.opener && !window.opener.closed && window.opener.moveYear) window.opener.moveYear(-1)'>&#139;&nbsp;</a></b>"+span2+"</td><td width='"+titleWidth+"'><b>"+span1("title")+yy+span2+"</b></td><td align='left'>"+span1("title")+"<b>"+a1("titlea")+"'javascript:if (window.opener && !window.opener.closed && window.opener.moveYear) window.opener.moveYear(1)'>&nbsp;&#155;</a>&nbsp;"+a1("titlea")+"'javascript:if (window.opener && !window.opener.closed && window.opener.moveYear) window.opener.moveYear(10)'>&#187;&nbsp;</a></b>"+span2+"</td></tr><tr align='center' valign='middle'><td align='right'>"+span1("title")+"<b>"+a1("titlea")+"'javascript:if (window.opener && !window.opener.closed && window.opener.prepMonth) window.opener.prepMonth("+d.getMonth()+")'>&nbsp;&#139;&nbsp;</a></b>"+span2+"</td><td width='"+titleWidth+"'><b>"+span1("title")+mm+span2+"</b></td><td align='left'>"+span1("title")+"<b>"+a1("titlea")+"'javascript:if (window.opener && !window.opener.closed && window.opener.nextMonth) window.opener.nextMonth("+d.getMonth()+")'>&nbsp;&#155;&nbsp;</a></b>"+span2+"</td></tr></table>\n</td></tr><tr align='center' bgcolor='"+daysColor+"'>";
  401. }
  402. else {
  403. s="<tr align='center' bgcolor='"+titleColor+"'><td colspan='7'>\n<table cellpadding='0' cellspacing='0' border='0'><tr align='center' valign='middle'><td>"+span1("title")+"<b>"+a1("titlea")+"'javascript:if(window.opener && !window.opener.closed && window.opener.moveYear) window.opener.moveYear(-1)'>&nbsp;&#171;</a>&nbsp;"+a1("titlea")+"'javascript:if (window.opener && !window.opener.closed && window.opener.prepMonth) window.opener.prepMonth("+d.getMonth()+")'>&#139;&nbsp;</a></b>"+span2+"</td><td width='"+titleWidth+"'><nobr><b>"+span1("title")+mm+" "+yy+span2+"</b></nobr></td><td>"+span1("title")+"<b>"+a1("titlea")+"'javascript:if (window.opener && !window.opener.closed && window.opener.nextMonth) window.opener.nextMonth("+d.getMonth()+")'>&nbsp;&#155;</a>&nbsp;"+a1("titlea")+"'javascript:if(window.opener && !window.opener.closed && window.opener.moveYear) window.opener.moveYear(1)'>&#187;&nbsp;</a></b>"+span2+"</td></tr></table>\n</td></tr><tr align='center' bgcolor='"+daysColor+"'>";
  404. }
  405.  
  406. for (var i=weekDay; i<weekDay+7; i++) {
  407. s+="<td width='"+dayWidth+"'>"+span1("days")+dayDisplay(i)+span2+"</td>";
  408. }
  409.  
  410. s+="</tr>";
  411.  
  412. return s;
  413. }
  414.  
  415. function calHeader() {
  416. return "<head>\n<title>"+currentCal.title+"</title>\n<style type='text/css'>\n"+spanx("title",titleFontColor)+spanx("days",daysFontColor)+spanx("foot",footColor)+spanx("day",dayFontColor)+spanx("currentDay",currentDayFontColor)+ax("titlea",titleFontColor)+ax("daya",dayFontColor)+ax("currenta",currentDayFontColor)+ax("foota",footFontColor)+"</style>\n</head>\n<body>\n<table align='center' border='0' bgcolor='"+borderColor+"' cellspacing='0' cellpadding='1'><tr><td>\n<table cellspacing='1' cellpadding='3' border='0'>";
  417. }
  418.  
  419. function calFooter() {
  420. return "<tr bgcolor='"+footColor+"'><td colspan='7' align='center'>"+span1("foot")+"<b>"+a1("foota")+"'javascript:if (window.opener && !window.opener.closed && window.opener.hideCal) window.opener.hideCal()'>"+yxLinks[0]+"</a>&nbsp;&nbsp;"+a1("foota")+"'javascript:if (window.opener && !window.opener.closed && window.opener.clearDate) window.opener.clearDate()'>"+yxLinks[1]+"</a></b>"+span2+"</td></tr></table>\n</td></tr></table>\n</body>";
  421. }
  422.  
  423. function calBody(d,day) {
  424. var s="", dayCount=1, fd=firstDay(d), ld=lastDay(d);
  425.  
  426. if (weekDay > 0 && fd == 0) {
  427. fd = 7;
  428. }
  429.  
  430. for (var i=0; i<6; i++) {
  431. s+="<tr align='center' bgcolor='"+bodyColor+"'>";
  432. for (var j=weekDay; j<weekDay+7; j++) {
  433. if (i*7+j<fd || dayCount>ld) {
  434. s+="<td>"+span1("day")+"&nbsp;"+span2+"</td>";
  435. }
  436. else {
  437. var bgColor=dayColor;
  438. var fgTag="day";
  439. var fgTagA="daya";
  440. if (dayCount==day) {
  441. bgColor=currentDayColor;
  442. fgTag="currentDay";
  443. fgTagA="currenta";
  444. }
  445.  
  446. s+="<td bgcolor='"+bgColor+"'>"+span1(fgTag)+a1(fgTagA)+"'javascript: if (window.opener && !window.opener.closed && window.opener.pickDate) window.opener.pickDate("+dayCount+")'>"+(dayCount++)+"</a>"+span2+"</td>";
  447. }
  448. }
  449. s+="</tr>";
  450. }
  451.  
  452. return s;
  453. }
  454.  
  455. function moveYear(dy) {
  456. cY+=dy;
  457. var nd=new Date(cY,cM,1);
  458. changeCal(nd);
  459. }
  460.  
  461. function prepMonth(m) {
  462. cM=m-1;
  463. if (cM<0) { cM=11; cY--; }
  464. var nd=new Date(cY,cM,1);
  465. changeCal(nd);
  466. }
  467.  
  468. function nextMonth(m) {
  469. cM=m+1;
  470. if (cM>11) { cM=0; cY++;}
  471. var nd=new Date(cY,cM,1);
  472. changeCal(nd);
  473. }
  474.  
  475. function changeCal(d) {
  476. var dd = 0;
  477.  
  478. if (currentCal != null) {
  479. var calRE = getFormat();
  480.  
  481. if (currentCal.form[currentCal.field].value!="" && calRE.test(currentCal.form[currentCal.field].value)) {
  482. var cd = getDateNumbers(currentCal.form[currentCal.field].value);
  483. if (cd[0] == d.getFullYear() && cd[1] == d.getMonth()) {
  484. dd=cd[2];
  485. }
  486. }
  487. else {
  488. var cd = new Date();
  489. if (cd.getFullYear() == d.getFullYear() && cd.getMonth() == d.getMonth()) {
  490. dd=cd.getDate();
  491. }
  492. }
  493. }
  494.  
  495. var calendar=calHeader()+calTitle(d)+calBody(d,dd)+calFooter();
  496.  
  497. calWin.document.open();
  498. calWin.document.write(calendar);
  499. calWin.document.close();
  500. }
  501.  
  502. function markClick(e) {
  503. if (isIE || isOpera6) {
  504. winX=event.screenX;
  505. winY=event.screenY;
  506. }
  507. else if (isN4 || isN6) {
  508. winX=e.screenX;
  509. winY=e.screenY;
  510.  
  511. document.routeEvent(e);
  512. }
  513.  
  514. if (isN4 || isN6) {
  515. document.routeEvent(e);
  516. }
  517. else {
  518. event.cancelBubble=false;
  519. }
  520.  
  521. return true;
  522. }
  523.  
  524. function showCal(name) {
  525. var lastCal=currentCal;
  526. var d=new Date(), hasCal=false;
  527.  
  528. currentCal = findCalendar(name);
  529.  
  530. if (currentCal != null && currentCal.form != null && currentCal.form[currentCal.field]) {
  531. var calRE = getFormat();
  532.  
  533. if (currentCal.form[currentCal.field].value!="" && calRE.test(currentCal.form[currentCal.field].value)) {
  534. var cd = getDateNumbers(currentCal.form[currentCal.field].value);
  535. d=new Date(cd[0],cd[1],cd[2]);
  536.  
  537. cY=cd[0];
  538. cM=cd[1];
  539. dd=cd[2];
  540. }
  541. else {
  542. cY=d.getFullYear();
  543. cM=d.getMonth();
  544. dd=d.getDate();
  545. }
  546.  
  547. var calendar=calHeader()+calTitle(d)+calBody(d,dd)+calFooter();
  548.  
  549. if (calWin != null && typeof(calWin.closed)!="undefined" && !calWin.closed) {
  550. hasCal=true;
  551. calWin.moveTo(winX+calOffsetX,winY+calOffsetY);
  552. }
  553.  
  554. if (!hasCal) {
  555. if (isIE || isOpera6) {
  556. calWin=window.open("","cal","toolbar=0,width="+calWidth+",height="+calHeight+",left="+(winX+calOffsetX)+",top="+(winY+calOffsetY));
  557. }
  558. else {
  559. calWin=window.open("","cal","toolbar=0,width="+calWidth+",height="+calHeight+",screenx="+(winX+calOffsetX)+",screeny="+(winY+calOffsetY));
  560. }
  561. }
  562.  
  563. calWin.document.open();
  564. calWin.document.write(calendar);
  565. calWin.document.close();
  566.  
  567. calWin.focus();
  568. }
  569. else {
  570. if (currentCal == null) {
  571. window.status = "Calendar ["+name+"] not found.";
  572. }
  573. else if (!currentCal.form) {
  574. window.status = "Form ["+currentCal.formName+"] not found.";
  575. }
  576. else if (!currentCal.form[currentCal.field]) {
  577. window.status = "Form Field ["+currentCal.formName+"."+currentCal.field+"] not found.";
  578. }
  579.  
  580. if (lastCal != null) {
  581. currentCal = lastCal;
  582. }
  583. }
  584. }
  585.  
  586. function get2Digits(n) {
  587. return ((n<10)?"0":"")+n;
  588. }
  589.  
  590. function clearDate() {
  591. currentCal.form[currentCal.field].value="";
  592. hideCal();
  593. }
  594.  
  595. function pickDate(d) {
  596. hideCal();
  597. window.focus();
  598.  
  599. var date=calFormat;
  600. date = date.replace(/yyyy/i, cY);
  601. date = date.replace(/mm/i, get2Digits(cM+1));
  602. date = date.replace(/MON/, yxMonths[cM].substring(0,3).toUpperCase());
  603. date = date.replace(/Mon/i, yxMonths[cM].substring(0,3));
  604. date = date.replace(/dd/i, get2Digits(d));
  605. date = date.replace(/DAY/, getDayName(cY,cM,d).toUpperCase());
  606. date = date.replace(/day/i, getDayName(cY,cM,d));
  607.  
  608. currentCal.form[currentCal.field].value=date;
  609. // IE5/Mac needs focus to show the value, weird.
  610. currentCal.form[currentCal.field].focus();
  611. }
  612. // ------
  613.  
  614. // user functions
  615. function checkDate(name) {
  616. var thisCal = findCalendar(name);
  617.  
  618. if (thisCal != null && thisCal.form != null && thisCal.form[thisCal.field]) {
  619. var calRE = getFormat();
  620.  
  621. if (calRE.test(thisCal.form[thisCal.field].value)) {
  622. return 0;
  623. }
  624. else {
  625. return 1;
  626. }
  627. }
  628. else {
  629. return 2;
  630. }
  631. }
  632.  
  633. function getCurrentDate() {
  634. var date=calFormat, d = new Date();
  635. date = date.replace(/yyyy/i, d.getFullYear());
  636. date = date.replace(/mm/i, get2Digits(d.getMonth()+1));
  637. date = date.replace(/dd/i, get2Digits(d.getDate()));
  638.  
  639. return date;
  640. }
  641.  
  642. function compareDates(date1, date2) {
  643. var calRE = getFormat();
  644. var d1, d2;
  645.  
  646. if (calRE.test(date1)) {
  647. d1 = getNumbers(date1);
  648. }
  649. else {
  650. d1 = getNumbers(getCurrentDate());
  651. }
  652.  
  653. if (calRE.test(date2)) {
  654. d2 = getNumbers(date2);
  655. }
  656. else {
  657. d2 = getNumbers(getCurrentDate());
  658. }
  659.  
  660. var dStr1 = d1[0] + "" + d1[1] + "" + d1[2];
  661. var dStr2 = d2[0] + "" + d2[1] + "" + d2[2];
  662.  
  663. if (dStr1 == dStr2) {
  664. return 0;
  665. }
  666. else if (dStr1 > dStr2) {
  667. return 1;
  668. }
  669. else {
  670. return -1;
  671. }
  672. }
  673.  
  674. function getNumbers(date) {
  675. var calRE = getFormat();
  676. var y, m, d;
  677.  
  678. if (calRE.test(date)) {
  679. var yIdx = calFormat.search(/yyyy/i);
  680. var mIdx = calFormat.search(/mm/i);
  681. var m3Idx = calFormat.search(/mon/i);
  682. var dIdx = calFormat.search(/dd/i);
  683.  
  684. y=date.substring(yIdx,yIdx+4);
  685. if (mIdx != -1) {
  686. m=date.substring(mIdx,mIdx+2);
  687. }
  688. else {
  689. var mm=getMonthFromName(date.substring(m3Idx,m3Idx+3))+1;
  690. m=(mm<10)?("0"+mm):(""+mm);
  691. }
  692. d=date.substring(dIdx,dIdx+2);
  693.  
  694. return new Array(y,m,d);
  695. }
  696. else {
  697. return new Array("", "", "");
  698. }
  699. }
  700. // ------
  701.  
  702. if (isN4 || isN6) {
  703. document.captureEvents(Event.CLICK);
  704. }
  705. document.onclick=markClick;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement