// global.js

/** Open New Window **/
function open_window(url,id,w,h) {
    if(url != ""){
	newWin=window.open(url,id,'height='+h+',width='+w+',scrollbars=yes,resizable=yes,location=no,menubar=no,status=no,toolbar=no');
	newWin.focus();
    }
}

/*
	functions MM_preloadImages, MM_swapImgRestore, MM_findObj, and MM_swapImage
	originate from Macromedia Dreamweaver and are used to manage image preload and rollovers
*/
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

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_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

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_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_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

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; }
}

/** Show/Hide target element **/
function reveal(target) {
	document.getElementById(target).style.display = "block";
}
function hide(target) {
	document.getElementById(target).style.display = "none";
}


/* In-Page Tab Scripts */
/* rollover (highlighting) function for tabs */
function tabRollOver(id) {
    var tab = document.getElementById(id);
    if (tab != null) {
    	tab.style.background = "url('/images/tabbar/tab_hover_bg.gif') repeat-x top center";
    	document.getElementById("l_"+id).setAttribute("src", "/images/tabbar/tab_hover_left.gif");
    	document.getElementById("r_"+id).setAttribute("src", "/images/tabbar/tab_hover_right.gif");
    	/*var textlink = tab.getElementsByTagName("a").item(0);
    	textlink.style.color = "#E68B2C";*/
    }
}
/* rollout (de-highlighting) function for tabs */
function tabRollOut(id) {
    var tab = document.getElementById(id);
    if (tab != null) {
    	tab.style.background = "url('/images/tabbar/tab_bg.gif') repeat-x top center";
    	document.getElementById("l_"+id).setAttribute("src", "/images/tabbar/tab_left.gif");
    	document.getElementById("r_"+id).setAttribute("src", "/images/tabbar/tab_right.gif");
    	/*var textlink = tab.getElementsByTagName("a").item(0);
    	textlink.style.color = "#369";*/
    }
}
/* onclick function for tabs */
function tabOnClick(link) {
    self.location.href = link;
}

/* Feedback fading */
//Fade feedback string on and off
function fade(id) {
        // fade
	var i, inc = 300, newopacity, maxlevels=25;
	for (i=0; i<maxlevels; i++) {
	    newopacity = ((maxlevels - 1) - i) / maxlevels;
	    setTimeout("fade_opacity('"+id+"',"+newopacity+")", i * inc);
	}
}
function fade_opacity(id,newopacity) {
        var ie_op = newopacity * 100;
	document.getElementById(id).style.opacity = newopacity;
	document.getElementById(id).style.filter = "alpha(opacity="+ie_op+")";
}

/* Confirm dialog that display a yes/no message.  If yes, goes to URL */
function confirmDlg(msg,url) {
       var answer = confirm(msg);
       if (answer) {
           window.location.href=url;
       }
}

/* Search prompt focus */
function searchFocus(field) {
    if ($(field).value == 'Search') {
	$(field).value = '';
    }
}

/* Search prompt blur */
function searchBlur(field) {
    if ($(field).value == '') {
	$(field).value = 'Search';
    }
}

//Global variable to track check flags
var checkflag = new Array();

//Check All
//selected: is checkbox currently selected
//field: nodelist of checkboxes
//group: val for grouping (optional)
function checkSelected(selected, field) {
    group = 0;

    //Add group to checkflag array
    if(typeof(checkflag[group]) == 'undefined') { checkflag[group] = 'false'; }

    if(field.type == "checkbox") { //if single checkbox
       	if (checkflag[group] == "false") { field.checked = true; } else { field.checked = false; }
    }
	
    // using "selected" is more accurate, esp when hitting the back button (TT#77448)
    if (selected)
	for (i = 0; i < field.length; i++) { field[i].checked = true; }
    else for (i = 0; i < field.length; i++) { field[i].checked = false; }
}

function check(field,group) {
    //If there is no group, use 0 as default
    if ( group == null ) { var group = 0; }

    //Add group to checkflag array
    if(typeof(checkflag[group]) == 'undefined') { checkflag[group] = 'false'; }

    if(field.type == "checkbox") { //if single checkbox
        if (checkflag[group] == "false") { field.checked = true; } else { field.checked = false; }
    }
    if (checkflag[group] == "false") for (i = 0; i < field.length; i++) { field[i].checked = true; }
    else for (i = 0; i < field.length; i++) { field[i].checked = false; }
}

//field: nodelist of checkboxes
//group: val for grouping (optional)
function checkFlag(field,group) {
    if ( group == null ) {
	var group = 0;
    }

   if (checkflag[group] == "false") {
       checkflag[group] = "true";
       return "Uncheck All";
   } else {
       checkflag[group] = "false";
       return "Check All";
   }
}

// Random generator: necessary to fix IE caching woes
function randomGen() {
   return Math.floor(Math.random()*100000);  
}

// Converts integer to alpha, appends 1, 2, 3 to alpha if integer > 26
// 0 => A, 1 => B, 26 => A1, 27 => B1
function intToAlpha(i) {
    var return_str;

    return_str = String.fromCharCode(i + 65);
    if (i > 25) {
	return_str = String.fromCharCode((i % 26) + 65) + parseInt(i / 26);
    }
    return return_str;
}

// Converts alpha to integer
// A => 0, B => 1, A1 => 26, B1 => 27
function alphaToInt(str) {
    var return_str;
    //If pattern is B2
    if(str.length > 1) {
	var multiplier = str.substr(1);

	return_str = str.charCodeAt(0) - 65 + (multiplier * 26);
    } else {
	return_str = str.charCodeAt(0) - 65;
    }
    return return_str;
}