// JavaScript Document


 function parseNameserver(s){
 	var i1=0;
	var i2=0;
	var ret=s;
	i1 = s.indexOf("("); 
	i2 = s.indexOf(")");
	if (i2>i1){
		ret = s.substring(0,i1-1);
	}
	return ret;	
 }
 
 function parseIp(s){
 	var i1=0;
	var i2=0;
	var ret="";
	i1 = s.indexOf("(");
	i2 = s.indexOf(")");
	if (i2>i1){
		ret = s.substring(i1+1,i2);
	}
	return ret;	

 }
 
 function stripSpaces(s){
		while(s.indexOf(' ')>=0){
			s = s.replace(' ','');
		}
		
 return s;
 }

function trim(s){
	if (s==null) return s;
	if (s.length==0) return s;
	var r = rightTrim(s);
	r = leftTrim(r);
	return r;
}
function leftTrim(s){
	if (s==null) return s;
	if (s.length==0) return s;
	var r = rev(s);
	r = rightTrim(r);
	r = rev(r);
	return r;
}
function rev(s){
	if (s==null) return s;
	if (s.length==0) return s;

	var text=s;
	var backwards="";
	for(count=text.length; count >= 0; count--)
	backwards+=text.substring(count,count-1);
	return backwards;

}

function rightTrim(s){
 	if (s==null) return s;
	if (s.length==0) return s;

	var r = rTrim(s);
	var t = s;
	while(r!=t){
		t = r;
		r = rTrim(t);
	}
	return r;
}

 function rTrim(s){
 	if (s==null) return s;
	if (s.length==0) return s;
	if (s.substring(s.length-1,	s.length)== " ")
		s = s.substring(0,s.length-1);	
	 return s;
 }
 
 
  function isValidIP(ip) {
  	return validateIP(ip)
  }
  function validateIP(what) {
 var validChars = '.0123456789';

	 var validChars = '.0123456789';

	//what=what.trim();
	while(what.indexOf(' ')>=0){
		what = what.replace(' ','');
	}
//	if (what=="") return true;
	
	
    if (!what)
        return false;
	
    dots = 0;

    for (var i = 0; i < what.length; i++) {
       var chr = what.substring(i,i+1);
       if (validChars.indexOf(chr) == -1)
           return false;
       if (chr == '.') {
           dots++;
           eval('dot' + dots + ' = ' + i);
       }
    }

    if (dots != 3)
        return false;
    
    if (what.substring(0,1) == '.' || what.substring(what.length,what.length+1) == '.')
        return false;

    ip1 = what.substring(0,dot1);
    if (!ip1 || ip1 >255)
        return false;
    ip2 = what.substring(dot1+1,dot2);
    if (!ip2 || ip2 >255)
        return false;
    ip3 = what.substring(dot2+1,dot3);
    if (!ip3 || ip3 >255)
        return false;
    ip4 = what.substring(dot3+1,what.length+1);
    if (!ip4 || ip4 >255)
        return false;

    if (ip1 == 0 && ip2 == 0 && ip3 == 0 && ip4 == 0)
        return false;
    if (ip1 == 10 )
        return false;
    if (ip1 == 127 && ip2 == 0 && ip3 == 0 && ip4 == 1)
        return false;
    if (ip1 == 192 && ip2 == 168 )
        return false;
    if (ip1 == 172 && ip2 >= 16 && ip2 <= 31 )
        return false;
		
    return true;
}

function IsValidHost(s){

	var isValid = true;
//	alert("IsValidHost " + s);
	var arr = s.split(".");
	arr= arr.reverse();		
//	alert("IsValidHost " + s +  " in " + arr.length);

	if (arr.length<2) {
		return false;
	}
	var i = 0;

	for (i=0;i<arr.length && isValid;i++){
		var h = arr[i];
		
		if (i==0) 
			isValid = IsValidTldPart(h);
		else if (i==1) 
			isValid = IsValidDomainPart(h);
		else 
			isValid = IsValidSubDomainPart(h);
	}

	return isValid;
}
function IsValidTldPart(s){
//	alert("IsValidTldPart " + s);

	if (s=="") return false;
	if (s.length<2 || s.length>5 || !IsAlpha(s)) return false;
	return true;
}
function IsValidDomainPart(s){
//	alert("IsValidDomainPart " + s);
//	alert(IsAlphaNumeric(s));
	if (s=="") return false;
	if (s.length<2 || s.length>63 || !IsAlphaNumeric(s)) return false;
	if (s.charAt(0)=='-') return false;
	if (s.charAt(s.length-1)=='-') return false;
	if (s.length>=3){
		if (s.charAt(2)=='-' && s.charAt(3)=='-') return false;
	}
	return true;
}
function IsValidSubDomainPart(s){
//	alert("IsValidSubDomainPart " + s);
	if (s=="") return false;
	if (s.length<1 || s.length>63 || !IsAlphaNumeric(s)) return false;
	if (s.charAt(0)=='-') return false; 
	if (s.charAt(s.length-1)=='-') return false;
	return true;
}

function IsAlphaNumeric(sText){
//alert("IsAlphaNumeric " + sText);
	return (hasValidChars(sText,"-abcdefghijklmnopqrstuvwxyz0123456789") );
}



function isValidEmail(s){
var isValid = false;
if (s==null) return false;
if (s.length<7) return false;
if (s.charAt(0)=='-') return false;
if (s.charAt(0)=='_') return false;

var arr = s.split("@");
var part1 = "";
var part2 = "";
var i = 0;

if (arr.length==2)
	{
		part1 = arr[0];
		part2 = arr[1];
		if (IsValidHost(part2)){
			var arr2 = part1.split(".");
			var ok = true;
		
			if (arr2.length==0) ok=false;
			for(i=0;i<arr2.length && ok ;i++){
				ok = isValidEmailPart(arr2[i]);
			}
			isValid = ok;
		}

	}//else alert( arr.length);
	
return isValid;
}

function isValidEmailForwardingFrom(s){
var isValid = false;
if (s==null) return false;
if (s.length<7) return false;
if (s.charAt(0)=='-') return false;
if (s.charAt(0)=='_') return false;

var arr = s.split("@");
var part1 = "";
var part2 = "";
var i = 0;

if (arr.length==2)
	{
		part1 = arr[0];
		part2 = arr[1];
		if (IsValidHost(part2)){
			var arr2 = part1.split(".");
			var ok = true;
		
			if (arr2.length==0) ok=false;
			if (arr2.length==1){
				if (arr[0]=="*" || isValidEmailPart(arr[0])) isValid = true;
			} else {
				for(i=0;i<arr2.length && ok ;i++){
					ok = isValidEmailPart(arr2[i]);
				}
				isValid = ok;
			}
		}

	}//else alert( arr.length);
	
return isValid;
}

function isValidEmailPart(s){
	if (s == null) return false;
	if (s.length==0 || s.length>63 ) return false;
	if (s.charAt(0)=='-') return false;
	if (s.charAt(0)=='_') return false;

	return (hasValidChars(s,"-_abcdefghijklmnopqrstuvwxyz0123456789") );

}

function hasValidChars(sText, ValidChars)
{
	sText = sText.toLowerCase();
   var isValid=true;
   var Char;

   for (i = 0; i < sText.length && isValid == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         isValid = false;
         }
      }
   return isValid;
   }

function IsAlpha(sText)
{
	sText = sText.toLowerCase();
   return  hasValidChars(sText,"-abcdefghijklmnopqrstuvwxyz");
   }

function IsNumeric(sText)
{
	sText = sText.toLowerCase();
   return  hasValidChars(sText,"012345678");
 }
   

 function isGlueRecordrequired(domain, ns){
// alert('Is Glue required? ' + domain + ' - ' + ns);
 if (domain==ns) 
 	return true;
 else if (ns.indexOf("." + domain) > 0) 
 	return true;
 else 
 	return false;
 }
 
 function isValidUrl(url){
 	var b = false;
	var pre =url;
//	alert('validate URL: ' + url);
	
	var i = url.indexOf("/");
	if (i<0) i = url.indexOf("?");
	if (i<0) i = url.indexOf(":"); 
	if (i>=0){
		pre = url.substring(0,i);

	}
//		alert('pre: ' + pre);
	if (IsValidHost(pre))
		b = true;
	else 	if (isValidIP(pre))
		b = true;
	else
		b = false;
		
	return b;
 }
 

 function isValidFirstname(s){
     if(s.length<2) return false;
     if(s.length>30) return false;
	 return  hasValidChars(s,"-abcdefghijklmnopqrstuvwxyz0123456789() .,'");
 }
 function isValidLastname(s){
     if(s.length<2) return false;
     if(s.length>50) return false;
	 return  hasValidChars(s,"-abcdefghijklmnopqrstuvwxyz0123456789() .,'");
 }
 function isValidOrganisation(s){
     if(s.length==0) return true;
 
     if(s.length<2) return false;
     if(s.length>100) return false;

	 return  hasValidChars(s,"-abcdefghijklmnopqrstuvwxyz0123456789() .,'");
 }
 function isValidStreet(s,allowempty){
 	if (allowempty && s.length==0) return true;
     if(s.length<2) return false;
     if(s.length>255) return false;
	 return  hasValidChars(s,"-abcdefghijklmnopqrstuvwxyz() .0123456789,'");
 }

 function isValidZip(s){
     if(s.length<4) return false;
     if(s.length>10) return false;
	 return  hasValidChars(s,"abcdefghijklmnopqrstuvwxyz0123456789 ");
 }

 function isValidCity(s){
     if(s.length<2) return false;
     if(s.length>100) return false;
	 return  hasValidChars(s,"abcdefghijklmnopqrstuvwxyz0123456789 -'().,");
 }

 function isValidVAT(s){
     if(s.length==0) return true;
     if(s.length>20) return false;
	 return  hasValidChars(s,"abcdefghijklmnopqrstuvwxyz0123456789. ");
 }

 
function isValidTel(s,allowempty){     
 	if (allowempty && s.length==0) 	return true;

	if(s.length<2) return false;
     if(s.length>255) return false;
	 arr = s.split(".");
	 if (arr.length != 2) return false;
	 if(arr[0].length <2) return false;
	 if(arr[0].length >4) return false;
	 
	 if(arr[0].substring(0,1)!="+") return false;
	 if(!hasValidChars(arr[0].substring(1),"0123456789")) return false;

	 if(arr[1].length <8) return false;
	 if(arr[1].length >13) return false;
	 return  hasValidChars(arr[1],"0123456789");
 }
 
 