/*
	Requirements:
	- javascript libraries: prototype.js, window.js, mixo.js (for file uploads, modified version!)


*/

// Global settings:
var contentUrl = '/pagetypeclasses3/xmlcats_methods.php'; 	// Ajax callback methods
var waitImageHTML = '<img src="/gfx/wait.gif" width="16" height="16" />';
			
			
function showTab(action) {
	var tabContent = $('tabContent');
	var tabs = $('tabs');
	
	tabContent.innerHTML = waitImageHTML + ' trwa odświeżanie panelu';
	
	// make request:
	new Ajax.Request(contentUrl,
		{
			method: 'get',
			parameters: {a: action + 'Form', purexml: 1},
			onSuccess: function(tr) {
				var response = tr.responseText;
				tabContent.innerHTML = response;
				if (action == 'place')
					refreshDepartments();
				if (action == 'referentions')
					refreshReferentions();
				if (action == 'acredits') {
					refreshPrices();
					refreshCerts();
					refreshAcredits();
				}
				if (action == 'others') {
					TooltipManager.options.delayOver = 0;
					TooltipManager.options.delayOut = 0;
					TooltipManager.options.closable = false;
					TooltipManager.addHTML("tooltip_pifs", "tooltip_pifs_content");
				}
					
			},
			onFailure: function() { 
				tabContent.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	

	return false;
}

function saveBase() {
	var action = 'saveBaseData';
	var msg = $('waitBase');
	
	var emailFilter=/^([\w\-_]+\.)*([\w\-_]+)@([\w\-_]+\.)+([a-zA-Z]{2,4})$/;
	
	
	if (!($('login').value) || !($('name').value)) {
		alert('Uzupełnij wymagane pola');
		return;
	}
	
	if (!emailFilter.test($('login').value)) {
		alert('Login musi być poprawnym adresem e-mail');
		return;
	}
	
	if (($('password').value) != '' && ($('password').value != $('password_rep').value)) {
		alert('Hasło i jego powtórzenie musi być takie samo');
		return;
	
	}
	
	if (($('password').value) != '' && ($('password').value == $('password_rep').value) && ($('password').value.length < 4)) {
		alert('Hasło musi mieć co najmniej 4 znaki');
		return;
	}
	
	
	if ($('nip').value == '') {
		alert('Nip nie może być pusty');
		return;
	}
	
	
	msg.innerHTML = waitImageHTML + ' trwa zapisywanie';
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {	a: action, 
					purexml: 1,
					login: $('login').value,
					password: $('password').value,
					password_rep: $('password_rep').value,
					name: $('name').value,
					nip: $('nip').value
				},
			onSuccess: function(transport) {
				var response = transport.responseText;
				msg.innerHTML = response;
				
			},
			onFailure: function() { 
				msg.innerHTML = 'Wystąpił błąd. Skontaktuj się z administratorem.';
			}
		}
	);
	
}

function uploadLogoComplete(imagePath, error) {
	if (!error) {
		$('logoImg').src = imagePath;
	}
}
	
function saveOthers() {
	var action = 'saveOthers';
	var actionUpload = 'uploadLogoFile';
	var msg = $('waitBase');
	var saveFieldMsg = waitImageHTML + ' trwa zapisywanie danych';
	var uploadFileMsg = waitImageHTML + ' wysyłanie pliku';
	var errorUpload = 'Błąd przesyłania pliku';
	
	msg.innerHTML = saveFieldMsg;
	
	new Ajax.Request(contentUrl,
		{
			method:'post',
			parameters: {	a: action, 
					purexml: 1,
					description: $('description').value,
					www: $('www').value,
					email: $('email').value,
					person: $('person').value,
					pifs: $('pifs').checked,
					dp: $('dp').checked,
					start_year: $('start_year') ? $('start_year').value : '',
					turnover: $('turnover') ? $('turnover').value : '',
					superiority: $('superiority') ? $('superiority').value : '',
					partners: $('partners') ? $('partners').value : '',
					keywords: $('keywords') ? $('keywords').value : '',
					description2: $('description2') ? $('description2').value : ''
				},
			onSuccess: function(transport) {
				var response = transport.responseText;
				msg.innerHTML = response;
				
				// UPLOAD LOGO FILE:
				if ($('logo_file').value != '') {
					micoxUpload($('logo_file'), contentUrl + '?a=' + actionUpload + '&purexml=1', 'waitBase', uploadFileMsg, errorUpload, 'uploadLogoComplete');
					
				}
			},
			onFailure: function() { 
				msg.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	
}


function refreshDepartments() {
	var action = 'departmentsTable';
	var content = $('departments');
	
	
	content.innerHTML = waitImageHTML + ' trwa odświeżanie listy';
	// make request:
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {
				a: action, 
				purexml: 1
				},
			onSuccess: function(tr) {
				var response = tr.responseText;
				content.innerHTML = response;
			},
			onFailure: function() { 
				content.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	

	return false;
	
}

function deleteDepartment(dataid) {
	if (!confirm('Na pewno usunąć?')) return false;
	
	var contentUrl = '/pagetypeclasses3/xmlcats_methods.php';
	var action = 'deleteDepartment';
	
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {
				a: action, 
				purexml: 1, 
				dataid: dataid
				},
			onSuccess: function(tr) {
				refreshDepartments();
			},
			onFailure: function() { 
				refreshDepartments();
			}
		}
	);
	
}
function editDepartment(dataid) {
	var action = 'departmentForm';
	
	win = new Window({
			id: 'oddzial_wnd',
			className: "bluelighting", 
			minimizable: false,
			maximizable: false,
			title: "Edytuj",
			url:  contentUrl + '?a=' + action + '&editdataid=' + dataid,
			width:780, 
			height:453, 
			destroyOnClose: true, 
			recenterAuto:false,
			showEffect:Effect.BlindDown,
			hideEffect: Effect.SwitchOff
		});
		win.showCenter(true);
}

function addDepartment() {
	var action = 'departmentForm';
	win = new Window({
			id: 'oddzial_wnd',
			className: "bluelighting", 
			minimizable: false,
			maximizable: false,
			title: "Dodaj",
			url:  contentUrl + '?a=' + action + '&add=1',
			width:780, 
			height:453, 
			destroyOnClose: true, 
			recenterAuto:false,
			showEffect:Effect.BlindDown,
			hideEffect: Effect.SwitchOff
		});
		
		win.showCenter(true);
}

function wojChanged(frame) {
	var woj = frame.document.getElementById('wojewodztwo');
	var powiat = frame.document.getElementById('powiat');
	var gmina = frame.document.getElementById('gmina');
	
	if (woj.value > 0) {
		var action = 'subtreesSelect';
		
		powiat.innerHTML = 'Odświeżanie ...';
		gmina.innerHTML = 'wybierz powiat';
		
		new Ajax.Request(contentUrl,
			{
				method:'get',
				parameters: {
					a: action, 
					purexml: 1, 
					tree_parent: woj.value
					},
				onSuccess: function(tr) {
					powiat.innerHTML = '<select id="powiatsel" onchange="window.parent.powChanged(window)"><option>-- nie wybrany --</option>'+
						tr.responseText + "</select>";
				},
				onFailure: function() { 
					
				}
			}
		);
	}
	else {
		powiat.innerHTML = 'wybierz województwo';
		gmina.innerHTML = 'wybierz powiat';
	
	
	}
}

function powChanged(frame) {
	var woj = frame.document.getElementById('wojewodztwo');
	var powiat = frame.document.getElementById('powiat');
	var powiatsel = frame.document.getElementById('powiatsel');
	var gmina = frame.document.getElementById('gmina');
	
	if (powiatsel.value > 0) {
		var action = 'subtreesSelect';
		gmina.innerHTML = 'Odświeżanie ...';
		
		new Ajax.Request(contentUrl,
			{
				method:'get',
				parameters: {
					a: action, 
					purexml: 1, 
					tree_parent: powiatsel.value
					},
				onSuccess: function(tr) {
					gmina.innerHTML = '<select name="pdata[options]" id="pdata[options]">'+
						tr.responseText + "</select>";
				},
				onFailure: function() { 
					
				}
			}
		);
	}
	else {
		gmina.innerHTML = 'wybierz powiat';
	}
}

function wojChangedLoc(includeAll) {
	var woj = document.getElementById('wojewodztwo');
	var powiat = document.getElementById('powiat');
	var gmina = document.getElementById('gmina');
	
	if (includeAll)
		includeAll = 1;
	else
		includeAll = '';
	
	if (woj.value > 0) {
		var action = 'subtreesSelect';
		
		powiat.innerHTML = 'Odświeżanie ...';
		gmina.innerHTML = 'wybierz powiat';
		
		new Ajax.Request(contentUrl,
			{
				method:'get',
				parameters: {
					a: action, 
					purexml: 1, 
					tree_parent: woj.value
					},
				onSuccess: function(tr) {
					powiat.innerHTML = '<select id="powiatsel" onchange="powChangedLoc(\'' + includeAll + '\')"><option>-- nie wybrany --</option>'+
						tr.responseText + "</select>";
				},
				onFailure: function() { 
					
				}
			}
		);
	}
	else {
		powiat.innerHTML = 'wybierz województwo';
		gmina.innerHTML = 'wybierz powiat';
	
	
	}
}

function powChangedLoc(includeAll) {
	var woj = document.getElementById('wojewodztwo');
	var powiat = document.getElementById('powiat');
	var powiatsel = document.getElementById('powiatsel');
	var gmina = document.getElementById('gmina');
	
	var allOption = '';
	if (includeAll != '')
		allOption = '<option>-- nie wybrana --</option>';
	
	if (powiatsel.value > 0) {
		var action = 'subtreesSelect';
		gmina.innerHTML = 'Odświeżanie ...';
		
		new Ajax.Request(contentUrl,
			{
				method:'get',
				parameters: {
					a: action, 
					purexml: 1, 
					tree_parent: powiatsel.value
					},
				onSuccess: function(tr) {
					gmina.innerHTML = '<select name="pdata[options]" id="pdata[options]">'+ allOption +
						tr.responseText + "</select>";
				},
				onFailure: function() { 
					
				}
			}
		);
	}
	else {
		gmina.innerHTML = 'wybierz powiat';
	}
}

function getOfficeData() {
	var action = 'getOfficeData';
	var msg = $('copyMsg');
	
	msg.innerHTML = waitImageHTML + ' trwa kopiowanie';
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {
				a: action, 
				purexml: 1
				},
			onSuccess: function(tr) {
				var arr = tr.responseText.split(";");
				
				for (i = 0; i < arr.length; i++) {
					r = 1;
					if (i == arr.length - 1)
						r=2;
					arr[i] = arr[i].substring(1, arr[i].length - r);
				}
				
				$('xdata[siedziba/ulica]').value = arr[0];
				$('xdata[siedziba/numer_lokalu]').value = arr[1];
				$('xdata[siedziba/numer_domu]').value = arr[2];
				$('xdata[siedziba/miejscowosc]').value = arr[3];
				$('xdata[siedziba/kod]').value = arr[4];
				msg.innerHTML = "";
			},
			onFailure: function() { 
				
			}
		}
	);


}

function saveOffice() {
	var action = 'saveOfficeData';
	var msg = $('waitBase');
	
	msg.innerHTML = waitImageHTML + ' trwa zapisywanie';
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {	a: action, 
					purexml: 1,
					ulica: $('xdata[siedziba/ulica]').value,
					nr_lok: $('xdata[siedziba/numer_lokalu]').value,
					nr_dom: $('xdata[siedziba/numer_domu]').value,
					miejsc: $('xdata[siedziba/miejscowosc]').value,
					kod: $('xdata[siedziba/kod]').value,
					person: $('xdata[siedziba/nip]').value
				},
			onSuccess: function(transport) {
				var response = transport.responseText;
				msg.innerHTML = response;
				
			},
			onFailure: function() { 
				msg.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	
}

function refreshReferentions() {
	var action = 'referentionsTable';
	var content = $('referentions');
	
	
	content.innerHTML = waitImageHTML + ' trwa odświeżanie listy';
	// make request:
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {
				a: action, 
				purexml: 1
				},
			onSuccess: function(tr) {
				var response = tr.responseText;
				content.innerHTML = response;
			},
			onFailure: function() { 
				content.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	return false;
}

function refreshPrices() {
	var action = 'pricesTable';
	var content = $('prices');
	
	
	content.innerHTML = waitImageHTML + ' trwa odświeżanie listy';
	// make request:
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {
				a: action, 
				purexml: 1
				},
			onSuccess: function(tr) {
				var response = tr.responseText;
				content.innerHTML = response;
			},
			onFailure: function() { 
				content.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	return false;
}

function refreshCerts() {
	var action = 'certsTable';
	var content = $('certs');
	
	
	content.innerHTML = waitImageHTML + ' trwa odświeżanie listy';
	// make request:
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {
				a: action, 
				purexml: 1
				},
			onSuccess: function(tr) {
				var response = tr.responseText;
				content.innerHTML = response;
			},
			onFailure: function() { 
				content.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	return false;
}

function refreshAcredits() {
	var action = 'acreditsTable';
	var content = $('acredits');
	
	
	content.innerHTML = waitImageHTML + ' trwa odświeżanie listy';
	// make request:
	new Ajax.Request(contentUrl,
		{
			method:'get',
			parameters: {
				a: action, 
				purexml: 1
				},
			onSuccess: function(tr) {
				var response = tr.responseText;
				content.innerHTML = response;
			},
			onFailure: function() { 
				content.innerHTML = 'Wystąpił błąd pobierania formularza. Skontaktuj się z administratorem.';
			}
		}
	);
	return false;
}



function uploadRefComplete(text, error) {
	if (!error) {
		//var msg = window.frames.win.content.contentDocument.getElementById('msgBox');
		//msg.innerHTML = text;
		
		window.Windows.getFocusedWindow().close();
		window.parent.document.getElementById('refr').click();
	}
}

function  saveReferention(dataid, refnum) {
	var action = 'saveReferention';
	var msg = window.frames.win.content.contentDocument.getElementById('msgBox');
	
	var uplText = 'nic';
	var name = window.frames.win.content.contentDocument.getElementById('new_file_name').value;
	var inp = window.frames.win.content.contentDocument.getElementById('new_file_box');
	
	if (inp.value == '' && refnum == 0) {
		alert('Należy najpierw wybrać plik');
		return;
	}
	else {
		msg.innerHTML = waitImageHTML + ' trwa zapisywanie';
		micoxUpload(inp, contentUrl + '?a=' + 
						action + '&dataid=' + dataid + '&purexml=1&refnum=' + refnum + '&name=' + name , 'msgNone', 
						uplText, 'Wystąpił błąd', 'uploadRefComplete');
	}
}

function  saveFileByType(dataid, position, type) {
	var action = 'saveFileByType';
	var msg = window.frames.win.content.contentDocument.getElementById('msgBox');
	
	var uplText = 'nic';
	var name = window.frames.win.content.contentDocument.getElementById('new_file_name').value;
	var link = window.frames.win.content.contentDocument.getElementById('new_file_link').value;
	var inp = window.frames.win.content.contentDocument.getElementById('new_file_box');
	
	if (inp.value == '' && position == 0) {
		alert('Należy najpierw wybrać plik');
		return;
	}
	else {
		msg.innerHTML = waitImageHTML + ' trwa zapisywanie';
		micoxUpload(inp, contentUrl + '?a=' + 
						action + '&dataid=' + dataid + '&purexml=1&position=' + position 
							+ '&name=' + name + '&link=' + link + '&type=' + type , 'msgNone', 
						uplText, 'Wystąpił błąd', 'uploadRefComplete' + type);
	}
}

function uploadRefComplete1(text, error) {
	if (!error) {
		window.Windows.getFocusedWindow().close();
		window.parent.document.getElementById('refr1').click();
	}
}

function uploadRefComplete2(text, error) {
	if (!error) {
		window.Windows.getFocusedWindow().close();
		window.parent.document.getElementById('refr2').click();
	}
}

function uploadRefComplete3(text, error) {
	if (!error) {
		window.Windows.getFocusedWindow().close();
		window.parent.document.getElementById('refr3').click();
	}
}


function deleteReferention(refnum) {
	if (confirm('Czy na pewno chcesz usunąć tą referencję? Plik zostanie bezpowrotnie skasowany z serwera.')) {
		var action = 'deleteReferention';
		var msg = $('waitBase');
		
		msg.innerHTML = waitImageHTML + ' trwa kasowanie';
		
		new Ajax.Request(contentUrl,
			{
				method:'get',
				parameters: {
					a: action, 
					purexml: 1,
					refnum: refnum
					},
				onSuccess: function(transport) {
					var response = transport.responseText;
					msg.innerHTML = response;
					
					refreshReferentions();
				},
				onFailure: function() { 
					msg.innerHTML = 'error';
					//refreshReferentions();
				}
			}
		);
	}
}



function deleteFileByType(position, type) {
	if (confirm('Czy na pewno chcesz usunąć ten plik? Zostanie on bezpowrotnie skasowany z serwera.')) {
		var action = 'deleteFileByType';
		var msg = $('waitBase');
		
		msg.innerHTML = waitImageHTML + ' trwa kasowanie';
		
		new Ajax.Request(contentUrl,
			{
				method:'get',
				parameters: {
					a: action, 
					purexml: 1,
					position: position,
					type: type
					},
				onSuccess: function(transport) {
					var response = transport.responseText;
					msg.innerHTML = response;
					
					if (type == 1)
						refreshPrices();
					else if (type == 2)
						refreshCerts();
					else if (type == 3)
						refreshAcredits();
					
				},
				onFailure: function() { 
					msg.innerHTML = 'error';
					//refreshReferentions();
				}
			}
		);
	}
}


function editReferention(refnum) {
	var action = 'editReferention';
	var title = "Dodaj referencję";
	if (refnum > 0)
		title = "Edytuj referencję";
	
	win = new Window({
			className: "bluelighting", 
			minimizable: false,
			maximizable: false,
			title: title,
			url: contentUrl + '?a=' + action + '&refnum=' + refnum,
			width: 400, 
			height: 235, 
			destroyOnClose: true, 
			recenterAuto: false,
			showEffect:Effect.BlindDown,
			hideEffect: Effect.SwitchOff
		});
		
		win.showCenter(true);
}

function editFileByType(position, type) {
	var action = 'editFileByType';
	var title = "";
	
	if (type == 1)
		title = "Dodaj nagrodę";
	else if (type == 2)
		title = "Dodaj certyfikat";
	else if (type == 3)
		title = "Dodaj akredytację";
	
	if (position > 0) {
		if (type == 1)
			title = "Edytuj nagrodę";
		else if (type == 2)
			title = "Edytuj certyfikat";
		else if (type == 3)
			title = "Edytuj akredytację";
	}
	
	win = new Window({
			className: "bluelighting", 
			minimizable: false,
			maximizable: false,
			title: title,
			url: contentUrl + '?a=' + action + '&position=' + position + '&type=' + type,
			width: 600, 
			height: 260, 
			destroyOnClose: true, 
			recenterAuto: false,
			showEffect:Effect.BlindDown,
			hideEffect: Effect.SwitchOff
		});
		
	win.showCenter(true);
}

function editGoogleMap(department) {
	var action = 'editGoogleMap';
	var title = "";
	
	win = new Window({
			className: "bluelighting", 
			minimizable: false,
			maximizable: false,
			title: "Położenie oddziału",
			url: contentUrl + '?a=' + action + '&department=' + department,
			width: 660, 
			height: 500, 
			destroyOnClose: true, 
			recenterAuto: false,
			showEffect:Effect.BlindDown,
			hideEffect: Effect.SwitchOff
		});
		
	win.showCenter(true);
}