// JavaScript Document

function show(ele) {
	ele.style.display = 'block';
	ele.style.visibility = 'visible';
}
function hide(ele) {
	ele.style.display = 'none';
	ele.style.visibility = 'hidden';
}
function showForm() {
	show(document.getElementById('popup'));
	show(document.getElementById('blackout'));
}
function hideForm() {
	hide(document.getElementById('popup'));
	hide(document.getElementById('blackout'));
}
function roll_over(img_name, img_src) {
   document[img_name].src = img_src;
}
//in array   if( name in oc(['1','2','3']) ) {
function oc(a)
{
  var o = {};
  for(var i=0;i<a.length;i++)
  {
    o[a[i]]='';
  }
  return o;
}

///format phone
var zChar=new Array(' ','(',')','-','.');var maxphonelength=13;var phonevalue1;var phonevalue2;var cursorposition;function ParseForNumber1(object){phonevalue1=ParseChar(object.value,zChar);}function ParseForNumber2(object){phonevalue2=ParseChar(object.value,zChar);}function backspacerUP(object,e){if(e){e=e;}else{e=window.event;}if(e.which){var keycode=e.which;}else{var keycode=e.keyCode;}ParseForNumber1(object);if(keycode>=48){ValidatePhone(object);}}function backspacerDOWN(object,e){if(e){e=e;}else{e=window.event;}if(e.which){var keycode=e.which;}else{var keycode=e.keyCode;}ParseForNumber2(object);}function GetCursorPosition(){var t1=phonevalue1;var t2=phonevalue2;var bool=false;for(i=0;i<t1.length;i++){if(t1.substring(i,1) !=t2.substring(i,1)){if(!bool){cursorposition=i;bool=true;}}}}function ValidatePhone(object){var p=phonevalue1;p=p.replace(/[^\d]*/gi,"");if(p.length<3){object.value=p;}else if(p.length==3){pp=p;d4=p.indexOf('(');d5=p.indexOf(')');if(d4==-1){pp="("+pp;}if(d5==-1){pp=pp+")";}object.value=pp;}else if(p.length>3 && p.length<7){p="("+p;l30=p.length;p30=p.substring(0,4);p30=p30+")";p31=p.substring(4,l30);pp=p30+p31;object.value=pp;}else if(p.length>=7){p="("+p;l30=p.length;p30=p.substring(0,4);p30=p30+")";p31=p.substring(4,l30);pp=p30+p31;l40=pp.length;p40=pp.substring(0,8);p40=p40+"-";p41=pp.substring(8,l40);ppp=p40+p41;object.value=ppp.substring(0,maxphonelength);}GetCursorPosition();if(cursorposition>=0){if(cursorposition==0){cursorposition=2;}else if(cursorposition<=2){cursorposition=cursorposition+1;}else if(cursorposition<=5){cursorposition=cursorposition+2;}else if(cursorposition==6){cursorposition=cursorposition+2}else if(cursorposition==7){cursorposition=cursorposition+4;e1=object.value.indexOf(')');e2=object.value.indexOf('-');if(e1>-1 && e2>-1){if(e2-e1==4){cursorposition=cursorposition - 1;}}}else if(cursorposition<11){cursorposition=cursorposition+3;}else if(cursorposition==11){cursorposition=cursorposition+1;}else if(cursorposition>=12){cursorposition=cursorposition}var txtRange=object.createTextRange();txtRange.moveStart("character",cursorposition);txtRange.moveEnd("character",cursorposition - object.value.length);txtRange.select();}}function ParseChar(sStr,sChar){if(sChar.length==null){zChar=new Array(sChar);}else zChar=sChar;for(i=0;i<zChar.length;i++){sNewStr="";var iStart=0;var iEnd=sStr.indexOf(sChar[i]);while(iEnd !=-1){sNewStr+=sStr.substring(iStart,iEnd);iStart=iEnd+1;iEnd=sStr.indexOf(sChar[i],iStart);}sNewStr+=sStr.substring(sStr.lastIndexOf(sChar[i])+1,sStr.length);sStr=sNewStr;}return sNewStr;}

//SLIDESHOW
bod = new Array();
function init () {
	var links = document.getElementById("slideLeft").getElementsByTagName("a");
	var bodies = document.getElementById("slideLeft").getElementsByTagName("input");
		for (i2 = 0; bodies[i2]; i2++) {
		bod[i2] = bodies[i2].value;
	}
	for (i = 0; links[i]; i++) {
		links[i].onclick = function prev () {
			document.getElementById("picHolder").innerHTML = '<img class="bigImage" src="' + bod[this.id.match(/[0-9]+$/)] + '">';
		}
		links[i].id += i
	}
}

//SCROLLING
var scrolling = null; 
function scroll_up() {
	 var d = document.getElementById('scroller');
	 d.scrollTop = d.scrollTop - 5;
	 scrolling = window.setTimeout(function() {
		 scroll_up();
	 }, 50);
}
function scroll_down() {
	 var d = document.getElementById('scroller');
	 d.scrollTop = d.scrollTop + 5;
	 scrolling = window.setTimeout(function() {
		 scroll_down();
	 }, 50);
}
function scroll_up_fast() {
	 var d = document.getElementById('scroller');
	 d.scrollTop = d.scrollTop - 5;
	 scrolling = window.setTimeout(function() {
		 scroll_up_fast();
	 }, 20);
}
function scroll_down_fast() {
	 var d = document.getElementById('scroller');
	 d.scrollTop = d.scrollTop + 5;
	 scrolling = window.setTimeout(function() {
		 scroll_down_fast();
	 }, 20);
}
function stop_scroll() {
	 window.clearTimeout(scrolling);
}

//SWAP IMAGES

function swapOne() {
	document.getElementById('arrowUp').src = '../../images/scrollArrowUpHover.png';
}
function swapTwo() {
	document.getElementById('arrowUp').src = '../../images/scrollArrowUp.png';
}
function swapThree() {
	document.getElementById('arrowDown').src = '../../images/scrollArrowDownHover.png';
}
function swapFour() {
	document.getElementById('arrowDown').src = '../../images/scrollArrowDown.png';
}



function passMatch() {
	var pw1 = document.getElementById('pw1');
	var pw2 = document.getElementById('pw2');
	var er = document.getElementById('errorDiv');
	var er2 = document.getElementById('errorDiv2');
	if(pw1.value == '' && pw2.value == '') {
		show(er2);
		return false;
	}
	if(pw1.value != pw2.value) {
		show(er);
		return false;
	}
	return true;
}


//Calendar
function Epoch(name, mode, targetelement, multiselect) {
    var self = this;

    function calConfig() {
        self.versionNumber = '2.0.2';
        self.displayYearInitial = self.curDate.getFullYear();
        self.displayMonthInitial = self.curDate.getMonth();
        self.displayYear = self.displayYearInitial;
        self.displayMonth = self.displayMonthInitial;
        self.minDate = new Date(2010, 0, 1);
        self.maxDate = new Date(2040, 11, 31);
        self.startDay = 0;
        self.showWeeks = false;
        self.selCurMonthOnly = true;
    }
    function setLang() {
        self.daylist = new Array('S', 'M', 'T', 'W', 'T', 'F', 'S', 'S', 'M', 'T', 'W', 'T', 'F', 'S');
        self.months_sh = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
        self.monthup_title = 'Go to the next month';
        self.monthdn_title = 'Go to the previous month';
        self.clearbtn_caption = 'Clear';
        self.clearbtn_title = 'Clears any dates selected on the calendar';
        self.maxrange_caption = 'This is the maximum range';
        self.closebtn_caption = 'Close';
        self.closebtn_title = 'Close the calendar';
    }
    function setDays() {
        self.daynames = new Array();
        var j = 0;
        for (var i = self.startDay; i < self.startDay + 7; i++) {
            self.daynames[j++] = self.daylist[i];
        }
        self.monthDayCount = new Array(31, ((self.curDate.getFullYear() - 2000) % 4 ? 28 : 29), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    }
    function createCalendar() {
        var tbody, tr, td;
        self.calendar = document.createElement('table');
        self.calendar.setAttribute('id', self.name + '_calendar');
        setClass(self.calendar, 'calendar');
        self.calendar.style.display = 'none';
        addEventHandler(self.calendar, 'selectstart', function () {
            return false;
        });
        addEventHandler(self.calendar, 'drag', function () {
            return false;
        });
        tbody = document.createElement('tbody');
        tr = document.createElement('tr');
        td = document.createElement('td');
        td.appendChild(createMainHeading());
        tr.appendChild(td);
        tbody.appendChild(tr);
        tr = document.createElement('tr');
        td = document.createElement('td');
        self.calendar.celltable = document.createElement('table');
        setClass(self.calendar.celltable, 'cells');
        self.calendar.celltable.appendChild(createDayHeading());
        self.calendar.celltable.appendChild(createCalCells());
        td.appendChild(self.calendar.celltable);
        tr.appendChild(td);
        tbody.appendChild(tr);
        tr = document.createElement('tr');
        td = document.createElement('td');
        //td.appendChild(createFooter());
        tr.appendChild(td);
        tbody.appendChild(tr);
        self.calendar.appendChild(tbody);
        addEventHandler(self.calendar, 'mouseover', cal_onmouseover);
        addEventHandler(self.calendar, 'mouseout', cal_onmouseout);
    }
    function createMainHeading() {
        var container = document.createElement('div');
        setClass(container, 'mainheading');
        self.monthSelect = document.createElement('select');
        self.yearSelect = document.createElement('select');
        var monthDn = document.createElement('input'),
            monthUp = document.createElement('input');
        var opt, i;
        for (i = 0; i < 12; i++) {
            opt = document.createElement('option');
            opt.setAttribute('value', i);
            if (self.displayMonth == i) {
                opt.setAttribute('selected', 'selected');
            }
            opt.appendChild(document.createTextNode(self.months_sh[i]));
            self.monthSelect.appendChild(opt);
        }
        var yrMax = self.maxDate.getFullYear(),
            yrMin = self.minDate.getFullYear();
        for (i = yrMin; i <= yrMax; i++) {
            opt = document.createElement('option');
            opt.setAttribute('value', i);
            if (self.displayYear == i) {
                opt.setAttribute('selected', 'selected');
            }
            opt.appendChild(document.createTextNode(i));
            self.yearSelect.appendChild(opt);
        }
        monthUp.setAttribute('type', 'button');
        monthUp.setAttribute('value', '>');
        monthUp.setAttribute('title', self.monthup_title);
        monthDn.setAttribute('type', 'button');
        monthDn.setAttribute('value', '<');
        monthDn.setAttribute('title', self.monthdn_title);
        self.monthSelect.owner = self.yearSelect.owner = monthUp.owner = monthDn.owner = self;

        function selectonchange() {
            if (self.goToMonth(self.yearSelect.value, self.monthSelect.value)) {
                self.displayMonth = self.monthSelect.value;
                self.displayYear = self.yearSelect.value;
            } else {
                self.monthSelect.value = self.displayMonth;
                self.yearSelect.value = self.displayYear;
            }
        }
        addEventHandler(monthUp, 'click', function () {
            self.nextMonth();
        });
        addEventHandler(monthDn, 'click', function () {
            self.prevMonth();
        });
        addEventHandler(self.monthSelect, 'change', selectonchange);
        addEventHandler(self.yearSelect, 'change', selectonchange);
        container.appendChild(monthDn);
        container.appendChild(self.monthSelect);
        container.appendChild(self.yearSelect);
        container.appendChild(monthUp);
        return container;
    }
	/*
    function createFooter() {
        var container = document.createElement('div');
        var clearSelected = document.createElement('input');
        clearSelected.setAttribute('type', 'button');
        clearSelected.setAttribute('value', self.clearbtn_caption);
        clearSelected.setAttribute('title', self.clearbtn_title);
        clearSelected.owner = self;
        addEventHandler(clearSelected, 'click', function () {
            self.resetSelections(false);
        });
        container.appendChild(clearSelected);
        if (self.mode == 'popup') {
            var closeBtn = document.createElement('input');
            closeBtn.setAttribute('type', 'button');
            closeBtn.setAttribute('value', self.closebtn_caption);
            closeBtn.setAttribute('title', self.closebtn_title);
            addEventHandler(closeBtn, 'click', function () {
                self.hide();
            });
            setClass(closeBtn, 'closeBtn');
            container.appendChild(closeBtn);
        }
        return container;
    }
	*/
    function createDayHeading() {
        self.calHeading = document.createElement('thead');
        setClass(self.calHeading, 'caldayheading');
        var tr = document.createElement('tr'),
            th;
        self.cols = new Array(false, false, false, false, false, false, false);
        if (self.showWeeks) {
            th = document.createElement('th');
            setClass(th, 'wkhead');
            tr.appendChild(th);
        }
        for (var dow = 0; dow < 7; dow++) {
            th = document.createElement('th');
            th.appendChild(document.createTextNode(self.daynames[dow]));
            if (self.selectMultiple) {
                th.headObj = new CalHeading(self, th, (dow + self.startDay < 7 ? dow + self.startDay : dow + self.startDay - 7));
            }
            tr.appendChild(th);
        }
        self.calHeading.appendChild(tr);
        return self.calHeading;
    }
    function createCalCells() {
        self.rows = new Array(false, false, false, false, false, false);
        self.cells = new Array();
        var row = -1,
            totalCells = (self.showWeeks ? 48 : 42);
        var beginDate = new Date(self.displayYear, self.displayMonth, 1);
        var endDate = new Date(self.displayYear, self.displayMonth, self.monthDayCount[self.displayMonth]);
        var sdt = new Date(beginDate);
        sdt.setDate(sdt.getDate() + (self.startDay - beginDate.getDay()) - (self.startDay - beginDate.getDay() > 0 ? 7 : 0));
        self.calCells = document.createElement('tbody');
        var tr, td;
        var cellIdx = 0,
            cell, week, dayval;
        for (var i = 0; i < totalCells; i++) {
            if (self.showWeeks) {
                if (i % 8 == 0) {
                    row++;
                    week = sdt.getWeek(self.startDay);
                    tr = document.createElement('tr');
                    td = document.createElement('td');
                    if (self.selectMultiple) {
                        td.weekObj = new WeekHeading(self, td, week, row)
                    } else {
                        setClass(td, 'wkhead');
                    }
                    td.appendChild(document.createTextNode(week));
                    tr.appendChild(td);
                    i++;
                }
            } else if (i % 7 == 0) {
                row++;
                week = sdt.getWeek(self.startDay);
                tr = document.createElement('tr');
            }
            dayval = sdt.getDate();
            td = document.createElement('td');
            td.appendChild(document.createTextNode(dayval));
            cell = new CalCell(self, td, sdt, row, week);
            self.cells[cellIdx] = cell;
            td.cellObj = cell;
            tr.appendChild(td);
            self.calCells.appendChild(tr);
            self.reDraw(cellIdx++);
            sdt.setDate(dayval + 1);
        }
        return self.calCells;
    }
    function setMode(targetelement) {
        if (self.mode == 'popup') {
            self.calendar.style.position = 'absolute';
        }
        if (targetelement) {
            switch (self.mode) {
            case 'flat':
                self.tgt = targetelement;
                self.tgt.appendChild(self.calendar);
                self.visible = true;
                break;
            case 'popup':
                self.calendar.style.position = 'absolute';
                document.body.appendChild(self.calendar);
                self.setTarget(targetelement, false);
                break;
            }
        } else {
            document.body.appendChild(self.calendar);
            self.visible = false;
        }
    }
    function deleteCells() {
        self.calendar.celltable.removeChild(self.calendar.celltable.childNodes[1]);
    }
    function setClass(element, className) {
        element.setAttribute('class', className);
        element.setAttribute('className', className);
    }
    function setCellProperties(cellindex) {
        var cell = self.cells[cellindex];
        var date;
        idx = self.dateInArray(self.dates, cell.date);
        if (idx > -1) {
            date = self.dates[idx];
            cell.date.selected = date.selected || false;
            cell.date.type = date.type;
            cell.date.canSelect = date.canSelect;
            cell.setTitle(date.title);
            cell.setURL(date.href);
            cell.setHTML(date.cellHTML);
        } else {
            cell.date.selected = false;
        }
        if (cell.date.getTime() < self.minDate.getTime() || cell.date.getTime() > self.maxDate.getTime()) {
            cell.date.canSelect = false;
        }
        cell.setClass();
    }
    function cal_onmouseover() {
        self.mousein = true;
    }
    function cal_onmouseout() {
        self.mousein = false;
    }
    function updateSelectedDates() {
        var idx = 0;
        self.selectedDates = new Array();
        for (i = 0; i < self.dates.length; i++) {
            if (self.dates[i].selected) {
                self.selectedDates[idx++] = self.dates[i];
            }
        }
    }
    self.dateInArray = function (arr, searchVal, startIndex) {
        startIndex = (startIndex != null ? startIndex : 0);
        for (var i = startIndex; i < arr.length; i++) {
            if (searchVal.getUeDay() == arr[i].getUeDay()) {
                return i;
            }
        }
        return -1;
    };
    self.setTarget = function (targetelement, focus) {
        if (self.mode == 'popup') {
            function popupFocus() {
                self.show();
            }
            function popupBlur() {
                if (!self.mousein) {
                    self.hide();
                }
            }
            function popupKeyDown() {
                self.hide();
            }
            if (self.tgt) {
                removeEventHandler(self.tgt, 'focus', popupFocus);
                removeEventHandler(self.tgt, 'blur', popupBlur);
                removeEventHandler(self.tgt, 'keydown', popupKeyDown);
            }
            self.tgt = targetelement;
            var dto = self.tgt.dateObj,
                pdateArr = new Array;
            if (dto) {
                if (self.tgt.value.length) {
                    pdateArr[0] = dto;
                }
                self.goToMonth(dto.getFullYear(), dto.getMonth());
            }
            self.selectDates(pdateArr, true, true, true);
            self.topOffset = self.tgt.offsetHeight;
            self.leftOffset = 0;
            self.updatePos(self.tgt);
            addEventHandler(self.tgt, 'focus', popupFocus);
            addEventHandler(self.tgt, 'blur', popupBlur);
            addEventHandler(self.tgt, 'keydown', popupKeyDown);
            if (focus !== false) {
                popupFocus();
            }
        } else {
            if (self.tgt) {
                self.tgt.removeChild(self.calendar);
            }
            self.tgt = targetelement;
            self.tgt.appendChild(self.calendar);
            self.show();
        }
    };
    self.nextMonth = function () {
        var month = self.displayMonth;
        var year = self.displayYear;
        if (self.displayMonth < 11) {
            month++;
        } else if (self.yearSelect.value < self.maxDate.getFullYear()) {
            month = 0;
            year++;
        }
        return self.goToMonth(year, month);
    };
    self.prevMonth = function () {
        var month = self.displayMonth;
        var year = self.displayYear;
        if (self.displayMonth > 0) {
            month--;
        } else {
            month = 11;
            year--;
        }
        return self.goToMonth(year, month);
    };
    self.goToMonth = function (year, month) {
        var testdatemin = new Date(year, month, 31);
        var testdatemax = new Date(year, month, 1);
        if (testdatemin >= self.minDate && testdatemax <= self.maxDate) {
            self.monthSelect.value = self.displayMonth = month;
            self.yearSelect.value = self.displayYear = year;
            createCalCells();
            deleteCells();
            self.calendar.celltable.appendChild(self.calCells);
            return true;
        } else {
            alert(self.maxrange_caption);
            return false;
        }
    };
    self.updatePos = function (target) {
        if (self.mode == 'popup') {
            self.calendar.style.top = getTop(target) + self.topOffset + 'px';
            self.calendar.style.left = getLeft(target) + self.leftOffset + 'px';
        }
    };
    self.show = function () {
        self.updatePos(self.tgt);
        self.calendar.style.display = 'block';
        self.visible = true;
    };
    self.hide = function () {
        self.calendar.style.display = 'none';
        self.visible = false;
    };
    self.toggle = function () {
        self.visible ? self.hide() : self.show();
    };
    self.addDates = function (dates, redraw) {
        var i;
        for (i = 0; i < dates.length; i++) {
            if (self.dateInArray(self.dates, dates[i]) == -1) {
                self.dates[self.dates.length] = dates[i];
            }
        }
        updateSelectedDates();
        if (redraw != false) {
            self.reDraw();
        }
    };
    self.removeDates = function (dates, redraw) {
        var idx;
        for (var i = 0; i < dates.length; i++) {
            idx = self.dateInArray(self.dates, dates[i]);
            if (idx != -1) {
                self.dates.splice(idx, 1);
            }
        }
        updateSelectedDates();
        if (redraw != false) {
            self.reDraw();
        }
    };
    self.selectDates = function (inpdates, selectVal, redraw, removeothers) {
        var i, idx;
        if (removeothers == true) {
            for (i = 0; i < self.dates.length; i++) {
                self.dates[i].selected = false;
            }
        }
        for (i = 0; i < inpdates.length; i++) {
            idx = self.dateInArray(self.dates, inpdates[i]);
            if (selectVal == true) {
                inpdates[i].selected = true;
                if (idx == -1) {
                    self.dates[self.dates.length] = inpdates[i];
                } else {
                    self.dates[idx].selected = true;
                }
            } else {
                if (idx > -1) {
                    self.dates[idx].selected = inpdates[i].selected = false;
                    if (self.dates[idx].type == 'normal') {
                        self.dates.splice(idx, 1);
                    }
                }
            }
        }
        updateSelectedDates();
        if (redraw != false) {
            self.reDraw();
        }
    };
    self.sendForm = function (form, inputname) {
        var inpname = inputname || 'epochdates',
            f, inp;
        f = (typeof(form) == 'string' ? document.getElementById(form) : form);
        if (!f) {
            alert('ERROR:Invalid form input');
            return false;
        }
        for (var i = 0; i < self.dates.length; i++) {
            inp = document.createElement('input');
            inp.setAttribute('type', 'hidden');
            inp.setAttribute('name', inpname + '[' + i + ']');
            inp.setAttribute('value', encodeURIComponent(self.dates[i].dateFormat('l M j')));
            f.appendChild(inp);
        }
        return true;
    };
    self.resetSelections = function (retMonth) {
        var dateArray = new Array();
        var dt = self.dates;
        for (var i = 0; i < dt.length; i++) {
            if (dt[i].selected) {
                dateArray[dateArray.length] = dt[i];
            }
        }
        self.selectDates(dateArray, false, false);
        self.rows = new Array(false, false, false, false, false, false, false);
        self.cols = new Array(false, false, false, false, false, false, false);
        if (self.mode == 'popup') {
            self.tgt.value = '';
            self.hide();
        }
        retMonth == true ? self.goToMonth(self.displayYearInitial, self.displayMonthInitial) : self.reDraw();
    };
    self.reDraw = function (index) {
        self.state = 1;
        var len = index ? index + 1 : self.cells.length;
        for (var i = index || 0; i < len; i++) {
            setCellProperties(i);
        }
        self.state = 2;
    };
    self.getCellIndex = function (date) {
        for (var i = 0; i < self.cells.length; i++) {
            if (self.cells[i].date.getUeDay() == date.getUeDay()) {
                return i;
            }
        }
        return -1;
    };
    self.state = 0;
    self.name = name;
    self.curDate = new Date();
    self.mode = mode;
    self.selectMultiple = (multiselect == true);
    self.dates = new Array();
    self.selectedDates = new Array();
    self.calendar;
    self.calHeading;
    self.calCells;
    self.rows;
    self.cols;
    self.cells = new Array();
    self.monthSelect;
    self.yearSelect;
    self.mousein = false;
    calConfig();
    setLang();
    setDays();
    createCalendar();
    targetelement = typeof(targetelement) == 'string' ? document.getElementById(targetelement) : targetelement;
    setMode(targetelement);
    self.state = 2;
    self.visible ? self.show() : self.hide();
}
function CalHeading(owner, tableCell, dayOfWeek) {
    function DayHeadingonclick() {
        var sdates = owner.dates;
        var cells = owner.cells;
        var dateArray = new Array();
        owner.cols[dayOfWeek] = !owner.cols[dayOfWeek];
        for (var i = 0; i < cells.length; i++) {
            if (cells[i].dayOfWeek == dayOfWeek && cells[i].date.canSelect && (!owner.selCurMonthOnly || cells[i].date.getMonth() == owner.displayMonth && cells[i].date.getFullYear() == owner.displayYear)) {
                dateArray[dateArray.length] = cells[i].date;
            }
        }
        owner.selectDates(dateArray, owner.cols[dayOfWeek], true);
    }
    var self = this;
    self.dayOfWeek = dayOfWeek;
    addEventHandler(tableCell, 'mouseup', DayHeadingonclick);
}
function WeekHeading(owner, tableCell, week, tableRow) {
    function weekHeadingonclick() {
        var cells = owner.cells;
        var sdates = owner.dates;
        var dateArray = new Array();
        owner.rows[tableRow] = !owner.rows[tableRow];
        for (var i = 0; i < cells.length; i++) {
            if (cells[i].tableRow == tableRow && cells[i].date.canSelect && (!owner.selCurMonthOnly || cells[i].date.getMonth() == owner.displayMonth && cells[i].date.getFullYear() == owner.displayYear)) {
                dateArray[dateArray.length] = cells[i].date;
            }
        }
        owner.selectDates(dateArray, owner.rows[tableRow], true);
    }
    var self = this;
    self.week = week;
    tableCell.setAttribute('class', 'wkhead');
    tableCell.setAttribute('className', 'wkhead');
    addEventHandler(tableCell, 'mouseup', weekHeadingonclick);
}
function CalCell(owner, tableCell, dateObj, row, week) {
    var self = this;

    function calCellonclick() {
        if (self.date.canSelect) {
            if (owner.selectMultiple == true) {
                owner.selectDates(new Array(self.date), !self.date.selected, false);
                self.setClass();
            } else {
                owner.selectDates(new Array(self.date), true, false, true);
                if (owner.mode == 'popup') {
                    owner.tgt.value = self.date.dateFormat();
                    owner.tgt.dateObj = new Date(self.date);
                    owner.hide();
                }
                owner.reDraw();
            }
        }
    }
    function calCellonmouseover() {
        if (self.date.canSelect) {
            tableCell.setAttribute('class', self.cellClass + ' hover');
            tableCell.setAttribute('className', self.cellClass + ' hover');
        }
    }
    function calCellonmouseout() {
        self.setClass();
    }
    self.setClass = function () {
        if (self.date.canSelect !== false) {
            if (self.date.selected) {
                self.cellClass = 'cell_selected';
            } else if (owner.displayMonth != self.date.getMonth()) {
                self.cellClass = 'notmnth';
            } else if (self.date.type == 'holiday') {
                self.cellClass = 'hlday';
            } else if (self.dayOfWeek > 0 && self.dayOfWeek < 6) {
                self.cellClass = 'wkday';
            } else {
                self.cellClass = 'wkend';
            }
        } else {
            self.cellClass = 'noselect';
        }
        if (self.date.getUeDay() == owner.curDate.getUeDay()) {
            self.cellClass = self.cellClass + ' curdate';
        }
        tableCell.setAttribute('class', self.cellClass);
        tableCell.setAttribute('className', self.cellClass);
    };
    self.setURL = function (href, type) {
        if (href) {
            if (type == 'js') {
                addEventHandler(self.tableCell, 'mousedown', function () {
                    window.location.href = href;
                });
            } else {
                var url = document.createElement('a');
                url.setAttribute('href', href);
                url.appendChild(document.createTextNode(self.date.getDate()));
                self.tableCell.replaceChild(url, self.tableCell.firstChild);
            }
        }
    };
    self.setTitle = function (titleStr) {
        if (titleStr && titleStr.length > 0) {
            self.title = titleStr;
            self.tableCell.setAttribute('title', titleStr);
        }
    };
    self.setHTML = function (html) {
        if (html && html.length > 0) {
            if (self.tableCell.childNodes[1]) {
                self.tableCell.childNodes[1].innerHTML = html;
            } else {
                var htmlCont = document.createElement('div');
                htmlCont.innerHTML = html;
                self.tableCell.appendChild(htmlCont);
            }
        }
    };
    self.cellClass;
    self.tableRow = row;
    self.tableCell = tableCell;
    self.date = new Date(dateObj);
    self.date.canSelect = true;
    self.date.type = 'normal';
    self.date.selected = false;
    self.date.cellHTML = '';
    self.dayOfWeek = self.date.getDay();
    self.week = week;
    addEventHandler(tableCell, 'click', calCellonclick);
    addEventHandler(tableCell, 'mouseover', calCellonmouseover);
    addEventHandler(tableCell, 'mouseout', calCellonmouseout);
    self.setClass();
}
Date.prototype.getDayOfYear = function () {
    return parseInt((this.getTime() - new Date(this.getFullYear(), 0, 1).getTime()) / 86400000 + 1);
};
Date.prototype.getWeek = function (dowOffset) {
    dowOffset = typeof(dowOffset) == 'int' ? dowOffset : 0;
    var newYear = new Date(this.getFullYear(), 0, 1);
    var day = newYear.getDay() - dowOffset;
    day = (day >= 0 ? day : day + 7);
    var weeknum, daynum = Math.floor((this.getTime() - newYear.getTime() - (this.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;
    if (day < 4) {
        weeknum = Math.floor((daynum + day - 1) / 7) + 1;
        if (weeknum > 52) {
            nYear = new Date(this.getFullYear() + 1, 0, 1);
            nday = nYear.getDay() - dowOffset;
            nday = nday >= 0 ? nday : nday + 7;
            weeknum = nday < 4 ? 1 : 53;
        }
    } else {
        weeknum = Math.floor((daynum + day - 1) / 7);
    }
    return weeknum;
};
Date.prototype.getUeDay = function () {
    return parseInt(Math.floor((this.getTime() - this.getTimezoneOffset() * 60000) / 86400000));
};
Date.prototype.dateFormat = function (format) {
    if (!format) {
        format = 'l M j';
    }
    LZ = function (x) {
        return (x < 0 || x > 9 ? '' : '0') + x
    };
    var MONTH_NAMES = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
    var DAY_NAMES = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
    var result = "";
    var i_format = 0;
    var c = "";
    var token = "";
    var y = this.getFullYear().toString();
    var M = this.getMonth() + 1;
    var d = this.getDate();
    var E = this.getDay();
    var H = this.getHours();
    var m = this.getMinutes();
    var s = this.getSeconds();
    value = {
        Y: y.toString(),
        y: y.substring(2),
        n: M,
        m: LZ(M),
        F: MONTH_NAMES[M - 1],
        M: MONTH_NAMES[M + 11],
        j: d,
        d: LZ(d),
        D: DAY_NAMES[E + 7],
        l: DAY_NAMES[E],
        G: H,
        H: LZ(H)
    };
    if (H == 0) {
        value['g'] = 12;
    } else if (H > 12) {
        value['g'] = H - 12;
    } else {
        value['g'] = H;
    }
    value['h'] = LZ(value['g']);
    if (H > 11) {
        value['a'] = 'pm';
        value['A'] = 'PM';
    } else {
        value['a'] = 'am';
        value['A'] = 'AM';
    }
    value['i'] = LZ(m);
    value['s'] = LZ(s);
    while (i_format < format.length) {
        c = format.charAt(i_format);
        token = "";
        while ((format.charAt(i_format) == c) && (i_format < format.length)) {
            token += format.charAt(i_format++);
        }
        if (value[token] != null) {
            result = result + value[token];
        } else {
            result = result + token;
        }
    }
    return result;
};

function addEventHandler(element, type, func) {
    if (element.addEventListener) {
        element.addEventListener(type, func, false);
    } else if (element.attachEvent) {
        element.attachEvent('on' + type, func);
    }
}
function removeEventHandler(element, type, func) {
    if (element.removeEventListener) {
        element.removeEventListener(type, func, false);
    } else if (element.attachEvent) {
        element.detachEvent('on' + type, func);
    }
}
function getTop(element) {
    var oNode = element;
    var iTop = 0;
    while (oNode.tagName != 'HTML') {
        iTop += oNode.offsetTop || 0;
        if (oNode.offsetParent) {
            oNode = oNode.offsetParent;
        } else {
            break;
        }
    }
    return iTop;
}
function getLeft(element) {
    var oNode = element;
    var iLeft = 0;
    while (oNode.tagName != 'HTML') {
        iLeft += oNode.offsetLeft || 0;
        if (oNode.offsetParent) {
            oNode = oNode.offsetParent;
        } else {
            break;
        }
    }
    return iLeft;
}
var bas_cal,dp_cal,ms_cal;function calendar(){dp_cal=new Epoch('epoch_popup','popup',document.getElementById('calendar'));}

function showLoader() {
	var black = document.getElementById('blackOut');
	var loader = document.getElementById('loader');
	show(loader);
	show(black);
}
