var imgpath = 'img/';

function newImage(arg) {
  if (document.images) {
    rslt = new Image();
    rslt.src = imgpath+arg;
    return rslt;
  }
}

var preloadFlag = false;
function preloadImages(locale) {
  if (document.images) {
    a = newImage("pt_myprofile-over.gif");
    a = newImage("pt_logout-over.gif");
    preloadFlag = true;
  }
}

function changeImages() {
  if (document.images && (preloadFlag == true)) {
    for (var i=0; i<changeImages.arguments.length; i+=2) {
      document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
    }
  }
}

/**
 * Trim white space at both ends
 */
function trim(str) {
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}//trim


/** set the width to 800 by default */
var defaultWindowWidth=800;
function placeWindow(w,h) {
  if (w==null) w=defaultWindowWidth;
  if (h==null) h=screen.availHeight;
  /* move the window to its closest section on screen */
  var sw=screen.availWidth-800;
  do {
    if (screenLeft>sw) {
      window.moveTo(sw,0);
      break;
    }
    sw-=800;
    if (sw<0) {
      window.moveTo(sw+800,0);
      break;
    }
  } while (true);
  window.resizeTo(w,h);
}

function checkdate(field) {
  var value = field.value;
  if (value == '') return true;
  if (!isDate(value, 'yyyy.MM.dd')) {
    alert('Please input a correct date format (YYYY.MM.DD).');
    field.select();
    return false;
  }
  return true;
}

function checktime(field) {
  var value = field.value;
  if (value == '') return true;

  var info = value.split(':');
  if (info.length != 2) {
    alert('Please input a correct time format (HH:MM).');
    field.select();
    return false;
  }

  if (info[0] < 0 || info[0] > 23) {
    alert('Please input a correct time format (HH:MM).');
    field.select();
    return false;
  }

  if (info[1] < 0 || info[1] > 59) {
    alert('Please input a correct time format (HH:MM).');
    field.select();
    return false;
  }
  return true;
}

/**
 * check whether all the checkboxes are checked,
 * use it together with checkAll.
 *
 * put it on the individual checkbox
 */
function checkChecked(ctl, boxes, me, buttons) {
  try {
  var args = checkChecked.arguments;
  var to_enable = false;
  if (boxes) {
    var len = boxes.length;
    if (len) {
      var all = true;
      var onechecked = false;
      for (var i=0;i<len;i++) {
        if (!boxes[i].checked && !boxes[i].disabled && boxes[i].type == 'checkbox') {
          all = false;
        } else if (!boxes[i].disabled) {
          onechecked = true;
          to_enable = onechecked;
        }
      }
      document.getElementById(ctl).checked = all;
      for (var j=3;j<args.length;j++) {
        document.getElementById(args[j]).disabled = !onechecked;
      }
    } else {
      if (me) {
        document.getElementById(ctl).checked = me.checked;
        to_enable = me.checked;
        for (var j=3;j<args.length;j++) {
          document.getElementById(args[j]).disabled = !me.checked;
        }
      } else {
        document.getElementById(ctl).checked = boxes.checked;
        to_enable = boxes.checked;
        for (var j=3;j<args.length;j++) {
          document.getElementById(args[j]).disabled = !boxes.checked;
        }
      }
    }
  }
  return to_enable;
  } catch (exception) {}
}//checkChecked

/**
 * control all the boxes by a controller,
 * use it together with checkChecked
 *
 * put it on the control checkbox (usuall name s_ctl)
 */
function checkAll(ctl, boxes, buttons) {
  try {
  var args = checkAll.arguments;
  var to_enable = false;
  if (boxes) {
    var len = boxes.length;
    if (len) {
      for (var i=0;i<len;i++) {
        if (!boxes[i].disabled && boxes[i].type == 'checkbox') {
          if (ctl) {
            boxes[i].checked = ctl.checked;
          }
          if (boxes[i].checked) {
            to_enable = true;
          }
        }
      }
    } else {
      if (!boxes.disabled) {
        if (ctl) {
          boxes.checked = ctl.checked;
        }
        if (boxes.checked) {
          to_enable = true;
        }
      }
    }
    for (var j=2;j<args.length;j++) {
      document.getElementById(args[j]).disabled = !to_enable;
    }
  }
  return to_enable;
  } catch (exception) {}
}//checkAll


/* Validation functions */

/**
  Make sure the pass-in text object has a positive
  integer. Use it in onblur event.
  the object passed in must be a text input.
 */
function ensurePosInt(obj,err1,err2) {
  if (obj.type != 'text') {
    alert(err1);
    return;
  }
  if (obj.value.length > 0) {
    if (isNaN(parseInt(obj.value)) || Math.floor(parseInt(obj.value)) != obj.value || obj.value <=0)
      {alert(err2); obj.value=''; obj.focus();
    }
  }
}

/**
 * Check if the input is a valid integer (allow only 0-9).
 * should be called in onKeyPress event.
 */
function isValidInteger(ctrl,max,errMsg) {
  var c = String.fromCharCode(window.event.keyCode);
  if (c < '0' || c > '9' || ctrl.value+c > max || ctrl.value+c < 0) {
    window.status=errMsg;
    return false;
  }
  window.status='';
  return true;
}//isValidInteger

/**
 * Check if the input is a valid color code (from 000000 to ffffff).
 * Should be called in onKeyPresss event.
 */
function isValidColorCode(ctrl,errMsg) {
  var allowChar = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');

  var c = String.fromCharCode(window.event.keyCode).toUpperCase();
  var k = false;

  if (ctrl.value.length >= 6) return false;

  for (var i=0;i<allowChar.length;i++) {
    if (c==allowChar[i]) k=true;
  }

  if (k) window.status='';
  else window.status=errMsg;
  return k;
}

function showPopup(url, wname, h, w, x,y) {
return window.open(url, wname, 'height='+h+', width='+w+', top='+y+', left='+x+', toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
function showHideNavButtonDiv(divId, anchorId, a, offsetX, offsetY){
	var c=getAnchorPosition(anchorId);
	if (document.getElementById){
		var o = document.getElementById(divId);
		if (o.style) {
			o.style.left = c.x+offsetX;
			o.style.top = c.y+offsetY;
			o.style.visibility = (a == 'show') ? 'visible' : 'hidden';
		}
	}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function event_tracking(id) {
var c=getAnchorPosition(id);
var o=document.getElementById(id+'_et');
if (o && o.style) {
  o.style.left=c.x;
  o.style.top=c.y;
  o.style.visibility='visible';
}
}