var deleting = false;
var formBig = false;
var isSelected = false;
function confirmDel(divId) {
	if (deleting) return;
	deleting = true;
	document.getElementById(divId).style.display = 'block';
}
function propagateFresh() {
	$$('td.fresh').each(function(el) {
		el.up().addClassName('fresh');
	});
}
function completeDel(divId) {
	deleting = false;
	propagateFresh();
}
function cancelDel(divId) {
	deleting = false;
	document.getElementById(divId).style.display = 'none';
}

function show(elementId) {
	document.getElementById(elementId).style.display = 'block';
}
function hide(elementId) {
	document.getElementById(elementId).style.display = 'none';
}


function replaceDiacritics(s)
{
  var s;

  var diacritics =[
	/[\300-\306]/g, /[\340-\346]/g, // A, a
	/[\310-\313]/g, /[\350-\353]/g, // E, e
	/[\314-\317]/g, /[\354-\357]/g, // I, i
	/[\322-\330]/g, /[\362-\370]/g, // O, o
	/[\331-\334]/g, /[\371-\374]/g,  // U, u
	/[\321]/g, /[\361]/g, // N, n
	/[\307]/g, /[\347]/g, // C, c
	/[\u00e1]/g];
	
	var chars = ['A','a','E','e','I','i','O','o','U','u','N','n','C','c','joj'];
	
	for (var i = 0; i < diacritics.length; i++) {
		s = s.replace(diacritics[i],chars[i]);
	}
	
	return s;
}

function updateWebName(sourceId, targetId) {
	var wnElem = document.getElementById(targetId);
	var nameElem = document.getElementById(sourceId);
	
	wnElem.value = replaceDiacritics(nameElem.value); 
}

function getElementsByRegExpId(regexp, tagName, element) {
	element = element === undefined ? document : element;
	tagName = tagName === undefined ? '*' : tagName;
	var out = [];
	var pos = 0;
	var tagElements = element.getElementsByTagName(tagName);
	for(var i = 0; i < tagElements.length; i++) {
		if(tagElements.item(i).id && tagElements.item(i).id.match(regexp)) {
			out[pos] = tagElements.item(i);
			pos++;
		}
	}
	return out;
}

function selectItem(idName, parent) {
	/*var out = getElementsByRegExpId(idName, 'input', parent);
	for(var i = 0; i < out.length; i++) {
		out[i].checked=true;
	}*/
	setSelectableItemState(true, idName, parent);
}
function unselectItem(idName, parent) {
	/*var out = getElementsByRegExpId(idName, 'input', parent);
	for(var i = 0; i < out.length; i++) {
		out[i].checked=false;
	}*/
	setSelectableItemState(false, idName, parent);
}
function setSelectableItemState(state, idName, parent) {
	var out = getElementsByRegExpId(idName, 'input', parent);
	for (var i = 0; i < out.length; i++) {
		var input = out[i];
		if (input == null) {
        	continue;
    	}
      	if (input.getAttribute('type') == 'checkbox' &&
      		input.getAttribute('disabled')) {
          	continue;
      	}
      	if (input.getAttribute('type') == 'checkbox' && state) {
      		input.setAttribute('checked', state);
      	} else {
        	input.removeAttribute('checked');
      	}
	}
}


function setFocus(elementId, tagName, parent) {
    var elements = getElementsByRegExpId(elementId, tagName, parent);
    if (elements[0] && elements[0].focus) {
        elements[0].focus();
    }
}

function checkLoginInfo(formId) {
	var form = document.getElementById(formId);
	// check input fields
	var spanEl;
	var spanErrorEl;
	var el = document.getElementsByTagName("span");	
    for (var i = 0; i < el.length; i++) {
        if (el[i].id == 'spanUsername') {
        	spanEl = el[i];
        } else if (el[i].id == 'spanUsernameError') {
        	spanErrorEl = el[i];
        } 
    }
	var field = form.username;
	var ok = true;
	// username
	if (field.value == "") {
		spanEl.className = 'value errors';
		spanErrorEl.style.display = 'block';
		fieldToFocus = field;
		field.focus();
		ok = false;
	} else {
		spanEl.className = 'value';
		spanErrorEl.style.display = 'none';
	}
	for (var i = 0; i < el.length; i++) {
        if (el[i].id == 'spanPassword') {
        	spanEl = el[i];
        } else if (el[i].id == 'spanPasswordError') {
        	spanErrorEl = el[i];
        } 
	}
	field = form.password;
	// password
	if (field.value == "") {
		spanEl.className = 'value errors';
		spanErrorEl.style.display = 'block';
		if (ok) {
			field.focus();
			ok = false;
		}
	} else {
		spanEl.className = 'value';
		spanErrorEl.style.display = 'none';
	}
	if (!ok) {
		return false;
	}
	// everything is OK
	return true;
}

function doSubmitSecuredLogin(formId){
	var form = document.getElementById(formId);
	// populate action
	var action = window.location.href;
	action = action.replace('http://','');
	action = action.replace('https://','');
	action = action.replace(':8080',':8443');
	action = action.substring(0, action.indexOf('/'));
//	if(action.indexOf('acuratic.com')>=0){
//		action = 'www.acuratic.com';
//	}	
	// do submit
	form.action = 'https://' + action + '/log-in.seam';
	return form.submit();			
}

// radio button functions
function radioButton(radio, groupId) {
    var id = radio.name.substring(radio.name.lastIndexOf(':'));
    var el = radio.form.elements;
    for (var i = 0; i < el.length; i++) {
    	var currId = el[i].name.substring(el[i].name.lastIndexOf(':'));
        if (currId != id) {
        	if (groupId != null) {
        		// handle radios by group id
        		if (currId.indexOf(groupId) != -1) {
        			el[i].checked = false;
        		}
        	} else {
        		// handle all radios
        		el[i].checked = false;
        	}
        }
    }
    radio.checked = true;
}

// select - options functions
function clearSelect(e) {
	var objSelect = e;
	// 1 = no selection label
	while(objSelect.options.length > 1) {
		objSelect.remove(1);
	}
	return objSelect;
}

function createOption(e, newValue, newText) {
	var objSelect = e;
	var objOption = document.createElement("option");
	objOption.text = newText;
	objOption.value = newValue;
	if(document.all && !window.opera) {
		objSelect.add(objOption);
	} else {
		objSelect.add(objOption, null);
	};
}

function addScript(src) {
	var headID = document.getElementsByTagName("head")[0];         
	var newScript = document.createElement('script');
	newScript.type = 'text/javascript';
	newScript.src = src;
	headID.appendChild(newScript);
}

function addStyle(src) {
	var headID = document.getElementsByTagName("head")[0];         
	var newStyle = document.createElement('link');
	newStyle.rel = 'stylesheet';
	newStyle.type = 'text/css';
	newStyle.media = 'all';
	newStyle.href = src;
	headID.appendChild(newStyle);
}
//============================================
//======== CMS page content editor ========================
//============================================

var cmsEditorInicialized = new Object();
var cmsEditorSaved = new Object();
			    
var exceptionHandler = function(ex) { alert("An exception occurred: " + ex.getMessage()); };
var names = {};
var editorId = '';

String.prototype.endsWidth = function (s) {
	return this.length >= s.length && this.substr(this.length - s.length) == s;
}

function customExecCommandHandler(editor_id, elm, command, user_interface, value) {
	switch(command) {
		case "mceInsertTemplate": {
			editorId = editor_id;
			var textReg = /\w+/g;
			var reg = /\{\$[\w=]+\}/g;
			var content = value.content;
			var replacements = content.match(reg);
			names = {};
			if(replacements) {
				for(var i=0; replacements[i]; i++) {
					var text = replacements[i]
					text = text.match(textReg)[0];
					var value = text;
					if(replacements[i].match(textReg).length > 1) {
						value = replacements[i].match(textReg)[1];
					}
					names[text] = value;
				}
				addStyle('/stylesheet/impromptu.css');
				addScript('/scripts/impromptu.3.1.min.js');
				var url = tinyMCE.get(editor_id).getParam("external_link_list_url");
				if (url != null) {
					addScript(url);
				}
				url = tinyMCE.get(editor_id).getParam("external_image_list_url");
				if (url != null) {
					addScript(url);
				}
				waitForJSLoad();
			}
			return false;
		}
	}
	return false;
}

var waitDialogShown = false;
function waitForJSLoad() {
	if(typeof tinyMCELinkList == 'undefined' && typeof tinyMCEImageList == 'undefined') {
		if(!waitDialogShown) {
			Richfaces.showModalPanel('waitDialog_scws');
			waitDialogShown = true;
		}
		window.setTimeout(waitForJSLoad, 100);
	} else {
		if(waitDialogShown) {
			Richfaces.hideModalPanel('waitDialog_scws');
			waitDialogShown = false;
		}
		showTemplateReplacePrompt();
	}
}

function showTemplateReplacePrompt() {
	if(names.length == 0) {
		return false;
	}
	var kmlList = new Array();
	if(tinyMCELinkList != null) {
		var j = 0;
		for(var i = 0; i < tinyMCELinkList.length; i++) {
			if(tinyMCELinkList[i][1].endsWith('.kml')) {
				kmlList[j] = new Array();
				kmlList[j][0] = tinyMCELinkList[i][0];
				kmlList[j][1] = tinyMCELinkList[i][1];
				j++;
			}
		}
	}
	
	var form = '<table>';
	for(var text in names) {
		form += '<tr class="prop"><td class="name">' + text + '</td></tr><tr class="prop"><td>';
		var id = 'template' + text;
		if('Map' == text) {
			form += '<select name="' + id +'" id="'+ id +'" size="1">';
			for(var i = 0; i < kmlList.length; i++) {
				form += '<option value="' + kmlList[i][1] + '">' + kmlList[i][0] +'</option>';
			}
			form += '</select>';
		} else if('Image' == text) {
				form += '<select name="' + id +'" id="'+ id +'" size="1">';
				for(var i = 0; i < tinyMCEImageList.length; i++) {
					form += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] +'</option>';
				}
				form += '</select>';
		} else {
			form += '<input type="text" value="' + names[text] + '" id="' + id + '" name="' + id + '"/>';
		}
		form += '</td></tr>';
	}
	form += '</table>';
	jQuery.prompt('<div class="jqiMessageHeader">Choose</div></br>' + form ,{
		zIndex:400000,
		show:'show',
		overlayspeed:0,
		promptspeed:0,
		callback:function(v,m,f){ 
			var content = tinyMCE.get(editorId).getContent();
			for(var text in names) {
				var replacement = f['template' + text];
				if(replacement != null && replacement != undefined) {
					var reg = new RegExp('\\{\\$' + text + '[=\\w]*\\}', 'g')
					content = content.replace(reg, replacement);
				}
			}
			tinyMCE.get(editorId).setContent(content);
		}
	});
}

function initDataAndShow(elementId, entityClass, entityId, type, localeString) {
	//don't display the loading indicator
	Seam.Remoting.displayLoadingMessage = function() {};
	Seam.Remoting.hideLoadingMessage = function() {};
	Seam.Remoting.loadingMessage = ""; 
  var formId = elementId.substring(0, elementId.indexOf(":"));
  var callback = function(result) {
	  var editorPrefix = entityClass + entityId + type;
	  var editorName = formId + ':' + editorPrefix + 'Editor';
	  tinyMCE.get(editorName + 'TextArea').setContent(result);
	  Richfaces.showModalPanel(editorName + 'Panel');
	  cmsEditorInicialized[editorName] = true;
	  cmsEditorSaved[editorName] = false;
  };
  Seam.Component.getInstance("cmsPageContentEditor")
  		.initData(entityClass, entityId, type, localeString, callback, exceptionHandler);
  return false;				     
}

function saveDataFromEditor(element_id, entityClass, entityId, type, localeString, html, body) {
	var formId = element_id.substring(0, element_id.indexOf(":"));
	var editorPrefix = entityClass + entityId + type;
	var editorName = formId + ':' + editorPrefix + 'Editor';
	if(!cmsEditorInicialized[editorName] || cmsEditorSaved[editorName]) {
		// callback se spousti nekolikrat za sebou, tak umozneni spusteni jen jednou
		return html;
	}

	var content = tinyMCE.get(editorName + 'TextArea').getContent();
	
	Seam.Component.getInstance("cmsPageContentEditor")
		.storeData(entityClass, entityId, type, localeString, content, null, exceptionHandler);
	cmsEditorInicialized[editorName] = false;
	cmsEditorSaved[editorName] = true;
	var visibleTextId = editorPrefix + 'EditorValue'
	var visibleText = document.getElementById(visibleTextId);
	visibleText.innerHTML = content;
	
	Richfaces.hideModalPanel(editorName + 'Panel');
	// refresh zoomed images
	jQuery('body').nivoZoom();

	return html;
}

//============================================
//======== CMS data editor ===================
//============================================

function initCmsDataAndShow(elementId, cid, cmsItemId, localeString) {
	//don't display the loading indicator
	Seam.Remoting.displayLoadingMessage = function() {};
	Seam.Remoting.hideLoadingMessage = function() {};
	Seam.Remoting.loadingMessage = ""; 
	var formId = elementId.substring(0, elementId.indexOf(":"));
	var callback = function(result) {
		  var editorPrefix = 'prefix' + cmsItemId;
		  var editorName = formId + ':' + editorPrefix + 'Editor';
		  tinyMCE.get(editorName + 'TextArea').setContent(result);
		  Richfaces.showModalPanel(editorName + 'Panel');
		  cmsEditorInicialized[editorName] = true;
		  cmsEditorSaved[editorName] = false;
	};
	Seam.Component.getInstance("cmsDataEditor").initData(cid, cmsItemId, localeString, callback, exceptionHandler);
	return false;				     
}

function saveCmsDataFromEditor(element_id, cid, cmsItemId, localeString, save, html, body) {
	var formId = element_id.substring(0, element_id.indexOf(":"));
	var editorPrefix = 'prefix' + cmsItemId;
	var editorName = formId + ':' + editorPrefix + 'Editor';
	if(!cmsEditorInicialized[editorName] || cmsEditorSaved[editorName]) {
		// callback se spousti nekolikrat za sebou, tak umozneni spusteni jen jednou
		return html;
	}

	var content = tinyMCE.get(editorName + 'TextArea').getContent();

	Seam.Component.getInstance("cmsDataEditor").storeData(cid, cmsItemId, localeString, save, content, null, exceptionHandler);
	cmsEditorInicialized[editorName] = false;
	cmsEditorSaved[editorName] = true;
	var visibleTextId = editorPrefix + 'EditorValue'
	var visibleText = document.getElementById(visibleTextId);
	visibleText.innerHTML = content;
	
	Richfaces.hideModalPanel(editorName + 'Panel');
	// refresh zoomed images
	jQuery('body').nivoZoom();

	return html;
}

//============================================
//======== CMS mod rewrite pro HTML ==========
//============================================
// Je nutne nastavit vsem formularum pro tyto stranky action, 
// ktera je v address baru, a ne podle strakny, ktera je renderuje
// Je to kvuli tomu, ze pri kliknuti napriklad na zmenu jazyka se odesle formular na 
// jnou stranku, nez jaka je v address baru a tim se zmeni obsah

function replaceFormsTargetTo(action) {
	var action = window.location.href;
	action = action.replace('://','');
	action = action.substring(action.indexOf('/'), action.length);
	var tagElements = document.getElementsByTagName('form');
	for(var i = 0; i < tagElements.length; i++){
	    tagElements.item(i).action = action;
	}
}

function hideElement(elementId) {
	document.getElementById(elementId).style.display = 'none';
}
function showElement(elementId) {
	document.getElementById(elementId).style.display = '';
}
function createMap(elementId, kmlFile, width, height) {
	var latlng = new google.maps.LatLng(50.078, 14.436);
	var myOptions = { 
		zoom: 6, 
		center: latlng, 
		mapTypeId: google.maps.MapTypeId.ROADMAP 
	};
	var div = document.getElementById(elementId);
	div.style.width = width + 'px';
	div.style.height = height + 'px';
	map = new google.maps.Map(div, myOptions);
	geoXml = new geoXML3.parser({map: map, singleInfoWindow: true});
	geoXml.parse(kmlFile);
}

function addOnLoadFunc(func) {
	var oldonload = window.onload; 
	if(typeof window.onload != 'function') { 
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func(); 
		} 
	} 	
}

function setIframeSize(iframe) {
	var h;
	var w;
	iframe.style.width = '100%';
	if (iframe.contentDocument) {
		w = iframe.contentDocument.documentElement.style.width;
	} else {
		if (iframe.contentWindow) {
			w = iframe.contentWindow.document.body.scrollWidth + 'px';
		} else { return; }
	}
	iframe.style.width = w;
	iframe.style.height = '100px';
	if (iframe.contentDocument) {
		h = iframe.contentDocument.documentElement.style.height;
	} else {
		if (iframe.contentWindow) {
			h = iframe.contentWindow.document.body.scrollHeight + 'px';
		} else { return; }
	}
	iframe.style.height = h;
}

//=======================================
//===========Email obfuscating===========
//=======================================
function mailtoDeobfuscate(coded) {
	var cipher = "ZabcXYdeWVfUTghSiRQjklPmONnMoLpqKJrIHstGuFvEwDxCyBz1A234568790"
	var shift = coded.length
	var link=""
	for (var i=0; i<coded.length; i++){
		if (cipher.indexOf(coded.charAt(i))==-1){
			var ltr = coded.charAt(i)
			link += (ltr)
		} else {
			var ltr = (cipher.indexOf(coded.charAt(i)) - shift + cipher.length) % cipher.length
			link += (cipher.charAt(ltr))
		}
	}
	document.write("<a hr" + "ef=\"mai" + "lto:"+link+"\">"+link+"</a>")
}

function mailtoObfuscate(email) {
	var cipher = "ZabcXYdeWVfUTghSiRQjklPmONnMoLpqKJrIHstGuFvEwDxCyBz1A234568790"
	var shift = email.length
	var coded=""
	for (var i=0; i<email.length; i++){
		if (cipher.indexOf(email.charAt(i))==-1){
			var ltr = email.charAt(i)
			coded += (ltr)
		} else {
			var ltr = ((cipher.indexOf(email.charAt(i)) + shift) % cipher.length)
			coded += (cipher.charAt(ltr))
		}
	}
	document.write("<a hr" + "ef=\"mai" + "lto:"+coded+"\">"+coded+"</a>")
}

