 function showError(txt)	{
	document.getElementById('processInfo').innerHTML +=txt+"<br>";	
    }
    
function XMLdata(name,d) {
    this.debug = false
    this.objName = name
    this.file = d
    this.doc = XmlDocument.create()
    this.complete = false
    this.loadtimeout = 0;
    this.LoadtimeLimit = 60;
    this.async = true
    this.parsedData = new Array()
    this.parseerror = false
    
    this.load = function() {
        this.doc.async = this.async
        this.doc.load(this.file)
        setTimeout(this.objName+'._loading()', 10);
    }
    
    this.showError = function (err) {
        //alert(err)
    }
    
    this._loading = function()	{
        this.parseerror = false;
        if ((this.doc.readyState == 'complete' || this.doc.readyState == 4) && !this.doc.childNodes.item(0)) {
            this.parseerror = true;
        } else if (this.doc.parseError) {
            if (this.doc.parseError.reason != '')
            this.parseerror = true;
        }
        
        if (!this.parseerror && this.loadtimeout < this.LoadtimeLimit)	{
            if ((this.doc.readyState != 'complete' && this.doc.readyState != 4)) {
                //if ((CountdownShow || debug) && loadtimeout == 0)
                if (this.debug) this.showError('Refreshing...');
                if (this.debug) this.showError(xmlDoc.readyState)
                this.loadtimeout += 0.1;
                setTimeout(this.objName+'._loading()', 100);
            } else {
                if (this.debug) this.showError('Refreshing...');
                this.parseData();
            }
        } else	{
            if (this.parseerror) {
                this.showError('Error connecting...');
            } else {
                this.showError('Time out..');
            }
            this.doc = null;
            this.complete = true;
            this.parsedData = null;
            //updatelock = false; // just to make sure
            //setTimeout('loadnext()', 2000);
        }
    }
    
    this.parseData = function()	{
        // dit gaat complex worden... fun fun fun :)
        /*
            try	{
                showError('')
                showError(this.doc.getElementsByTagName('NAAM').item(0).childNodes.length)
                showError(this.doc.getElementsByTagName('NAAM').item(0).childNodes.item(0).nodeValue);
            } catch (ex) {
             	alert(ex)
            };
        */
        this.complete = true
    }
    
    this.getDoc = function() {
        if (!this.complete) {
            setTimeout(this.objName+'.getDoc()', 100);
        }
        return this.doc
    }
}



	
//extenties = new Array('nl' , 'be' , 'cc' , 'net' , 'org' , 'com' , 'info' , 'biz' , 'nu' , 'as')
domeinNaam = new String()
domeinExt = "none"	
domeinen = new Array()

burl='/xmlresp.php?dom='+"%dom%"+'&ext='+"%ext%"+'&comp='+"%comp%"

function setBaseUrl(newBurl)
	{
	burl = 	newBurl;
	//alert(burl);
	}

function getBaseUrl(dom , ext , keuze)
	{
	t = burl;
	
	t2 = t.replace("-did-" , ext).replace("-keuze-" , keuze).replace("-dnaam-" , dom);
	//alert(dom+" , "+ext+" , "+keuze+" \n"+t2)
	return t2;	
	}

function getFileString(dom , ext , comp)
	{	
	return '/xmlresp.php?dom='+dom+'&ext='+ext+'&comp='+comp	
	}
	
function getDomeinInfo()
	{	
	domNaam = document.forms['inputForm'].name.value
	
	if (domNaam.length == 0)
		{
		alert('U heeft geen domein ingevuld')
		return;
		}
		
	puntCounter = 0;
	
	if (domNaam.indexOf('www.')>=0)
				domNaam = domNaam.substr(domNaam.indexOf('.')+1 , domNaam.length - domNaam.indexOf('.')-1)
				
				
	for (i=0 ; i < domNaam.length  ; i++)
		{
		if (domNaam.charAt(i) == '.')
			puntCounter++;
			
		}
	
	if (puntCounter >= 2)
		{
		alert('Vul een geldige domeinnaam in, bijv "domeinnaam.nl", of "domeinnaam"')	
		}
	else
		{
		if (domNaam.indexOf('.')>=0)
			{
			domeinNaam = domNaam.substr(0 , domNaam.lastIndexOf('.'))
			domeinExt = domNaam.substr(domNaam.lastIndexOf('.')+1 , 3)
			 	
			}
		else
			{
			domeinNaam = domNaam
			}
			
		re = /^[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]$/
		if (!domeinNaam.match(re))
			{
			alert(domeinNaam+' is geen geldige domein naam')				
			}
		else
			{
			domNaam = domeinNaam;
			goGatherData()
			}
		}
	return false;	
	}
	
function startFromNothing(domNaam)
	{
	document.forms['inputForm'].name.value = domNaam
	
	getDomeinInfo()			
	}
	
function goGatherData()
	{
	document.getElementById('extendenInfo').innerHTML = ""
	opmaak = new String()
	opmaak += '<tr> \
				<td class=content width=100>Domein</td>\
				<td class=content width=100>Beschikbaarheid</td>\
				<td class=content width=100></td>\
				<td class=content>Meer info</td>\
			</tr>'	
	domeinNaam
	for (aap in extenties)
		{	
		if(reversedExtAs[extenties[aap]] == 1 || domeinExt == extenties[aap])
		//showError(getFileString(domeinNaam , extenties[aap] , 0))		
			{
			domeinen[aap] = new XMLdata('domeinen['+aap+']' , getFileString(domeinNaam , extenties[aap] , 0))
			domeinen[aap].load()
			opmaak += '<tr>\
					<td class=content>'+domeinNaam+'.'+extenties[aap]+'</td>\
					<td class=content id=checkStuffAvail_'+extenties[aap]+'>even geduld a.u.b</td>\
					<td class=content id=checkStuffRegister_'+extenties[aap]+'>n/a</td>\
					<td class=content id=checkStuffComp_'+extenties[aap]+'>n/a</td>\
				</tr>'	
			}
		}	
	document.getElementById('response').innerHTML ='<table>'+opmaak+'</table>'
	
	goShowData()		
	}
	
compRespObj = null


function showResponse(ext)
	{
	document.getElementById('extendenInfo').innerHTML = "Loading"	
	compRespObj = new XMLdata('compRespObj' , getFileString(domeinNaam , ext , 1))
	compRespObj.async = false
	compRespObj.load()
	setTimeout('_showResponse()', 50);	
	}
	
function _showResponse()
	{
	if (!compRespObj.complete)
		{
		document.getElementById('extendenInfo').innerHTML = "Loading"	
		setTimeout('_showResponse()', 250);
		}
	else	
		document.getElementById('extendenInfo').innerHTML = "<pre>"+unescape(compRespObj.getDoc().getElementsByTagName('RESP').item(0).childNodes.item(0).nodeValue)+"</pre>"	
		
	}

doBreak = false;
function goShowData()
	{
	//showError('In Show')
	allComplete = true
	for (aap in domeinen)
		{
		//showError(extenties[aap]+' loaded: '+domeinen[aap].complete)
		if (!domeinen[aap].complete)
			{
			allComplete = false
			}
		else
			{
			if (domeinen[aap].getDoc())
				{		
				if  (domeinen[aap].getDoc().getElementsByTagName('VRIJ').item(0).childNodes.item(0))	
					{
					if (domeinen[aap].getDoc().getElementsByTagName('VRIJ').item(0).childNodes.item(0).nodeValue == 'yes')
						{
						document.getElementById('checkStuffAvail_'+extenties[aap]).innerHTML = "Beschikbaar!";	
						document.getElementById('checkStuffAvail_'+extenties[aap]).style.background = "#00CC33";
						tempUrl = getBaseUrl(domNaam , reversedExt[extenties[aap]] , 1);
						(document.getElementById('checkStuffRegister_'+extenties[aap])).innerHTML = '<a onclick="javascript:doBreak=true;document.location=\''+tempUrl+'\'" href="'+tempUrl+'">Registreren!</a>';
						}
					else
						{
						document.getElementById('checkStuffAvail_'+extenties[aap]).innerHTML = "Bezet!";
						document.getElementById('checkStuffAvail_'+extenties[aap]).style.background = "#FF3300";
						tempUrl = getBaseUrl(domNaam , reversedExt[extenties[aap]] , 2);
						document.getElementById('checkStuffRegister_'+extenties[aap]).innerHTML = '<a onclick="javascript:doBreak=true;document.location=\''+tempUrl+'\'" href="'+tempUrl+'">Verhuizen!</a>';
						}
					}
				else
					{
					tempUrl1 = getBaseUrl(domNaam , reversedExt[extenties[aap]] , 1);
					tempUrl2 = getBaseUrl(domNaam , reversedExt[extenties[aap]] , 2);
					document.getElementById('checkStuffRegister_'+extenties[aap]).innerHTML = '<a onclick="javascript:doBreak=true;document.location=\''+tempUrl1+'\'" href="'+tempUrl1+'">Registreren!</a>  <a onclick="javascript:doBreak=true;document.location=\''+tempUrl2+'\'" href="'+tempUrl2+'">Verhuizen!</a>';
					document.getElementById('checkStuffAvail_'+extenties[aap]).innerHTML = "Error of TimeOut";
								
						
					}
				
				//document.getElementById('checkStuffRegister_'+extenties[aap]).innerHTML = Math.round(10*parseFloat(domeinen[aap].getDoc().getElementsByTagName('TIJD').item(0).childNodes.item(0).nodeValue))/10
				}
			else
				document.getElementById('checkStuffAvail_'+extenties[aap]).innerHTML = "Error of TimeOut";	
			}
		}	
	
	if (!allComplete && !doBreak)
		setTimeout('goShowData()', 300);	
	else
		{
		for (aap in extenties)	
			if (domeinen[aap].getDoc()) document.getElementById('checkStuffComp_'+extenties[aap]).innerHTML = '<a href=javascript:showResponse("'+extenties[aap]+'")>Complete whois-response</a>'
				
		}
	}
	


/*
var testXML = new XMLdata('testXML' , './sample/be.xml')
//testXML.debug = true;
testXML.load()
*/
function TrafficUsageGrafiekje(maxGb)
	{
	this.maxGb = maxGb
	this.data = new Array()
	this.height = 200
	this.date = new Date()	
	
	this.addData = function(gb , datum)
		{
		this.data[this.data.length] = new Array(gb , datum)			
		}	
		
	
	
	this.writeHtml = function(blankImage , width)
		{
		var max = 0
		for (var i = 0; i < this.data.length ; i++)
			{
			max = this.data[i][0] < max ? max : this.data[i][0]
			}
		
		var multiplier = this.height / max
			
			
		var dag = this.date.getUTCDate()
		var maand = this.date.getUTCMonth()
		var dagen = 0
		for(var i = 26 ; i <= 32; i++)
			{
			this.date.setUTCDate(i)	
			//alert(maand+" == "+this.date.getUTCMonth())		
			if (maand != this.date.getUTCMonth())	
				{
				dagen = i-1
				break	
				}
			}	
		
		dagenGeweest = dag
		dagenTegaan = dagen - dag
		
		
		document.write('<table cellpadding=2 cellspacing=0 width='+width+'>')
		
		document.write('<tr>')
		for (var i = 0; i < this.data.length ; i++)
			{
			document.write('<td valign=bottom>'+this.data[i][0]+' GB ('+Math.ceil(this.data[i][0] / this.maxGb * 100)+'% van max)</td>')	
			}
		document.write('</tr>')
		document.write('<tr>')
		for (var i = 0; i < this.data.length ; i++)
			{
			document.write('<td valign=bottom><table cellpadding=2 cellspacing=0 width=100%><tr><td style=background:red><img src="'+blankImage+'" width=2 height='+(multiplier * this.data[i][0])+'></td></tr></table></td>')	
			}
		document.write('</tr>')	
		document.write('<tr>')	
		for (var i = 0; i < this.data.length ; i++)
			{
			document.write('<td valign=bottom>'+this.data[i][1]+'</td>')	
			}
		document.write('<tr>')	
		
		document.write('<tr>')
		
		document.write('<td valign=bottom colspan='+this.data.length+'>Met nog '+dagenTegaan+' van de '+dagen+' dagen tegaan deze maand zal uw dataverbruik waarschijnlijk <b>'+Math.ceil(this.data[(this.data.length - 1)][0] / dagenGeweest * dagen * 100)/100+' GB</b> zijn</td>')	
			
		document.write('</tr>')
			
		document.write('</table>')
		}	
		
	}
	
	

 
