function positionTooltip(inputObj, popupElem){
	var popupWidth = popupElem.offsetWidth;
	var leftPos = inputObj.style.left; //(getLeftPos(inputObj) + inputObj.offsetWidth);
	var topPos = inputObj.style.top;//getTopPos(inputObj);
	
	/*
	var rightedge=ajax_tooltip_MSIE? document.body.clientWidth-leftPos : window.innerWidth-leftPos
	var bottomedge=ajax_tooltip_MSIE? document.body.clientHeight-topPos : window.innerHeight-topPos
	*/
//	var tooltipWidth = document.getElementById('helpui').offsetWidth; 
	// Dropping this reposition for now because of flickering
	//var offset = tooltipWidth - rightedge; 
	//if(offset>0)leftPos = Math.max(0,leftPos - offset - 5);
	if(leftPos < 0) leftPos = 0;
	if(topPos < 200) topPos = 300;
	//topPos = 300;
	popupElem.style.left = leftPos + 'px';
	popupElem.style.top = topPos + 'px';	
	
	
}

function position(basedElem, popupElem){
	var popupWidth = popupElem.offsetWidth;
	var leftPos = basedElem.offsetLeft + (popupWidth/2);//(getLeftPos(basedElem) + basedElem.offsetWidth);//basedElem.style.left; //(getLeftPos(inputObj) + inputObj.offsetWidth);
	var topPos = basedElem.offsetBottom;//getTopPos(basedElem);//basedElem.style.top;//getTopPos(inputObj);
	
	if(leftPos < 0 || (!leftPos)){ leftPos = 50;}
	if(topPos < 0 || (!topPos)){ topPos = 50;}

	popupElem.style.left = leftPos + 'px';
	popupElem.style.top = topPos + 'px';	

}

function getTopPos(inputObj){		
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function getLeftPos(inputObj){
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}


function showHelp(url, request, inputObj, parentId){
	var popupid = "popup_help";
	var helpid = "helpui";
	var haveElem = false;
	request = unescape(request);
	requestArray = request.split("&");	
	for(i = 0 ; i < requestArray.length; i++){
		keyvalue = requestArray[i].split("=");
		if(keyvalue.length == 2){
			if(keyvalue[0] == "elem" || keyvalue[0] == "?elem"){
				helpid = keyvalue[1];
				haveElem = true;	
				break;
			}
		}
	}
	
	if(!haveElem){
		str = "elem=" + helpid;
		if(request.indexOf('?') != -1)
			request += '&' + str;
		else
			request += '?' + str;
	
	}

	var popupElem = document.getElementById(popupid);
	if(!popupElem){
		popupElem = document.createElement("div");
		popupElem.setAttribute("id", popupid);
		popupElem.style.zIndex = 1000;
		popupElem.style.position = "absolute";
		popupElem.style.background = "white";
		popupElem.style.width = "530px";
		popupElem.style.border = "2px solid brown";
		
		var parentElem = document.getElementById(parentId);
		if(!parentElem){
			parentElem = document.getElementById('content')
		}
		parentElem.appendChild(popupElem);
		//document.body.appendChild(popupElem);
	}
		
	var helpElem = document.getElementById(helpid);
	if(!helpElem){
		helpElem = document.createElement("div");
		helpElem.setAttribute("id", helpid);
		helpElem.style.margin = "10px 5px 5px 10px";
		helpElem.style.height = "300px";
		helpElem.style.overflow = "auto";
		closeElem = document.getElementById('close_help');
		if(!closeElem){
			closeElem = document.createElement("img");
			closeElem.setAttribute("id", "close_help");
			closeElem.setAttribute("src", "image/close.jpg");
			closeElem.onclick=function(){Hide(popupid)};
			closeElem.setAttribute("align", "right");
			closeElem.style.margin = "0px";
			popupElem.appendChild(closeElem);		
		}
		popupElem.appendChild(helpElem);		 	
	}
	
	position(inputObj, popupElem);
	popupElem.style.display = "block";
	makeRequest(url, request);
}

function GetViewportWidth()  {
	
	 var viewportwidth;
	 
	//Non-IE
	 if (typeof( window.innerWidth) == 'number' ) {
		 viewportwidth = window.innerWidth;
	 }
	 
	 //IE 6+ in 'standards compliant mode'
	 else if (document.documentElement
	     && document.documentElement.clientWidth) {
		 viewportwidth = document.documentElement.clientWidth;
	 }
	 
	//IE 4 compatible
	 else if ( document.body && document.body.clientWidth)  {
		 viewportwidth = document.body.clientWidth;
	 }
	 
	 return viewportwidth;
}


function GetViewportHeight()  {
	
	 var viewportheight;
	 
	//Non-IE
	 if (typeof( window.innerHeight ) == 'number' ) {
		 viewportheight = window.innerHeight;
	 }
	 
	 //IE 6+ in 'standards compliant mode'
	 else if (document.documentElement
	     && document.documentElement.clientHeight) {
		 viewportheight = document.documentElement.clientHeight;
	 }
	 
	//IE 4 compatible
	 else if ( document.body && document.body.clientHeight)  {
		 viewportheight = document.body.clientHeight;
	 }
	 
	 return viewportheight;
  }

function getScrollX() {
	  var scrOfX = 0;
	  if( typeof( window.pageXOffset ) == 'number' ) {
	    //Netscape compliant
	    scrOfX = window.pageXOffset;
	  } else if( document.body && document.body.scrollLeft) {
	    //DOM compliant
	    scrOfX = document.body.scrollLeft;
	  } else if (document.documentElement && document.documentElement.scrollLeft) {
	    //IE6 standards compliant mode
	    scrOfX = document.documentElement.scrollLeft;
	  }
	  return scrOfX;
	}

function getScrollY() {
	  var scrOfY = 0;
	  if( typeof( window.pageYOffset ) == 'number' ) {
	    //Netscape compliant
	    scrOfY = window.pageYOffset;
	  } else if( document.body && document.body.scrollTop) {
	    //DOM compliant
	    scrOfY = document.body.scrollTop;
	  } else if( document.documentElement && document.documentElement.scrollTop) {
	    //IE6 standards compliant mode
	    scrOfY = document.documentElement.scrollTop;
	  }
	  return scrOfY;
	}

function InitPopup(parentid, updateid) {
	
	var viewportwidth = GetViewportWidth();
	var viewportheight = GetViewportHeight();
	var scrOfX = getScrollX();
	var scrOfY = getScrollY();
	
	var containerid = "popup_update";
	if(!updateid)
	 updateid = "content_update";

	var containerElem = document.getElementById(containerid);
	if(!containerElem){
		containerElem = document.createElement("div");
		containerElem.setAttribute("id", containerid);
		
		var parentElem = document.getElementById(parentid);
		if(!parentElem){
			parentElem = document.getElementById('content');
		}
		parentElem.appendChild(containerElem);
	}
		
	var updateElem = document.getElementById(updateid);
	if(!updateElem){
		updateElem = document.createElement("div");
		updateElem.setAttribute("id", updateid);
		updateElem.style.margin = "20px 10px 10px 10px";
		//updateElem.style.height = "300px";
		//updateElem.style.overflow = "auto";
		closeid = 'close_update';
		var closeElem = document.getElementById(closeid);
		if(!closeElem){
			closeElem = document.createElement("img");
			closeElem.setAttribute("id", closeid);
			closeElem.setAttribute("src", "image/close.jpg");
			closeElem.onclick=function(){Hide(containerid)};
			closeElem.setAttribute("align", "right");
			closeElem.style.margin = "0px";
			containerElem.appendChild(closeElem);		
		}
		containerElem.appendChild(updateElem);		 	
	}else{
		updateElem.innerHTML = "";
	}
	
	containerElem.style.display = "block";
	oHeight = containerElem.offsetHeight;
	oWidth = containerElem.offsetWidth;
	
	heightDiff = oHeight / 2;
	
	//first time when popup appears, the DIV height is 30px
	if (oHeight < 50)  {
		heightDiff = viewportheight / 3;
	}
	
	containerElem.style.top = parseInt(((viewportheight / 2) - (heightDiff))  + scrOfY);
	containerElem.style.left = parseInt(((viewportwidth / 2) - (oWidth / 2)) + scrOfX);
	
	return updateid;
}

function ShowPopupForm(formelem, parentid) {
	var updateid = InitPopup(parentid);
	if(formelem.elem) {
		formelem.elem.value = updateid;
	}
	
	formelem.submit();
}

function ShowPopupUpdate(url, request, inputObj, parentid){
	var haveElem = false;
	request = unescape(request);
	requestArray = request.split("&");	
	for(i = 0 ; i < requestArray.length; i++){
		keyvalue = requestArray[i].split("=");
		if(keyvalue.length == 2){
			if(keyvalue[0] == "elem" || keyvalue[0] == "?elem"){
				helpid = keyvalue[1];
				haveElem = true;	
				break;
			}
		}
	}
	
	var updateid = InitPopup(parentid);
	
	if(!haveElem){
		str = "elem=" + updateid;
		if(request.indexOf('?') != -1)
			request += '&' + str;
		else
			request += '?' + str;
	
	}
	
	//var inputDivElem = inputObj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;		
	
		
	makeRequest(url, request);
	
}

/*function ShowPopupUpdate(url, request, inputElem){
	topposition = "300px";
	//popup
	var id = "popup_update";
	if (document.getElementById) { 
		divelem = document.getElementById(id);
		divelem.style.display = 'block'; 
		divelem.style.top = topposition;				 
	} else { 
		if (document.layers) { 
			document.id.display = 'block'; 	
			document.id.style.top = topposition;		 
		} else { 
			document.all.id.style.display = 'block'; 
			document.all.id.style.top = topposition;
		}
	}
	
	//error
	var id = "popup_error";
	if (document.getElementById) { 
		errorelem = document.getElementById(id);
		errorelem.style.top = topposition;				 
	} else { 
		if (document.layers) { 
			document.id.style.top = topposition;		 
		} else { 
			document.all.id.style.top = topposition;
		}
	}
	
	makeRequest(url, request);
}*/

function deleteEntry(element)
{
	rowValue = element.parentNode.parentNode.rowIndex;
	idKey = element.id.replace('Delete', '');
	document.getElementById('tobedeleted').value += document.getElementById('LengthId'+idKey).value + ";";
	removeRowFromTable(rowValue,'entriestable');
}

function addRowToTable(tableId)
{
  var tbl = document.getElementById(tableId);
  var lastRow = tbl.rows.length - 3;
  // if there's no header row in the table, then iteration = lastRow + 1
  var iteration = lastRow;
  var row = tbl.insertRow(lastRow + 1);
  
  // first cell - Carrier name text input
  var firstCell = row.insertCell(0);
  var el = document.createElement('input');
  el.type = 'text';
  el.name = 'CarrierName' + iteration;
  el.id = 'CarrierName' + iteration;
  el.size = 40;
  el.maxlength = 50;
  el.value = document.getElementById('NewCarrierName').value;
  firstCell.appendChild(el);
  
  //first cell hidden input containing the -1 as an id for new entries
  var hel2 = document.createElement('input');
  hel2.type = 'hidden';
  hel2.name = 'LengthId' + iteration;
  hel2.id = 'LengthId' + iteration;
  hel2.value = -1;
  firstCell.appendChild(hel2);
  
  // second cell - message type select input
  var secondCell = row.insertCell(1);
  var sel = document.createElement('select');
  sel.name = 'MessageType' + iteration;
  sel.id = 'MessageType' + iteration;
  sel.style.width = '100px';
  sel.options[0] = new Option('ALL', '0');
  sel.options[1] = new Option('SMS', '1');
  sel.options[2] = new Option('MMS', '2');
  sel.options[3] = new Option('VCard', '3');
  sel.options[4] = new Option('PCS', '4');
  sel.options[5] = new Option('Wap Push', '5');
  sel.options[6] = new Option('SMS Link', '6');
  sel.options[7] = new Option('Java Chat', '7');
  sel.options[document.getElementById('NewMessageType').value].selected = true;
  secondCell.appendChild(sel);
  
  // third cell - max length text input
  var thirdCell = row.insertCell(2);
  var el2 = document.createElement('input');
  el2.type = 'text';
  el2.name = 'MaxLength' + iteration;
  el2.id = 'MaxLength' + iteration;
  el2.size = 10;
  el2.maxlength = 10;
  el2.value = document.getElementById('NewMaxLength').value;
  thirdCell.appendChild(el2);
  
  // fourth cell - delete row button
  var fourthCell = row.insertCell(3);
  var el3 = document.createElement('img');
  el3.id = 'Delete' + iteration;
  el3.src = 'image/delete.gif';
  el3.onclick = function() {removeRowFromTable(this.parentNode.parentNode.rowIndex,tableId)};
  fourthCell.appendChild(el3);
  
  // select cell
  /*var cellRightSel = row.insertCell(2);
  var sel = document.createElement('select');
  sel.name = 'selRow' + iteration;
  sel.options[0] = new Option('text zero', 'value0');
  sel.options[1] = new Option('text one', 'value1');
  cellRightSel.appendChild(sel);*/
}

function removeRowFromTable(rowId, tableId)
{
  var tbl = document.getElementById(tableId);
  tbl.deleteRow(rowId);
}

