﻿/// <reference path="common.js" />

var ExclamationImage = "http://www.retaildatallc.com/_assets/images/exclam.jpg";

var ElementBoxes=new Array();
var MsgBoxQueue=new Array();
var MsgLoadingTO=null;

function getNodeFromEvent(e)
{
  e = e || window.event;

  var node = e.target || e.srcElement;

  while (node.nodeType != 1)
    node = node.parentNode;
  
	return node;
}
function SafeElement(ele)
{
    if (typeof ele == 'string')
        ele = document.getElementById(ele);
        
    return ele;
}
function AttachEvent(elm,eventname,fx, cancelBubble)
{
  cancelBubble = cancelBubble || false;
  elm = SafeElement(elm);

  if(elm.addEventListener)
    elm.addEventListener(eventname,fx, cancelBubble);
  else if(elm.attachEvent)
  {
    elm.detachEvent("on"+eventname,fx);
    elm.attachEvent("on"+eventname,fx);
  }
}
function GetScrollLeft()
{
  if (typeof(window.pageXOffset) == 'number')
    return window.pageXOffset;
  else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
    return document.body.scrollLeft;
  else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
    return document.documentElement.scrollLeft;
  else
    return 0;
}
function GetScrollTop()
{
  if (typeof(window.pageYOffset) == 'number')
    return window.pageYOffset;
  else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
    return document.body.scrollTop;
  else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
    return document.documentElement.scrollTop;
  else
    return 0;
}

function MsgBox(prompt,buttons,buttonScripts,title,addExclamation,overrideAutoHide,overrideID) {
/// <summary>Displays a message for the user</summary>
/// <param name="prompt" type="String">HTML</param>
/// <param name="buttons" type="String">Text shown on each button.  pipe "|" delimited</param>
/// <param name="buttonScripts" type="String">" onclick='" + script + "'"; scripts are pipe "|" delimited</param>
/// <param name="title" type="String">Default title is 'Attention'</param>
/// <param name="addExclamation" type="Boolean">Adds an exclamation image like in an alert</param>
/// <param name="overrideAutoHide" type="Boolean">If false, each button script is appended with code to close the MsgBox</param>
/// <param name="overrideID" type="String">Less functionality when using this</param>
/// <returns>null</returns>
  
  var msgBox,msgBoxBack,buttonHtml,btnCnt,btn;
  
  if (overrideID && typeof(overrideID)=="string")
    overrideID = '_' + overrideID + '_';
  else
    overrideID = '';
  
  msgBoxBack=document.getElementById("MsgBoxBack"+overrideID);
  
  if(!msgBoxBack)
  {
    msgBoxBack=document.createElement('div');
    document.body.appendChild(msgBoxBack);
    
    msgBoxBack.id="MsgBoxBack"+overrideID;
    
    msgBoxBack.className="MsgBoxBack";
 		try{msgBoxBack.style.opacity='.3';}catch(ex){}
		try{msgBoxBack.style.filter='alpha(opacity=30)';}catch(ex){}
  }
  
  msgBoxBack.style.display='block';
  
  if(prompt&&prompt!="")
  {
    msgBox=document.getElementById("MsgBox"+overrideID);
    
    if(!msgBox)
    {
		  msgBox=document.createElement('div');
		  document.body.appendChild(msgBox);
		  
      msgBox.id="MsgBox"+overrideID;
		  
		  msgBox.className="MsgBox";
  		
		  var html;
  		
		  html="<div id='MsgBoxTitle"+overrideID+"' class='MsgBoxTitle'></div>"
		  html+="<div class='MsgBoxBody'>";
		  html+="<div id='MsgBoxPrompt"+overrideID+"' class='MsgBoxPrompt'></div>"
		  html+="<div id='MsgBoxButtons"+overrideID+"' class='MsgBoxButtons'></div>"
		  html+="</div>"
  		
		  msgBox.innerHTML=html;
    }
    
    buttonHtml="";
    btnCnt=0;
    
    if(buttons&&buttons!="")
    {
      var btns,fxs,i;
      
      btns=buttons.split("|");
      
      if(!buttonScripts||buttonScripts=="")
        fxs=new Array();
      else
        fxs=buttonScripts.split("|");
      
      for(i=0;i<btns.length;i++)
      {
        buttonHtml+="<input class='MsgBoxBtn' id='MsgBoxBtn"+overrideID+i+"' type='button' value='"+btns[i]+"' ";
        
        if(i<fxs.length)
        {
          if(fxs[i].length>0)
            buttonHtml+="onclick='"+fxs[i]+"' ";
        }
        
        buttonHtml+="/>";
        btnCnt++;
      }
      
      if(buttonHtml=="")
      {
        buttonHtml="<input class='MsgBoxBtn' id='MsgBoxBtn"+overrideID+"0' type='button' value='OK' />";
        btnCnt=1;
      }
    }//else no buttons
    
    if(!title||title=="")
      title="Attention";
    
    document.getElementById("MsgBoxTitle"+overrideID).innerHTML=title;
    document.getElementById("MsgBoxPrompt"+overrideID).innerHTML="";
    
    if(addExclamation)
      document.getElementById("MsgBoxPrompt"+overrideID).innerHTML="<img alt='Attention' src='" + ExclamationImage + "' align='left' style='margin:10px;margin-top:0px;' />";
    
    document.getElementById("MsgBoxPrompt"+overrideID).innerHTML+=prompt;
    
    document.getElementById("MsgBoxButtons"+overrideID).innerHTML=buttonHtml;
    
    if(!overrideAutoHide)
    {
      for(i=0;i<btnCnt;i++)
      {
        btn=document.getElementById("MsgBoxBtn"+overrideID+i);
        AttachEvent(btn,"click",MsgBox_Hide);
      }
    }
    
    msgBox.style.display='block';
    msgBox.style.width="";
    msgBox.style.minWidth="240px";
    
    //for ie6
    if(navigator.appVersion.indexOf("MSIE 6")>-1)
    {
      msgBox.style.width="1px";
      msgBox.style.width=msgBox.offsetWidth+"px";
    }
    
    msgBox.style.marginLeft="-"+(msgBox.offsetWidth/2)+"px";
    msgBox.style.marginTop="-"+(msgBox.offsetHeight/2)+"px";
  }
  
  //for ie6-
  var sels=document.getElementsByTagName("select");
  for(i=0;i<sels.length;i++)
  {
    if(sels[i].className!="MsgBoxDDL")
      sels[i].style.visibility="hidden";
  }
  
  if(window.addEventListener)
  {
    window.addEventListener("resize",MsgBox_Reposition,false);
    window.addEventListener("scroll",MsgBox_Reposition,false);
  }
  else
  {
    window.detachEvent("onresize",MsgBox_Reposition);
    window.detachEvent("onscroll",MsgBox_Reposition);
    window.attachEvent("onresize",MsgBox_Reposition);
    window.attachEvent("onscroll",MsgBox_Reposition);
  }
  
  if (overrideID.length>0)
    MsgBox_Reposition(overrideID.substr(1,overrideID.length-2));
  else
    MsgBox_Reposition();
}
function MsgBox_Hide(overrideID)
{
  var msgImg,msg,i,elm;
  
  if (overrideID)
  {
    if (typeof(overrideID) != "string")
    {
      elm = getNodeFromEvent(overrideID);
      
      if (elm.id.indexOf("MsgBox")==0&&elm.id.indexOf("_")>3)
        overrideID = elm.id.substring(elm.id.indexOf('_'),elm.id.lastIndexOf('_')+1);
      else
        overrideID = '';
    }
    else
      overrideID = '_' + overrideID + '_';
  }
  else
    overrideID = '';
  
  i=0;
  msgImg=document.getElementById("MsgBoxLoadingImg"+overrideID+i);
  while(msgImg)
  {
    msgImg.style.display='none';
    i++;
    msgImg=document.getElementById("MsgBoxLoadingImg"+overrideID+i);
  }
    
  msg=document.getElementById("MsgBox"+overrideID);
  
  if(msg)
    msg.style.display='none';
  
  msg=document.getElementById("MsgBoxBack"+overrideID);
  
  if(msg)
    msg.style.display='none';
  
  //for ie6-
  var sels=document.getElementsByTagName("select");
  for(i=0;i<sels.length;i++)
  {
    sels[i].style.visibility="visible";
  }
}
function MsgBox_Loading(html,buttons,buttonScripts,title,addExclamation,overrideAutoHide,useGif)
{
  if(!html)
    html='Loading...';
  
  if(!title)
    title='Loading...';
  
  var newTitle;
  
  if(useGif)
    newTitle='<img alt="Loading..." id="MsgBoxLoadingImg0" src="images/ajax-loader.gif" style="display:inline;" /> ';
  else
  {
    newTitle='<img alt="Loading..." id="MsgBoxLoadingImg0" src="images/load0.gif" style="display:none;" />';
    newTitle+='<img alt="Loading..." id="MsgBoxLoadingImg1" src="images/load1.gif" style="display:none;" />';
    newTitle+='<img alt="Loading..." id="MsgBoxLoadingImg2" src="images/load2.gif" style="display:none;" />';
    newTitle+='<img alt="Loading..." id="MsgBoxLoadingImg3" src="images/load3.gif" style="display:none;" />';
    newTitle+='<img alt="Loading..." id="MsgBoxLoadingImg4" src="images/load4.gif" style="display:none;" />';
    newTitle+='<img alt="Loading..." id="MsgBoxLoadingImg5" src="images/load5.gif" style="display:none;" />';
    newTitle+='<img alt="Loading..." id="MsgBoxLoadingImg6" src="images/load6.gif" style="display:none;" />';
    newTitle+='<img alt="Loading..." id="MsgBoxLoadingImg7" src="images/load7.gif" style="display:none;" /> ';
  }
  
  newTitle+=title;
  
  MsgBox(html,buttons,buttonScripts,newTitle,addExclamation,overrideAutoHide);
  
  if(!useGif)
  {
    if(MsgLoadingTO)
      clearTimeout(MsgLoadingTO);
    
    MsgLoadingTO=setTimeout("MsgBox_LoadingStep(0);",90);
  }
}
function MsgBox_LoadingStep(i)
{
  var imgPrev,imgNext;
  
  imgPrev=document.getElementById("MsgBoxLoadingImg"+i);
  
  i++;
  
  if(i>7)
    i=0;
  
  imgNext=document.getElementById("MsgBoxLoadingImg"+i);
  
  if(!imgPrev||!imgNext)
    return;
  
  imgPrev.style.display="none";
  imgNext.style.display="inline";
  
  if(MsgLoadingTO)
    clearTimeout(MsgLoadingTO);
  
  MsgLoadingTO=setTimeout("MsgBox_LoadingStep("+i+");",90);
}
function MsgBox_Loop(i)
{
  if(typeof(i)!="number")
    i=0;
  
  if(i>=MsgBoxQueue.length)
  {
    MsgBoxQueue=new Array();
    MsgBox_Hide();
  }
  else
    MsgBox(MsgBoxQueue[i],"OK","MsgBox_Loop("+(i+1)+");",null,false,true);
}
function MsgBox_Reposition(overrideID)
{
  var msgBoxBack,msgBox,coords,eBox,elem;
  
  if(overrideID&&typeof(overrideID)=="string")
    overrideID = '_' + overrideID + '_';
  else
    overrideID = '';
  
  msgBoxBack=document.getElementById("MsgBoxBack"+overrideID);
  
  if(msgBoxBack)
  {
    msgBoxBack.style.width=document.documentElement.clientWidth+"px";
    msgBoxBack.style.height=document.documentElement.clientHeight+"px";
    
    msgBoxBack.style.top=GetScrollTop()+"px";
    msgBoxBack.style.left=GetScrollLeft()+"px";
  }
  
  msgBox=document.getElementById("MsgBox"+overrideID);
  
  if(msgBox)
  {
    msgBox.style.top=(document.documentElement.clientHeight/2)+GetScrollTop()+"px";
    msgBox.style.left=(document.documentElement.clientWidth/2)+GetScrollLeft()+"px";
  }
  
  for(var i=0;i<ElementBoxes.length;i++)
  {
    eBox=ElementBoxes[i];
    elem=document.getElementById(eBox.parentId);
    
    coords=getCoordinates(elem);
    eBox.style.top=coords.y+'px';
    eBox.style.left=coords.x+'px';
    eBox.style.width=elem.offsetWidth+'px';
    eBox.style.height=elem.offsetHeight+'px';
  }
}
function MsgBox_Test()
{
  MsgBox("Testing out my message box<br /><br />1 and 3 should alert","One|Two|Three|Four|Five","alert(1);||alert(3);","Attention!",true,false);
}













function AssociateLogin() {
  var prompt, buttons, buttonScripts, title;

  title = "Associate Login";
  prompt = "Which site would you like to access?";
  buttons = "Employee Portal (PayChex)|Field Portal|Cancel";
  buttonScripts = "window.open(\"https://eservices.paychex.com/secure/\");|window.open(\"https://field.retaildatallc.com\");|";
  
  MsgBox(prompt, buttons, buttonScripts, title, false, false, null);

  return false;
}
