/*
Copyright 2008, Hurricane Electric
Support Department <support@he.net>
*/

var on = '1';
var off = '0';

function editRow(mytable)
{
	delPanelClose();
	addPanelClose();
	var mytable
	var rowid = mytable.id;
	var tdref=new Array() //array to hold references to table cells
	for (var i=0; i<mytable.cells.length; i++)

	var panel = document.getElementById('edit_panel');
	panel.style.display = 'inline';
	document.edit_record.hosted_dns_recordid.value = rowid;
    for (var i=0; i < document.edit_record.TTL.length; i++)
    {
            if (document.edit_record.TTL[i].value == mytable.cells[2].innerHTML)
            {
                    document.edit_record.TTL[i].selected = true;
            }
    }
    setdescriptor('edit_content_label',mytable.cells[1].innerHTML);
	var record_type = document.getElementById('record_type');
//
//	var Name = document.getElementById('Name');
//	var Type = document.getElementById('Type'); 
//	Type.innerHTML = mytable.cells[1].innerHTML;
//	Name.innerHTML = mytable.cells[0].innerHTML;
//
    document.edit_record.Name.value = mytable.cells[0].innerHTML;
    document.edit_record.Type.value = mytable.cells[1].innerHTML;
	record_type.innerHTML = mytable.cells[1].innerHTML;

	var pf = document.getElementById('prio_field');
	if ( mytable.cells[1].innerHTML == 'MX' || mytable.cells[1].innerHTML == 'SRV')
	{
		document.edit_record.Prio.value = mytable.cells[3].innerHTML;
		document.edit_record.Prio.style.display = 'inline';
		pf.style.display = '';
		document.edit_record.Prio.disabled = '';
	}
	else
	{
		document.edit_record.Prio.disabled = 'disabled';
		pf.style.display = 'none';
		document.edit_record.Prio.style.display = 'none';
	}
//	if ( mytable.cells[1].innerHTML == 'SOA' )
//	{
//		var splitsoa = mytable.cells[4].innerHTML.split(" ");
//		alert( splitsoa[0] + "|" +	splitsoa[1] + "|" + splitsoa[2] + "|" + splitsoa[3] + "|" + splitsoa[4] + "|" + splitsoa[5] + "|" + splitsoa[6] );
//	}
	document.edit_record.Content.value = mytable.cells[4].innerHTML;
	document.edit_record.Content.focus();
}

function helpswitcher(category)
{

	var types = new Hash({ A:'ahelp',AAAA:'aaaahelp',MX:'mxhelp',NS:'nshelp',TXT:'txthelp',SRV:'srvhelp',SOA:'soahelp', CNAME:'cnamehelp', PTR:'ptrhelp' });
	
	types.each(function(value, key){
                var helptext = $(value);
		if ( category == key )
                {
                    	helptext.style.display = 'inline';
		    	return;
                }
                else if ( helptext != null )
                {
                        helptext.style.display = 'none';
                }

	}); 
/* 
	for(var j in types.items)
	{
		var helptext = $(types.items[j]); 
		if ( category == j )
		{
		    helptext.style.display = '';          
		}
		else if ( helptext != null )
		{
			helptext.style.display = 'none';
		}
	}
*/
}

function addZoneToggle()
{
	var panel = document.getElementById('add_panel');
	if ( panel.style.display == 'inline' )
	{
		panel.style.display = 'none';
	}
	else
	{
		panel.style.display = 'inline';
		document.dns_add_form.hosted_dns_addzone_name.focus();
	}
}

function addRecordToggle(formName)
{
    delPanelClose();
	editPanelClose();
	var panel = document.getElementById('add_panel');
		panel.style.display = 'inline';
		document.add_record.Name.focus();
 	var recordType = document.getElementById('recordType');
	recordType.innerHTML = formName + " ";
}

function delPanelOpen(recordid)
{
	editPanelClose();
	addPanelClose();
	var panel = document.getElementById('del_panel');
	document.del_record.hosted_dns_recordid.value = recordid;	
	panel.style.display = 'inline';
	document.del_record.hosted_dns_delconfirm.focus();
}

function delRecordClose()
{

	var panel = document.getElementById('del_panel');
	if ( panel.style.display == 'inline' )
	{
		panel.style.display = 'none';
	}
}

function editPanelClose()
{
	var panel = document.getElementById('edit_panel');
	if ( panel.style.display == 'inline' )
	{
		panel.style.display = 'none';
	}
	helpswitcher('close')

}

function addPanelClose()
{
	var panel = document.getElementById('add_panel');
	if ( panel.style.display == 'inline' )
	{
		panel.style.display = 'none';
	}
	helpswitcher('close')
}

function delPanelClose()
{
	var panel = document.getElementById('del_panel');
	if ( panel.style.display == 'inline' )
	{
		panel.style.display = 'none';
	}
}

function mainPanelClose()
{
    var panel = document.getElementById('dns_main_content');
    panel.style.display = 'none';
}

function mainPanelOpen()
{
    var panel = document.getElementById('dns_main_content');
    panel.style.display = 'inline';
}
function hideStatusMessages()
{
	var dnsErr =  eval('document.getElementById("dns_err")');
	var dnsStatus = eval('document.getElementById("dns_status")');
	if ( dnsErr != null )
	{
		dnsErr.style.display = "none";
	}else if ( dnsStatus != null )
	{
		dnsStatus.style.display = "none";
	}
}

function onloadEvents()
{
	/*
	hide the noscript_warning panel
	*/
	var noscriptPanel = eval('document.getElementById("noscript_warning");');
    if ( noscriptPanel )
    {
	    noscriptPanel.style.display = 'none';
    }
    var pfxtoggle = readCookie('pfxtoggle');
	var pfx_tbl = eval('document.getElementById("prefix_table");');
    if ( pfxtoggle &&  pfx_tbl )
    {
    	var obj = eval('document.getElementById("toggle_pt");');
    	if ( obj )
    	{
			obj.innerHTML = "<img src=\"/include/images/expand.gif\" alt=\"unhide\" />&nbsp;unhide prefix panel";
		}
    	pfx_tbl.style.display = 'none';
    }
	// var t= setTimeout("hideStatusMessages();",7000);
 
    var dnstoggle = readCookie('dnstoggle');
	var dns_tbl = eval('document.getElementById("hosted_dns_table");');
    if ( dnstoggle &&  dns_tbl )
    {
    	var obj = eval('document.getElementById("toggle_dnst");');
    	if ( obj )
    	{
			obj.innerHTML = "<img src=\"/include/images/expand.gif\" alt=\"unhide\" />&nbsp;unhide hosted dns panel";
		}
    	dns_tbl.style.display = 'none';
    }

    var cnxtoggle = readCookie('cnxtoggle');
	var cnx_tbl = eval('document.getElementById("connection_table");');
    if ( cnxtoggle &&  cnx_tbl )
    {
    	var obj = eval('document.getElementById("toggle_cnxt");');
    	if ( obj )
    	{
			obj.innerHTML = "<img src=\"/include/images/expand.gif\" alt=\"unhide\" />&nbsp;unhide connection table";
		}
    	cnx_tbl.style.display = 'none';
    }
	// var t= setTimeout("hideStatusMessages();",7000);

}

function validateAdd(form)
{
}

function validateEdit(form)
{
}

function deleteRecord(id,name)
{
        var confirm = prompt("Confirm DELETION of "+ name +"\n" + "Type 'DELETE' (without the quotes) to confirm");
        confirm = ( confirm != null ? confirm.toLowerCase() : null );
        if (confirm == null || ( confirm != null && confirm != "delete")) {
                calert("You may not delete "+name+" without confirmation.");
        }
        else {
	document.del_record.hosted_dns_delconfirm.value = confirm;
        document.del_record.hosted_dns_recordid.value = id;
        document.del_record.submit();
        }
}

function validateDelete(form)
{
	if (form.elements['hosted_dns_delconfirm'].value.toLowerCase() == 'delete' )
	{
		var ret = confirm("Permanently deleting " + form.elements['hosted_dns_zonename'].value.toLowerCase() + " continue?");
		if ( ret == true )
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	alert("You must type 'DELETE' to remove.");
	return false;
}

/*
Domain name validation.  Called on submit of add zone.
*/

function validate_domain(form)
{
	var nname = form.elements['hosted_dns_addzone_name'].value;
	var arr = new Array(
	'.com','.net','.org','.biz','.coop','.info','.museum','.name',
	'.pro','.edu','.gov','.int','.mil','.ac','.ad','.ae','.af','.ag',
	'.ai','.al','.am','.an','.ao','.aq','.ar','.as','.at','.au','.aw',
	'.az','.ba','.bb','.bd','.be','.bf','.bg','.bh','.bi','.bj','.bm',
	'.bn','.bo','.br','.bs','.bt','.bv','.bw','.by','.bz','.ca','.cc',
	'.cd','.cf','.cg','.ch','.ci','.ck','.cl','.cm','.cn','.co','.cr',
	'.cu','.cv','.cx','.cy','.cz','.de','.dj','.dk','.dm','.do','.dz',
	'.ec','.ee','.eg','.eh','.er','.es','.et','.fi','.fj','.fk','.fm',
	'.fo','.fr','.ga','.gd','.ge','.gf','.gg','.gh','.gi','.gl','.gm',
	'.gn','.gp','.gq','.gr','.gs','.gt','.gu','.gv','.gy','.hk','.hm',
	'.hn','.hr','.ht','.hu','.id','.ie','.il','.im','.in','.io','.iq',
	'.ir','.is','.it','.je','.jm','.jo','.jp','.ke','.kg','.kh','.ki',
	'.km','.kn','.kp','.kr','.kw','.ky','.kz','.la','.lb','.lc','.li',
	'.lk','.lr','.ls','.lt','.lu','.lv','.ly','.ma','.mc','.md','.mg',
	'.mh','.mk','.ml','.mm','.mn','.mo','.mp','.mq','.mr','.ms','.mt',
	'.mu','.mv','.mw','.mx','.my','.mz','.na','.nc','.ne','.nf','.ng',
	'.ni','.nl','.no','.np','.nr','.nu','.nz','.om','.pa','.pe','.pf',
	'.pg','.ph','.pk','.pl','.pm','.pn','.pr','.ps','.pt','.pw','.py',
	'.qa','.re','.ro','.rw','.ru','.sa','.sb','.sc','.sd','.se','.sg',
	'.sh','.si','.sj','.sk','.sl','.sm','.sn','.so','.sr','.st','.sv',
	'.sy','.sz','.tc','.td','.tf','.tg','.th','.tj','.tk','.tm','.tn',
	'.to','.tp','.tr','.tt','.tv','.tw','.tz','.ua','.ug','.uk','.um',
	'.us','.uy','.uz','.va','.vc','.ve','.vg','.vi','.vn','.vu','.ws',
	'.wf','.ye','.yt','.yu','.za','.zm','.zw','.hurricane','.arpa');

	var mai = nname;
	var val = true;

	var dot = mai.lastIndexOf(".");
	var dname = mai.substring(0,dot);
	var ext = mai.substring(dot,mai.length);

	if(dot>2 && dot<57)
	{
		for(var i=0; i<arr.length; i++)
		{
			if(ext == arr[i])
			{
				val = true;
				break;
			}
			else
			{
				val = false;
			}
		}
		if(val == false)
		{
			alert("Your domain extension "+ext+" is not correct" );
			return false;
		}
		else
		{
			for(var j=0; j<dname.length; j++)
			{
				var dh = dname.charAt(j);
				var hh = dh.charCodeAt(0);
				if((hh > 47 && hh<59) || (hh > 64 && hh<91) || (hh > 96 && hh<123) || hh==45 || hh==46)
				{
					if((j==0 || j==dname.length-1) && hh == 45)
					{
						alert("Domain name should not begin are end with '-'");
						return false;
					}
				}
				else	{
					alert("Your domain name should not have special characters");
					return false;
				}
			}
		}
	}
	else
	{
		if ( dot <= 2 ) {
			alert("Your domain name is too short");
		} else {
			alert("Your domain name is too long");
		}
		return false;
	}
return true;
}


function returnToSummary(account)
{
    document.location.href='index.cgi?account=' + account;
}

function viewJournal()
{
}

/*
Master edit form handler
*/

function editFormHandler(formName)
{
    if ( formName == '' || formName == null )
    {
        return false;
    }
    document.add_record.Name.value = '';
    document.add_record.TTL.value='86400'; // reset to default
    document.add_record.Prio.value='';
    document.add_record.Content.value='';
    addRecordToggle(formName);
    var pf = document.getElementById('prio_field2');
    if (formName == 'MX' || formName == 'SRV' )
    {
        document.add_record.Prio.style.display = 'inline';
        document.add_record.Prio.value = 10;
        pf.style.display = '';
    }
    else
    {
        document.add_record.Prio.style.display = 'none';
        pf.style.display = 'none';
    }
    setdescriptor('add_content_label',formName);
    document.add_record.Type.value = formName;
    
}

function setdescriptor(descriptor,recordType)
{	
	var descr = document.getElementById(descriptor);
	switch(recordType)
	{
		case 'MX':
			descr.innerHTML = 'Exchange host';
			helpswitcher(recordType);
			break;
		case 'A':
			descr.innerHTML = 'IP adddress';
			helpswitcher(recordType);
			break;
		case 'AAAA':
			descr.innerHTML = 'IPv6 address';
			helpswitcher(recordType);
			break;
		case 'NS':
			descr.innerHTML = 'Name Server';
			helpswitcher(recordType);
			break;
		case 'TXT':
			descr.innerHTML = 'Text string';
			helpswitcher(recordType);
			break;
		case 'CNAME':
			descr.innerHTML = 'Alias';
			helpswitcher(recordType);
			break;
		case 'SRV':
			descr.innerHTML = 'Service string';
			helpswitcher(recordType);
			break;
		case 'SOA':
			descr.innerHTML = 'SOA string';
			helpswitcher(recordType);
			break;
		case 'PTR':
			descr.innerHTML = 'Pointer Name';
			helpswitcher(recordType);
			break;
		default:
			descr.innerHTML = 'DEFAULT';
	}
}

function lockedElement(account)
{
    alert("This element is LOCKED and can not be deleted.\n"+"Ref-Code:dellk-"+account+"\n\n"+"DNS Administrator <dnsadmin@he.net>\n");
	return false;
}

function QueueFormHandler()
{
	
}

function status_indicator(flag)
{
	var status_update = document.getElementById("status_update");
	if ( flag == 1 )
	{
		status_update.style.visibility = 'visible';
		
	}
	else
	{
		status_update.style.visibility = 'hidden';
	}
}

function fadeIn(elename)
{
	var div = $(elename).setStyles({
	visibility:'visible',
	opacity: 0
	});
	new Fx.Style(div, 'opacity', {duration: 1000} ).start(1);
}
function fadeOut(elename)
{
	var div = $(elename).setStyles({
	visibility:'visible',
	opacity: 1
	});
	new Fx.Style(div, 'opacity', {duration: 1000, onComplete: function() { 
			div = $(elename).setStyles({
			visibility:'hidden' }); }
			 } ).start(0);
}

function hideThis(me)
{
    me.style.display='none';
}

function makeVisible()
{
	var body = document.getElementById("page_body")
	//fadeIn("page_body");
	body.style.display = 'inline';
	var noscript = document.getElementById("noscript_warning");
	noscript.style.display = 'none';
}


function hideTable(obj,toggle,cookie,descr)
{
	var table = document.getElementById(toggle);
	if ( table.style.display == 'block' ||  table.style.display == '')
	{
		table.style.display = 'none'
		obj.innerHTML = "<img src=\"/include/images/expand.gif\" alt=\"unhide\" />&nbsp;unhide " + descr;
		createCookie(cookie,1,365);
	}
	else
	{
		table.style.display = 'block'
		obj.innerHTML = "<img src=\"/include/images/collapse.gif\" alt=\"hide\" />&nbsp;hide "+ descr;
		eraseCookie(cookie);
	}	
}

function hidePfxTable(obj)
{
	var table = document.getElementById("prefix_table");
	if ( table.style.display == 'block' ||  table.style.display == '')
	{
		table.style.display = 'none'
		obj.innerHTML = "<img src=\"/include/images/expand.gif\" alt=\"unhide\" />&nbsp;unhide prefix panel";
		createCookie('pfxtoggle',1,365);
	}
	else
	{
		table.style.display = 'block'
		obj.innerHTML = "<img src=\"/include/images/collapse.gif\" alt=\"hide\" />&nbsp;hide prefix panel";
		eraseCookie('pfxtoggle');
	}
}


function hideDnsTable(obj)
{
	var table = document.getElementById("hosted_dns_table");
	if ( table.style.display == 'block' ||  table.style.display == '')
	{
		table.style.display = 'none'
		obj.innerHTML = "<img src=\"/include/images/expand.gif\" alt=\"unhide\" />&nbsp;unhide hosted dns panel";
		createCookie('dnstoggle',1,365);
	}
	else
	{
		table.style.display = 'block'
		obj.innerHTML = "<img src=\"/include/images/collapse.gif\" alt=\"hide\" />&nbsp;hide hosted dns panel";
		eraseCookie('dnstoggle');
	}
}

/* Cookies Mmmm */
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function toggleChecks(e) {
    for(i = 0; i < e.form.elements.length; i++) {
        if(e.form.elements[i].type == "checkbox" && ! e.form.elements[i].disabled ) {
            e.form.elements[i].checked = e.checked;
        }
    }
}

function selected(e) {

	var last_selected = $('selected_item').getAttribute('value');
	$('selected_item').id = '';
	$(last_selected).style.display = "none";

	$(e).id = "selected_item";
	var curr_selected = $('selected_item').getAttribute('value');
	$(curr_selected).style.display = "block";

}

function showDetail(e) {
	var val = $(e).getAttribute('value');
	var activate = "child_"+val;
 	if ( $(activate).style.display == "none" )
	{
		 $(activate).style.display = "block";
	}
	else
	{
		$(activate).style.display = "none";
	}

}

function deallocateCabinetsByAccount(obj)
{
	updateProgress($(obj.getAttribute('value')),on)
        var paramString = Hash.toQueryString({'menu': 'deallocation_management', 'bg_deallocate_cabinet': obj.getAttribute('value') });

var req = new Request({
            method: 'get',
            url: self.location.pathname,
            data: paramString,
		onComplete: function(results) { 
		updateProgress($(obj.getAttribute('value')),off);  
		var struct = JSON.evaluate( results );
		$(obj.getAttribute('value')).innerHTML = "Ticket # " + struct['ticket_number'];
		$(obj.getAttribute('value')).style.display = 'inline';
		obj.className = 'customer_container_inprogress';
		obj.removeAttribute('onclick');		
		obj.setAttribute('title','Cabinet deallocations are already in progress for this.');
	   } }).send();
}  

function updateProgress(item,flag)
{
        if ( flag == off ) {
                $(item).style.display = 'none';
                $(item).innerHTML = '';
        }
        else if (flag == on ) {
                $(item).innerHTML = '<img alt="spinner" src="/include/images/progress_bar2.gif" />';
        $(item).style.display = 'inline';
        }
        else {
                $(item).innerHTML = flag + '&nbsp<img alt="spinner" src="/include/images/progress_bar2.gif" />';
                $(item).style.display = 'inline';
        }
}

function set_ttl(zid,ttl) {
document.location.href='index.cgi?hosted_dns_editzone&hosted_dns_zoneid=' + zid + '&account=' + document.edit_record.account.value +
                        '&menu=' + document.edit_record.menu.value + '&set_ttl=1&ttlval=' + ttl;
}	


function reset_zone(zid) {
        var confirm = prompt("Confirm RESET of current ZONE\n" + "Type 'RESET' (without the quotes) to confirm");
        confirm = ( confirm != null ? confirm.toLowerCase() : null );
        if (confirm == null || ( confirm != null && confirm != "reset")) {
                alert("You may not RESET this zone without confirmation.");
        }
        else {

		document.location.href='index.cgi?hosted_dns_editzone&hosted_dns_zoneid=' + zid + '&account=' + document.edit_record.account.value +
                        '&menu=' + document.edit_record.menu.value + '&reset_zone=1';
        }
}

