function initAll() {
	if(!is_ie){
     document.all = (document.all) ? document.all :((document.getElementsByTagName("*").length > 0) ? document.getElementsByTagName("*") : null)
	}
}

function getelsbyclassname(sName){
	var qCounter = 0;
	var numEls = null;
	for(i=0;i<document.all.length;i++){
		if(document.all[i].className==sName){
			numEls++		
		}
	}
	qEl = new Array(numEls)
	for(i=0;i<document.all.length;i++){
		if(document.all[i].className==sName){
			qEl[qCounter] = document.all[i]
			qCounter++
		}
	}
	return  qEl
}
	
function getelsbytagname(sName){
	var qCounter = 0;
	var numEls = null;
	for(i=0;i<document.all.length;i++){
		if(document.all[i].tagName==sName){
			numEls++		
		}
	}
	qEl = new Array(numEls)
	for(i=0;i<document.all.length;i++){
		if(document.all[i].tagName==sName){
			qEl[qCounter] = document.all[i]
			qCounter++
		}
	}
	return  qEl
}	

function getelsbytype(sName){
	var qCounter = 0;
	var numEls = null;
	for(i=0;i<document.all.length;i++){
		if(document.all[i].type==sName){
			numEls++		
		}
	}
	qEl = new Array(numEls)
	for(i=0;i<document.all.length;i++){
		if(document.all[i].type==sName){
			qEl[qCounter] = document.all[i]
			qCounter++
		}
	}
	return  qEl
}	

numDataRows = 0;
function addRow(btn,numCols,startingRows){
	numDataRows++
	RowNum = startingRows + numDataRows
	
	var cells =  new Array(numCols);
	var curCell = btn.parentElement;
	var curRow = curCell.parentElement;
	var curTbdy = curRow.parentElement;
	var curTbl = curTbdy.parentElement;
	var numRows = curTbl.rows.length;
	var sourceRow = curTbl.rows(numRows-2)
	var sourceCells = sourceRow.cells;
	var numCells = sourceCells.length
	for ( i = 0; i < numCells; i++ ) {
		cells[i] = sourceCells(i).cloneNode(true);
		}
	var newRow = curTbl.insertRow(numRows-1)			
	for (i = numCells-1; i >= 0; i-- ) {
		var newRowCell = newRow.insertAdjacentElement('afterBegin',cells[i])
	}
	for (i = 0;i<newRow.all.length;i++){
		var tag = newRow.all(i).tagName.toLowerCase()
		if(tag == 'input'){ 
			//alert(newRow.all(i).type)
			inpt = newRow.all(i)
			switch(inpt.type){
				case 'radio':
					inpt.checked = false
					break
				case 'checkbox':
					inpt.checked = false
					inpt.value = RowNum
					break
				case 'text':
					inpt.value = ""
					break
			}
			}
	}
}


var popupWin = null;

function popup(vID){
	if(popupWin && popupWin.open && !popupWin.closed){
		popupWin.close();
	}
	popupWin = window.open('popup.asp?qdesc=' + vID,"","width=300,scrollbars=yes,height=300,status=no,toolbar=no,menubar=no")
}
var popupEdWin = null;
function popupEditor(vID){
	if(popupEdWin && popupEdWin.open && !popupEdWin.closed){
		popupEdWin.close();
	}
	popupEdWin = window.open('popupEditor.asp?qdesc=' + vID,"","width=300,height=300,scrollbars=yes,status=yes,toolbar=no,menubar=no")
}
function getelbyid(id){
	if(is_ie){
		return document.all(id);
		}
	if(is_nav6){
		return document.getElementById(id);
		}
	if(is_nav4){
		return document.layers[id];
		}
	} 
  
function show(el){
	if(is_ie){
		el.style.visibility = "visible";
		}
	if(is_nav6){
		el.style.visibility = "visible";
		}
	if(is_nav4){
		el.visibility = "show";
		}
} 

function getAttribsFromEvent(event){
	if(is_ie){
		return getAttribsFromEl(window.event.srcElement)
		}
	if(is_nav){
		return(getAttribsFromEl(event.target))
	}
	if(is_mac){
		return getAttribsFromEl(window.event.srcElement)
		}

}


//re-write these functions to just return the element then use existing functions for extracting the atributes
//consider useing one function to get an attribut by finding a match in the attribut collection

function getAttribsFromEl(el){
	return el.attributes
}

function getXFromEvent(event){
	var X
	if (is_ie5up){
		X = getAbsX(window.event.srcElement)}
	if (is_nav6){
		X = getAbsX(event.target)}
	if(is_mac){
		X = getAbsX(window.event.srcElement)}
	return X
}
function getYFromEvent(event){
	var Y
	if (is_ie5up){
		Y = getAbsY(window.event.srcElement)}
	if (is_nav6){
		Y = getAbsY(event.target)}
	if(is_mac){
		Y = getAbsY(window.event.srcElement)}
	return Y
}


function getClassNameFromEvent(event){
	var className	
	if (is_ie5up){
		className = window.event.srcElement.className;}
	if (is_nav6){
		className = (event.target.className ?
		event.target.className : event.target.parentNode.className);}
	if(is_mac){
		className = window.event.srcElement.className;}
	return className
}

function getTagNameFromEvent(event){
	var tagName	
	if (is_ie5up){
		tagName = window.event.srcElement.tagName;}
	if (is_nav6){
		tagName = (event.target.tagName ?
		event.target.tagName : event.target.parentNode.tagName);}
	if(is_mac){
		tagName = window.event.srcElement.tagName;}
	return tagName
}
function getIdFromEvent(event){
	var evID
	if (is_ie5up){
		evID = window.event.srcElement.id;}
	if (is_nav6){
		evID = (event.target.id ?
		event.target.id : event.target.parentNode.id);}
	if(is_mac){
		evID = window.event.srcElement.id;}
	return evID
}

function getInnerHTMLFromEvent(event){
	var inHtml
	if (is_ie5up){
		inHtml = window.event.srcElement.innerHTML;}
	if (is_nav6){
		inHtml = (event.target.innerHTML ?
		event.target.innerHTML : event.target.parentNode.innerHTML);}
	if(is_mac){
		inHtml = window.event.srcElement.innerHTML;}
	return inHtml
}

function hide(el){
	if(is_ie){
		el.style.visibility = "hidden";
		}
	if(is_nav6){
		el.style.visibility = "hidden";
		}
	if(is_nav4){
		el.visibility = "hide";
		}
} 

function bgc(el,str){
	if(is_ie){
		el.style.backgroundColor = str;
		}
	if(is_nav6){
		el.style.backgroundColor = str;
		}
	if(is_nav4){
		el.backgroundColor = str;
		}
} 
function color(el,str){
	if(is_ie){
		el.style.color = str;
		}
	if(is_nav6){
		el.style.color = str;
		}
	if(is_nav4){
		el.color = str;
		}
} 

//function getAbsX(el){
//	if(is_ie || is_nav6){
//		return el.offsetLeft + (el.offsetParent ? getAbsX(el.offsetParent) : 0);
//		}
//}

function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
function getAbsPos(elt,which) {
 iPos = 0;
 while (elt != null) {
  iPos += elt["offset" + which];
  elt = elt.offsetParent;
 }
 return iPos;
}

function setAbsX(elt,n) {	
	elt.style.left = n
}
function setAbsY(elt,n) {
	elt.style.top = n
}

function getScreenX(){
	
}
function getScreenY(){
	
}

function getEventX(event){
	if(is_nav){
		return event.pageX
		}
	if(is_ie){
		return window.event.x
		}
	if(is_mac){
		return findPosX(event)
	}
}

function getEventY(event){
	if(is_nav){
		return event.pageY
		}
	if(is_ie){
		return window.event.y
		}
	if(is_mac){
		return findPosY(event)
		}
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


// Support Functions
   function strip(filter,str){
      var i,curChar;
      var retStr = '';
      var len = str.length;
      for(i=0; i<len; i++){
         curChar = str.charAt(i);
         if(filter.indexOf(curChar)<0) 
           //not in filter, keep it
            retStr += curChar;
      }
      return retStr;
   }
   function reformat(str){
      var arg;
      var pos = 0;
      var retStr = '';
      var len = reformat.arguments.length;
      for(var i=1; i<len; i++){
         arg = reformat.arguments[i];
         if(i%2==1)
            retStr += arg;
         else{
            retStr += str.substring(pos, pos + arg);
            pos += arg;
         }
      }
      return retStr;
   }
   //End Support Functions
 //Validation Rules
   function notEmpty(str){
      if(strip(" \n\r\t",str).length ==0)
         return false;
      else
         return true;
   }
   function validateInteger(str){
      str = strip(' \n\r\t',str);
      //remove leading zeros, if any
      while(str.length > 1 && str.substring(0,1) == '0'){
         str = str.substring(1,str.length);
      }
      var val = parseInt(str);
      if(isNaN(val))
         return false;
      else
         return true;
   }
   
   function validateFloat(str){
      str = strip(' \n\r\t',str);
      //remove leading zeros, if any
      while(str.length > 1 && str.substring(0,1) == '0'){
         str = str.substring(1,str.length);
      }
      var val = parseFloat(str);
      if(isNaN(val))
         return false;
      else
         return true;
   }
function validateUSPhone(str){
      str = strip("*() -./_\n\r\t\\",str);
      if(str.length == 10 || str.length == 7)
         return true;
      else
         return false;
   }
   function validateSSN(str){
      str = strip(" -.\n\r\t",str);
      if(validateInteger(str) && str.length == 9)
         return true;
      else
         return false;
   }
   function validateZip(str){
      str = strip("- \n\r\t",str);
      if(validateInteger(str) && (str.length==9 || 
         str.length==5))
      return true;
      else
         return false;
   }
function validateCC(str,type){
      str = strip("-./_\n\r\t\\",str);
      if(type=="1")
         if(str.charAt(0)!="4")
            return false;
      if(type=="2")
         if(str.charAt(0)!="5")
            return false;
      if(type=="3")
         if(str.charAt(0)!="6")
            return false;
      if(type=="4")
         if(str.charAt(0)!="3")
            return false;
      if(validateInteger(str) && 
         ((str.length==15&&type=="4") || 
         str.length==16))
         return true;
      else
         return false;
   }
   function validateDate(str){
      var dateVar = new Date(str);
      if(isNaN(dateVar.valueOf()) || 
         (dateVar.valueOf() ==0))
         return false;
      else
         return true;
   }
function validateEMail(str){
      str = strip(" \n\r\t",str);
      if(str.indexOf("@") > -1 && str.indexOf(".") > -1)
         return true;
      else
         return false;
   }
   
function removeCommas( strValue ) {
  var objRegExp = /,/g; //search for commas globally
  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}
function Len(str)
        {  return String(str).length;  }
function Left(str, n)
        /***
                IN: str - the string we are LEFTing
                    n - the number of characters we want to return

                RETVAL: n characters from the left side of the string
        ***/
        {
                if (n <= 0)     // Invalid bound, return blank string
                        return "";
                else if (n > String(str).length)   // Invalid bound, return
                        return str;                // entire string
                else // Valid bound, return appropriate substring
                        return String(str).substring(0,n);
        }
