// global variables //
var TIMER = 5;
var SPEED = 15;

// calculate the current window width //
function pageWidth() {
  return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
}

// calculate the current window height //
function pageHeight() {
  return window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
}

// calculate the current window vertical offset //
function topPosition() {
  return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;
}

// calculate the position starting at the left of the window //
function leftPosition() {
  return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
}

///////////////////////////////////////////////////////////////////////////////////
// Main dialdg functions 

// build/show the dialog box, populate the data and call the fadeDialog function //
function showDialog(title,message,type,autohide,toppos,leftpos,dialog_height) {
  if(!type) {
    type = 'error';
  }
  var dialog;
  var dialogheader;
  var dialogclose;
  var dialogtitle;
  var dialogcontent;
  var dialogmask;
  if(!document.getElementById('nxdialog')) {
    dialog = document.createElement('div');
    dialog.id = 'nxdialog';
    dialogheader = document.createElement('div');
    dialogheader.id = 'nxdialog-header';
    dialogtitle = document.createElement('div');
    dialogtitle.id = 'nxdialog-title';
    dialogclose = document.createElement('div');
    dialogclose.id = 'nxdialog-close'
    dialogcontent = document.createElement('div');
    dialogcontent.id = 'nxdialog-content';

    dialogmask = document.createElement('div');
    dialogmask.id = 'nxdialog-mask';
    document.body.appendChild(dialogmask);


    document.body.appendChild(dialog);
    dialog.appendChild(dialogheader);
    dialogheader.appendChild(dialogtitle);
    dialogheader.appendChild(dialogclose);
    dialog.appendChild(dialogcontent);;
    dialogclose.setAttribute('onclick','hideDialog()');
    dialogclose.onclick = hideDialog;
  } else {
    dialog = document.getElementById('nxdialog');
    dialogheader = document.getElementById('nxdialog-header');
    dialogtitle = document.getElementById('nxdialog-title');
    dialogclose = document.getElementById('nxdialog-close');
    dialogcontent = document.getElementById('nxdialog-content');
    dialogmask = document.getElementById('nxdialog-mask');
    dialogmask.style.visibility = "visible";
    dialog.style.visibility = "visible";
  }
  dialog.style.opacity = .00;
  dialog.style.filter = 'alpha(opacity=0)';
  dialog.alpha = 0;
  var width = pageWidth();
  var height = pageHeight();
  var left = leftPosition();
  var top = topPosition();
  var dialogwidth = dialog.offsetWidth;
  var dialogheight = dialog.offsetHeight;
  var topposition = top + (height / 3) - (dialogheight / 2);
  var leftposition = left + (width / 2) - (dialogwidth / 2);
  dialog.style.top = topposition + "px";
  if(toppos)
	  dialog.style.top = toppos;
  dialog.style.left = leftposition + "px";
  if(leftpos)
	  dialog.style.left = leftpos;
  if (dialog_height)
  {
 		dialogcontent.style.height = dialog_height;
  }
  dialogheader.className = type + "header";
  dialogtitle.innerHTML = title;
  dialogcontent.className = type;
  dialogcontent.innerHTML = message;

  dialogmask.style.height = pageHeight();
  
  dialog.timer = setInterval("fadeDialog(1)", TIMER);
  if(autohide) {
    dialogclose.style.visibility = "hidden";
    window.setTimeout("hideDialog()", (autohide * 1000));
  } else {
    dialogclose.style.visibility = "visible";
  }
}

// hide the dialog box //
function hideDialog() {
  var dialog = document.getElementById('nxdialog');
  clearInterval(dialog.timer);
  dialog.timer = setInterval("fadeDialog(0)", TIMER);
}

// fade-in the dialog box //
function fadeDialog(flag) {
  if(flag == null) {
    flag = 1;
  }
  var dialog = document.getElementById('nxdialog');
  var value;
  if(flag == 1) {
    value = dialog.alpha + SPEED;
  } else {
    value = dialog.alpha - SPEED;
  }
  dialog.alpha = value;
  dialog.style.opacity = (value / 100);
  dialog.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(dialog.timer);
    dialog.timer = null;
  } else if(value <= 1) {
    dialog.style.visibility = "hidden";
    document.getElementById('nxdialog-mask').style.visibility = "hidden";
    clearInterval(dialog.timer);
  }
}

///////////////////////////////////////////////////////////////////////////////////
// Second dialog functions 

// build/show the dialog box, populate the data and call the fadeDialog function //
function showDialog2(title,message,type,autohide,toppos,leftpos) {
  if(!type) {
    type = 'error';
  }
  var dialog;
  var dialogheader;
  var dialogclose;
  var dialogtitle;
  var dialogcontent;
  var dialogmask;
  if(!document.getElementById('nxdialog2')) {
    dialog = document.createElement('div');
    dialog.id = 'nxdialog2';
    dialogheader = document.createElement('div');
    dialogheader.id = 'nxdialog2-header';
    dialogtitle = document.createElement('div');
    dialogtitle.id = 'nxdialog2-title';
    dialogclose = document.createElement('div');
    dialogclose.id = 'nxdialog2-close'
    dialogcontent = document.createElement('div');
    dialogcontent.id = 'nxdialog2-content';

    dialogmask = document.createElement('div');
    dialogmask.id = 'nxdialog2-mask';
    document.body.appendChild(dialogmask);


    document.body.appendChild(dialog);
    dialog.appendChild(dialogheader);
    dialogheader.appendChild(dialogtitle);
    dialogheader.appendChild(dialogclose);
    dialog.appendChild(dialogcontent);;
    dialogclose.setAttribute('onclick','hideDialog2()');
    dialogclose.onclick = hideDialog2;
  } else {
    dialog = document.getElementById('nxdialog2');
    dialogheader = document.getElementById('nxdialog2-header');
    dialogtitle = document.getElementById('nxdialog2-title');
    dialogclose = document.getElementById('nxdialog2-close');
    dialogcontent = document.getElementById('nxdialog2-content');
    dialogmask = document.getElementById('nxdialog2-mask');
    dialogmask.style.visibility = "visible";
    dialog.style.visibility = "visible";
  }
  dialog.style.opacity = .00;
  dialog.style.filter = 'alpha(opacity=0)';
  dialog.alpha = 0;
  var width = pageWidth();
  var height = pageHeight();
  var left = leftPosition();
  var top = topPosition();
  var dialogwidth = dialog.offsetWidth;
  var dialogheight = dialog.offsetHeight;
  var topposition = top + (height / 3) - (dialogheight / 2);
  var leftposition = left + (width / 2) - (dialogwidth / 2);
  dialog.style.top = topposition + "px";
  if(toppos)
	  dialog.style.top = toppos;
  dialog.style.left = leftposition + "px";
  if(leftpos)
	  dialog.style.left = leftpos;
  dialogheader.className = type + "header";
  dialogtitle.innerHTML = title;
  dialogcontent.className = type;
  dialogcontent.innerHTML = message;

  dialogmask.style.height = pageHeight();
  
  dialog.timer = setInterval("fadeDialog2(1)", TIMER);
  if(autohide) {
    dialogclose.style.visibility = "hidden";
    window.setTimeout("hideDialog2()", (autohide * 1000));
  } else {
    dialogclose.style.visibility = "visible";
  }
}

// hide the second dialog box //
function hideDialog2(vAutoHideFirstDialog) 
{
  var dialog = document.getElementById('nxdialog2');
  
  if (vAutoHideFirstDialog == null)
  	vAutoHideFirstDialog = 0;
  if (dialog == null && vAutoHideFirstDialog)
  {
  	hideDialog();
  	return;
  }
  clearInterval(dialog.timer);
  dialog.timer = setInterval("fadeDialog2(0," + vAutoHideFirstDialog + ")", TIMER);
}

// fade-in the second dialog box //
function fadeDialog2(flag,vAutoHideFirstDialog) {
  if(flag == null) {
    flag = 1;
  }
  if(vAutoHideFirstDialog == null) {
    vAutoHideFirstDialog = 0;
  }  
  var dialog = document.getElementById('nxdialog2');
  var value;
  if(flag == 1) {
    value = dialog.alpha + SPEED;
  } else {
    value = dialog.alpha - SPEED;
  }
  dialog.alpha = value;
  dialog.style.opacity = (value / 100);
  dialog.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(dialog.timer);
    dialog.timer = null;
  } else if(value <= 1) {
    dialog.style.visibility = "hidden";
    document.getElementById('nxdialog2-mask').style.visibility = "hidden";
    clearInterval(dialog.timer);
    if (vAutoHideFirstDialog)
    	hideDialog();
  }
}


///////////////////////////////////////////////////////////////////////////////////
// Third dialog functions 

// build/show the dialog box, populate the data and call the fadeDialog function //
function showDialog3(title,message,type,autohide,toppos,leftpos) {
  if(!type) {
    type = 'error';
  }
  var dialog;
  var dialogheader;
  var dialogclose;
  var dialogtitle;
  var dialogcontent;
  var dialogmask;
  if(!document.getElementById('nxdialog3')) {
    dialog = document.createElement('div');
    dialog.id = 'nxdialog3';
    dialogheader = document.createElement('div');
    dialogheader.id = 'nxdialog3-header';
    dialogtitle = document.createElement('div');
    dialogtitle.id = 'nxdialog3-title';
    dialogclose = document.createElement('div');
    dialogclose.id = 'nxdialog3-close'
    dialogcontent = document.createElement('div');
    dialogcontent.id = 'nxdialog3-content';

    dialogmask = document.createElement('div');
    dialogmask.id = 'nxdialog3-mask';
    document.body.appendChild(dialogmask);


    document.body.appendChild(dialog);
    dialog.appendChild(dialogheader);
    dialogheader.appendChild(dialogtitle);
    dialogheader.appendChild(dialogclose);
    dialog.appendChild(dialogcontent);;
    dialogclose.setAttribute('onclick','hideDialog3()');
    dialogclose.onclick = hideDialog3;
  } else {
    dialog = document.getElementById('nxdialog3');
    dialogheader = document.getElementById('nxdialog3-header');
    dialogtitle = document.getElementById('nxdialog3-title');
    dialogclose = document.getElementById('nxdialog3-close');
    dialogcontent = document.getElementById('nxdialog3-content');
    dialogmask = document.getElementById('nxdialog3-mask');
    dialogmask.style.visibility = "visible";
    dialog.style.visibility = "visible";
  }
  dialog.style.opacity = .00;
  dialog.style.filter = 'alpha(opacity=0)';
  dialog.alpha = 0;
  var width = pageWidth();
  var height = pageHeight();
  var left = leftPosition();
  var top = topPosition();
  var dialogwidth = dialog.offsetWidth;
  var dialogheight = dialog.offsetHeight;
  var topposition = top + (height / 3) - (dialogheight / 2);
  var leftposition = left + (width / 2) - (dialogwidth / 2);
  dialog.style.top = topposition + "px";
  if(toppos)
	  dialog.style.top = toppos;
  dialog.style.left = leftposition + "px";
  if(leftpos)
	  dialog.style.left = leftpos;
  dialogheader.className = type + "header";
  dialogtitle.innerHTML = title;
  dialogcontent.className = type;
  dialogcontent.innerHTML = message;

  dialogmask.style.height = pageHeight();
  
  dialog.timer = setInterval("fadeDialog3(1)", TIMER);
  if(autohide) {
    dialogclose.style.visibility = "hidden";
    window.setTimeout("hideDialog3()", (autohide * 1000));
  } else {
    dialogclose.style.visibility = "visible";
  }
}

// hide the second dialog box //
function hideDialog3(vAutoHideFirstDialog) 
{
  var dialog = document.getElementById('nxdialog3');
  
  if (vAutoHideFirstDialog == null)
  	vAutoHideFirstDialog = 0;
  if (dialog == null && vAutoHideFirstDialog)
  {
  	hideDialog();
  	return;
  }
  clearInterval(dialog.timer);
  dialog.timer = setInterval("fadeDialog3(0," + vAutoHideFirstDialog + ")", TIMER);
}

// fade-in the second dialog box //
function fadeDialog3(flag,vAutoHideFirstDialog) {
  if(flag == null) {
    flag = 1;
  }
  if(vAutoHideFirstDialog == null) {
    vAutoHideFirstDialog = 0;
  }  
  var dialog = document.getElementById('nxdialog3');
  var value;
  if(flag == 1) {
    value = dialog.alpha + SPEED;
  } else {
    value = dialog.alpha - SPEED;
  }
  dialog.alpha = value;
  dialog.style.opacity = (value / 100);
  dialog.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(dialog.timer);
    dialog.timer = null;
  } else if(value <= 1) {
    dialog.style.visibility = "hidden";
    document.getElementById('nxdialog3-mask').style.visibility = "hidden";
    clearInterval(dialog.timer);
    if (vAutoHideFirstDialog)
    	hideDialog();
  }
}
