// JavaScript Document
  //construct body
  
  jQuery.fn.history = function(options,clientScriptPath1,clientScriptPath2,map,gus) 
  { 
      dm       = this;
      var oMap = map;
      var gsUrl = gus
      var cspath1 = clientScriptPath1;
      var cspath2 = clientScriptPath2;
      var activeTable     = null;
      var activeAnimation = null;
      var animation   = null;
     
      
      $jq('#tableHistoryDiv').css('height',($jq('#tableHistoryDiv').height() * 100) / 100);
      $jq('#tableHistoryDiv').hide();
      $jq('#histtabview').hide();
      $jq('#histtabviewtoogle').hide();
      $jq('#aniplayimg').hide();
      $jq('#anipauseimg').hide();
      
      var settings = jQuery.extend(
      {   
          classPanel                :"slHistoryPan",
          classDeviceContainer      :"slHistoryDeviceContainer",   
          classDevice               :"slHistoryDev",
          classDeviceName           :"slHistoryDevName",
          classTblButton            :"slHistoryTblButton",
          classActiveTblButton      :"slActiveHistoryTblButton",
          classAniButton            :"slHistoryAniButton",
          classActiveAniButton      :"slActiveHistoryAniButton",
          classViewButton            :"slHistoryViewButton",
          classActiveViewButton      :"slActiveHistoryViewButton"         
      }
      , options);
      
      dm.addClass(settings.classPanel);
      
      $jq.get(cspath1,{},function(xml)
      {
          if (window.ActiveXObject)
          {
            			var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            			xmlDoc.async="false";
            			xmlDoc.loadXML(xml);
          }
          // code for Mozilla, Firefox, Opera, etc.
          else if (document.implementation && document.implementation.createDocument)
          {
            		  var parser	=	new DOMParser();
            			var xmlDoc =	parser.parseFromString(xml,"text/xml");
          }
          myNodes = xmlDoc.getElementsByTagName("devicelist"); 
          for(var counter=0;counter<myNodes.length;counter++) 
          {
              itemNode = myNodes.item(counter);
              var dev_gid = itemNode.getElementsByTagName("devicegid").item(0).firstChild.nodeValue;
              var dev_ident = itemNode.getElementsByTagName("deviceident").item(0).firstChild.nodeValue; 
              var dev_name  = itemNode.getElementsByTagName("devicename").item(0).firstChild.nodeValue;
              //var color = genHex();
              var color = 'white';
              adddevice(dev_gid,dev_name,color,dev_ident);
          }
          
      });
       
      jQuery.fn.history.pauseAnimate = function ()
      {
          if (animation != null)
          {
              animation.pauseAnimation(true);
              $jq('#aniplayimg').show();
              $jq('#anipauseimg').hide();
          }
      }
      
      jQuery.fn.history.playAnimate = function ()
      {
          if (animation != null)
          {
              animation.pauseAnimation(false);
              $jq('#anipauseimg').show();
              $jq('#aniplayimg').hide();
          }
      }
      
     

      
      function addViewButton(dev_ident,device,color,devname)
      {
          
          var active = false;
          var devident = dev_ident;
          var dcolor = color;
          var dname = devname;
          var viewbtn = document.createElement('div');
          viewbtn.id = 'viewbutton_'+dev_ident;
          jQuery(viewbtn).addClass(settings.classViewButton);
          jQuery(viewbtn).html('G');
          jQuery(device).append(viewbtn);
          
          
           // vtn on click
           jQuery(viewbtn).click(function() 
           {
               
                if  (! active)
                {
                  if (! checkDate()) return;
                  
                  
                  sld = '<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengeospatial.net/sld/1.0.0/StyledLayerDescriptor.xsd">';
                  sld+= '<NamedLayer>';
                  sld+= '<Name>';
                  sld+= 'eu:PARTN_TABLE';
                  sld+= '</Name>';
                  sld+= '<UserStyle>';
                  sld+= '<FeatureTypeStyle>';
                  sld+= '<Rule>';
                  sld+= '<PointSymbolizer>';
                  sld+= ' <Graphic>';
                  sld+= '   <Mark>';
                  sld+= '     <WellKnownName>circle</WellKnownName>';
                  sld+= '     <Fill>';
                  sld+= '       <CssParameter name="fill">'+dcolor+'</CssParameter>';
                  sld+= '       <CssParameter name="fill-opacity">1.0</CssParameter>';
                  sld+= '     </Fill>';
                  sld+= '   </Mark>';
                  sld+= '   <Size>12</Size>';
                  sld+= ' </Graphic>';
                  sld+= '</PointSymbolizer>';
                  sld+= '</Rule>';
                  sld+= '</FeatureTypeStyle>';
                  sld+= '</UserStyle>';
                  sld+= '</NamedLayer>';
                  sld+= '</StyledLayerDescriptor>';
                
                  active = true;
                  jQuery(viewbtn).addClass(settings.classActiveViewButton);
                  jQuery(viewbtn).removeClass(settings.classViewButton);
                  var odc = document.getElementById('CAS_OD').value; 
                  var doc = document.getElementById('CAS_DO').value;
                  
                  var cql = '(GEOMETRY IS NOT NULL AND TIME_RECEIVED > "'+odc+'" AND TIME_RECEIVED < "'+doc+'"  AND SDO_GID= '+devident+')';
                  var untiled = new OpenLayers.Layer.WMS(
                  dname, gsUrl,
                  {
                    CQL_FILTER: cql, 
                    layers: 'eu:PARTN_TABLE',
                    styles: '',
                    height: '434',
                    width: '800',
                    srs: 'EPSG:4326',
                    format: 'image/png8',
                    transparent:true
                  },
                  { isBaseLayer: false , singleTile: true } 
                  );
                  untiled.ratio=1;
                  untiled.id = dname;
                  
                  untiled.mergeNewParams({"SLD_BODY":sld});
      	          oMap.addLayer(untiled);
      	          
                  
                }
                else
                {
                  active = false;
                  jQuery(viewbtn).addClass(settings.classViewButton);
                  jQuery(viewbtn).removeClass(settings.classActiveViewButton);
                  oMap.removeLayer(oMap.getLayer(dname));
                 
                }
           });
      }
      
      function addTableButton(dev_ident,device)
      {
          var active = false;
          
          var tblbtn = document.createElement('div');
          tblbtn.id = 'tblbutton_'+dev_ident;
          jQuery(tblbtn).addClass(settings.classTblButton);
          jQuery(tblbtn).html('T');
          jQuery(device).append(tblbtn);
          //track btn on click
          jQuery(tblbtn).click(function() 
          {
              if (activeTable != null && jQuery(tblbtn) != activeTable)
              {
                activeTable.addClass(settings.classTblButton);
                activeTable.removeClass(settings.classActiveTblButton);
                activeTable.active = false;
                activeTable = null;
                $jq('#tableHistoryDiv').html('');
                $jq('#tableHistoryDiv').hide();
                $jq('#histtabview').hide();
                $jq('#histtabviewtoogle').hide();
                
              }
             
              if  (! active)
              {
                  if (! checkDate()) return;
                  var odc = document.getElementById('CAS_OD').value; 
                  var doc = document.getElementById('CAS_DO').value;
                  active = true;
                  activeTable = jQuery(tblbtn); 
                  jQuery(tblbtn).addClass(settings.classActiveTblButton);
                  jQuery(tblbtn).removeClass(settings.classTblButton);
                  getTableData(dev_ident);
                  $jq('#tableHistoryDiv').show();
                  $jq('#histtabview').show();
                  $jq('#histtabviewtoogle').show();
              }
              else
              {
                  active = false;
                  jQuery(tblbtn).addClass(settings.classTblButton);
                  jQuery(tblbtn).removeClass(settings.classActiveTblButton);
                  activeTable = null;
                  $jq('#tableHistoryDiv').html('');
                  $jq('#tableHistoryDiv').hide();
                  $jq('#histtabview').hide();
                  $jq('#histtabviewtoogle').hide();
                  
              }
          });
      }
      
      function addAnimateButton(dev_ident,device)
      {
      
          
          var active = false;
          var animbtn = document.createElement('div');
          animbtn.id = 'anibutton_'+dev_ident;
          jQuery(animbtn).addClass(settings.classAniButton);
          jQuery(animbtn).html('A');
          jQuery(device).append(animbtn);
          //track btn on click
          jQuery(animbtn).click(function() 
          {
              if (activeAnimation != null && jQuery(animbtn) != activeAnimation)
              {
               
                activeAnimation.addClass(settings.classAniButton);
                activeAnimation.removeClass(settings.classActiveAniButton);
                activeAnimation.active = false;
                activeAnimation = null;
                animation.stopAnimation();
                $jq('#anipauseimg').hide();
                $jq('#aniplayimg').hide();
              
                
              }
              
              if  (! active)
              {
                  if (! checkDate()) return;
                  var odc = document.getElementById('CAS_OD').value; 
                  var doc = document.getElementById('CAS_DO').value;
                  animation = new animatePath(oMap,cspath2,dev_ident,odc,doc);
                  animation.setNumTracks(10);
                  animation.setDisplayDiv("historyAnimatedDisplay");
                  //$jq('#anipauseimg').show();
                  active = true;
                  activeAnimation = jQuery(animbtn);
                  jQuery(animbtn).addClass(settings.classActiveAniButton);
                  jQuery(animbtn).removeClass(settings.classAniButton);
                  
              }
              else
              {
                  active = false;
                  activeAnimation = null;
                  jQuery(animbtn).addClass(settings.classAniButton);
                  jQuery(animbtn).removeClass(settings.classActiveAniButton);
                  animation.stopAnimation();
                  $jq('#anipauseimg').hide();
                  $jq('#aniplayimg').hide();
              }
          });
      }
      
      function checkDate()
      {
         var odc = document.getElementById('CAS_OD').value; 
         var doc = document.getElementById('CAS_DO').value;
         if (odc.length == 0){ alert(getMessage('msghistdate1'));return false; }
         if (doc.length == 0){ alert(getMessage('msghistdate2'));return false; }
         if (getDateFS(odc) > getDateFS(doc) ){ alert(getMessage('msghistdate4'));return false; }
         
         var dt = (getDateFS(doc) - getDateFS(odc)) / 1000; 
         
         if (dt  >  (3600*24)){ alert(getMessage('msghistdate3'));return false; }
         
         
         return true;
      }
      
      function getDateFS(str)
      {
          var d1      = str.split(" ");
          var dpart   = d1[0];
          var tpart   = d1[1]; 
          var dparts  = dpart.split(".");
          var tparts  = tpart.split(":");
          var day     = parseFloat(dparts[0]);
          var month   = parseFloat(dparts[1]) - 1;
          var year    = dparts[2]; 
          var hour    = tparts[0]; 
          var min     = tparts[1];
        
          var dte = new Date(year, month, day);
          dte.setHours(hour,min,0);
          
          return dte;
      }
      
      
      function getTableData(dev_ident)
      {
          var odc = document.getElementById('CAS_OD').value; 
          var doc = document.getElementById('CAS_DO').value;
          if (! checkDate()) return;
          $jq('#userMsg').html('....Loading ....');
          $jq.get(cspath2,{ident:dev_ident,from_date:odc,to_date:doc},function(data)
          {
              $jq('#userMsg').html('');
              $jq('#tableHistoryDiv').html(data);   
          });
         
      }
      
      function genHex()
      {
          colors = new Array(16)
          colors[0]="0"
          colors[1]="1"
          colors[2]="2"
          colors[3]="3"
          colors[4]="4"
          colors[5]="5"
          colors[6]="6"
          colors[7]="7"
          colors[8]="8"
          colors[9]="9"
          colors[10]="a"
          colors[11]="b"
          colors[12]="c"
          colors[13]="d"
          colors[14]="e"
          colors[15]="f"
          
          digit = new Array(5)
          color=""
          for (i=0;i<6;i++){
          digit[i]=colors[Math.round(Math.random()*14)]
          color = color+digit[i]}
          return '#'+color;
      }
      
      function adddevice (id,name,color,dev_ident)
      {
        
           var activeDevice = false;
           var deviceContainer = document.createElement('div');
           var device = document.createElement('div');
           var oText = document.createElement('div');
           device.id = id;
           
           
           jQuery(device).css('background-color',color);
           jQuery(oText).addClass(settings.classDeviceName);
           jQuery(device).append(oText);
           jQuery(oText).html(name);
           
           jQuery(device).addClass(settings.classDevice);
           jQuery(deviceContainer).addClass(settings.classDeviceContainer);
           dm.append(deviceContainer);
           jQuery(deviceContainer).append(device);
           dm.addClass(settings.classDevicePanel);
           addTableButton(dev_ident,deviceContainer);
           //addViewButton(id,deviceContainer,color,name);
           addAnimateButton(dev_ident,deviceContainer);

      }
      
      
   }   