var adds=1;
var mStation_From="";
var mStation_To="";
var mStationFrom_Name="";
var mStationTo_Name="";
var mQuota="GN";
var mClass="";
var mRundays="";
var mShowRoute=0;
var Selected_Route_No=1;
var Selected_Train_No="";
var Selected_Train_Name="";
var Direction=1;
var Route_Station_From="";
var Route_Station_To="";
var URL_Route="";
var TrainSource="0";
var eKey=0;
var mSearchByCity=1;
var focustxt=null;

var mcmbStationFrom=null;
var mcmbStationTo=null;

var mtxtStationFrom=null;
var mtxtStationTo=null;

var HTMLSearchOptionsCity="";
var HTMLSearchOptionsStation="";

var lastSelectedRow=null;

var str21="<span style='font-size:16px;color:#FF0000'>&nbsp;&raquo;&nbsp;</span>";

var flagHideStationsList=0;
var OneDay=86400000;
window.onresize=resized;

function GO(ID) {var obj=null;try{obj=document.getElementById(ID);}catch(e){}return obj;}//get object
function GOFA(ID) {var obj=null;try{obj=window.frames["frame_Detail"].document.getElementById(ID);}catch(e){}return obj;}//get object
function GOFT(ID) {var obj=null;try{obj=window.frames["frame_Main"].document.getElementById(ID);}catch(e){}return obj;}//get object

function ShowMail()
{   
    window.open("mailto:feedback" + "@" + "eroad.in" + "?subject=eRail - Web Feedback");
}

function ShowLink(URL)
{
    URL="common/NewLink.aspx?" + URL;
    window.open(URL,"_blank");
    try{urchinTracker(URL);}catch(e){}
    return false;
}

var m_names = new Array("Jan", "Feb", "Mar","Apr", "May", "Jun", "Jul", "Aug", "Sep","Oct", "Nov", "Dec");
var d_names = new Array("Sunday", "Monday", "Tuesday","Wednesday", "Thursday", "Friday", "Saturday");
var d_namesh = new Array("Su", "Mo", "Tu","We", "Th", "Fr", "Sa");
var IST_Time=new Date();
var DateFromTo=null;
var DateToFrom=null;

function InText(obj,txt)
{
    obj.style.color="#000000";
    if(obj.value==txt)
        obj.value="";
}    

function OutText(obj,txt)
{
    if(obj.value=="")
    {
        obj.value=txt;
        obj.style.color="#C0C0C0";
    }
    else
        obj.style.color="#000000";
}
    
function MakeDetailFrame()
{
      GO("divDetail").innerHTML="<iframe id='frame_Detail' name='frame_Detail' style='margin: 0px;width:770px' frameborder='0' marginheight='0' marginwidth='0' ></iframe>";
      resized();
      GO("frame_Detail").src="road/help.htm";
}

function ShowBooking(BookingType,RouteID,DepartureTime,BusType,StationFrom,StationTo)
{
    var time=Direction==1?DateFromTo:DateToFrom;
    var URL="";
    
    if(BookingType=="Book")
    {
        URL="http://www.redbus.in/booking/Seatselection.aspx?doj=" + time.getDate() + "-" + m_names[time.getMonth()] + "-" + time.getFullYear() + "&rt=" + RouteID + "&dep=" + DepartureTime + "&pid=PWSCERA026";            
    }

    if(BookingType=="Request")
    {
        URL="http://www.redbus.in/TicketRequest.aspx?d=" + time.getDate() + "-" + m_names[time.getMonth()] + "-" + time.getFullYear() + "&r=" + RouteID + "&dep=" + DepartureTime + "&pid=PWSCERA026"
        + "&n=1&Typ=" + BusType + "&F=" + StationFrom + "&T=" + StationTo;        
    }
            
    window.open(URL,"_blank");
    return false;
}

function ShowFrameMessage(framename,msg)
{
    var doc=window.frames[framename].document;
    doc.open(); 
    doc.write("<html><body style='background-color:#ffffff;font-family: Arial;font-size:12px;'>");
    doc.write(msg); 
    doc.write("</body></html>");
    doc.close();         
}

function CallFromTrainsList()
{
    resized();
}

function resized()
{	
    var H=findLiveHeight()-95;
    var obj=GO("frame_Main");
    if(obj)obj.style.height=(H * .45) + "px";
    
    obj=GOFT("divTrainsList");
    if(obj)obj.style.height=((H * .45)-17) + "px";
    obj=GO("frame_Detail");
    if(obj)obj.style.height=(H *.55)+ "px";
}

function Init() 
{
    MakeDetailFrame();
    IST_Time=new Date(IST_Time.getTime() + IST_Time.getTimezoneOffset()* 60000 + 19800000 );
    cmdSearchCriteria(1);
    ChangeCaption();
    setInterval("setTime()",1000);
    resized();    
    DoDateSelect(IST_Time.getTime(),"tdDateFromTo");
    DoDateSelect(IST_Time.getTime(),"tdDateToFrom");
    
    var myQuery = new QueryString();
    myQuery.read();
    if(myQuery.getStatus())
    {
        var F=myQuery.getQueryString("F");
        var T=myQuery.getQueryString("T");
        if(F!=0)
        {
            for(i=0;i<mcmbStationFrom.options.length;i++)
            {
                if(mcmbStationFrom.options[i].value==F) 
                {
                    mcmbStationFrom.selectedIndex=i;
                    break;
                }
            }
        }
        
        if(T!=0)
        {
            for(i=0;i<mcmbStationTo.options.length;i++)
            {
                if(mcmbStationTo.options[i].value==T) 
                {   mcmbStationTo.selectedIndex=i;
                    break;
                }            
            }
        }
    }
}

function Reposition(ID,obj,Height)
{
    try
    {
        if(!obj)return;
        obj.style.height=Height;
        obj.style.width = "770px";

        var t=GO(ID);
        obj.style.left=(findPosX(t)+(document.all?2:0)) + "px";
        obj.style.top=(findPosY(t)+(document.all?2:0))+ "px";
    }
    catch(e){}
}

function setTime()
{
    var obj=GO("tdTime");
    if(obj)
    {
        IST_Time.setTime(IST_Time.getTime()+1000);
        
        var curr_hour = IST_Time.getHours();
        var curr_min = IST_Time.getMinutes();
        var curr_sec = IST_Time.getSeconds();
        var AMPM=curr_hour<12?"AM":"PM";
        curr_hour=curr_hour>12?curr_hour-12:curr_hour;
        obj.innerHTML="IST " + d_names[IST_Time.getDay()] + ", " + IST_Time.getDate() + " " + m_names[IST_Time.getMonth()] + "&nbsp;&nbsp;&nbsp;" + (curr_hour<10? "0" +curr_hour:curr_hour) + ":" + (curr_min<10?"0"+curr_min:curr_min) + ":" + (curr_sec<10?"0"+curr_sec:curr_sec) + "&nbsp;" + AMPM;  
    }
    
    if(mSearchByCity)
        ChangeCaption();
    else
        ChangeCaptionStation();  
    
    if(flagHideStationsList)
    {
        HideStationList();    
        flagHideStationsList=0;
    }
}

function FillCombo(cmbFrom,cmbTo)
{
    if(!cmbFrom)
        return;
    var stn1=0,stn2=0;
    try{
    stn1=getCookie("mStation_From_Road");   
    stn2=getCookie("mStation_To_Road");
    }
    catch(e){}
    
    if(stn1=="")stn1=122;
    if(stn2=="")stn2=124;
    
    for(i=0;i<P.length;i++)
    {
        cmbFrom.options[i]=new Option(P[i][1],P[i][0]);
        cmbTo.options[i]=new Option(P[i][1],P[i][0]);
        
        if(P[i][0]==stn1 && cmbFrom.selectedIndex==0) cmbFrom.selectedIndex=i;
        if(P[i][0]==stn2 && cmbTo.selectedIndex==0) cmbTo.selectedIndex=i;
    }
}

//change the from and to city stations
function ChangeCaption(ShowAgain)
{
    if(mStation_From!=mcmbStationFrom.value || mStation_To!=mcmbStationTo.value || ShowAgain)
    {
        mStation_From=mcmbStationFrom.value;
        mStation_To=mcmbStationTo.value;
   
        mStationFrom_Name=mcmbStationFrom.options[mcmbStationFrom.selectedIndex].text;
        mStationTo_Name=mcmbStationTo.options[mcmbStationTo.selectedIndex].text;

        ShowSearchLink();        
        
        var txt1=GO("tdTrainFromTo").innerHTML;
        var txt2=GO("tdTrainToFrom").innerHTML;
        var str ="<div style='text-align:center;'><br>For Better Experience Use Full Window Mode - Press <span style='color:#FF0000'>F11</span> Key ";
        str +="<br/>To return to normal window, press F11 again."
        
        str +="</div>";
        ShowFrameMessage("frame_Main",str);
        
        // clear the tatkal station selection
    }    
} 

var lastStnFromtxt="";
var lastStnTotxt="";

function HideStationList()
{
    var obj=GO("divStationsList");
    if(obj)obj.style.visibility="hidden";
}

function ShowSearchLink()
{
    var str="\")'><span style='color:#009999' title='View trains (including passenger trains) from trainenquiry.com, please choose exact stations of departure and arrival, no surrounding stations will be convered'> TE</span></a>";
    GO("tdTrainFromTo").innerHTML="<a href='#' onclick=\"return cmdSearchFromTo_onclick()\">" + mStationFrom_Name + str21 + mStationTo_Name 
        + "</b></a>&nbsp;";//-<a href='#' onclick='ShowTE(\""+ mStation_From + "\",\"" + mStation_To + "\",\"" + mStationFrom_Name + "\",\"" + mStationTo_Name + str;
    GO("tdTrainToFrom").innerHTML="<a href='#' onclick=\"return cmdSearchToFrom_onclick()\">" + mStationTo_Name + str21 + mStationFrom_Name 
        + "</b></a>&nbsp;";///-<a href='#' onclick='ShowTE(\""+ mStation_To + "\",\"" + mStation_From + "\",\"" + mStationTo_Name + "\",\"" + mStationFrom_Name +  "\")'><span style='color:#009999'> TE</span></a>";
    
}

function ChangeCaptionStation()
{   
    var obj=GO("divStationsList");
    
    if(obj)
        if(obj.style.visibility=="visible")
        {
            var stnFrm=mStation_From,stnTo=mStation_To;
            var stn=GO("txtStationFromRow0");
            
            if(stn)
            {
                stnFrm=stn.cells[0].innerHTML;
                mStationFrom_Name=stn.cells[1].innerHTML;
            }
            
            stn=GO("txtStationToRow0");
            if(stn)
            {
                stnTo=stn.cells[0].innerHTML;
                mStationTo_Name=stn.cells[1].innerHTML;
            }
            
            if(mStation_From!=stnFrm || mStation_To!=stnTo)
            {
                mStation_From=stnFrm;
                mStation_To=stnTo;
                ShowSearchLink();
            }                          
        }    
        
    if(lastStnFromtxt!=mtxtStationFrom.value || lastStnTotxt!=mtxtStationTo.value)
    {
        lastStnFromtxt=mtxtStationFrom.value;
        lastStnTotxt=mtxtStationTo.value;
        
        Y1=findPosY(GO("frame_Main"));
        X1=findPosX(GO("txtStationTo"));
        obj=GO("divStationsList");
        obj.style.top=( Y1 + (document.all?2:0) ) + "px";
        obj.style.left= X1 + "px";
        obj.style.visibility="visible";
        
        if(focustxt)
            if(focustxt.value.length)
            {
                focustxt.value=focustxt.value.replace(/[^a-zA-Z 0-9]+/g,'')
                GetLinkData('divStationsList','Rail/getStationsQuery.aspx?eKey=' + eKey + '&Query=' + focustxt.value + "&CtlID="  + focustxt.id);
            }
    }
}

var LastTrain="";
function ShowRoute(RouteNo)
{  
    try
    {   
        if(lastSelectedRow)
            lastSelectedRow.style.background=lastSelectedRow.lastcolor;
            
        var row=GOFT("R" + RouteNo);
        if(!row)
            return;
        
        if(row)
        {
            row.lastcolor=row.style.background;
            row.style.background="#dfcef2";//add8e6
            lastSelectedRow=row;
        }
        
        Selected_Route_No   =RouteNo
        
        var time=Direction==1?DateFromTo:DateToFrom;
            
        URL_Route='Road/getBusDetails.aspx?'
        + 'Route_ID=' + RouteNo 
        + '&mDay=' + time.getDate() 
        + '&mMonth=' + (time.getMonth() +1)
        + '&mYear=' + time.getFullYear();
         
        ShowURL(URL_Route);                
    }
    catch(e)
    {}   
    
    return false;
}

function GetBuses(stnFrom,stnTo) 
{
    var time=Direction==1?DateFromTo:DateToFrom;
    
    lastSelectedRow=null;
    ShowWait();
    Selected_Train_No="";
    var obj=document.getElementById("selectSource");
    if(obj)
        TrainSource=obj.options[obj.selectedIndex].value;
        
    var URL='Road/getBuses.aspx?eKey=' + eKey 
        + '&Station_From=' + stnFrom 
        + '&Station_To=' + stnTo 
        + "&Source=" + TrainSource 
        + '&mDay=' + time.getDate() 
        + '&mMonth=' + (time.getMonth() +1)
        + '&mYear=' + time.getFullYear();
        
    GO("frame_Main").src=URL;
}

function ShowSelection() 
{
    setCookie("mStation_From",mStation_From,30);
    setCookie("mStation_To",mStation_To,30);
}

function cmdSearchFromTo_onclick() 
{
    Direction=1;
    GO("tdTrainFromTo").style.background="#dfcef2";
    GO("tdTrainToFrom").style.background="#E1EBFB";
    GO("tdDateFromTo").style.background="#dfcef2";
    GO("tdDateToFrom").style.background="#E1EBFB";
    GetBuses(mStation_From,mStation_To);
    ShowSelection();
    return false;
}

function cmdSearchToFrom_onclick() 
{
    GO("tdTrainFromTo").style.background="#E1EBFB";
    GO("tdTrainToFrom").style.background="#dfcef2";
    GO("tdDateFromTo").style.background="#E1EBFB";
    GO("tdDateToFrom").style.background="#dfcef2";
    Direction=1;
    GetBuses(mStation_To,mStation_From);
    ShowSelection();
    return false;
}

var MapWindow=null;
function cmdShowOnMap_onclick()
{
    if(Selected_Train_No=="")
    {
        alert("Please select a train to view route map");
        return false;
    }
    
    if(MapWindow!=null)
    {
        if(MapWindow.closed)
            MapWindow=null;
        else
            MapWindow.focus();
    }
    
    if(MapWindow==null)
        MapWindow=window.open("rail/frm_Rail_Map.aspx?Train_No=" + Selected_Train_No + "&Route_No=" + Selected_Route_No ,"_blank","width=720, height=500, menubar=no, resizable=1,scrollbars=1");
    else
        MapWindow.ChangeTrain(Selected_Train_No,Selected_Route_No);
    return false;
}

function ShowWait() 
{
    ShowFrameMessage("frame_Main","<div style='text-align:center;'><br>Please Wait, getting buses list ...</div>");
}

function ShowWait2() 
{
    ShowFrameMessage("frame_Main","<div style='text-align:center;'><br><br>Please enter<span  style='color: #FF0000;'> FROM </span>station and <span  style='color: #FF0000;'>TO </span>station ...<br><br>Type station code or station name</div>");
}

var CmdID=0;

function cmdSearchCriteria(Criteria) 
{
    mSearchByCity=Criteria;
    mcmbStationFrom=GO("cmbStationFrom");
    mcmbStationTo=GO("cmbStationTo");
    
    FillCombo(mcmbStationFrom,mcmbStationTo);
    ChangeCaption(1);
    
    return false;
}

function HideLinksWindow(DivID)
{
    GO("frame_Detail").style.visibility = DivID==1?"visible":"hidden";
    GO("divCalender").style.visibility = DivID==4?"visible":"hidden";
}

function ShowURL(URL)
{
    HideLinksWindow(1);
    GO("frame_Detail").src=URL;
    try
    {
        if(URL.search("getPNRStatus.aspx")!=-1)
        {
            urchinTracker(URL);
        }
        else
        {
            if(URL.indexOf("?")!=-1)
                URL=URL.substring(0,URL.indexOf("?"));
            urchinTracker(URL);
        }
    }catch(e){}
    return false;
}

function HightLight(obj,clr)
{
    obj.style.background=clr;
}

var LastRunDays="";

function DoDateSelect(time_,TargetID)
{
    GO("divCalender").style.visibility="hidden";
    if(TargetID=="tdDateFromTo") DateFromTo=new Date(time_);
    if(TargetID=="tdDateToFrom") DateToFrom=new Date(time_);
    var time=new Date(time_);

    var str="<a href='#' onclick='return DoDateSelect(" + (time.getTime()-OneDay) + ",\"" + TargetID + "\")'><b>&nbsp;&lt;&nbsp;</b></a>";
    str+= "<a href='#' id='aDate' onclick='return ShowCalendarFull(\"\"," + time_ + ",\"" + TargetID + "\")'>" + time.getDate();
    str+= "-" + m_names[time.getMonth()] ;
    str+= "-" + time.getFullYear().toString().substr(2,2) + "," + d_namesh[time.getDay()] + "</a>";
    str+= "<a href='#' onclick='return DoDateSelect(" +  (time.getTime()+OneDay) + ",\"" + TargetID + "\")'><b>&nbsp;&gt;&nbsp;</b></a>";
      
    GO(TargetID).innerHTML=str;
    return false;
}

function ShowCalendarFull(detail,SDate_,TargetID)
{
   var SDate=new Date(SDate_);
   
   try
   {    
        var where=detail==""?"frame_Main":"divDetail"
        if(detail=="" && Selected_Train_No!="")
        {
            var row=GOFT("R" + Selected_Train_No + "_" + Selected_Route_No);
            for(var i=8;i<=14;i++)
                detail+=getTextValue(row.cells[i])=="Y"?"1":"0";
        }   
         
        var obj=GO("divCalender");
         if(detail=="0")
         {
            obj.style.visibility="hidden";
            OtherControls(1);
            return false;
         }
        
         var days=new Array();    
         if(detail!="")
         {
            if(LastRunDays==detail)
            {
                obj.style.visibility="visible";
                if(where=="divDetail")OtherControls(0);
                return false;
            }
            else
            {
                LastRunDays=detail;
                days[1]=detail.substr(0,1);
                days[2]=detail.substr(1,1);
                days[3]=detail.substr(2,1);
                days[4]=detail.substr(3,1);
                days[5]=detail.substr(4,1);
                days[6]=detail.substr(5,1);
                days[0]=detail.substr(6,1);
            }
         }

        var j=0,str="",dayCtr=0;
        
        var PrevDate=new Date(IST_Time.getTime());
        var ThisDate=new Date(IST_Time.getTime());
            ThisDate.setDate(1)
        
        str+="<center><table border=0 cellspacing=1 cellpadding=0>";
        var clr="background:#FFFFFF;border: #FFFFFF 1px solid;cursor:hand;",clr2="";
        
        for(i=0;i<4;i++)//for 3 months
        {   
            str+="<td><table border=0 cellspacing=0 cellpadding=0 >";
            str+= "<tr><td style='text-align:right' colspan='7'>" + m_names[ThisDate.getMonth()] + " " + ThisDate.getFullYear();
            str+= "<tr><td>Mo<td>Tu<td>We<td>Th<td>Fr<td>Sa<td style='color:#ff0000'>Su<tr>";
            var thisMonth=ThisDate.getMonth();
            var startShowingDay=0;
            var ValidDate=0;
            var IsToday=0;
            
            
            for(j=0;j<42;j++)
            {
                if(j%7==0) str+="<tr >";
                if((j+1) % 7 == ThisDate.getDay()) startShowingDay=1; //start showing days
                if(thisMonth==ThisDate.getMonth() && startShowingDay)
                {
                    clr2=clr;    
                    ValidDate=ThisDate.getTime()<PrevDate.getTime() || dayCtr>=92?0:1;
                        
                    if(ValidDate)
                    {
                        if(days[ThisDate.getDay()]=="1") 
                                clr2="background:#f4c674;border: #FFFFFF 1px solid;cursor:hand;";//highlight the day
                       
                        IsToday= ThisDate.getDate()==SDate.getDate() && ThisDate.getMonth()==SDate.getMonth();
                        if(IsToday) 
                                clr2+="border: #FF0000 1px solid;";//highlight todays date
                                
                        clr2+=(ThisDate.getDay()==0?";color:red;'":"'") 
                    }
                    else
                        clr2+="color:#C0C0C0;'" //if days are less than today then show them disabled    
                        
                    str+="<td style='" + clr2 + "'" 
                    if(ValidDate)
                    {
                        if(!IsToday)
                        {
                            str+= "' onmouseover='this.style.borderColor=\"red\"'";
                            str+= "  onmouseout='this.style.borderColor=\"white\"'";
                        }
                        
                        str+= "  onclick='DoDateSelect(" + ThisDate.getTime() + ",\"" + TargetID + "\")'" ;
                        dayCtr++;
                    }
                     str+=  " >" + ThisDate.getDate() + "";
                    ThisDate.setTime(ThisDate.getTime()+OneDay);
                    
                }
                else
                    str+="<td>&nbsp;";
            }
            str+= "</table>";
        }
        
        str+="<tr style='background:#FFE2A8'><td colspan=4 style='text-align:center'><a href='#' onclick='return DoDateSelect(" + SDate.getTime() + ",\"" + TargetID + "\")'>Close Calendar</a>";
        str+="</table></center><br>";
        
        obj.innerHTML=str;
        obj.style.visibility="visible";
        if(where=="divDetail")OtherControls(0);
        Reposition(where,obj,150);
        
    }
    catch(e){}
    return false;
}