﻿

    function MonasabaPanelUpdated() 
    {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(PrepareMonasabatTable);
    }
    
    
    function PrepareMonasabatTable()
    {
//        return;
        var GvMonasabat = document.getElementById('GvMonasabat'); 
        if(GvMonasabat == null || GvMonasabat.rows.length < 2) return;
        
        GvMonasabat.rows[0].cells[0].innerText = 'التاريخ';
        GvMonasabat.rows[0].cells[1].innerText = 'الاسم';
        GvMonasabat.rows[0].cells[2].innerText = 'الوقت';
        GvMonasabat.rows[0].cells[3].innerText = 'القاعة';
        
        // For firefox
        GvMonasabat.rows[0].cells[0].textContent = 'التاريخ';
        GvMonasabat.rows[0].cells[1].textContent = 'الاسم';
        GvMonasabat.rows[0].cells[2].textContent = 'الوقت';
        GvMonasabat.rows[0].cells[3].textContent = 'القاعة';
        
        var LastTime=0;
        var RowPos=1;
        
        // To delete the repeated rows and set the time period
        for(var x=2;x<GvMonasabat.rows.length;x++)
        {
                 
            if(GvMonasabat.rows[RowPos].cells[0].innerText == GvMonasabat.rows[x].cells[0].innerText &&
               GvMonasabat.rows[RowPos].cells[1].innerText == GvMonasabat.rows[x].cells[1].innerText &&
               GvMonasabat.rows[RowPos].cells[3].innerText == GvMonasabat.rows[x].cells[3].innerText &&
               (GvMonasabat.rows[RowPos].cells[2].innerText == GvMonasabat.rows[x].cells[2].innerText || 
               (parseInt(GvMonasabat.rows[x].cells[2].innerText) - parseInt(GvMonasabat.rows[RowPos].cells[2].innerText) == 1 ||
                parseInt(GvMonasabat.rows[x].cells[2].innerText) - LastTime == 1 )  )   )
                 {
                    LastTime = parseInt(GvMonasabat.rows[x].cells[2].innerText);
                    GvMonasabat.deleteRow(x);--x;
                 }
             else
             {
              if(IsNumeric(GvMonasabat.rows[RowPos].cells[2].innerText) && LastTime > 0)
                 GvMonasabat.rows[RowPos].cells[2].innerText += ' - ' + LastTime;
                RowPos = x;LastTime=0;
             }    
        }
        
        if(IsNumeric(GvMonasabat.rows[RowPos].cells[2].innerText) && LastTime > 0)
            GvMonasabat.rows[RowPos].cells[2].innerText += ' - ' + LastTime;


        
        // To set the time period titles in arabic
        for (var x = 1; x < GvMonasabat.rows.length; x++) {
            if (GvMonasabat.rows[x].cells[2].innerText.indexOf('كل') == -1 && GvMonasabat.rows[x].cells[2].innerText.indexOf('---') == -1 && IsNumeric(GvMonasabat.rows[x].cells[2].innerText.substr(0, 1)))
                GvMonasabat.rows[x].cells[2].innerText = GetTimingDescription(GvMonasabat.rows[x].cells[2].innerText);
        }


        // To Change the date titles to arabic and seting the row span if the same date is repeated
        var DateCount = 0;
        var FirstDateRow = 1;
        for(var x=2;x<GvMonasabat.rows.length;x++)
        {
            if(GvMonasabat.rows[x].cells[0].innerText == GvMonasabat.rows[FirstDateRow].cells[0].innerText)
                {DateCount++;
                GvMonasabat.rows[x - DateCount].cells[0].rowSpan = DateCount + 1;
                GvMonasabat.rows[x].deleteCell(0);}
            else
                { 
                var Mdate = new Date(GvMonasabat.rows[FirstDateRow].cells[0].innerText);
//                GvMonasabat.rows[FirstDateRow].cells[0].innerText = ReplaceDateString(Mdate.format("dddd d MMMM yyyy"));
                FirstDateRow = x;DateCount = 0; }
        }
//        var Mdate = new Date(GvMonasabat.rows[FirstDateRow].cells[0].innerText);
//        GvMonasabat.rows[FirstDateRow].cells[0].innerText = ReplaceDateString(Mdate.format("dddd d MMMM yyyy"));
        
    }
    
    function CheckRefreshMonasabatTable()
    {
        var DateFrom = new Date(document.getElementById('TxtDateFrom').value);
        var DateTo = new Date(document.getElementById('TxtDateTo').value);
        if(DateTo < DateFrom)
        {
            alert('خطأ في الفترة');
            return false;
        }
        if((DateTo-DateFrom)/(24*60*60*1000) > 60)
        {
            alert('عذرا. الحد الاقصى لجدول المناسبات هو 60 يوما فقط');
            return false;
        }
        return true;
    }
    
    function ReplaceDateString(OldDateString)
    {
        if(OldDateString.indexOf('Sunday') >= 0) OldDateString = OldDateString.replace('Sunday','الاحد');
        if(OldDateString.indexOf('Monday') >= 0) OldDateString = OldDateString.replace('Monday','الاثنين');
        if(OldDateString.indexOf('Tuesday') >= 0) OldDateString = OldDateString.replace('Tuesday','الثلاثاء');
        if(OldDateString.indexOf('Wednesday') >= 0) OldDateString = OldDateString.replace('Wednesday','الاربعاء');
        if(OldDateString.indexOf('Thursday') >= 0) OldDateString = OldDateString.replace('Thursday','الخميس');
        if(OldDateString.indexOf('Friday') >= 0) OldDateString = OldDateString.replace('Friday','الجمعة');
        if(OldDateString.indexOf('Saturday') >= 0) OldDateString = OldDateString.replace('Saturday','السبت');
        if(OldDateString.indexOf('January') >= 0) OldDateString = OldDateString.replace('January','يناير');
        if(OldDateString.indexOf('February') >= 0) OldDateString = OldDateString.replace('February','فبراير');
        if(OldDateString.indexOf('March') >= 0) OldDateString = OldDateString.replace('March','مارس');
        if(OldDateString.indexOf('April') >= 0) OldDateString = OldDateString.replace('April','ابريل');
        if(OldDateString.indexOf('May') >= 0) OldDateString = OldDateString.replace('May','مايو');
        if(OldDateString.indexOf('Jun') >= 0) OldDateString = OldDateString.replace('Jun','يونيو');
        if(OldDateString.indexOf('July') >= 0) OldDateString = OldDateString.replace('July','يوليو');
        if(OldDateString.indexOf('August') >= 0) OldDateString = OldDateString.replace('August','أغسطس');
        if(OldDateString.indexOf('September') >= 0) OldDateString = OldDateString.replace('September','سبتمبر');
        if(OldDateString.indexOf('October') >= 0) OldDateString = OldDateString.replace('October','أكتوبر');
        if(OldDateString.indexOf('November') >= 0) OldDateString = OldDateString.replace('November','نوفمبر');
        if(OldDateString.indexOf('December') >= 0) OldDateString = OldDateString.replace('December','ديسمبر');
        return OldDateString;
    }

    function GetTimingDescription(TheTime)
    {
        if(TheTime.indexOf('-')>=0) return GetTimingPeriodDescription(TheTime);
        var Time1;var Time2;
        var TimeFrom;var TimeTo;
        if(TheTime > 11) Time1 =  'مساءا'; else Time1 = 'صباحا ';
        if(parseInt(TheTime) + 1 > 11) Time2 = 'مساءا'; else Time2 = 'صباحا';
        if(parseInt(TheTime) > 12) TimeFrom = (parseInt(TheTime) - 12).toString(); else TimeFrom = TheTime;
        if(parseInt(TheTime) + 1 > 12) TimeTo = (parseInt(TheTime) - 11).toString();else TimeTo = parseInt(TheTime) + 1;
        return 'من ' + TimeFrom + ' ' + Time1 + ' الى ' + TimeTo + ' ' + Time2;
    }
    
    
    function GetTimingPeriodDescription(TheTime)
    {
        var FirstNum = TheTime.substr(0,2);
        var SecNum = TheTime.substr(4,3);
        return 'من ' + GetOneTimeDescription(FirstNum) +  ' الى ' + GetOneTimeDescription(parseInt(SecNum) + 1);
    }
    
    function GetOneTimeDescription(TheTime)
    {
        var Time1;
        var TimeFrom;
        if(TheTime > 11) Time1 =  'مساءا'; else Time1 = 'صباحا ';
        if(parseInt(TheTime) > 12) TimeFrom = (parseInt(TheTime) - 12).toString(); else TimeFrom = TheTime;
        return TimeFrom + ' ' + Time1;
    }
    
    function IsNumeric(sText)
    {
        var ValidChars = "0123456789";
        var IsNumber=true;
        var Char;
 
        for (i = 0; i < sText.length && IsNumber == true; i++) 
        { 
            Char = sText.charAt(i); 
            if (ValidChars.indexOf(Char) == -1) 
            {
            IsNumber = false;
            }
        }
        return IsNumber;
    }


