function GetBrowserType ()
{
  if ( navigator.userAgent.indexOf ( "Opera" ) != -1 && document.getElementById ) type = "OP"; 
  if ( document.all ) type = "IE"; 
  if ( document.layers ) type = "NN"; 
  if ( !document.all && document.getElementById ) type = "MO"; 

  return ( type );
}




function ShowWindow ( id, action )
{
  var type = GetBrowserType ();

  if ( type == "IE" )
  { 
    eval ( "document.all." + id + ".style.visibility = '" + action + "'" );
    eval ( "document.all." + id + ".style.left = ( document.body.clientWidth / 2 ) - ( document.all." + id + ".offsetWidth / 2 );" );
    eval ( "document.all." + id + ".style.top = 200;" );
    //eval ( "document.all." + id + ".style.top = document.body.scrollTop + ( document.body.clientHeight / 2 ) - ( " + "document.all." + id + ".offsetHeight / 2 );" );
  }

  if ( type == "NN" )
  {
    eval ( "document." + id + ".visibility='" + action + "'" );
    eval ( "document." + id + ".style.left = ( document.body.clientWidth / 2 ) - ( document." + id + ".offsetWidth / 2 );" );
    eval ( "document." + id + ".style.top = 200;" );
    //eval ( "document." + id + ".style.top = document.body.scrollTop + ( document.body.clientHeight / 2 ) - ( " + "document." + id + ".offsetHeight / 2 );" );
  }

  if ( type == "MO" || type == "OP" )
  {
    eval ( "document.getElementById ( '" + id + "' ).style.visibility = '" + action + "'" );
    eval ( "document.getElementById ( '" + id + "' ).style.left = ( document.body.clientWidth / 2 ) - ( document.getElementById ( '" + id + "' ).offsetWidth / 2 );" );
    eval ( "document.getElementById ( '" + id + "' ).style.top = 200;" );
    //eval ( "document.getElementById ( '" + id + "' ).style.top = document.body.scrollTop + ( document.body.clientHeight / 2 ) - ( " + "document.getElementById ( '" + id + "' ).offsetHeight / 2 );" );
  }
}




var xmlhttp=false;

function FillClasses ()
{
/*

var http_request = false;

  http_request = false;


  if ( window.XMLHttpRequest ) // Mozilla, Safari,...
  { 
    http_request = new XMLHttpRequest ();
    if ( http_request.overrideMimeType )
    {
      http_request.overrideMimeType ( 'text/xml' );
    }
    else if ( window.ActiveXObject ) // IE
    { 
      try
      {
        http_request = new ActiveXObject ( "Msxml2.XMLHTTP" );
      }
      catch ( e )
      {
        try
        {
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch ( e ) {}
      }
    }
    }
    if ( !http_request )
    {
      alert ( 'Giving up :( Cannot create an XMLHTTP instance' );
      return false;
    }


    nocache = Math.random();
    http_request.open ( 'get', 'request/get_classes.php?nocache = ' + nocache, true );
    http_request.onreadystatechange = FillClassesReply;
    http_request.send ( null );

*/




/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
 try {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (E) {
  xmlhttp = false;
 }
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false;
}
}
if (!xmlhttp && window.createRequest) {
try {
xmlhttp = window.createRequest();
} catch (e) {
xmlhttp=false;
}
} 

    nocache = Math.random();
    xmlhttp.open ( 'get', 'request/get_classes.php?nocache = ' + nocache, true );
    xmlhttp.onreadystatechange = FillClassesReply;
    xmlhttp.send ( null );



}
  
/*
function FillClassesReply ()
{
  if ( http_request.readyState == 4 )
  {
    if ( http_request.status == 200 )
    {
      document.getElementById ( 'timetable' ).innerHTML = http_request.responseText;
      ShowWindow ( 'timetable', 'visible' );
    }
    else
    {
      alert ('There was a problem with the request.');
    }
  }
}*/



function FillClassesReply ()
{
  if ( xmlhttp.readyState == 4 )
  {
    if ( xmlhttp.status == 200 )
    {
      document.getElementById ( 'timetable' ).innerHTML = xmlhttp.responseText;
      ShowWindow ( 'timetable', 'visible' );
    }
    else
    {
      alert ('There was a problem with the request.');
    }
  }
}


function GetTimetable ( class_id )
{
/*
  http_request = false;


  if ( window.XMLHttpRequest ) // Mozilla, Safari,...
  { 
    http_request = new XMLHttpRequest ();
    if ( http_request.overrideMimeType )
    {
      http_request.overrideMimeType ( 'text/xml' );
    }
    else if ( window.ActiveXObject ) // IE
    { 
      try
      {
        http_request = new ActiveXObject ( "Msxml2.XMLHTTP" );
      }
      catch ( e )
      {
        try
        {
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch ( e ) {}
      }
    }
    }
    if ( !http_request )
    {
      alert ( 'Giving up :( Cannot create an XMLHTTP instance' );
      return false;
    }

    nocache = Math.random();
    http_request.open ( 'get', 'request/get_timetable_by_class.php?id=' + class_id  + '&nocache = ' + nocache, true );
    http_request.onreadystatechange = GetTimetableReply;
    http_request.send ( null );
*/


/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
 try {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (E) {
  xmlhttp = false;
 }
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false;
}
}
if (!xmlhttp && window.createRequest) {
try {
xmlhttp = window.createRequest();
} catch (e) {
xmlhttp=false;
}
} 

    nocache = Math.random();
    xmlhttp.open ( 'get', 'request/get_timetable_by_class.php?id=' + class_id  + '&nocache = ' + nocache, true );
    xmlhttp.onreadystatechange = GetTimetableReply;
    xmlhttp.send ( null );



}
  

function GetTimetableReply ()
{
/*
  if ( http_request.readyState == 4 )
  {
    if ( http_request.status == 200 )
    {
      document.getElementById ( 'timetable' ).innerHTML = http_request.responseText;
      ShowWindow ( 'timetable', 'visible' );
    }
    else
    {
      alert ('There was a problem with the request.');
    }
  }
*/


  if ( xmlhttp.readyState == 4 )
  {
    if ( xmlhttp.status == 200 )
    {
      document.getElementById ( 'timetable' ).innerHTML = xmlhttp.responseText;
      ShowWindow ( 'timetable', 'visible' );
    }
    else
    {
      alert ('There was a problem with the request.');
    }
  }

}


function daysLeftDate ( DateValue )
{ 
  today = new Date (); 

  nextDate = new Date ( DateValue );

  msPerDay = 24*60*60*1000;

  daysLeft = Math.round ( ( nextDate.getTime () - today.getTime () ) / msPerDay );
  dayname = "";
  ds = "" + daysLeft;

  dd = parseInt ( ds.substr ( ds.length - 1 ) ) ;

  if ( daysLeft > 4 && daysLeft < 21 ) dayname = " дней";
  else
    if ( dd == 1 ) dayname = " день";
  else
    if ( dd == 2 || dd == 3 || dd == 4 ) dayname = " дня";
  else dayname = " дней";

  return daysLeft + dayname;
}


/*
function SlideShow ( img_str )
{
  var viewer = new PhotoViewer ();

  images = img_str.split ( ', ' );

  for ( i = 0; i < count ( images ); i++ )
    eval ( "viewer.add('images[i]');" );

  viewer.add('/download/after_classes/weg/1/page1.jpg');
//  viewer.add('/photos/my-photo-2.jpg');
//  viewer.add('/photos/my-photo-3.jpg');
}
*/


function InitializeDiagram ()
{
 // document.open();
var D=new Diagram();
D.SetFrame(60, 175, 635, 500);
D.SetBorder(-1, 1, -1, 1);
D.SetText("x","y", "y=f(x)");
D.SetGridColor("#808080", "#CCCCCC");
D.Draw("#DDDDDD", "#000000", true);
var i, j, x, y;
j= D.ScreenY(0);
P=new Array(636);
for (i=60; i<=635; i++)
  P[i]=new Pixel(i, j, "#0000FF");
//document.close();

}


function DrawDiagram ()
{

 if ((navigator.userAgent.search("Opera 5")>=0)||(navigator.userAgent.search("Opera 6")>=0))
  { alert("Sorry, this doesn't work with this version of Opera.\nUse Opera 7.x, IE 5.x or Netscape 6.x instead.");
    return;
  }
  if ((navigator.appName=="Netscape")&&(parseInt(navigator.appVersion)<5))
  { if (!confirm("This is not a safe operation with Netscape 4.x."+
                " It can cause a crash of the browser."+
                " Do you want to continue anyway?"))
      return;
  }
  var xmin=1;//parseFloat(document.inputform.xmin.value);
  var xmax=2;//parseFloat(document.inputform.xmax.value);
  var ymin=3;//parseFloat(document.inputform.ymin.value);
  var ymax=4;//parseFloat(document.inputform.ymax.value);
  if (isNaN(xmin)) { alert("x-min is not a number"); return; }
  if (isNaN(xmax)) { alert("x-max is not a number"); return; }
  if (isNaN(ymin)) { alert("y-min is not a number"); return; }
  if (isNaN(ymax)) { alert("y-max is not a number"); return; }
  D.SetBorder(xmin, xmax, ymin, ymax);
  D.SetText("x", "y", "y="+document.inputform.fx.value);
  D.SetGridColor("#808080", "#CCCCCC");
  D.Draw("#DDDDDD", "#000000", true, "y="+document.inputform.fx.value);
  var isEvalSafe=((window.EvalSafe)&&(EvalSafe("1+1")==2));
  for (i=60; i<=635; i++)
  { x = D.RealX(i);
    if (isEvalSafe)
    { y=EvalSafe(document.inputform.fx.value);
      if ((y=="")&&(isNaN(parseInt(y))))
      { alert(document.inputform.fx.value+" can not be evaluated for x="+x);
        return; 
      }
    }
    else
    { with (Math) y=eval(document.inputform.fx.value);
    }
    if ((ymin<=y)&&(y<=ymax)) P[i].MoveTo(i, D.ScreenY(y));
    else P[i].SetVisibility(false);
  }
}
















var request_getdaychartdata = false;

function GetDayChartData ()
{


/*@cc_on @*/

/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
 request_getdaychartdata = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
 try {
  request_getdaychartdata = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (E) {
  request_getdaychartdata = false;
 }
}
@end @*/
if (!request_getdaychartdata && typeof XMLHttpRequest!='undefined') {
try {
request_getdaychartdata = new XMLHttpRequest();
} catch (e) {
request_getdaychartdata=false;
}
}
if (!request_getdaychartdata && window.createRequest) {
try {
request_getdaychartdata = window.createRequest();
} catch (e) {
request_getdaychartdata=false;
}
} 

    date = document.getElementById ( 'day_chart_date' ).value;

//    temp = date.split ( '.' );
//    date = temp[2] + '-' + temp[1] + '-' + temp[0];

    nocache = Math.random();
    request_getdaychartdata.open ( 'get', 'request/get_daychart_data.php?date=' + date  + '&nocache = ' + nocache, true );
    request_getdaychartdata.onreadystatechange = GetDayChartDataReply;
    request_getdaychartdata.send ( null );



}
  


function GetDayChartDataReply ()
{
  if ( request_getdaychartdata.readyState == 4 )
  {
    if ( request_getdaychartdata.status == 200 )
    {


      var items = request_getdaychartdata.responseText.split ( "<endofstr>" );
      var count = items.length;


      var options = items[0].split ( "<spacer>" );
      chart_date = options[0];
      cur_value = options[1];

      options = items[1].split ( "<spacer>" );
      min_value = parseInt(options[0]) - 1;
      max_value = parseInt(options[1]) + 1;


       hour = new Array ();
       temperature = new Array ();
      for ( var i = 2; i < count-1; i++ )
      {
        options = items[i].split ( "<spacer>" );
        hour.push ( options[0] );
        temperature.push ( options[1] );
      }   


//**********************




  _DiagramTarget = window.open ( "","", "width=700,height=400,menubar=no,locationbar=no,resizable=yes,status=no,scrollbars=no" );
  
  with ( _DiagramTarget.document )
  {
    open ();


    writeln ( "<HTML><HEAD><TITLE>Дневной график температуры воздуха</TITLE></HEAD><BODY>" );
    var D = new Diagram ();
    D.SetFrame ( 120, 40, 640, 340 );
    D.SetBorder ( 0, 24, min_value, max_value );
    D.SetText ( "", "", 'Дата : ' + chart_date );
    D.XScale = " ч";
    D.YScale = "° C";
    D.XGridDelta = 2;
    D.YGridDelta = 1;
    D.SetGridColor ( "#cccccc" );
    D.Draw ( "#FFEECC", "#663300", false );
    D.GetYGrid ();
  
    for ( i = 0; i < temperature.length; i++ )
    {
      new Line(D.ScreenX(hour[i]), D.ScreenY(temperature[i]), D.ScreenX(hour[i+1]), D.ScreenY(temperature[i+1]), "#cc9966", 2, "температура");
    }

    close ();
  } 

//**********************


    }
    else
    {
      alert ( 'There was a problem with the request. GetDayChartDataReply' );
    }
  
   }
}









var request_export = false;

function Export ()
{


/*@cc_on @*/

/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
 request_export = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
 try {
  request_export = new ActiveXObject("Microsoft.XMLHTTP");
 } catch (E) {
  request_export = false;
 }
}
@end @*/
if (!request_export && typeof XMLHttpRequest!='undefined') {
try {
request_export = new XMLHttpRequest();
} catch (e) {
request_export=false;
}
}
if (!request_export && window.createRequest) {
try {
request_export = window.createRequest();
} catch (e) {
request_export=false;
}
} 

    begin_date = document.getElementById ( 'begin_date' ).value;
    end_date = document.getElementById ( 'end_date' ).value;

//    temp = date.split ( '.' );
//    date = temp[2] + '-' + temp[1] + '-' + temp[0];

    nocache = Math.random();
    request_export.open ( 'get', 'request/export.php?begin_date=' + begin_date  + '&end_date=' + end_date + '&nocache = ' + nocache, true );
    request_export.onreadystatechange = ExportReply;
    request_export.send ( null );



}
  


function ExportReply ()
{
  if ( request_export.readyState == 4 )
  {
    if ( request_export.status == 200 )
    {


      var items = request_export.responseText.split ( "<endofstr>" );
      var count = items.length;


      var options = items[0].split ( "<spacer>" );
      chart_date = options[0];
      cur_value = options[1];

      options = items[1].split ( "<spacer>" );
      min_value = parseInt(options[0]) - 1;
      max_value = parseInt(options[1]) + 1;


       hour = new Array ();
       temperature = new Array ();
      for ( var i = 2; i < count-1; i++ )
      {
        options = items[i].split ( "<spacer>" );
        hour.push ( options[0] );
        temperature.push ( options[1] );
      }   


//**********************




  _DiagramTarget = window.open ( "","", "width=700,height=400,menubar=no,locationbar=no,resizable=yes,status=no,scrollbars=no" );
  
  with ( _DiagramTarget.document )
  {
    open ();


    writeln ( "<HTML><HEAD><TITLE>Дневной график температуры воздуха</TITLE></HEAD><BODY>" );
    var D = new Diagram ();
    D.SetFrame ( 120, 40, 640, 340 );
    D.SetBorder ( 0, 24, min_value, max_value );
    D.SetText ( "", "", 'Дата : ' + chart_date );
    D.XScale = " ч";
    D.YScale = "° C";
    D.XGridDelta = 2;
    D.YGridDelta = 1;
    D.SetGridColor ( "#cccccc" );
    D.Draw ( "#FFEECC", "#663300", false );
    D.GetYGrid ();
  
    for ( i = 0; i < temperature.length; i++ )
    {
      new Line(D.ScreenX(hour[i]), D.ScreenY(temperature[i]), D.ScreenX(hour[i+1]), D.ScreenY(temperature[i+1]), "#cc9966", 2, "температура");
    }

    close ();
  } 

//**********************


    }
    else
    {
      alert ( 'There was a problem with the request. GetDayChartDataReply' );
    }
  
   }
}

