var lastSelText = '';

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
} 

function displayJumpMenu(targ,selObj,restore,waitmsg){
  try {
    if (waitmsg) callrecs.innerHTML = '<div class="pleasewait">Please Wait<br /><img src="images/wait.gif" alt="wait" /></div>';
  } catch(err) {
  }
  MM_jumpMenu(targ,selObj,restore);	
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

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_jumpMenuGo(selName,targ,restore){ //v3.0
  var selObj = MM_findObj(selName); 
  if (selObj) MM_jumpMenu(targ,selObj,restore);
}

function changeBox(cbox, option) {
  box = eval(cbox);
  if (!option || !box.checked) {
    box.checked = !box.checked;
  }
}

function validateEmpty(fld, msg) {
    var error = "";  
    if (fld.value.length == 0) {
        fld.style.background = 'Yellow';
		if (msg=="") {
          error = "The required field has not been filled in.<br /><br />";
		} else {
		  error = msg;	 
		}
    } else {
        fld.style.background = 'White';
    }
    return error;   
}

function validatePassword(fld, fld2) {
    var error = "";
    var illegalChars = /[\W_]/; // allow only letters and numbers 
 
	if (fld.value != fld2.value) {
		fld.style.background = 'Yellow';
		fld2.style.background = 'Yellow';
		error = "New password and confirm password do not match.<br /><br />";
	} else if (fld.value == "") {
        fld.style.background = 'Yellow';
		fld2.style.background = 'Yellow';
        error = "You didn't enter a password.";
    } else if ((fld.value.length < 7) || (fld.value.length > 15)) {
        error = "The password must be between 7 and 15 characters.<br /><br />";
		fld2.style.background = 'Yellow';
        fld.style.background = 'Yellow';
    } else if ((fld.value.search(/[0-9]+/)==-1) || (fld.value.search(/[a-zA-Z]+/)==-1)) {
        error = "The password must contain at least one letter and one number.<br /><br />";
		fld2.style.background = 'Yellow';
        fld.style.background = 'Yellow';
    } else if (illegalChars.test(fld.value)) {
        error = "The password contains illegal characters.<br /><br />";
		fld2.style.background = 'Yellow';
        fld.style.background = 'Yellow';
    } else {
        fld.style.background = 'White';
		fld2.style.background = 'White';
    }
   return error;
}   

function validateEmail(fld, blankok) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
    
    if (!(blankok) && (fld.value == "")) {
        fld.style.background = 'Yellow';
        error = "An email address must be entered.<br /><br />";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = 'Yellow';
        error = "Please enter a valid email address.<br /><br />";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = 'Yellow';
        error = "The email address contains illegal characters.<br /><br />";
    } else {
        fld.style.background = 'White';
    }
    return error;
}

function submitClick(selObj, form) {
  if (selObj.type=='text') {
	if (selObj.value=='') {
      form.action = form.action+'?'+selObj.name+'=*';
	  selObj.value = '*';
	} else {
      form.action = form.action+'?'+selObj.name+'='+selObj.value;
	}
  } else {
    form.action = form.action+'?'+selObj.name+'='+selObj.checked;
  }
  form.submit();
}

function removeFilter(selObj, form) {
  MM_findObj(selObj).value = '';;
  submitClick2(selObj, form);
}


function submitClick2(selName, formName) {
  var selObj = MM_findObj(selName);
  var form = MM_findObj(formName);  
  if (selObj.type=='text') {
	if (selObj.value=='') {
      form.action = form.action+'?'+selObj.name+'=*';
	  selObj.value = '*';
	} else {
      form.action = form.action+'?'+selObj.name+'='+selObj.value;
	}
  } else {
    form.action = form.action+'?'+selObj.name+'='+selObj.checked;
  }
  form.submit();
}

function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}

var showingContact = false;
var contactList = new Array();

function findPos(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}



function showContact(Obj, contactid) {

	showingContact = true;
	var Img = $(Obj);
	var posn = findPos(Img);
	var posx = posn[0];
	var posy = posn[1];
	var popu = $('contactpop');
	var popw = $('contactwait');
	popu.style.left =  (posx + 24) +'px';
	popw.style.left =  posx+'px';
	
	if ((contactList['I'+contactid]!='') && (contactList['I'+contactid]!=undefined)) {
		popu.setAttribute("class", "contactcard");
		popu.style.top = posy-20+'px';
		popu.style.width = 'auto';
		popu.style.height = 'auto';
		popu.innerHTML = contactList['I'+contactid];
		if (showingContact) popu.style.visibility = "visible";		
		return false;	
	}


    popu.style.visibility = "hidden";
	popw.style.top = posy+'px';
	popw.style.visibility = "visible";	

    url = 'cid='+contactid;
	var curpagelocation = location.href;
	curpagelocation = curpagelocation.substring(0, curpagelocation.lastIndexOf('/'));
	new Ajax.Request(curpagelocation+'/ajaxenable.php?'+url,
	{
		method:'get',
		onSuccess: function(transport){
		var response = transport.responseText || "";
		popw.style.visibility = "hidden";	
		popu.style.visibility = "hidden";	
		//popu.setAttribute("class", "contactcard");
        if (response=="") {
		} else if (response=="logout") {
		  window.location.reload();
		} else if (response=="error") {
			popu.style.width = 'auto';
			popu.style.height = 'auto';
			popu.innerHTML = 'Error in obtaining contact details';
	        if (showingContact) popu.style.visibility = "visible";	
		} else {
			popu.style.top = posy-20+'px';
			popu.style.width = 'auto';
			popu.style.height = 'auto';
			popu.innerHTML = response;
			contactList['I'+contactid] = response;
	    	if (showingContact) popu.style.visibility = "visible";	
		}
		}
	});
	return false;
}

function hideContact(contactid) {
	var popu = $('contactpop');
	popu.style.visibility = "hidden";
	showingContact = false;
	return false;
}

function verifyIP (IPvalue) {
	errorString = "";
	theName = "IPaddress";
	
	var ipPattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
	var ipArray = IPvalue.match(ipPattern);
	
	if (ipArray == null)
		errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.';
	else {
		for (i = 0; i < 4; i++) {
			thisSegment = ipArray[i];
			if (thisSegment > 255) {
				errorString = errorString + theName + ': '+IPvalue+' is not a valid IP address.';
				i = 4;
			}
			if ((i == 0) && (thisSegment > 255)) {
				errorString = errorString + theName + ': '+IPvalue+' is a special IP address and cannot be used here.';
				i = 4;
			}
		 }
	}
	extensionLength = 3;
	return errorString;
}

function clickShowISP(id, res) {
var selObj = $(id);
var destObj = $(res);
destObj.innerHTML = "Please Wait";
var url = 'getisp='+selObj.value;
var errormsg = verifyIP(selObj.value);
	if (errormsg=='') {
		var curpagelocation = location.href;
		curpagelocation = curpagelocation.substring(0, curpagelocation.lastIndexOf('/'));
		new Ajax.Request(curpagelocation+'/ajaxenable.php?'+url,
		{
			method:'get',
			onSuccess: function(transport){
			var response = transport.responseText || "";
			if (response=="") {
			} else if (response=="logout") {
			  window.location.reload();
			} else if (response=="error") {
			  destObj.innerHTML = "error";
			} else {
			  destObj.innerHTML = response;
			}
			}
		});
	} else {
		destObj.innerHTML = errormsg;	
	}
}

function clickSwitchAbled(id, menuid, titl, idtag) {
var selObj = $(idtag+id);
var url = '';
var title = '';
var pic = selObj.src;
	if (idtag=='I') {
		if (pic.search('noentry') == -1) {
		  url = 'disable'+menuid+'='+id;
		  title = 'Enable '+titl;
		} else {
		  url = 'enable'+menuid+'='+id;
		  title = 'Disable '+titl;
		}	
	} else {
		if (pic.search('nowl') == -1) {
		  url = 'disable'+menuid+'='+id;
		  title = 'Enable '+titl;
		} else {
		  url = 'enable'+menuid+'='+id;
		  title = 'Disable '+titl;
		}	
	}
    url += '&id='+randomString();
	selObj.src = 'images/wait16.gif';
	var curpagelocation = location.href;
	curpagelocation = curpagelocation.substring(0, curpagelocation.lastIndexOf('/'));
	new Ajax.Request(curpagelocation+'/ajaxenable.php?'+url,
	{
		method:'get',
		onSuccess: function(transport){
		var response = transport.responseText || "";
		var selObj = $(idtag+id);
		if (response=="") {
		} else if (response=="logout") {
		  window.location.reload();
		} else if (response=="error") {
		  selObj.src = "images/error.png";
		  selObj.title = 'Error in update';
		  selObj.alt = 'Error in update'; 
		} else {
		  selObj.src = response;
		  selObj.title = title;
		  selObj.alt = title; 
		}
		}
	});
}

function clickSwitchShowCalls(id, hideid) {
var selObj = $(id);
var selHide = $(hideid);
var html = selObj.innerHTML;
var showC = '';
var url = '';
    if (html.indexOf('>Show ')>0) {
		html = html.replace(">Show ", ">Hide ");
		selHide.show();
		showC = 'y';
	} else {
		html = html.replace(">Hide ", ">Show ");
		selHide.hide();
		showC = 'n';
	}
	selObj.innerHTML = html;
    url = 'showcalls='+showC;
	url += '&id='+randomString();
	var curpagelocation = location.href;
	curpagelocation = curpagelocation.substring(0, curpagelocation.lastIndexOf('/'));
	new Ajax.Request(curpagelocation+'/ajaxenable.php?'+url,
	{
		method:'get',
		onSuccess: 
			function(transport){
		    var response = transport.responseText || "";
			if (response=="") {
			} else if (response=="logout") {
		  		window.location.reload();
			} else if (response=="error") {
			}}
	});
}

function selectKey(obj, selite, stype) {
	var txtb = $(obj);
	var selI = $(selite);
	if (stype=='s') {
		$('move').disabled = (!(trim(txtb.value).length==10));
	}
	if ((txtb.value.length < 2) || (lastSelText==txtb.value)) {
		if (txtb.value.length < 2) selI.style.visibility = "hidden";
	} else {
		var posn = findPos(txtb);
		var posx = posn[0];
		var posy = posn[1];
		selI.style.left =  posx+'px';
		selI.style.top =  (posy+24)+'px';
        lastSelText = txtb.value; 
        selI.style.visibility = "visible";
		var fnd = escape(txtb.value);
		var url = stype+'select='+fnd;
		url += '&textb='+txtb.id;
		url += '&popup='+selI.id;
		url += '&id='+randomString();
		var curpagelocation = location.href;
		curpagelocation = curpagelocation.substring(0, curpagelocation.lastIndexOf('/'));
		new Ajax.Request(curpagelocation+'/ajaxenable.php?'+url,
		{
			method:'get',
			onSuccess: 
				function(transport){
				var response = transport.responseText || "";
				if (response=="logout") {
					window.location.reload();
				} else if (response=="error") {
				} else {
					//alert(response);
					selI.innerHTML = response;
				}}
		});

	}
}

function selHover (id) {
	$(id).style.background='#ddffff';
}

function selHovout (id) {
	$(id).style.background ='#fff';
}

function selSiteClick (obj, txtbx, popup) {
	$(popup).style.visibility = "hidden";
	$(txtbx).value = html_entity_decode($(obj).innerHTML.stripTags()).substring(0,10);
	lastSelText = '';
	submitClick2('sitefilter', 'sitefilterform');
}

function html_entity_decode(str)
{
//    try
//	{
		var  tarea=document.createElement('textarea');
		tarea.innerHTML = str; return tarea.value;
		tarea.parentNode.removeChild(tarea);
//	}
//	catch(e)
//	{
		//for IE add <div id="htmlconverter" style="display:none;"></div> to the page
//		document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
//		var content = document.getElementById("innerConverter").value;
//		document.getElementById("htmlconverter").innerHTML = "";
//		return content;
//	}
}
