
/* Standard Javascript library + enhancements for MERS */
/* Jan 2008 AutoSOFT Systems */
/* http://www.autosoftsys.com */

function dispcont(cid){ document.getElementById(cid).style.display='block'; }
function dispcontfade(cid){
  var element = document.getElementById(cid);
  if (element.style.display != 'block') {
    element.style.display='none';
    changeOpac(1, cid);
    element.style.display='block';
    opacity(cid, 1, 100, 400);
  }
}
function hidecont(cid){ document.getElementById(cid).style.display='none'; }
function togglecont(cid){
  var element = document.getElementById(cid);
  if (element.style.display == 'block') 
    element.style.display='none';
  else dispcontfade(cid);
}

function swapcont(cid, oid){
  dispcontfade(cid);
  //document.getElementById(cid).style.display='block';
  document.getElementById(oid).style.display='none'; 
}

function getY(id, levlim) {
  var obj = document.getElementById(id);
  var lev = 0;
  var curtop = 0;
  if (obj.offsetParent) 
    while(true) {
      lev++;
      curtop+=obj.offsetTop;
      if (!obj.offsetParent || lev == levlim) break;
      obj=obj.offsetParent;
    }
  else if (obj.y) 
    curtop+=obj.y;
  return curtop;
}

String.prototype.pluralize = function(count, plural) {
  if (plural == null) plural = this + 's';
  return (count == 1 ? this : plural)
}

function roundNumber(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}

function swaptab(cur, cnt, nameroot) {
  var onClass = '';
  var offClass = '';
  for (var x = 1; x <= cnt; x++) {
    var tbox = document.getElementById(nameroot + x);
    var tb = document.getElementById(nameroot + x + 'but');
    if (tb.className.search(/TabN/) > 0) { onClass = 'TabNON'; offClass = 'TabNOFF'; }
      else { onClass = 'TabON'; offClass = 'TabOFF'; }
    if (x == cur) {
      tbox.style.display="block";
      tb.className = tb.className.replace(offClass,onClass);
    } else {
      tbox.style.display="none";
      tb.className = tb.className.replace(onClass,offClass);
    }
  }  
}

function setfocus(eid) { document.getElementById(eid).focus(); }

function upcase(txtobj) { txtobj.value = txtobj.value.toUpperCase(); }

function noSpaces(objEvent) {
  var iKeyCode=objEvent.keyCode ? objEvent.keyCode : objEvent.charCode;
  if(iKeyCode == 32) return false;
  return true;
}
function maskKeyPress(objEvent, allowdec) {
  // var iKeyCode=objEvent.keyCode ? objEvent.keyCode : objEvent.charCode;
  var iKeyCode=objEvent.charCode ? objEvent.charCode : objEvent.keyCode;
  if(iKeyCode >= 48 && iKeyCode <= 57) return true;
  if(iKeyCode == 8 || iKeyCode == 9) return true;
  if(allowdec && iKeyCode == 46) return true;
  if(iKeyCode == 13) return true;
  return false;
}
function getStyle(el,styleProp) {
	if (el.currentStyle)
		var y = el.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
	return y;
}
function CancelEdit(headto) { 
  if (confirm('Cancel changes?'))
    if (headto == '**ClosePop**') tb_remove();
    else self.document.location=headto;
}
function CancelBack() { 
  if (confirm('Cancel changes?')) history.go(-1);
}
function iconon(name) { document.getElementById(name).src = 'icons/_active_' + name + '.gif' }
function iconoff(name) { document.getElementById(name).src = 'icons/' + name + '.gif' }

function LogOut(climode){ 
  if (confirm('Are you sure you want to log out?')) 
    self.document.location='logout.cfm?backto=' + climode;    
}

function PickBadgeType(typename, block) {
  var divobj = document.getElementById('BTdiv' + typename);
  var chkobj = document.getElementById('FBadgeType' + typename);
  // chkobj.checked = !chkobj.checked;
  if (chkobj.checked)
    divobj.className = divobj.className.replace('BadgeTypeOFF','BadgeTypeON');
  else
    if (block) {
      chkobj.checked = true;
      alert('You can not unselect this badge type because it is being used.\n\nPlease edit all staff with this badge type before removing it.');
    } else 
      divobj.className = divobj.className.replace('BadgeTypeON','BadgeTypeOFF');
}

function opacity(id, opacStart, opacEnd, millisec) {
  var speed = Math.round(millisec / 100);
  var timer = 0;
  //determine blend direction, if (start == end) do nothing
  if(opacStart > opacEnd) {
    for(i = opacStart; i >= opacEnd; i=i-2) {
      setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
      timer += 2;
    }
  } else if(opacStart < opacEnd) {
    for(i = opacStart; i <= opacEnd; i=i+2) {
      setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
      timer += 2;
    }
  }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
  var object = document.getElementById(id).style;
  object.opacity = (opacity / 100);
  object.MozOpacity = (opacity / 100);
  object.KhtmlOpacity = (opacity / 100);
  object.filter = 'alpha(opacity=' + opacity + ')';
} 

function divtoggle(cid){
  var element = document.getElementById(cid);
  if (element.style.display == 'block')
    element.style.display='none';
  else {
    element.style.display='none';
    changeOpac(1, cid);
    element.style.display='block';
    opacity(cid, 1, 100, 400);
  }
}

function divtogglefromcheck(checkid,cid){
  var checkbox = document.getElementById(checkid);
  var element = document.getElementById(cid);
  if (checkbox.checked) {
    element.style.display='none';
    changeOpac(1, cid);
    element.style.display='block';
    opacity(cid, 1, 100, 400);
  } else 
    element.style.display='none';
}
function divtogglefromcheckinv(checkid,cid){
  var checkbox = document.getElementById(checkid);
  var element = document.getElementById(cid);
  if (!checkbox.checked) {
    element.style.display='none';
    changeOpac(1, cid);
    element.style.display='block';
    opacity(cid, 1, 100, 400);
  } else 
    element.style.display='none';
}

function copypostal() { 
  var postbox = document.getElementById('FPostal');
  var passbox = document.getElementById('FLoginKey');
  upcase(postbox);
  if (passbox.value == '' && postbox.value !== '') 
    passbox.value = postbox.value.replace(/\s+/g,'');
}

function purchinstr(pitext) {
  alert(pitext);
}

function logoswap(x, y, directname) {
  var logobox = document.getElementById('logoprev');
  var sizebox = document.getElementById('imgsize');
  sizebox.style.visibility = 'hidden';
	sizebox.innerHTML = '';
  logobox.style.visibility = 'hidden';
  logobox.width = x;
  logobox.height = y;
  if (directname == '') {
    var logodrop = document.getElementById('FLogo');
    var selindex  = logodrop.selectedIndex;
    var selvalue = logodrop.options[selindex].value;
  } else 
    selvalue = directname;
  if (selvalue !== '') {
    var newImg = new Image();
    this.ip = new ImagePreloader('logos/' + selvalue, logoswap2);
  }  
}

function logoswap2(newImg, status){
  if (status) {
    var logobox = document.getElementById('logoprev');
    var sizebox = document.getElementById('imgsize');
    // Resizing image
  	var y = logobox.height;
    var x = logobox.width;
  	var imageWidth = newImg.width;
  	var imageHeight = newImg.height;
  	sizebox.innerHTML = 'Original size:<br>Width: ' + imageWidth + ' &nbsp;&nbsp;&nbsp;Height: ' + imageHeight;
    if (imageHeight > y) {
      imageWidth = imageWidth * (y / imageHeight); 
      imageHeight = y; 
    }
  	if (imageWidth > x) {
  		imageHeight = imageHeight * (x / imageWidth); 
  		imageWidth = x; 
  	}
    logobox.src = newImg.src;
    logobox.width = imageWidth;
    logobox.height = imageHeight;
    logobox.style.visibility = 'visible';
    sizebox.style.visibility = 'visible';
  }
}

function ImagePreloader(image, callback2) {
  // store the call-back
  this.bStatus = false;
  this.callback = callback2;
  this.preload(image);
}
ImagePreloader.prototype.preload = function(imgurl) {
  var oImage = new Image;
  this.aImg = oImage;
  // set up event handlers
  oImage.onload = ImagePreloader.prototype.onload;
  oImage.onerror = ImagePreloader.prototype.onerror;
  oImage.onabort = ImagePreloader.prototype.onabort;
  // assign pointer back to this.
  oImage.oImagePreloader = this;
  oImage.bLoaded = false;
  // begin loading
  oImage.src = imgurl;
}
ImagePreloader.prototype.onComplete = function(bStatus) {
  this.callback(this.aImg, bStatus);
}
ImagePreloader.prototype.onload = function() {
  this.oImagePreloader.onComplete(true);
}
ImagePreloader.prototype.onerror = function() {
  this.oImagePreloader.onComplete(false);
}
ImagePreloader.prototype.onabort = function() {
   this.oImagePreloader.onComplete(false);
}

function SetEventClosed() {
  var closedcheck = document.getElementById('FClosed');
  var closedtext = document.getElementById('FClosedText');
  if (closedcheck.checked) closedtext.style.backgroundColor = '#FFDDDD';
    else closedtext.style.backgroundColor = "";
}

function ValidMailDate(thisform) {
  with (thisform) {
    if (SelEvent.selectedIndex==0) {
      alert('Please select an event');
      SelEvent.focus();
      return;
    } else if (SetMailDate.value.length == 0) {
      alert('Please enter a mail date');
      SetMailDate.focus();
      return;
    };
    var txt = 'This will set a mail date of ' + SetMailDate.value + ' on all badges for:\n\n';
    txt += SelEvent.options[SelEvent.selectedIndex].text + '\n\n';
    txt += 'where the badge has not been held and the mail date is\ncurrently empty.\n\n';
    if (confirm(txt + 'Are you sure you want to apply these mail dates?\n ')) { 
      IsValid.value = '1';
      document.MailDateChange.submit(); 
    }
  }
}

function ValidBadgeDL(thisform) {
  with (thisform) {
    if (SelEvent2.selectedIndex==0) {
      alert('Please select an event');
      SelEvent2.focus();
      return;
    };
    thisform.submit(); 
  }
}

function ValidEventForm(thisform, another, noprompt) {
  var re = /[^a-zA-Z0-9]/;
  with (thisform) {
    if (fldName.value.length == 0) {
      alert('Please enter an Event Name');
      fldName.focus();
      return;
    } else if (fldAdminPass.value.length == 0) {
      alert('Please enter a password for this event');
      fldAdminPass.focus();
      return;
    } else if (fldFirstExhID.value.length ==0) {
      alert('Please enter a First Exhibitor ID');
      fldFirstExhID.focus();
      return;
    } else if (fldPayOnline.checked && fldCostPerAdditional.value <= 0) {
      alert('With online purchasing enabled you must enter badge cost greater than zero.');
      fldCostPerAdditional.focus();
      return;
    } else if (re.test(fldBillingCode.value)) {
      alert('Billing Code must contain only letters and numbers.');
      fldBillingCode.focus();
      return;
    } else if (fldPayOnline.checked && fldCaledonCode.value.length == 0) {
      alert('With online purchasing enabled you must enter a Caledon account code.');
      fldCaledonCode.focus();
      return;
    } else if (fldPayOnline.checked && fldBillingCode.value.length == 0) {
      alert('With online purchasing enabled you must enter a Billing code.');
      fldBillingCode.focus();
      return;
    };
    if (noprompt == 1) ConfirmStatus = true;
      else ConfirmStatus = confirm('Save this event?');
    if (ConfirmStatus) { 
      if (another) AddAnother.value = '1';
      document.EditForm.submit(); 
    }
  }
}

function ValidBadgeForm(thisform, another, noprompt) {
  with (thisform) {
    if (fldType_ID.disabled == false)
      if (fldType_ID.value.length == 0) {
        alert('Please enter a badge code');
        fldType_ID.focus();
        return;
      }
    if (fldDescription.value.length == 0) {
      alert('Please enter a description for this badge type');
      fldDescription.focus();
      return;
    };
    if (noprompt == 1) ConfirmStatus = true; 
    else ConfirmStatus = confirm('Save this badge type?');
    if (ConfirmStatus) { 
      if (another) AddAnother.value = '1';
      document.EditForm.submit(); 
    }
  }
}

function ValidCompanyForm(thisform, another, noprompt) {
  with (thisform) {
    if (fldName.value.length == 0) {
      alert('Please enter a company name');
      fldName.focus();
      return;
    };
    var pickedbt = false;
    if (fldBadgeTypes.length == undefined) { if (fldBadgeTypes.checked) pickedbt=true; } //use braces here, otherwise a logic error occurs
    else { for (i=0; i<fldBadgeTypes.length; i++)  if (fldBadgeTypes[i].checked) pickedbt=true; }
    if (pickedbt == false) {
      alert('Please select at least one badge type');
      return;
    }
    if (noprompt == 1) ConfirmStatus = true;
    else ConfirmStatus = confirm('Save this company?');
    if (ConfirmStatus) { 
      if (another) AddAnother.value = '1';
      document.EditForm.submit(); 
    }
  }
}

function ValidCompanyFormCli(thisform, another, noprompt) {
  with (thisform) {
    if (fldName.disabled == false) {
      if (fldName.value.length == 0) {
        alert('Please enter a company name');
        fldName.focus();
        return;
      };
    }
    if (noprompt == 1) ConfirmStatus = true;
    else ConfirmStatus = confirm('Save this company?');
    if (ConfirmStatus) { 
      if (another) AddAnother.value = '1'; 
      document.EditForm.submit(); 
    }
  }
}

function ValidStaffForm(thisform, another, noprompt) {
  with (thisform) {
    if (fldFirstName.value.length == 0) {
      alert('Please enter a First Name');
      fldFirstName.focus();
      return;
    //} else if (fldLastName.value.length == 0) {
    //  alert('Please enter a Last Name');
    //  fldLastName.focus();
    //  return;
    };
    if (noprompt == 1) ConfirmStatus = true;
    else ConfirmStatus = confirm('Save this person?'); 
    if (ConfirmStatus) { 
      if (another) AddAnother.value = '1'; 
      document.EditForm.submit(); 
    }
  }
}

function delitem(delmode, itemid, desc) {
  var goflag = true;
  switch(delmode) {
  case 'B':
    var desc2 = 'badge type?';
    var module = 'delitem';
    break;    
  case 'C':
    var desc2 = 'company?';
    var module = 'delitem';
    break;
  case 'S':
    var desc2 = 'person?';
    var module = 'delitem';
    break;
  case 'E':
    var desc2 = 'person?';
    var module = 'delitemcli';
    break;
  default:
    var goflag = false;
  }  
  if (goflag) {
    if (desc != '') desc2 += "\n\n" + desc;
    if (confirm('Are you sure you want to delete this ' + desc2)) self.document.location= module + '.cfm?mode=' + delmode + '&id=' + itemid;    
  }
}

function dellogo(fname, blocked) {
  if (blocked != '')
    alert('You can not delete this logo because it is being used by event(s):\n\n' + blocked);
  else {
    var desc2 = '';
    if (fname != '') desc2 = '\n\n' + fname;
    if (confirm('Are you sure you want to delete this file?' + desc2)) self.document.location='utildellogo.cfm?filename=' + fname;
  }
}


