function free_date_picker(obj_name, layer_name, text_to, type, hide_self, language)
{
    ////////////////////////////////////////////////////////////////////////////////////
    // IF str < lng, add leading 0 to complete the str
    function leading_zeros(str, lng)
    {
        // param validation
        if (lng == null)
            lng = 2;

        var str = str.toString();
        while (str.length < lng)
            str = '0' + str;

        return str;
    }
    ////////////////////////////////////////////////////////////////////////////////////
    // Nbr days for this month
    function returnDays(date)
    {
        var year = date.getFullYear();
        var month = date.getMonth();
        var days = 31;

        if (month == 3 || month == 5 || month == 8 || month == 10) {
            days = 30;
        }
        else if (month == 1) {
            days = 28;

            if (year % 4 == 0) {
                days = 29;

                if (year % 100 == 0) {
                    days = 28;

                    if (year % 400 == 0) {
                        days = 29;
                    }
                }
            }
        }
        return(days);
    }
    ////////////////////////////////////////////////////////////////////////////////////
    // Return last month
    function returnLastMonth(date)
    {
        var year = date.getFullYear();
        var month = date.getMonth();
        var dt = new Date();

        month --;

        if (month == -1) {
            month = 11;
            year --;
        }

        dt.setYear(year);
        dt.setDate(1);
        dt.setMonth(month);

        return dt;
    }
    ////////////////////////////////////////////////////////////////////////////////////
    function returnNextMonth(date)
    {
        var year = date.getFullYear();
        var month = date.getMonth();
        var dt = new Date();

        month ++;

        if (month == 12) {
            month = 0;
            year ++;
        }

        dt.setYear(year);
        dt.setDate(1);
        dt.setMonth(month);

        return dt;
    }
    ////////////////////////////////////////////////////////////////////////////////////
    function return_month_name(date)
    {
        switch (language) {
            case("us"):
                var month = new Array('January', 'February', 'March', 'April', 'May', 'June',
                        'July', 'August', 'September', 'October', 'November', 'December');
                break;
            case("fr"):
            default:
                var month = new Array('\ufeff\u064a\u0646\u0627\u064a\u0631',
                                        '\u0641\u0628\u0631\u0627\u064a\u0631',
                                        '\u0645\u0627\u0631\u0633',
                                        '\u0623\u0628\u0631\u064a\u0644',
                                        '\u0645\u0627\u064a\u0648',
                                        '\u064a\u0648\u0646\u064a\u0648',
                                        '\u064a\u0648\u0644\u064a\u0648',
                                        '\u0623\u063a\u0633\u0637\u0633',
                                        '\u0633\u0628\u062a\u0645\u0628\u0631',
                                        '\u0623\u0643\u062a\u0648\u0628\u0631',
                                        '\u0646\u0648\u0641\u0645\u0628\u0631',
                                        '\u062f\u064a\u0633\u0645\u0628\u0631');
        }

        return month[date.getMonth()];
    }
    ////////////////////////////////////////////////////////////////////////////////////
    this.setto = function(eng_date)
    {
        // input text
        if (type == 1){
            document.getElementById('iCal').value = eng_date;
            //showResult("/MOJ-UAE-PUBLIC-temp/calendarservlet");
            showResult("/MOJ-UAE-PUBLIC/calendarservlet");
        }
        else if (type == 2){
            document.getElementById(text_to).innerHTML = eng_date;
        }
    }
     ////////////////////////////////////////////////////////////////////////////////////
    this.write_calendar = function(date)
    {
        var nb_days_last_month = 0;
        var cnt_days = 0;
        var days_month = 0;
        var str = new String();
        var style = new String();
        var next_month = new Date();
        var last_month = new Date();
        var today = new Date();
        var date = new Date(date);
        var last_year = new Date(date);
        var next_year = new Date(date);

        date.setDate(1);
        next_month = returnNextMonth(date);
        last_month = returnLastMonth(date);
        nb_days_last_month = returnDays(last_month);
        cnt_days = -date.getDay() + 1;
        days_month = returnDays(date);
        str = '';

        next_year.setYear(date.getFullYear() + 1);
        last_year.setYear(date.getFullYear() - 1);

        str += '<table cellspacing="0" cellpadding="2" border="0" width="250" bgcolor="#eeeee0">';

        str += '<tr bgcolor="#cdcdc1" height="25">';

        str += ' <td colspan="1" align="left"><a href="' + "javascript:" +
               obj_name + ".write_calendar('" + eval(last_year) + "')" + ';"><img src="../images/iconLeft.gif" alt="Previous Year" width="16" height="16"  border="0"/></a></td>';
        str += ' <td colspan="1" align="left"><a href="' + "javascript:" +
               obj_name + ".write_calendar('" + eval(last_month) + "')" + '"><img src="../images/prevYear.gif" alt="Previous Month" width="16" height="16"  border="0"/></a></td>';

        str += ' <td colspan="3" align="center"><b>'
        str += return_month_name(date) + ' ' + date.getFullYear();
        str += ' </td>';

        str += ' <td colspan="1" align="right"><a href="' + "javascript:" +
               obj_name + ".write_calendar('" + eval(next_month) + "')" + '"><img src="../images/nextYear.gif" alt="Next Month" width="16" height="16"  border="0"/></a></td>';
        str += ' <td colspan="1" align="right"><a href="' + "javascript:" +
               obj_name + ".write_calendar('" + eval(next_year) + "')" + '"><img src="../images/iconRight.gif" alt="Next Year" width="16" height="16"  border="0"/></a></td>';
        str += '</tr>';

        str += '<tr bgcolor="#eee8dc" height="25">';
        str += '<td><div align="left">S</div></td>';
        str += '<td><div align="left">M</div></td>';
        str += '<td><div align="left">T</div></td>';
        str += '<td><div align="left">W</div></td>';
        str += '<td><div align="left">T</div></td>';
        str += '<td><div align="left">F</div></td>';
        str += '<td><div align="left">S</div></td>';
        str += '</td>';
        str += '</tr>';

        var cnt_semaines = 0;

        while (cnt_semaines < 6) {
            cnt_semaines ++;

            str += ' <tr>';

            for (var cnt = 0; cnt < 7; cnt++) {

                if (cnt_days > days_month) {
                    day = cnt_days - days_month;
                    month = next_month.getMonth()+1;
					if(month==13){
						month=1;
					}
                    year = next_month.getFullYear();

                    style = "font-size: 10px;";
                }
                else if (cnt_days < 1) {
                    day = cnt_days + nb_days_last_month;
                    month = last_month.getMonth()+1;
                    year = last_month.getFullYear();

                    style = "font-size: 10px;";

                }
                else {
                    var d1 = new Date();
                    var d2 = new Date();

                    d1.setMonth(date.getMonth());
                    d1.setYear(date.getFullYear());
                    d1.setDate(cnt_days);

                    day = cnt_days;
                    month = date.getMonth() + 1;
		    //alert("inside elseeeeeeeeee---"+month);
                    year = date.getFullYear();

                    if (d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate()) {
                        style = "font-size:11px;font-weight:bold;"
                    }
                    else {
                        style = "font-size:11px;";
                    }
                }
                dstr = leading_zeros(day) + '/' + leading_zeros(month) + '/' + year;
                str += '  <td width="14%">';
                str += '  <span style="' + style + '">';
                if(leading_zeros(month)!=0){
                    str += '  <a href="javascript:' + obj_name + '.setto(\'' + dstr + '\')">';
                    str += day;
                    str += '  </a>';
                }
                str += '  </font>';
                str += '  </td>';

                cnt_days ++;
            }
            str += ' </tr>';
        }
        str += '</table>';
        document.getElementById(layer_name).innerHTML = str;
    }

    this.show = function()
    {
        if (hide_self)
            document.getElementById(layer_name).style.visibility = 'visible';
    }

    this.hide = function()
    {
        if (hide_self)
            document.getElementById(layer_name).style.visibility = 'hidden';
    }

    ////////////////////////////////////////////////////////////////////////////////////
    // create layer and show calendar
    document.write('<div id="' + layer_name + '" onmouseout="' + obj_name + '.hide();">...</div>');
    this.write_calendar(new Date());
}


function showHearingRes(emp_value){
    //alert("inside showHearingRes");
    if(document.getElementById("location_id").value != null){
        xmlHttp=GetXmlHttpObject()
        if (xmlHttp==null){
            alert ("Browser does not support HTTP Request")
            return
        }
        var url="calendarservlet"
        xmlHttp.onreadystatechange=stateChanged 
        xmlHttp.open("POST",url,true)
        xmlHttp.send(null)
    }else{
        alert("Please Select a Location");
    }
}

function stateChanged(){ 
    document.getElementById("ename").value ="";
    document.getElementById("emp_id").value ="";
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){ 
      var showdata = xmlHttp.responseText;
      //alert("showdata value configured : "+ showdata);
      var strar = showdata.split(":");
          if(strar.length==1){
            document.getElementById("emp_id").focus();
            alert("Please Select Employee Id");
            document.getElementById("ename").value =" ";
            document.getElementById("emp_id").value =" ";
         }else if(strar.length>1){
            var strname = strar[1];
            document.getElementById("emp_id").value= strar[2];
            document.getElementById("ename").value= strar[1];
         }
    } 
}

function GetXmlHttpObject(){
    var xmlHttp=null;
    try{
         // Firefox, Opera 8.0+, Safari
         xmlHttp=new XMLHttpRequest();
     }catch (e){
        //Internet Explorer
         try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }catch (e){
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
     }
    return xmlHttp;
}
function showEmp(){  
    var elems = document.getElementById("calView").value;
    
    //alert("elems are"+ elems);
    if (elems != null)      
    for (i=0; i<elems.length; i++)          
    document.elems[i].style.display = elems[i].style.display == 'none' ? '' : 'none';
}

function showLoc(surl){
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null){
        alert ("Browser does not support HTTP Request")
        return
    }
    xmlHttp.onreadystatechange=stateLocIdChanged 
    xmlHttp.open("POST",surl,true)
    xmlHttp.send(null);
}

function stateLocIdChanged(){ 
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
      var showdata = xmlHttp.responseText;
      document.getElementById("sloc_id_div").innerHTML=xmlHttp.responseText
    } 
}

function showCalView(surl){  
    //alert("inside showCalView jsp");
    var location = document.getElementById("location_id").value;
    var calV = document.getElementById("calView").value;
    var l_locale = document.getElementById("lang").value;
    var calr = document.ecalendar.calView.getElementsByTagName('option')[document.ecalendar.calView.selectedIndex].text;
    //alert("calr"+calr);
    //alert("location : "+location);
    //alert("calV : "+calV);
    if(calV == '' || calV == '-1' ){
      return
    }
    document.getElementById('calv_id').innerHTML = calr;
    //alert("inside showLoc jsp");
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null){
        alert ("Browser does not support HTTP Request")
        return
    }
    url=surl+"?location_id="+location+"&calView="+calV+"&l_locale="+l_locale
    //alert("url :"+url);
    xmlHttp.onreadystatechange=stateCalIdChanged 
    xmlHttp.open("POST",url,true)
    xmlHttp.send(null)
}

function stateCalIdChanged(){ 
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
      var showdata = xmlHttp.responseText;
      document.getElementById("scal_view_div").innerHTML=xmlHttp.responseText
    } 
}

function showResult(surl){
    //alert("");
    var x= new Date()
    var y= x.getYear()
    var m= x.getMonth()+1  // added +1 because javascript counts month from 0
    var d= x.getDate()
    var dateVal = d+'/'+m+'/'+y
    var resVal= "showRes";
    var l_locale = document.getElementById("lang").value;
    var location = document.getElementById("location_id").value;
    if(location == '-1'){
        if(l_locale =='ar'){
            alert('\u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u062e\u062a\u064a\u0627\u0631 \u0642\u064a\u0645\u0629 \u0644\u0644\u0645\u0648\u0642\u0639');
        }else{
            alert("Please select a Location");
        }
        return;
    }
    var calV = document.getElementById("calView").value;
    if(calV == '-1'){
        calV ='';
    }
    var calView = document.getElementById("calView_id").value;
    var cal = document.getElementById("iCal").value;
    var l_locale = document.getElementById("lang").value;
    var cValue ="";
    //alert("location : "+location);
    //alert("calV : "+calV);
    //alert("calView :"+calView);
    if(cal == ""){
        cal=dateVal;
    }
    document.getElementById("ResDiv").style.display = 'block';
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null){
        alert ("Browser does not support HTTP Request")
        return
    }
    var url=surl+"?location_id="+location+"&calView="+calV+"&calResView="+calView+"&viewHearing="+resVal+"&calValue="+cal+"&week="+cValue+"&l_locale="+l_locale
    //alert("url :"+url);
    xmlHttp.onreadystatechange=stateRes 
    xmlHttp.open("POST",url,true)
    xmlHttp.send(null)
}

function stateRes(){ 
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
      var showdata = xmlHttp.responseText;
      document.getElementById("GeneralCal").innerHTML=xmlHttp.responseText
    } 
}

function showWeekResult(surl){
    var location = document.getElementById("location_id").value;
    var calV = document.getElementById("calView").value;
    if(calV == '-1'){
        calV ='';
    }
    var calView = document.getElementById("calView_id").value;
    var cal = document.getElementById("iCal").value;
    var l_locale = document.getElementById("lang").value;
    var cValue ="Yes";
    var x= new Date()
    var y= x.getYear()
    var m= x.getMonth()+1  // added +1 because javascript counts month from 0
    var d= x.getDate()
    var dateVal = d+'/'+m+'/'+y
    
    var resVal= "showRes";
    //alert("location : "+location);
    //alert("calV : "+calV);
    //alert("calView :"+calView);
    //alert("cal : "+cal);
    if(cal == ""){
        //alert("cal : "+cal);
        cal=dateVal;
    }
    document.getElementById("ResDiv").style.display = 'block';
    xmlHttp=GetXmlHttpObject()
    if (xmlHttp==null){
        alert ("Browser does not support HTTP Request")
        return
    }
    var url=surl+"?location_id="+location+"&calView="+calV+"&calResView="+calView+"&viewHearing="+resVal+"&calValue="+cal+"&week="+cValue+"&l_locale="+l_locale
    //alert("url :"+url);
    xmlHttp.onreadystatechange=stateWeekRes 
    xmlHttp.open("POST",url,true)
    xmlHttp.send(null)
}

function stateWeekRes(){ 
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
      var showdata = xmlHttp.responseText;
      document.getElementById("GeneralCal").innerHTML=xmlHttp.responseText
    } 
}

