/* vim: expandtab sw=1 ts=1 sts=1: */

/*
 *
 * ServControl - JS elements
 * License: http://www.servcontrol.de/LICENSE.txt
 *
 * $Id: elements.js,v 1.20.2.5 2009-12-10 10:04:20 sascha Exp $
 *
 *
 */

/*
 * globals
 */

var DynWidth;
var DynWidthArray = new Array();
var DropDown;
var DropDownArray = new Array();
var IE = typeof(document.all) == 'object';
var BROWSER = navigator.userAgent.toLowerCase();
var WINDOWS = 0;
if(BROWSER.indexOf('windows') != -1) WINDOWS = 1;
var IEVERSION = 0;
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
 IEVERSION = new Number(RegExp.$1);
}

/* 
 * global functions
 */

function loadwindow(url){
	window.open(url,"","width=300,height=200,scrollbars=auto,resizable=yes,resize=1,left=0,top=0")
}

function loaddynwindow(url,width,height){
	window.open(url,"",'width='+width+',height='+height+',scrollbars=yes,resizable=yes,resize1,left=0,top=0')
}

function CheckCheckBoxes(form) {
	var formname = document.forms["" + form];
	for (var i=0;i<formname.elements.length;i++) {
		var element = formname.elements[i];
 	if (element.type == 'checkbox' && element.name != 'CheckAllBoxes') {
			element.checked = formname.CheckAllBoxes.checked;
		}
	}
}

function GetLastPage() {
	window.location.href = document.referrer;
}

function Logout(link) {
	if ( confirm("Wollen Sie die Sitzung wirklich beenden?") ) {
		window.location.href = link;
	}
	return;
}

function GetLink(link) {
	window.location.href = link;
}

function DoConfirm(message) {
	if(confirm = message) {
		return;
	}
	else {
		return false;
	}
}

function InitDynDropDown(DropDownWidth) {
 if(! DropDownWidth) DropDownWidth = 270;
 var formLength = document.forms.length;
 
 for (var formCount = 0; formCount < formLength; formCount++) {
  var formname = document.forms[formCount];
	 for (var i=0; i < formname.elements.length; i++) {
		 var element = formname.elements[i];

   if (element.type == 'select-one') {
    DropDown = document.getElementById(element.name);
    if(!DropDown) {continue;}

    DropDownArray[formCount] = DropDown;

    if(DropDown.offsetWidth < DropDownWidth) {
     DynWidth = DropDownWidth;
    }
    else {
     DynWidth = DropDown.offsetWidth;
    }

    DynWidthArray[formCount] = DynWidth;

    DropDown.style.width = DropDownWidth + 'px';
    if(!IE) DropDown.style.overflow='hidden';
   }

  }
 }
}

function DynDropDownGetDynWidth(DynForm) {
 for (var i=0; i < document.forms.length; i++) {
  if (document.forms[i] == DynForm.form) {
   return DynWidthArray[i];
  }
 }
}

function DynDropDownObject(DropDownWidth) {
 if(! DropDownWidth) DropDownWidth = 270;
 
 var formLength = document.forms.length;
 for (var formCount = 0; formCount < formLength; formCount++) {
  if(DropDownArray[formCount] !== undefined) DropDownArray[formCount].style.width = DropDownWidth + 'px';
 }
}

function DynDropDown(PageElement) {
 var ObjectStyle = PageElement.style.overflow;
 var ObjectStyle = ( ObjectStyle == 'hidden' ) ? 'visible' : 'hidden';
}

function DisplayPNG(Image,ImageHeight,ImageWidth,Title) {
 if(! Title) Title = '';
 if(WINDOWS == 1 && IE == true && IEVERSION <= 6) {
  document.write('<div style="height:' + ImageHeight + 'px;width:' + ImageWidth + 'px;');
  document.write('filter:progid:DXImageTransform.Microsoft.AlphaImageLoader');
  document.write('(src=\'' + Image + '\', sizingMethod=\'scale\')" border="0" ')
  document.write('title="' + Title + '"></div>');
 }
 else {
  document.write('<img src="' + Image + '" border="0" title="' + Title + '">');
 }
}

/*
 * password creation
 */
function CreatePW (fieldname) {
	var pass = (!IE) ? document.getElementById(fieldname) : document.all[fieldname];
	var pw_small_letters	= "abcdefghijklmnopqrstuvwxyz";
	var pw_number		= "0123456789";
	var password = '';
	var pw_used = new Array (0, 0, 0, 0);
 var pw_switch_length = 2;

	for (var idx = 1; idx < 9; idx++) {
		var pw_arr;
		var pw_arr_length;
		var pw_switch = Math.ceil( pw_switch_length * Math.random()) - 1;
		
  if (pw_used[pw_switch] != 1) pw_used[pw_switch] = 1;
		if (idx > 5) {
			var pw_unused = 1;

			for (var pw_used_idx = 0; pw_used_idx < pw_used.length; pw_used_idx++) {
				if (pw_used[pw_used_idx] == 0) {
					pw_unused = 0;
					break;
				}
			}
			
			if (pw_unused == 0) {
				pw_switch = pw_used_idx;
				pw_used[pw_used_idx] = 1;
			}
		}

		switch (pw_switch) {
			case 0:
				pw_arr = pw_small_letters;
				break;
			case 1:
				pw_arr = pw_number;
				
				pw_switch_length--;

				break;
			default:
				break;
		}

		pw_arr_length = pw_arr.length;
		var randomIdx;
		
  do {
			randomIdx = Math.ceil( pw_arr_length * Math.random()) - 1;
		} while (password.indexOf(pw_arr.charAt(randomIdx)) > -1);
		password += pw_arr.charAt(randomIdx);
	}

	pass.value = password;
}

/*
 * e-mail confirmation field
 */

function EnableEmailConfirmation(formname) {
	if(! formname.EnableEmailConf.checked) {
		formname.Email.disabled = true;
		formname.Email.style.color = '#c0c0c0';
		formname.Email.style.background = '#f5f5f5';
	}
	else {
		formname.Email.disabled = false;
		formname.Email.style.color = '#000000';
		formname.Email.style.background = '#cde9fa';
	}
}

function CheckEmailConfirmation(formname) {
	if(! formname.EnableEmailConf.checked) {
		formname.Email.value = '';
	}
}

/*
 * Loginmanager functions
 */

function EmptyDir() {
	alert('Es befindet sich kein Unterverzeichnis in diesem Verzeichnis');
	history.back();
}

/*
 * phpMyAdmin functions
 */

function phpMyAdmin(url) {
	window.open(url + document.forms[1].pmaDbName.value,"","width=765,height=570,status=0,directories=0,toolbar=0,left=0,top=0,resizable=1,scrollbars=auto")
}


/*
 * Mailmanager functions
 */

function CheckAliasTarget(formname) {
 for (var i=0; i < formname.elements.length; i++) {
	 var element = formname.elements[i];

  if(element.type == 'radio' && element.value == 'Mailbox' && element.checked) {
   formname.Forward.disabled = true;
   formname.Forward.style.color = '#c0c0c0';
   formname.Forward.style.background = '#f5f5f5';
   formname.Mailbox.disabled = false;
   formname.Mailbox.style.color = '#000000';
   formname.Mailbox.style.background = '#cde9fa';
  }
  if(element.type == 'radio' && element.value == 'Forward' && element.checked) {
   formname.Mailbox.disabled = true;
   formname.Mailbox.style.color = '#c0c0c0';
   formname.Mailbox.style.background = '#f5f5f5';
   formname.Forward.disabled = false;
   formname.Forward.style.color = '#000000';
   formname.Forward.style.background = '#cde9fa';
  }
  if(element.type == 'radio' && element.value == 'Multidrop' && element.checked) {
   formname.Forward.disabled = true;
   formname.Forward.style.color = '#c0c0c0';
   formname.Forward.style.background = '#f5f5f5';
   formname.Mailbox.disabled = true;
   formname.Mailbox.style.color = '#c0c0c0';
   formname.Mailbox.style.background = '#f5f5f5';
  }
 }
}

function CheckMainTarget() {
	if(document.getElementById("ConfirmMainTarget").checked) {
		alert(
			'Es ist mindestens ein weiteres Ziel neben dem Hauptziel '+
			'angelegt.\nAlle weiteren Ziele werden bei der Entfernung '+
			'des Hauptziels ebenfalls entfernt.'
		);
	}
}

function CheckMailboxList(form) {
	var formname = document.forms["" + form];
	var MailboxList = opener.document.getElementById('AssignTo').value;
	var A = MailboxList.split(",");

	for (var i=0;i<A.length;i++) {
		var Mailbox = A[i];
		if(Mailbox != '') {
			var Element = formname.elements["" + Mailbox]
			Element.checked = 'checked';
		}
	}
}

function ReturnMailboxList(form) {
	var formname = document.forms["" + form];
	var AssignTo = '';

	for (var i=0;i<formname.elements.length;i++) {
		var element = formname.elements[i];
 	if (element.type == 'checkbox' && element.name != 'CheckAllBoxes' && element.checked) {
			AssignTo = AssignTo + ',' + element.name;
		}
	}

 if(opener.document.getElementById('ProfileType') && opener.document.getElementById('ProfileType').value == "Advanced") {
  opener.document.getElementById('AssignTo1').value = AssignTo;
  opener.document.getElementById('AssignTo2').value = AssignTo;
  opener.alert('Klicken Sie nun auf Speichern um die Auswahl zu aktivieren.');
 }
 else {
  opener.alert('Klicken Sie nun auf Weiter um die Auswahl zu aktivieren.');
 }

 opener.document.getElementById('AssignTo').value = AssignTo;
}

function CheckAllMailboxList(Mailboxes) {
	var formname = document.forms['MailboxList'];

	for (var i=0;i<formname.elements.length;i++) {
		var element = formname.elements[i];
  if (element.type == 'checkbox' && element.name != 'CheckAllBoxes') {
			element.checked = formname.CheckAllBoxes.checked;
		}
	}

	var AlertText = 'Die folgenden Mailboxen sind bereits anderen Profilen zugewiesen\n'+
                 'Diese Zuweisungen werden geändert.\n\n';

	var MailboxesList = Mailboxes.split(",");

	for (var i=0; i<MailboxesList.length; i++) {
		AlertText += MailboxesList[i] + '\n';
	}

	if(document.getElementById("CheckAll").checked && MailboxesList != '') {
		alert(AlertText);
	}
}

function CheckAssignedMailbox(Mailbox, Profile) {
	if(document.getElementById(Mailbox).checked) {
		var Text = 'Die Mailbox "' + Mailbox + '" ist bereits dem Profil "' + 
			   Profile + '" zugewiesen.\nDiese Zuweisung wird bei Auswahl ' + 
			   'der Mailbox geändert.';
		alert(Text);
	}
}

/*
 * Spamfilter functions
 */

function GreylistWarning(formname) {
 if(formname.GreylistFilter.checked) {
  var AlertText = 'Durch Greylisting kann die Zustellung von erwünschten\n'+
                  'E-Mails verzögert werden. Aktivieren Sie die Option nur,\n'+
                  'wenn Sie auf eine zeitnahe Zustellung nicht in jedem\n'+
                  'jedem Fall angewiesen sind.';
  alert(AlertText);
 }
}

function PTRWarning(formname) {
 if(formname.PTRFilter.checked) {
  var AlertText = 'Lassen Sie bitte keine E-Mails löschen, bei denen ein\n'+
                  'ungültiger PTR-Eintrag festgestellt wurde! Selbst seriöse\n'+
                  'Mailserver haben manchmal keinen gültigen PTR-Eintrag.\n';
  alert(AlertText);
 }
}

/*
 * Domain-Manager functions
 */

function DisableDomainDir(formname) {
	if(formname.Target.value != '') {
		formname.DomainDir.disabled = true;
		formname.DomainDir.style.color = '#c0c0c0';
		formname.DomainDir.style.background = '#f5f5f5';
	}
	else {
		formname.DomainDir.disabled = false;
		formname.DomainDir.style.color = '#000000';
		formname.DomainDir.style.background = '#cde9fa';
	}
}

function DisableDomainTarget() {
 document.forms[0].Target.value = '';
 document.forms[0].FrameRedirect.checked = false;
	document.forms[0].DomainDir.disabled = false;
	document.forms[0].DomainDir.style.color = '#000000';
	document.forms[0].DomainDir.style.background = '#cde9fa';
}

function FrameRedirectWarning(formname,domain) {
 if(! formname.FrameRedirect.checked) {
  var AlertText = 'Wird die Weiterleitung im Frame entfernt, wird das\n'+
                  'Verzeichnis "' + domain + '" und dessen Inhalt\n'+
                  'aus dem www-Verzeichnis des Accounts gelöscht.\n'+
                  'Sichern Sie eventuelle Daten.';
  alert(AlertText);
 }
 if(formname.DomainDir.value != '') {
		formname.DomainDir.disabled = true;
		formname.DomainDir.style.color = '#c0c0c0';
		formname.DomainDir.style.background = '#f5f5f5';
 }
}

/*
 * Usage functions
 */

function DisableUsageRemoveOld(formname) {
 for (var i=0; i < formname.elements.length; i++) {
   var element = formname.elements[i];

   if (element.type == 'select-one') {
    if(formname.UsageType.value == 'NULL') {
     formname.UsageRemoveOld.checked = false;
     formname.UsageRemoveOld.disabled = true;
    }
    else {
     formname.UsageRemoveOld.disabled = false;
    }
   }
 }
}

/*
 * Web-Passwort functions
 */

function DisableProtectionDescription(formname) {
 var Checked;
 for (var i=0; i < formname.elements.length; i++) {
	 var element = formname.elements[i];

  if (element.type == 'radio' && element.value == 'ProtectionDelete' && element.checked) {
	  formname.Description.disabled = true;
	  formname.Description.style.color = '#c0c0c0';
	  formname.Description.style.background = '#f5f5f5';
   Checked = 1;
  }
 }

 if(Checked != 1) {
  formname.Description.disabled = false;
  formname.Description.style.color = '#000000';
  formname.Description.style.background = '#cde9fa';
 }
}

/*
 * Cron functions
 */

function DisableCronUrl(formname) {
 formname.CronUrlDisabled.value = '1';
 formname.CronCommandDisabled.value = '';
 formname.CronUrl.style.color = '#c0c0c0';
 formname.CronUrl.style.background = '#f5f5f5';
 formname.CronCommand.style.color = '#000000';
 formname.CronCommand.style.background = '#cde9fa';
}

function DisableCronCommand(formname) {
 formname.CronCommandDisabled.value = '1';
 formname.CronUrlDisabled.value = '';
 formname.CronCommand.style.color = '#c0c0c0';
 formname.CronCommand.style.background = '#f5f5f5';
 formname.CronUrl.style.color = '#000000';
 formname.CronUrl.style.background = '#cde9fa';
}

/*
 * Account-Setup functions
 */

function AnonRequiresOwnIP(formname) {
 if(! formname.IP.checked)
 formname.IP.checked = true;
}

function NoAnonWithSharedIP(formname) {
 if(formname.Anon.checked)
 formname.Anon.checked = false;
}

function FeatureRequiresFtpAccess(formname) {
 if(! formname.Ftp.checked)
 formname.Ftp.checked = true;
}

function NoFeatureWithoutFtpAccess(formname) {
 if(! formname.Ftp.checked) {
  formname.FtpLimited.checked = false;
  formname.WEBFTP.checked = false;
 }
}

/*
 * Backup functions
 */

function BackupAddEmailToRequest(request) {
 if(document.forms[0].EnableEmailConf.checked) {
  window.location.href = request + '&Email=' + document.forms[0].Email.value;
 }
 else {
  window.location.href = request;
 }
}

/*
 * Account-Update functions
 */

function AccountDisableWarning(formname) {
 var Alerted = false;
 var ActiveDisabled;
 for (var i=0; i < formname.elements.length; i++) {
	 var element = formname.elements[i];

  if(element.name == 'Active' && element.checked == true) ActiveDisabled = true;
  if(element.name == 'Active' && element.checked == false) ActiveDisabled = false;
  if(element.name == 'ActiveAccess' && ActiveDisabled == true) {
    element.disabled = true;
  }
  if(element.name == 'ActiveAccess' && ActiveDisabled == false) {
    element.disabled = false;
  }

  if(element.type == 'radio' && element.value == '' && element.checked) {
   if(Alerted == false) {
    if(element.name == 'Active' || element.name == 'ActiveAccess') {
     alert(
           'Wird der Account-Status oder die Account-Zugänge\n'+
           'auf "gesperrt" gesetzt, werden alle sonstigen\n'+
           'Änderungen in diesem Formular verworfen.'
     );
     Alerted = true;
    }
   }
  }
 
 }
}

/*
 * SubAdmin functions
 */

function SubAdminDisableWarning(formname) {
 for (var i=0; i < formname.elements.length; i++) {
	 var element = formname.elements[i];
  if(element.type == 'radio' && element.value == '' && element.checked &&
    element.name == 'Active') {
     alert(
           'Wird der Sub-Admin-Status auf "gesperrt" gesetzt\n'+
           'werden alle sonstigen Änderungen in diesem Formular\n'+
           'verworfen.'
     );
  }
 }
}

/*
 * Transfer functions
 */

function DisableTransferDomain(formname) {
 if(! formname.TransferAllDomains.checked) {
  formname.TransferDomain.disabled = false;
  formname.TransferDomain.style.color = '#000000';
  formname.TransferDomain.style.background = '#cde9fa';
 }
 else {
  formname.TransferDomain.disabled = true;
	 formname.TransferDomain.style.color = '#c0c0c0';
	 formname.TransferDomain.style.background = '#f5f5f5';
 }
}

function DisableAdminTransferDomain(formname) {
 if(! formname.TransferAllDomains.checked) {
  formname.AdminTransferDomain.disabled = false;
  formname.AdminTransferDomain.style.color = '#000000';
  formname.AdminTransferDomain.style.background = '#cde9fa';
 }
 else {
  formname.AdminTransferDomain.disabled = true;
	 formname.AdminTransferDomain.style.color = '#c0c0c0';
	 formname.AdminTransferDomain.style.background = '#f5f5f5';
 }
}

