/*
  This is added to the parent window
*/


/* ###########################
   Global Vars
   ############################ */

  var eJIF_Browser;               // 'IE' or 'GEKO'
  var eJIF_VPWidth =          0;  // only set to the maximum
  var eJIF_VPHeight =         0;  // only set to the maximum
  var eJIF_EventCount =       0;  // count of menu clicks
  var eJIF_ProcTimeoutCount = 0;  // of how much we have delayed
  var eJIF_IdleTime =         10;  // every 3 minutes
  var eJIF_Semaphores =       new Array(20);
  var eJIF_ProcessingDlgCount = 0;

/* ###########################
   Load Code
   ############################ */

  // browser type

  if (navigator.appName.indexOf("Microsoft") > -1) {
    eJIF_Browser = 'IE';
  } else {
    eJIF_Browser = 'GEKO';
  }

  // idle timer

  setTimeout('eJIF_IdleCheck()',eJIF_IdleTime*60*1000);

  // resize


  if (window.addEventListener){
    window.addEventListener("resize", eJIF_ResizeForm, false);
  } else if (window.attachEvent){
    var r = window.attachEvent("onresize", eJIF_ResizeForm);
  }

/* ###########################
   Browser Specific Code
   ############################ */

   function eJIF_ReloadFrame(Frame) {
     if (eJIF_Browser == 'IE') {
       // ie?
       Frame.contentWindow.location.reload();
     } else {
       // Firefox / GEKO
       Frame.contentDocument.location.reload();
     }
   }

/* ###########################
   Session Management
   ############################ */

  function eJIF_IdleCheck() {
    if (window.top == window.self) {
      var UID = ejc_GetValueByID('UID');
//    alert('eJIF_IdleCheck() Eventcount = '+eJIF_EventCount);
      if (UID && (eJIF_EventCount == 0)) {
         return eJIF_Logout('Session Expired (inactive for '+eJIF_IdleTime+' minutes)');
       }
       eJIF_EventCount = 0;
       setTimeout('eJIF_IdleCheck()',eJIF_IdleTime*60*1000);
     }
   }

  function eJIF_Logout(Error) {
    var UID = ejc_GetValueByID('UID');
    var URL = '/index.php?Task=Logout';
    if (Error) {URL += '&Error='+Error;}
    if (UID) {URL += '&UID='+UID;}
    eJIF_SetProcessingDlg(true, 'Logging Out');
    ejc_SetCookie('LastMenuClick', 0, 1);
    window.top.location = URL;
  }


/*
  function eJIF_BrowserValue(TagName, Property, Value) {
    var Result = null;
    switch (TagName) {
      case 'TR':
        switch(Property) {
          case 'VISIBILTY':
            if ()
            case (eJIF_Browser) {

            }
            if (Value)
          break;
        }
      break;
    }
    return Result;

  }
var canSee = 'block'
} else {
var canSee = 'table-row';
}
*/

/* ###########################
   Forms and menu
   ############################ */

  function eJIF_ResizeForm() {
    var FullHeight = ejc_VPHeight();
    var FullWidth =  ejc_VPWidth();
    var TrimHeight = 25;
    var TrimWidth = 10;
    var SideWidth = 130;
    var Height;

    var UserID;
    var SaveVP = false;

    if (UserID = ejc_GetValueByID('UID')) {
      if (eJIF_VPHeight < FullHeight) {
        SaveVP = true;
        eJIF_VPHeight = FullHeight
      }
      if (eJIF_VPWidth < FullWidth) {
        SaveVP = true;
        eJIF_VPWidth = FullWidth
      }

      if (SaveVP) {
//        alert('Height = '+FullHeight+', Width = '+ FullWidth);
        Parameters = new Object;
        Parameters.Class = 'TUser';
        Parameters.OID = UserID;
        Parameters.Method = 'SaveVPSize()';
        Parameters.VPHeight = eJIF_VPHeight;
        Parameters.VPWidth = eJIF_VPWidth;
        Parameters.Browser = navigator.appName+' '+navigator.appVersion;
        window.top.AjaxLib_CallMethod(null, Parameters);
      }
    }

    return true;
    var div = document.getElementById('eJIFViewPort');
    div.style.width = FullWidth +'px';
    if (eJIF_Browser == 'IE') {
      Height = FullHeight - 25;
    } else {
      Height = FullHeight - 0;
    }
    div.style.height = Height +'px';

    // In firefox check is the scrollbars disappear

/*
    // get the top div hieight
    var div = document.getElementById('eJifVP');
    if (div) {
      div.style.width = FullWidth +'px';
      var Height = FullHeight - TrimHeight;
      if (div = document.getElementById('JifTopDiv')) {
        div.style.width = FullWidth-TrimWidth+'px';
      }
      if (div = document.getElementById('JifSideDiv')) {
        div.style.height = Height+'px';
        div.style.width = SideWidth+'px';
      }
      if (div = document.getElementById('MainFormDiv')) {
        div.style.height = Height+'px';
        div.style.width = FullWidth-SideWidth-TrimWidth+'px';
      }
    }
*/
  }

  function eJIF_HideMainForms(AlsoHide) {
    var divs = document.getElementsByTagName('div')
    eJIF_SetVisibilityByID('formdiv', false);
    eJIF_SetVisibilityByID('scratchdiv', false);
    eJIF_SetVisibilityByID('reportdiv', false);

    for(var i=0; i < divs.length; i++) {
      div = divs[i];
      if (div.id.indexOf('MainPage') == 0) {
        eJIF_SetVisibilityByID(div.id, false);
      }
    }
    if (AlsoHide) {
      eJIF_SetVisibilityByID(AlsoHide, false);
    }
  }

  function eJIF_ShowScratchForm(Src, Mask) {
    eJIF_UserEvent();
    // hide the main forms & formdiv
    eJIF_HideMainForms('formdiv');
    // cant mask as pdf wont unmask
    if (Src) {
      var iframe = document.getElementById('scratchdiviframe');
      try {
        iframe.src = Src;
      } catch(err) {
      }
    }
    eJIF_SetVisibilityByID('scratchdiv', true);
  }

  function eJIF_ShowDataInputForm(Src, Mask) {
    eJIF_UserEvent();
    // hide the main forms
    eJIF_HideMainForms('scratchdiv');
    if (Src) {
      var iframe = document.getElementById('formiframe');
      try {
        iframe.src = Src;
      } catch(err) {
      }
      if (Mask) {
        eJIF_SetProcessingDlg(true, 'Loading '+Mask+'<BR>Please Wait');
      }
    }
    eJIF_SetVisibilityByID('formdiv', true);
    return true;
  }

  function eJIF_ShowReport(Src) {
    eJIF_UserEvent();
    // hide the main forms
    eJIF_HideMainForms('reportdiv');
    if (Src) {
      var iframe = document.getElementById('reportiframe');
      try {
        iframe.src = Src;
      } catch(err) {
      }
    }
    eJIF_SetVisibilityByID('reportdiv', true);
    return true;
  }


  function eJIF_AddParam(URL, Name, Value) {
    if (URL.indexOf('?') >= 0) {
      return URL+'&'+Name+'='+Value;
    } else {
      return URL+'?'+Name+'='+Value;
    }
  }

  function eJIF_IFrameLoading(Message) {
    // called by I frame links
    eJIF_UserEvent();
    if (!Message) {
      Message = 'Loading<BR>Please Wait';
    }
    eJIF_SetProcessingDlg(true, Message);
  }

  function eJIF_IFrameLoaded() {
    // hide the processing frame
//    alert('eJIF_IFrameLoaded');
    eJIF_SetProcessingDlg(false);
  }

  function eJIF_MenuClick(FormNo, TOCount, Src) {
    // save the Formno in the Cookie
    ejc_SetCookie('LastMenuClick', FormNo, 1);
    eJIF_UserEvent();
    // FormNo = 200 is the scrach form
    if (FormNo == 200) {
      return eJIF_ShowScratchForm();
    }

    if (window.top.AjaxRequest.isActive()) {
      if (TOCount) {eJIF_ProcTimeoutCount++;}
      if (eJIF_ProcTimeoutCount < 10) { // back off for a half second
        if (eJIF_ProcTimeoutCount == 1) {
           eJIF_SetProcessingDlg(true, 'Processing your request<BR>Please Wait');
        }
        setTimeout('eJIF_MenuClick("'+FormNo+'",true)',1000);
        return true;
      }
    } else {
      if (TOCount) {
        eJIF_SetProcessingDlg(false);
      }
    }
    eJIF_ProcTimeoutCount = 0;
//    eJIF_SetVisibilityByID('processingdiv',false);
    // get all the divs
    var S, div, divs, vis;
    var iframe, iframesrcinput, iframeseminput;
    var FoundPage = false;
    var ShowFormName = 'MainPage'+FormNo;
    var divs = document.getElementsByTagName('div');
    for (i = 0; i < divs.length; i++) {
      div = divs[i];
      if ((div.style.display == 'block') && ((div.id.indexOf('MainPage') == 0) || (div.id == 'scratchdiv'))) {
        iframe = document.getElementById(div.id+'iframe');
        // can be a div change or same div and Src change
//        if (iframesrcinput = document.getElementById(div.id+'iframesrc')) {
//          S = iframesrcinput.value.toLowerCase();
//        }
//        if (Src) {S = Src;}
//        if (S == '') {S = FormNo;}

        if (iframe) {
          S = iframe.src.toLowerCase();
          if (S.indexOf('.php') >= 0 && S.indexOf('trackandtrace') < 0) {
            if (typeof iframe.contentWindow.ejc_OnHide == 'function') {
              iframe.contentWindow.ejc_OnHide();
            }
          }
        }
      }
    }
    for (i = 0; i <divs.length; i++) {
      div = divs[i];
      if (div.id.indexOf('MainPage') == 0) {
        vis = div.id == ShowFormName;
        // if about to be hidden and is now visible then call onhide
        iframe = document.getElementById(ShowFormName+'iframe');
          // check the form is loaded and at its start src
          if (vis) {
            iframesrcinput = document.getElementById(ShowFormName+'iframesrc');
            iframeseminput = document.getElementById(ShowFormName+'iframesem');
            FoundPage = true;
//            if (iframe && iframesrc && iframe.src != iframesrc.value) {
            // stripped version of the iframesrc
            if ((iframe && iframesrcinput && iframeseminput && iframeseminput.value != '') || Src) {
              S = iframesrcinput.value.toLowerCase();
              if (Src) {S = Src}
              if (S.indexOf('.php') >= 0 && S.indexOf('mask=no') < 0) {
                eJIF_SetProcessingDlg(true, 'Loading<BR>Please Wait');
              } else {
                eJIF_UserEvent();
              }
              iframeseminput.value = '';
              if (Src) {
                Src = eJIF_AddParam(Src, 'Browser', eJIF_Browser);
//                iframe.src = Src;
              } else {
                Src = iframesrcinput.value;
//                iframe.src = iframesrcinput.value;
              }
              // get the frame to load/reload
//              debugger;
              var iframesrc = iframe.src;
              if (iframesrc.toLowerCase() == Src.toLowerCase()) {
//                iframe.reload();
                eJIF_ReloadFrame(iframe);
              } else {
                iframe.src = Src;
              }
            }
          }
          eJIF_SetVisibilityByID(div.id, vis);
        }
      }
    div = document.getElementById('scratchdiv');
    if (isNaN(FormNo)) {
      // use the scratch frame
      iframe = document.getElementById('scratchdiviframe');
      var src =  eJIF_AddParam(FormNo, 'Browser', eJIF_Browser);
      iframe.src = src;
      var S = FormNo.toLowerCase();
      if ((S.indexOf('.php') >= 0) && (S.indexOf('mask=no') < 0)) {
        eJIF_SetProcessingDlg(true, 'Loading<BR>Please Wait');
      } else {
        eJIF_UserEvent();
      }
      eJIF_SetVisibilityByID(div.id,true);
    } else { // hide the scratch
      eJIF_SetVisibilityByID(div.id,false);
    }
    return true;
  }

  function eJIF_IndexOnLoad(FormNo, UserID) {
    eJIF_SendIFramesMessage('blank', true);   // for firefox!
    var LastMenuClick = ejc_GetCookie('LastMenuClick');
    if (FormNo != '0') {LastMenuClick = FormNo}
    // make sure this form exists ie the last click could have been
    // a members area form
    var ShowFormName = 'MainPage'+LastMenuClick;
    if (!document.getElementById(ShowFormName)) {
      LastMenuClick = '0';
    }
     if (LastMenuClick && LastMenuClick != 'null') {
       eJIF_MenuClick(LastMenuClick);
     } else {
       eJIF_MenuClick(0);
     }
     // Dynarch Menu Setup
     if (typeof(DynarchMenu) == 'object') {
       DynarchMenu.setup('menu', { vertical: true, tooltips: true });
     }
     // Save VP dimenions
     if (UserID) {
       eJIF_SaveBrowserDetails(UserID);
     }

    if (window.addEventListener) {
      window.addEventListener("resize", eJIF_ResizeForm, false);
    } else if (window.attachEvent){
      var r = window.attachEvent("onresize", eJIF_ResizeForm);
    }

    eJIF_ResizeForm();
  }

  function eJIF_SaveBrowserDetails(UserID) {
    var VPWidth = 0;
    var VPHeight = 0;
    var Browser;

    Browser = navigator.appName+' '+parseInt(navigator.appVersion);


   // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
   if (typeof window.innerWidth != 'undefined') {
     VPWidth = window.innerWidth,
     VPHeight = window.innerHeight
  } else
// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

  if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
      'undefined' && document.documentElement.clientWidth != 0) {
       VPWidth = document.documentElement.clientWidth,
       viewportheight = document.documentElement.clientHeight
  } else // older versions of IE
    {   VPWidth = document.getElementsByTagName('body')[0].clientWidth,
        VPHeight = document.getElementsByTagName('body')[0].clientHeight
    }
  }





  function eJIF_IndexOnUnLoad() {
    // do you want to exit
  }


  function eJIF_SendIFramesMessage(Semaphore, ToAll) {
    // currently refresh the frame on a dependency
    var depinput, srcinput, iframeseminput;
    var div;
    var iframe;
//    debugger;
    var divs = document.getElementsByTagName('div');
    for(var i = 0; i < divs.length; i++) {
      div = divs[i];
      if (div.id.indexOf('MainPage') == 0) {
        depinput = document.getElementById(div.id+'iframedep');
        srcinput = document.getElementById(div.id+'iframesrc');
        iframeseminput = document.getElementById(div.id+'iframesem');
        iframe = document.getElementById(div.id+'iframe');
        var deps = depinput.value.split('|');
        // assume the visible div sent the message
        if ((deps.indexOf(Semaphore) != -1 && (!eJIF_GetVisibilityByID(div.id) || ToAll)) || (Semaphore == 'blank')) {
//          debugger;
          iframeseminput.value = Semaphore;
//          if (iframe.src != '') {
//            srcinput.value = iframe.src;
//          }
//          iframe.src = '';
        }
      }
    }
  }

  function eJIF_UserEvent() {
    eJIF_EventCount++;
  }

  function eJIF_TimeoutCheck(Count) {
    if (eJIF_ProcessingDlgCount == Count) {
      eJIF_SetProcessingDlg(false);
      eJIF_ModalMessage('Timeout Error', 'The Server is taking to long to process your request<BR>Please try again');
      eJIF_SendIFramesMessage('blank',true);
    }
  }

  function eJIF_SetProcessingDlg(Visible, Message) {
    eJIF_ProcessingDlgCount++;
    if (Visible) {
      eJIF_UserEvent();
      var mdiv = document.getElementById('eJIFModalMaskMessage');
      if (mdiv) {
        eJIF_SetVisibilityByID('eJIFModalMask', true);
        mdiv.style.display = 'block';
        mdiv.innerHTML = Message;
        var width = ejc_VPWidth();
        var msgwidth = mdiv.offsetWidth;
        var height = ejc_VPHeight();
        var msgheight = mdiv.offsetHeight;
        var y = (ejc_VPHeight() - 80) / 2;
        mdiv.style.top = ((height - msgheight)/2)  + "px";
        mdiv.style.left = ((width - msgwidth)/2)  + "px";
      }
      // give it 1 minute if the count hasn;t changed its a timeout
      setTimeout('eJIF_TimeoutCheck('+eJIF_ProcessingDlgCount+')',60*1000);
    } else {
      eJIF_SetVisibilityByID('eJIFModalMask', false);
    }
  }


  function eJIF_GetAbsolutePos(el) {
    var SL = 0, ST = 0;
    var is_div = /^div$/i.test(el.tagName);
    if (is_div && el.scrollLeft)
      SL = el.scrollLeft;
    if (is_div && el.scrollTop)
      ST = el.scrollTop;
    var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
    if (el.offsetParent) {
      var tmp = eJIF_GetAbsolutePos(el.offsetParent);
      r.x += tmp.x;
      r.y += tmp.y;
    }
    return r;
};


  function eJIF_ModalMessage(Title, Message, NextToID) {
    var div = document.getElementById('eJIFModalMask');
    eJIF_SetVisibilityByID('eJIFModalMaskMessage', false);
    div.className = 'eJIFMaskOpaque';
    eJIF_SetVisibilityByID('eJIFModalMask', true);
    // set the title
    eJIF_SetVisibilityByID('eJIFModalContainer', true);
    div = document.getElementById('eJIFModalTitle');
    div.innerHTML = Title;
    var TitleWidth = div.offsetWidth;
    // set the message
    div = document.getElementById('eJIFModalMessage');
    div.innerHTML = Message;
    var MessageWidth = div.offsetWidth;
    // position in centre or next to
    var NextTo = document.getElementById(NextToID);
    div = document.getElementById('eJIFModalContainer');
    var width = ejc_VPWidth();
//    var msgwidth = div.offsetWidth;
    var height = ejc_VPHeight();
    var msgheight = div.offsetHeight;
    // style the output
    var contwidth = TitleWidth+60;
    if (contwidth <  MessageWidth) {
      contwidth = MessageWidth;
    }
    div.style.width = contwidth+'px';
    div.style.top = ((height - msgheight)/2)  + 'px';
    div.style.left = ((width - contwidth)/2)  + 'px';
  }

  function eJIF_HideModal() {
//    var div = document.getElementById('eJIFModalMask');
//    div.className = 'MaskInvisible';
    eJIF_SetVisibilityByID('eJIFModalMask',false);
    eJIF_SetVisibilityByID('eJIFModalContainer',false);
  }

  function eJIF_OnEnterKeyUp(Input, Event, OnEnterFunction) {
    if (Event.keyCode == 13) {
      eval(OnEnterFunction);
    }
  }

  function eJIF_DoSearch() {
    var S = document.getElementById('SearchInput').value;
    if (S == '') {return 'Please enter a search value';}
    var SID = ejc_GetValueByID('SID');
    var UID = ejc_GetValueByID('UID');
    S.replace(/ /g, "%20");
    var URL = '/search.php?Key='+S;
    if (UID) {URL += '&UID='+UID;}
    if (SID) {URL += '&SID='+SID;}
    eJIF_MenuClick(URL);
  }


  function eJIF_BodyOnLoad() {
    eJIF_ModalMessage('Title', 'Message');
  }



