if (typeof actionAttacher == 'undefined') {
    var actionAttacher = pDomApi.getActionAttacher();
}

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'toggleCompany', 'change', function() {
		alert('clicked');
		disableCompany(this, 'formData-bedrijf');
	}
));

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'togglePopular', 'click', function() {
		toggleSelected(this, 'topTlds');
	}
));

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'toggleEuropa', 'click', function() {
		toggleSelected(this, 'Europa');
	}
));

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'toggleAmerika', 'click', function() {
		toggleSelected(this, 'Amerika');
	}
));

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'toggleAzie', 'click', function() {
		toggleSelected(this, 'Azie');
	}
));

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'toggleOceanie', 'click', function() {
		toggleSelected(this, 'Oceanie');
	}
));

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'toggleAfrika', 'click', function() {
		toggleSelected(this, 'Afrika');
	}
));

actionAttacher.addTagEvent(new PrezentDomApi.TagEvent(
	'input', 'toggleOnafhankelijk', 'click', function() {
		toggleSelected(this, 'Onafhankelijk');
	}
));

function toggleSelected(checkbox, parent) {
	var checkboxes = $("." + parent + ' input.radioBox');

	for (var j = 0; j < checkboxes.length; j++) {
		checkboxes[j].checked = checkbox.checked;
		toggleMatchingTldCheckboxes(checkboxes[j].value, checkboxes[j].checked);
	}

}

pDomApi.addEvent(window, 'domload', function() {
	try{
		var jqueryIsLoaded = jQuery;
		jQueryIsLoaded = true;
	} catch(err) {
		var jQueryIsLoaded = false;
	}

});

function toggleMatchingTldCheckboxes(value, checked) {
	$('input.radioBox[value="' + value + '"]').attr('checked', checked);
}



function getElement(formId,key) {
        var children = document.getElementById(formId);
        for( var i = 0; i < children.length; i++ ) {
			if ( children[i].nodeName == 'INPUT' && children[i].name == key ) {
				return children[i];
			}
		}
        return true;
}


function _setElement(element, key, value) {
        var children = element.childNodes;
        for (var i = 0; i < children.length; i++ ) {
                if (children[i].childNodes.length > 0 ) {
                    if (_setElement(children[i], key, value) == false) {
                    	return false;
                    }
                }
                if (children[i].nodeName == 'INPUT' && children[i].name == key ) {
                	children[i].value = value;
                	return false;
                }
        }
        return true;
}

function setForm() {
        myForm = getElement(arguments[0]);
        if (!myForm) {
                alert("Form '"+arguments[0]+"' not found by ID");
        }

        for( var i = 1; i < arguments.length; i+=2 ) {
                _setElement(myForm,arguments[i],arguments[i+1]);
        }
        return false;
}

function setFormAction(formId, newAction) {
		var myForm = document.forms[formId];
		myForm.action = newAction;
		return true;
}


function submitForm(formId) {
        var myForm = document.getElementById(formId);
        myForm.submit();
        return false;
}

function setFieldValue(formId, key, value) {
         var myForm = document.getElementById(formId);
         return _setElement(myForm,key,value);
}
/*
function submitForm(formId) {
         var myForm = document.getElementById(formId);
         myForm.submit();
         return false;
}
*/

function jumpDomain(domain) {
	setFieldValue('domainoverview', 'domain', domain);
	setFieldValue('domainoverview', '_submodule', 'domainDisplay');
	setFieldValue('domainoverview', '_action', 'init');
	return submitForm('domainoverview');
}

function jumpInvoice(invoice, payed) {
	setFieldValue('domainoverview', 'domain', invoice);
	setFieldValue('domainoverview', '_submodule', 'showFactuur');
	setFieldValue('domainoverview', '_action', 'init');
	setFieldValue('domainoverview', 'val', payed);
	return submitForm('domainoverview');
}

function doLogout() {
	setFieldValue('domainoverview', 'logout', 'logout');
	return submitForm('domainoverview');
}

function addNSRow() {
	var obj_table = document.getElementById('nameserver');
	var lastRow = obj_table.rows.length;
	var new_row = obj_table.insertRow(-1);
	var cell1 = new_row.insertCell(-1);
	var cell2 = new_row.insertCell(-1);

	cell1.innerHTML = '<label class="description">Secundaire nameserver:</label>';
	cell2.innerHTML = '<input type="text" id="ns-'+lastRow+'" name="ns['+lastRow+']">';
	cell2.className = "userInput";
	//alert(obj_table.rows.length);
}

function checkServer(domainString) {
	// split domains
	var domains = domainString.split('[]');

	// get nameservers
	var obj_table = document.getElementById('nameserver');
	var lastRow = obj_table.rows.length-1;
	var nameServers = new Array();
	var i = 0;
	var Baseurl = '';
	while(lastRow > 0) {
		var test = document.getElementById('ns-'+lastRow);
		Baseurl += 'ns['+(lastRow-1)+']='+test.value+'&';
		lastRow--;
		i++;
	}
	var objOutputTable = document.getElementById('nameserverOutput');
	// leegjoppen tabel
	var lastRow = objOutputTable.rows.length;
	while(lastRow > 0) {
		objOutputTable.deleteRow(-1);
		lastRow--;
	}
	// loading image
	var lastRow = objOutputTable.rows.length;
	var new_row = objOutputTable.insertRow(-1);
	var headercell1 = new_row.insertCell(-1);
	var headercell2 = new_row.insertCell(-1);
	headercell1.innerHTML = '';
	headercell2.innerHTML = '<img border="0" alt="" src="/images/load.gif"/> Bezig met controle...';
	headercell1.className = "description";
	headercell2.className = "error";
	var check = true;
	var thisTime = new Date();
	var ms = thisTime.getTime();

	for(i=0; i<domains.length; i++) {
		new Ajax.Request('/nameserverCheck.php?'+Baseurl+'domain='+domains[i]+'&t='+ms, {
  		method:'get',
    		onSuccess: function(transport){
      			var response = transport.responseText || "no response text";
     			splitResponse = response.split('*');
     			var lastRow = objOutputTable.rows.length;
				var new_row = objOutputTable.insertRow(-1);
				var cell1 = new_row.insertCell(-1);
				var cell2 = new_row.insertCell(-1);
     			if(splitResponse[0] == "error") {
	     			check = false;
					cell1.innerHTML = splitResponse[2]+':';
					cell2.innerHTML = '<span class="bezet"><img width="14" height="14" border="0" alt="" src="/images/domainRequest/error.gif"/>'+splitResponse[1]+'</span>';
					cell1.className = "description";
					cell2.className = "error";
					if(i == domains.length) {
						// laatste
						headercell2.innerHTML = '<b>Uw servers voldoen niet aan de eisen. Registratie niet mogelijk!</b>';
					}
     			} else {
     				cell1.innerHTML = splitResponse[2]+':';
					cell2.innerHTML = '<span class="vrij">OK.</span>';
					cell1.className = "description";
					cell2.className = "error";
					if(i == domains.length) {
						// laatste
						if(check) {
							headercell2.innerHTML = '<b>Uw servers voldoen aan de eisen.</b>';
							var button = document.getElementById('button');
							button.innerHTML = "<input type=\"submit\" class=\"buttonSubmit\" value=\"Opslaan >>\" onClick=\'JavaScript:setFieldValue(\"domainForm\", \"view\", \"display_naamEnAdresGegevens\"); setFieldValue(\"domainForm\", \"_action\", \"validate_nameservers\"); submitForm(\"domainForm\"); return false;\'>";
							// en submitten maar he
							setFieldValue("domainForm", "view", "display_naamEnAdresGegevens");
							setFieldValue("domainForm", "_action", "validate_nameservers");
							submitForm("domainForm");
						} else {
							headercell2.innerHTML = '<b>Uw servers voldoen niet aan de eisen. Registratie niet mogelijk!</b>';
						}

					}
     			}
    		},
    		onFailure: function(){ alert('Something went wrong...') }
  		});
	}
}

function deleteNSRow() {
	var obj_table = document.getElementById('nameserver');
	var lastRow = obj_table.rows.length;
 	if (lastRow > 3) {
 		obj_table.deleteRow(lastRow - 1);
 	} else {
 		alert('Minimaal 2 nameservers vereist!');
 	}
}

function disableBedrijf(idcheck, idtext) {
	var obj_text = document.getElementById(idtext);
	var obj_check = document.getElementById(idcheck);
	obj_text.disabled = obj_check.checked;
	//alert(obj_text.disabled);
}

function disableCompany(e, id) {
	var obj_text = document.getElementById(id);
	obj_text.disabled = e.checked;
}

/*
 * Javascript code for the DNS editor
 * $Id: formActions.js,v 1.6 2008-12-01 11:15:05 apex Exp $
 */

/* preload buttons */
img1 = new Image();
img1.src = '/images/icons/arrowOn.gif';
img2 = new Image();
img2.src = '/images/icons/arrowOff.gif';

/* Get unique id for reference later */
function getUniqueID() {
	var chars = "abcdefghijklmnopqrstuvwxyz";
	var id = '';

	for (var i=0; i<10; i++) {
		id = id+chars.charAt(Math.floor(Math.random()*26));
	}

	return id;
}

/* Add a new nameserver */
function addNameserver(level) {
	var id;

	nsTable = document.getElementById('ns_view_table');

	// create new row
	row = document.createElement('tr');
	id = 'ns_'+getUniqueID();
	row.id = id;

	var cellTTL = document.createElement('td');
	cellTTL.innerHTML = getTTLElement(id);

	var cellType = document.createElement('td');
	cellType.innerHTML = 'NS'+getIdElement(id)+getTypeElement(id,'NS');

	var cellData = document.createElement('td');
	cellData.innerHTML = getDataElement(id);

	var cellRemove = document.createElement('td');
	cellRemove.innerHTML = getRemoveJS(id);

	if (level >= 80) {
		row.appendChild(cellTTL);
	}
	row.appendChild(cellType);
	row.appendChild(cellData);
	row.appendChild(cellRemove);

	nsTable.appendChild(row);
}

/* Add a new mailserver */
function addMXServer(level) {
	var id;

	nsTable = document.getElementById('mx_view_table');

	// create new row
	row = document.createElement('tr');
	id = 'ns_'+getUniqueID();
	row.id = id;

	var cellTTL = document.createElement('td');
	cellTTL.innerHTML = getTTLElement(id);

	var cellHost = document.createElement('td');
	if (level >= 60) {
		cellHost.innerHTML = getHostElement(id);
	} else {
		cellHost.innerHTML = '<input type="hidden" name="host["'+id+']" value="@">';
	}

	var cellPrio = document.createElement('td');
	cellPrio.innerHTML = getMXPrioElement(id);

	var cellType = document.createElement('td');
	cellType.innerHTML = 'MX'+getIdElement(id)+getTypeElement(id,'MX');

	var cellData = document.createElement('td');
	cellData.innerHTML = getDataElement(id);

	var cellRemove = document.createElement('td');
	cellRemove.innerHTML = getRemoveJS(id);

	if (level >= 80) {
		row.appendChild(cellTTL);
	}
	row.appendChild(cellHost);
	row.appendChild(cellPrio);
	row.appendChild(cellType);
	row.appendChild(cellData);
	row.appendChild(cellRemove);

	nsTable.appendChild(row);
}

/* Add a new host in DNS profile */
function addHostDNSProfile() {
	var id;

	nsTable = document.getElementById('dns_view_table');

	// create new row
	row = document.createElement('tr');
	id = 'dns_'+getUniqueID();
	row.id = id;

	var cellPrio = document.createElement('td');
	cellPrio.innerHTML = getMXPrioElement(id);

	var cellType = document.createElement('td');
	cellType.innerHTML = getTypeSelectNS(id)+getIdElement(id);

	var cellHost = document.createElement('td');
	cellHost.innerHTML = getHostElement(id);

	var cellData = document.createElement('td');
	cellData.innerHTML = getDataElement(id);

	var cellRemove = document.createElement('td');
	cellRemove.innerHTML = getRemoveJS(id);

	row.appendChild(cellPrio);
	row.appendChild(cellType);
	row.appendChild(cellHost);
	row.appendChild(cellData);
	row.appendChild(cellRemove);

	nsTable.appendChild(row);
}

/* Add a new host */
function addRRHost(level) {
	var id;

	nsTable = document.getElementById('rr_view_table');

	// create new row
	row = document.createElement('tr');
	id = 'rr_'+getUniqueID();
	row.id = id;

	var cellTTL = document.createElement('td');
	cellTTL.innerHTML = getTTLElement(id);

	var cellType = document.createElement('td');
	var innerHtml = getTypeSelect(id);
	cellType.innerHTML = getTypeSelect(id)+getIdElement(id);

	var cellHost = document.createElement('td');
	cellHost.innerHTML = getHostElement(id);

	var cellData = document.createElement('td');
	cellData.innerHTML = getDataElement(id);

	var cellRemove = document.createElement('td');
	cellRemove.innerHTML = getRemoveJS(id);

	if (level >= 80) {
		row.appendChild(cellTTL);
	}
	row.appendChild(cellType);
	row.appendChild(cellHost);
	row.appendChild(cellData);
	row.appendChild(cellRemove);
	nsTable.appendChild(row);
}

/* Generate link for removing of a row */
function getRemoveJS(id) {
	return '<a href="#" onClick="javascript: deleteHost(\''+id+'\'); return false;">X</a>';
}

/* Remove a row in a table */
function deleteHost(id) {
	var row = document.getElementById(id);

	if (row) {
		var table = row.parentNode;
		table.removeChild(row);
	}
}

/* functions which generate form elements */
function getIdElement(id) {
	return '<input type="hidden" name="id[]" value="'+id+'">';
}

function getTypeElement(id,type) {
	return '<input type="hidden" name="type['+id+']" value="'+type+'">';
}

function getHostElement(id) {
	return '<input type="input" name="host['+id+']" value="" class="hostdata">';
}

function getDataElement(id) {
	return '<input type="input" name="data['+id+']" value="" class="hostdata">';
}

function getTTLElement(id) {
	return '<input type="input" name="ttl['+id+']" value="" class="TTL">';
}

function getMXPrioElement(id) {
	return '<input type="input" name="mx_priority['+id+']" value="" class="mxprio">';
}

function getTypeSelect(id) {
	var html = '<select name="type['+id+']" class="type">'
		+	'<option value="A" selected>A</option>'
		+	'<option value="CNAME">CNAME</option>'
		+	'<option value="AAAA">AAAA</option>'
		+	'<option value="TXT">TXT</option>'
		+	'<option value="NS">NS</option>'
		+'</select>';
	return html;
}

function getTypeSelectNS(id) {
	return
		'<select name="type['+id+']" class="type">'
		+	'<option value="A" selected>A</option>'
		+	'<option value="CNAME">CNAME</option>'
		+	'<option value="AAAA">AAAA</option>'
		+	'<option value="NS">NS</option>'
		+	'<option value="MX">MX</option>'
		+	'<option value="TXT">TXT</option>'
		+'</select>';
}


function setCheckBox(id){
	var check = document.getElementById(id);
	check.checked = true;
}

/* toggle/untoggle a row for deletion */
function toggleDelete(id, prefix) {
	var row = document.getElementById(prefix+'_'+id);
	var enable;

	if (!row) {
		return;
	}

	var deleted = document.getElementsByName('deleted['+id+']')[0];
	if (deleted.value == 0) {
		deleted.value = 1;
		row.className = 'rowDeleted';
		enable = false;
	} else {
		deleted.value = 0;
		row.className = '';
		enable = true;
	}

	// get form elements
	var formElements = row.getElementsByTagName("input");
	for (var i=0; i < formElements.length; i++) {
		if (formElements[i].type != 'hidden') {
			formElements[i].disabled = !enable;
		}
	}
	var formElements = row.getElementsByTagName("select");
	for (var i=0; i < formElements.length; i++) {
		formElements[i].disabled = !enable;
	}
}

/* hide/unhide parts of the UI */
function toggleHide(id) {
	div = document.getElementById(id);
	img = document.getElementById('img' + id);

	if (div.style.display == 'block') {
		div.style.display = 'none';
		img.src = '/images/icons/arrowOff.gif';
	} else {
		div.style.display = 'block';
		img.src = '/images/icons/arrowOn.gif';
	}
}

// add webforward
function addWebforward(domain) {
	table = document.getElementById('webforward_table');
	buttons = document.getElementById('webforward_buttons');
	id = getUniqueID();

	row = document.createElement('tr');
	row.id = 'webforward_'+id;
	cell = document.createElement('td');
	cell.innerHTML = '<table width="100%" class="infomodule"><tr><th>Redirect type</th><th width="75%">' +
		selectRedirect(id)+'&nbsp;<a href="#" onClick="deleteForward(\''+id+'\'); return false;" title="Delete">X</a></th>'+
		'</tr><tr><td><span class="verklaring" title="Specify which site has to be redirected, e.g. www. Use * for a catchall.">From</span></td>'+
		'<td>http:// <input type="text" class="frontend" name="redirect['+id+'][host]" value="" style="width: 70px;">.'+
		domain+'/</td></tr><tr><td>To</td><td><input type="text" class="frontend" name="redirect['+id+'][destination]" value="http://"></td></tr>'+
		'<tr><td><span class="verklaring" title="Title of the frame (frame redirects only)">Title</span></td><td>'+
		'<input type="text" class="frontend" name="redirect['+id+'][title]" value=""></td></tr></table>';
	row.appendChild(cell);

	table.insertBefore(row, buttons);
}

function selectRedirect(id) {
	return '<select name="redirect['+id+'][forwardType]" class="frontend"><option value="frame">Frame redirect</option><option value="redirect" selected>Redirect</option></select>';
}

// delete webforward
function deleteForward(id) {
	// remove the table from screen
	forwardTable = document.getElementById('webforward_'+id);
	if (forwardTable) {
		var table = forwardTable.parentNode;
		table.removeChild(forwardTable);
	}
}

// check if string is an integer
function isInteger(s) {
	if (!s.length)
		return false;

	var regex = /^\d+$/;
	return regex.test(s);
}

function submitActionForm(e, button, view, action) {
	var form = button.closest('form');

	if (form) {
		$('input[type="hidden"][name="view"]', form).attr('value', view);
		$('input[type="hidden"][name="_action"]', form).attr('value', action);

		form.submit();
		e.preventDefault();
	}
}

