var nykyinen_sivu;
var osoite = "cms/ajaxserver.php";
var sivurakenne;

var editors = new Array();	
/** Funktio luo elementin sisään FCK editorin ilmentymän. Tarkistaa myös, ettei jo olemassaolevaa ilmentymää luoda uudestaan
* @param element, tämän elementin sisään editori luodaan. Elementillä tulee olla määriteltynä ID sen tunnistamista varten 
**/
var editors = Array();
function init_editor(element){
	//Tarkistetaan ettei editoria jo luotu
	if (editors.indexOf(element) != -1)
		return;
	//Lisätään editori taulukkoon, jossa luodut editorit ovat
	editors[editors.length] = element;		
	
	var fck = new FCKeditor(element.id);
	fck.BasePath = "cms/fckeditor/" ;

	fck.ToolbarSet = 'TamicoCMS' ;
	fck.Height = element.style.height;
	fck.Value = element.innerHTML;
	element.innerHTML = fck.CreateHtml();
	
	//Laitetaan editointirivi vielä näkyviin
	var elem = document.getElementById("edit_"+element.id);
	elem.style.display = "block";
	
}
var initiated_elements = new Array;
function init_text_edit(element){
	
	if (initiated_elements.indexOf(element.id) > 0)
		return;
	
	
	initiated_elements.push(element.id);
	
	sisalto = element.innerHTML;
	element.innerHTML = "";
	var field = document.createElement("input");
	tag = "div";
	
	field.id = "edit_" + element.id;
	
	field.type = "text";
	field.value = sisalto;
	field.style.width = "100%";
	
	//var thetag = document.createElement(tag);
	//thetag.appendChild(field);
	element.appendChild(field);
	

	
	
}
/** Funktio lähettää tarvittavat tiedot editorista ennaltamääriteltyyn osoitteeseen xml-muodossa
 * 
 */
function tallenna_editorista(sivu_id,kieli,sijainti,tyyppi){
	try{
		var keski = FCKeditorAPI.GetInstance(sijainti);		
	}catch(e){		
		return;
	}
	
	var arvo = htmlspecialchars(keski.GetHTML(),3);	

	var req = new  Request({
		 method:  'post',
		 url:  'cms/ajaxserver.php',
		 header: 'text',
		 data:  {
	
		 	'action'  : 'tallenna_elementti',
		 	'kieli' : kieli,
		 	'sivu' : sivu_id,
		 	'sijainti' : sijainti,
		 	'data' : arvo,
		 	'tyyppi' : tyyppi
		 },	 
		 onSuccess:  function(responseText, responseXML) {
			 alert(responseXML.getElementsByTagName("viesti")[0].firstChild.nodeValue);
		}
	});
	req.send();
	
}

function editoi_elementtia(sivu_id,kieli,sijainti){
	leveys = 300;
	korkeus = 300;
	alert(sijainti);
	return;
	params = "?sivu_id="+sivu_id+"&kieli="+kieli+"&sijainti="+sijainti;
	
	str = "width="+leveys+",height="+korkeus+","+laske_ikkunan_keskitys(200,300);
	var win = window.open("cms/element_properties.html"+params,null,str);
	
}
function avaa_sivunmuokkaus(sivu_id){
	
	if (sivu_id != null){
		var req = new  Request({
			 method:  'post',
			 url:  'cms/ajaxserver.php',
			 header: 'xml',
			 data:  { 
			 	'action'  : 'hae_sivu',
			 	'sivu_id' : sivu_id
			 },			 
			 onSuccess:  function(responseText, responseXML) {
				 paivita_sivunmuokkaus(responseXML);
				
				//$('ajax_status_holder').style.display="none";	
				//$('kommentit').innerHTML = response;
			}
		});
		req.send();		
	}
}
function paivita_sivunmuokkaus(xml_response){
	
	juur = xml_response.firstChild;
	
	tmp = "";
	for(i  = 0; i < juur.childNodes.length; i++){
		kentta = juur.childNodes[i].tagName;
		arvo = juur.childNodes[i].firstChild.nodeValue;
		if (kentta == "jarjestys"){
			continue;
		}else if (kentta == "julkaise"){
			
			if (arvo == "1"){
				$(kentta).checked = true;				
			}
			else{
				$(kentta).checked = false;
			}
		}else if(kentta == "id"){			
			$(kentta).value = arvo;
			$('id_nakyva').value = arvo;
		}
		else{
			if ($(kentta))
				$(kentta).value = arvo;
			else
				tmp += kentta;
		}
	}	
	return;
}
function tallenna_sivu(){
	
	id = $('id').value;
	toggle_busy("Tallennetaan sivu");
	//Set the options of the form's Request handler.
	var req = new Form.Request($('sivumuokkaus'), 'kommentit', {
			'resetForm': false,
			'onSuccess': function(response) {
					$(id).getChildren("span")[0].innerHTML = $('nimi').value;
					toggle_busy();
				},
			'onFailure': function(response) { 
					alert('Virhe');
				}
			});
	req.send();
}
function poista_sivu(){
	id = $('id').value;
	var req = new  Request({
		 method:  'post',
		 url:  'cms/ajaxserver.php',
		 header: 'text',
		 data:  { 
		 	'action'  : 'poista_sivu',
		 	'sivu_id' : id
		 },			 
		 onSuccess:  function(responseText, responseXML) {
			 ok = responseXML.getElementsByTagName("ok")[0].firstChild.nodeValue;
			 if (ok != "-1"){
				 $(id).dispose();
			 }else{
				 alert(responseXML.getElementsByTagName("viesti")[0].firstChild.nodeValue);
			 }
			 
		}
	});
	req.send();	
}
function lisaa_sivu(vanhempi,kieli){
	if (vanhempi != null && kieli != null){
		toggle_busy("Lisätään uusi sivu");
		var req = new  Request({
			 method:  'post',
			 url:  'cms/ajaxserver.php',
			 header: 'text',
			 data:  {
				'async' : false, 
			 	'action'  : 'luo_sivu',
			 	'vanhempi' : vanhempi,
			 	'kieli' : kieli
			 },			 
			 onSuccess:  function(responseText, responseXML) {
				 id = responseXML.getElementsByTagName('id')[0].firstChild.nodeValue;
				 $('uusi').id = id;
				 toggle_busy();
			}
		});
		
		req.send();		
	}
}
function tallenna_elementti(kieli,sivu_id,sijainti,tyyppi){
	
	arvo = $("edit_" + sijainti).value;

	
	var req = new  Request({
		 method:  'post',
		 url:  'cms/ajaxserver.php',
		 header: 'text',
		 data:  {	
		 	'action'  : 'tallenna_elementti',
		 	'kieli' : kieli,
		 	'sivu' : sivu_id,
		 	'sijainti' : sijainti,
		 	'data' : arvo,
		 	'tyyppi' : tyyppi
		 },	 
		 onSuccess:  function(responseText, responseXML) {
			 alert(responseXML.getElementsByTagName("viesti")[0].firstChild.nodeValue);
		}
	});
	req.send();
}
function toggle_busy(str){
	info = $('ajax_status_holder');
	if (info.style.display == "none"){
		info.style.display= "block";
		$('ajax_teksti').innerHTML = str;
	}else{
		info.style.display = "none"
	}	 
}
function tallenna_rakenne(kieli){
	toggle_busy("Tallennetaan sivurakennetta");
	
	
	rakenne = hae_sivurakenne();	
	
	if (rakenne){
		
		var req = new  Request({
			 method:  'post',
			 url:  'cms/ajaxserver.php',
			 header: 'text',
			 data:  { 
			 	'action'  : 'tallenna_rakenne',
			 	'kieli' : kieli,
			 	'rakenne' : rakenne
			 },			 
			 onSuccess:  function(responseText, responseXML) {
				 $('ajax_status_holder').style.display = "none";
				 $('ajax_teksti').innerHTML = "";
				 //paivita_sivunmuokkaus(responseXML);
			}
		});		
		req.send();		
	}
	
}

/** Funktio hakee sivurakenteen ja palauttaa sen puolipisteillä erotettuna vanhempi:
 * 
 */
function hae_sivurakenne(){
	elems = $('tree').getElements('li');	
	
	rakenne = "";
	for (i = 0; i < elems.length; i++){
		lista =  elems[i].getChildren("ul")[0];
		if (children = lista.getChildren("li")){
			for (j = 0 ; j < children.length; j++){	
				//Kasataan tästä merkkijuono:
				// vanhempi:lapsi:järjestys
				rakenne += elems[i].id + ":" + children[j].id + ":" +  (children.length - j) + ";";				
			}
		}		
	}
	return rakenne;
}
function htmlspecialchars (string, quote_style, charset, double_encode) {
	quote_style = "ENT_QUOTES";
	double_encode = true;
	
    var optTemp = 0, i = 0, noquotes= false;
    if (typeof quote_style === 'undefined' || quote_style === null) {        quote_style = 2;
    }
    string = string.toString();
    if (double_encode !== false) { // Put this first to avoid double-encoding
        string = string.replace(/&/g, '&amp;');    }
    string = string.replace(/</g, '&lt;').replace(/>/g, '&gt;');
 
    var OPTS = {
        'ENT_NOQUOTES': 0,        'ENT_HTML_QUOTE_SINGLE' : 1,
        'ENT_HTML_QUOTE_DOUBLE' : 2,
        'ENT_COMPAT': 2,
        'ENT_QUOTES': 3,
        'ENT_IGNORE' : 4    };
    if (quote_style === 0) {
        noquotes = true;
    }
    if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags        quote_style = [].concat(quote_style);
        for (i=0; i < quote_style.length; i++) {
            // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4
            if (OPTS[quote_style[i]] === 0) {
                noquotes = true;            }
            else if (OPTS[quote_style[i]]) {
                optTemp = optTemp | OPTS[quote_style[i]];
            }
        }        quote_style = optTemp;
    }
    if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {
        string = string.replace(/'/g, '&#039;');
    }    if (!noquotes) {
        string = string.replace(/"/g, '&quot;');
    }
 
    return string;
   }
function laske_ikkunan_keskitys(leveys,pituus){
	
	vasen = (screen.width - leveys) / 2;
	yla = (screen.height - pituus) / 2;
	return ("left="+vasen+",top="+yla);
}
