var konteksti=false;
var sivunOsienMaara=0;
var contents_count=Array();
var sivunOsaID=Array();
var kontekstin_osaID;
var mallinAsetukset_html_iideet=Array();
var sivunOsaID_asettelunVaihtoon=false;


function palkkiDo(toiminto) {
	// Tähän voidaan määritellä useita eri 
	if(document.getElementById("action").value=="palaute_asetukset") {
		continueAction=confirm("Haluatko siirtyä pois tästä tilasta?");
		if(continueAction==false) return;
	}
	if(sivunOsienMaara>0) tallennaOsiotHiddenKenttiin();
	document.getElementById("action").value="muokkaus";
	document.getElementById("do_val").value="tallenna_sivu_ja_siirry_toimintoon";
	document.getElementById("do_id").value="muokkaus";		// OLETUKSENA "muokkaus", muutetaan switch-rakenteessa:
	
	switch(toiminto) {
		case "tallenna": {
			if(sivunOsienMaara>0) sivu_tallenna();
			break;
		}
		case "esikatselu": {
			document.getElementById("do_id").value="esikatselu";
			break;
		}
		case "julkaisesivusto": {
			document.getElementById("do_id").value="generatesivustohtml";
			break;
		}
		case "muotoilut": {
			document.getElementById("do_id").value="muotoilut";
			break;
		}
		case "rakenne": {
			document.getElementById("do_id").value="sivut";
			break;
		}
		case "logout": {
			logoutTrue=confirm("Oletko varma että haluat kirjautua ulos?");
			if(logoutTrue==true)
			{
				document.getElementById("do_id").value="logout";
			}
			break;
		}
		case "muokkaus": {
			document.getElementById("do_id").value="muokkaus";
			break;
		}
		case "naytapalkki": {		// 24.2.2005 - jokin vanha käyttämätön toiminto, säilytetään silti
			document.getElementById("do_id").value="muokkaus";
			break;
		}
		case "pikagallupit": {
			document.getElementById("do_id").value="pikagallupit";
			break;
		}
		case "uutiset": {
			document.getElementById("do_id").value="uutiset";
			break;
		}
		case "palautteet": {
			document.getElementById("do_id").value="palautteet";
			break;
		}
		case "tiedostot": {
			document.getElementById("do_id").value="tiedostot";
			break;
		}
		case "asiakassivusto": {
			document.getElementById("do_id").value="asiakassivusto";
			break;
		}
		case "asiakasusergroups": {
			document.getElementById("do_id").value="asiakasusergroups";
			break;
		}
		case "asiakasusers": {
			document.getElementById("do_id").value="asiakasusers";
			break;
		}
		case "kirjanpitajat": {
			document.getElementById("do_id").value="kirjanpitajat";
			break;
		}
		case "elakeryhmat": {
			document.getElementById("do_id").value="elakeryhmat";
			break;
		}
		case "parametriryhmat": {
			document.getElementById("do_id").value="parametriryhmat";
			break;
		}
		case "palkkalajit": {
			document.getElementById("do_id").value="palkkalajit";
			break;
		}
		case "tilit": {
			document.getElementById("do_id").value="tilit";
			break;
		}
		case "lupatyypit": {
			document.getElementById("do_id").value="lupatyypit";
			break;
		}
		case "asemat": {
			document.getElementById("do_id").value="asemat";
			break;
		}
		case "sivusto_asetukset": {
			document.getElementById("do_id").value="sivusto_asetukset";
			break;
		}
		case "linkkivalikko_asetukset": {
			document.getElementById("do_id").value="linkkivalikko_asetukset";
			break;
		}
		case "uutis_asetukset": {
			document.getElementById("do_id").value="uutis_asetukset";
			break;
		}
		case "palaute_asetukset": {
			document.getElementById("do_id").value="palaute_asetukset";
			break;
		}
		case "paalinkit": {
			document.getElementById("do_id").value="paalinkit";
			break;
		}
		case "sivun_asetuksiin": {
			document.getElementById("do_id").value="sivun_asetuksiin";
			break;
		}
		case "kayttoloki": {
			document.getElementById("do_id").value="kayttoloki";
			break;
		}
		case "joukkoviestit": {
			document.getElementById("do_id").value="joukkoviestit";
			break;
		}
	}
	document.forms[0].submit();
	
//	if(konteksti!=false) konteksti.focus();
}

function asetaKonteksti(valittuObjekti,valitunOsan_db_id) {
	document.execCommand("LiveResize",true, true);
	
	konteksti=valittuObjekti;
	if(valitunOsan_db_id!=false) kontekstin_osaID=valitunOsan_db_id;
	else kontekstin_osaID=false;
	
	// document.getElementById("editorin_muotoilunapit").disabled=false;
}

function poistaKonteksti(valittuObjekti) {
	if(konteksti==valittuObjekti) konteksti=false;
	//document.getElementById("editorin_muotoilunapit").disabled=true;
}

function execContent_suoraan(toiminto)
{
	document.execCommand(toiminto);
	checkButtons(konteksti);
}

function execContent(toiminto)
{
	if (toiminto == "FontColor")
	{
		theColor = document.all.fontcolor.value;
		if (theColor != "")
			document.execCommand("ForeColor", false, theColor);
	}
		
	else if (toiminto == "FontSize")
	{
		theSize = document.all.fontsize.value;
		if (theSize != "")		
			document.execCommand("FontSize", false, theSize);
	}
		
	else if (toiminto == "FontName")
	{
		theName = document.all.fontname.value;
		if (theName != "")
			document.execCommand("FontName", false, theName);
	}
	
	else if (toiminto == "InsertImage")
	{
		// theImg = document.all.imagepath.value;
		theImg="images/ryhma1.jpg";
//		theImg="http://www.nettamedia.com/kuvat/nettapalkkinetti.jpg";
		if (theImg != "")
			document.execCommand("InsertImage", false, theImg);
	}
	
	// window.event.srcElement.style.borderStyle = "outset";
}


function tallennaOsiotHiddenKenttiin() {
	for(j=0; j < sivunOsienMaara+1; j++)
	{
		for(i=1; i < contents_count[j]+1; i++)
		{
			div_obj=document.getElementById("content["+sivunOsaID[j]+"]["+i+"]");
			hidden_obj=document.getElementById("source_content["+sivunOsaID[j]+"]["+i+"]");
			hidden_obj.value=div_obj.innerHTML;
		}
	}
	
	// Tästä lähtisi sähköposti kehittäjälle, koska tuota ei pitäisi tapahtua koskaan asiakkaalle
		if(mallinAsetukset_html_iideet.length!=mallinAsetukset_html_maara) alert("Aseta mallinasetuksien määrä!");
	
	// Mallin asetuksien syöttö hidden-kenttiin, tätä tarvitaan siis vain
	// ContentEditable-muotoisten asetuksien kanssa
	i=0;
	for(i=0; i < mallinAsetukset_html_maara; i++)
	{
		div_obj=document.getElementById("div_"+mallinAsetukset_html_iideet[i]);
		hidden_obj=document.getElementById(mallinAsetukset_html_iideet[i]);
		hidden_obj.value=div_obj.innerHTML;
	}
}


function sivu_tallenna() {
	tallennaOsiotHiddenKenttiin();
	document.getElementById("tallenna_pysyvasti").value="true";
	document.getElementById("action").value="muokkaus";
	document.forms[0].submit();
}

function uutinen_muokkaa(uutisen_id) {
	if(sivunOsienMaara>0) tallennaOsiotHiddenKenttiin();
	document.getElementById("action").value="muokkaus";
	do_val="uutinen_muokkaa";
	do_id=uutisen_id;
	do_id2=false;
	mySubmit(do_val, do_id, do_id2);
}

function uutinen_poista(uutisen_id,uutisen_lyhytkuvaus) {
	isOK=confirm("Haluatko varmasti poistaa uutisen '"+uutisen_lyhytkuvaus+"'?");
	
	if(isOK) {
		if(sivunOsienMaara>0) tallennaOsiotHiddenKenttiin();
		document.getElementById("action").value="muokkaus";
		do_val="uutinen_delete";
		do_id=uutisen_id;
		do_id2=false;
		mySubmit(do_val, do_id, do_id2);
	}
}

function sivu_tallenna_sessioon() {
	tallennaOsiotHiddenKenttiin();
	document.getElementById("tallenna_pysyvasti").value="false";
	document.getElementById("action").value="muokkaus";
	document.forms[0].submit();
}

function lisaaKuva(kuvanPolku) {
	if(konteksti!=false)
	{
		konteksti.focus();
		document.execCommand("InsertImage", false, kuvanPolku);
		// Suljetaan ellei ole kielletty:
		if(document.getElementById("kuvanvalinta_noAutoClose").checked==false) piilota('kuvavalintabox');
	} else alert("Valitse ensin alue johon kuvan haluat!");
}

function setFields_attribute(fieldID,attributeName,attributeValue)
{
	fieldObj=document.getElementById(fieldID);
//	fieldObj.attributes[attributeName].nodeValue=attributeValue;
}

function nayta_taustakuvavalinta(lohkoNimi,taustakuva,taustakuvarepeat,taustakuvasijainti,taustavari,kuvahakemisto,naytettavaValilehti) {
	nayta('taustakuvan_valintabox');
	
	if(taustakuva==false || taustakuva=="") taustakuva="[_field_false_notset_]";
	if(taustakuvarepeat==false || taustakuvarepeat=="") taustakuvarepeat="";
	if(taustakuvasijainti==false || taustakuvasijainti=="") taustakuvasijainti="[_field_false_notset_]";
	if(taustavari==false || taustavari=="") taustavari="white";
	
	document.getElementById("bgSettings_prefix").value=lohkoNimi;
	vaihdaTaustaAsetuksienLootat(naytettavaValilehti,lohkoNimi);
	
	// Taustakuva-tiedoston alustus:
		obj=document.getElementById("bgSettings[taustakuva]");
		for(i=0; i < obj.options.length;i++) {
			if(obj.options[i].value==taustakuva) obj.options[i].selected=true;
		}
	
	// Taustakuvarepeat alustus:
		obj=document.getElementById("bgSettings[taustakuvarepeat]");
		for(i=0; i < obj.options.length;i++) {
			if(obj.options[i].value==taustakuvarepeat) obj.options[i].selected=true;
		}
	
	// Taustakuvasijainti alustus:
		obj=document.getElementById("bgSettings[taustakuvasijainti]");
		for(i=0; i < obj.options.length;i++) {
			if(obj.options[i].value==taustakuvasijainti) obj.options[i].selected=true;
		}
	
	// Taustavari alustus:
		document.getElementById("bgSettings[taustavari]").value=taustavari;
		document.getElementById("bgSettings[variexamplebox]").style.backgroundColor=taustavari;
		sInitColor=taustavari;

	updateEsimerkkiTausta(kuvahakemisto);
}

function kuvanlisays() {
	openDragArea("editor.php?action=kuvanlisays",650,550,70,70,"maximized_off","scroll_off","hright","vtop","resizable");
}

function asettelunvalintabox() {
	openDragArea("editor.php?action=asettelu",410,510,70,70,"maximized_off","scroll_off","hcenter","vcenter","resizable_off");
}

function croptool() {
	openDragArea("editor.php?action=croptool",420,450,70,70,"maximized","scroll","hcenter","vcenter","resizable");
}

function AddLink(editdoc)
{//Identify selected text
	sRange=document.selection.createRange();
	
	if (typeof(sRange.htmlText)=="undefined")
	{
		alert("Ole hyvä ja valitse jokin alue josta haluat hyperlinkin.\n(Kuvan valinnassa valitse kuva 'maalaamalla' ympäriltä)");
	}
	else if (sRange.htmlText != "")
	{
//		var myText = openDragArea("editor.php?action=linkpopup",420,450,350,70,"maximized_off","scroll_off","hcenter_off","vcenter_off","resizable_off");
		var myText = showModalDialog("editor.php?action=linkpopup",editdoc,"resizable: no; help: no; status: no; scroll: no; dialogWidth:420px; dialogHeight:470px;");
		if (myText)
		{
			// insert HTML
				myText+=sRange.htmlText+"</a>";
			  sRange.pasteHTML(myText);
			  
			// Kursori uuden sisällön loppuun
				sRange.collapse(false); // move to end of range
				sRange.select();        // re-select
		}
	}
	else
	{
		alert("Ole hyvä ja valitse alue josta haluat hyperlinkin");
	}
	
								/*    
								var sText = document.selection.createRange();
								if (sText!=""){
								    //Create link
								     document.execCommand("CreateLink");
								     //Replace text with URL
								*/
								/*
								     if (sText.parentElement().tagName == "A"){
								       sText.parentElement().innerText="<a href='"+sText.parentElement().href+"'>"+sText.parentElement().innerText+"</a>";
								       document.execCommand("ForeColor","false","#FF0033");
								     }
								*/
								/*
								  }
								else{
								    alert("Please select some blue text!");
								  }
								*/
}

function checkButtons(editor_obj)
{
	return false;
	editdoc=editor_obj.document;
	if(editdoc!=null)
	{
		// ,'StrikeThrough','SubScript','SuperScript'
	  var IDList = Array('Bold','Italic','Underline','JustifyLeft','JustifyCenter','JustifyRight','InsertOrderedList','InsertUnorderedList','SubScript','SuperScript');
	  for (i=0; i<IDList.length; i++) {
	    kuvatoimintonimi=IDList[i];
	    kuvatoimintonimi=kuvatoimintonimi.toLowerCase();
    	nappienTilat[kuvatoimintonimi]=false;
	    var btnObj = document.all["btn_" +kuvatoimintonimi];
	    if (btnObj == null) { continue; }
	    var cmdActive = editdoc.queryCommandState( IDList[i] );
	    
			if(IDList[i]!=undefined) {		// Ylänappien vaihdot vain jos muutettava nappi on olemassa
		    if(cmdActive) {
		    	vaihdakuva("e_"+IDList[i]+"3.png",btnObj); 
		    	nappienTilat[kuvatoimintonimi]=3;
		    } else {
		    	vaihdakuva("e_"+IDList[i]+"1.png",btnObj); 
		    	nappienTilat[kuvatoimintonimi]=1;
		    }
		  }
	  }
	}
}


function checkMuotoiluSelect()
{
	// Valittu alue
		sRange  = document.selection.createRange();
	
// VIRHEITÄ EI NÄYTETÄ:
	var oldHandler = window.onerror;
	window.onerror = function() { return true; } // jotta virheet eivät tule esiin..

	if(sRange!=null && sRange!=undefined && sRange!=false)
	{
		// Haetaan ylempi elementti jossa css-luokan nimen pitäisi olla
			pElement=sRange.parentElement();
		
		// Jos elementin nimi on strong,em,u tai font niin otetaan parentteja ylöspäin kunnes tagname on p (Paragraph)
			parentsTagName=pElement.tagName.toLowerCase();							// Ylemmän elementin tägin nimi
			
			while(parentsTagName=="strong" || parentsTagName=="em" || parentsTagName=="u" || parentsTagName=="font") {
				pElement=pElement.parentElement;
				parentsTagName=pElement.tagName.toLowerCase();
			}
		
		// Muotoilun valinta SELECT-objekti
			muotoiluSelectObj=document.getElementById("muotoiluCssClassID");
		
		// Muotoilu voi olla vain <p>-tägillä (versiossa 0.9-15.12.04-04)
		if(parentsTagName=="p")
		{
			// Valitun alueen class-attribuutin arvo
				rangeCSSclass=pElement.className;
			
			// Muotoilun valinta SELECT-objektin optioneiden määrä
				muotoilujenMaara=muotoiluSelectObj.options.length;
				
			// Tarkastetaan onko range:n cssclass jokin muotoiluista, jos on niin valitaan se
				for(i=0; i < muotoilujenMaara; i++)
				{
					if(rangeCSSclass==muotoiluSelectObj.options[i].value) {
						muotoiluSelectObj.selectedIndex=i;
						return true;
					} else continue;
				}
		}
	}
	window.onerror=oldHandler;
		
	// Ei löytynyt joten valitaan eka (eli tyhjä) muotoilu ja palautetaan false
		muotoiluSelectObj.selectedIndex=0;
		
	return false;
}


function editor_event(editor_obj,blockEnterParagraph) {
  var editEvent = editor_obj.contentWindow ? editor_obj.contentWindow.event : event;
  var ord       = editEvent.keyCode;    // ascii order of key pressed
  var shiftKey  = editEvent.shiftKey;
  
  checkButtons(editor_obj);
  checkMuotoiluSelect();
  
	// älä salli ENTERIÄ luoda uutta <P>:tä vaan lisää <BR/> eli pelkkä rivinvaihto
	if (ord == 13 && editEvent.type == 'keypress' && blockEnterParagraph==true) {
		editEvent.returnValue = false;
		insertHTML(editor_obj, "<br/>");
		return;
	}
}

function insertHTML(editor_obj,str1,str2)
{
	if(str2==null || str2==undefined) str2="";
	
	//editor_obj.focus();
	sRange  = document.selection.createRange();
  var sHtml   = sRange.htmlText;
	
	// insert HTML
	if (sHtml.length) {                        // Jos tekstiä on valittuna
	  sRange.pasteHTML(str1 +sText+ str2);				 // niin str1 ja str2 tämän ympärille
	} else {                                   // Muuten jos kyseessä on vain lisäys
	  sRange.pasteHTML(str1 + str2);               // niin lisätään kursorin kohtaan
	}
	
	// Kursori uuden sisällön loppuun
	sRange.collapse(false); // move to end of range
	sRange.select();        // re-select
}

function changeCSSclass(cssClassName)
{
	editdoc=konteksti.document;
	if(editdoc!=null)
	{
		editdoc.execCommand('RemoveFormat');
    var sRange = editdoc.selection.createRange();
    var editorRange = editdoc.body.createTextRange();           // editor range
    var sHtml   = sRange.htmlText;
    var sText		= sRange.text;
   	var isSelectArea = sText.length>0 ? 1 : 0;
    
    if(sHtml=="") sHtml="&nbsp;";
    
    var oldHandler = window.onerror;
    window.onerror = function() { alert("Valitse muotoiltava tekstilohko"); return true; } // partial table selections cause errors
    
    if(sHtml.length)		// Jos on valittuna jotain
    {
		  // filter tag - this code is run for each HTML tag matched
			  var filterTag = function(tagBody,tagName,tagAttr)
			  {
			    tagName = tagName.toLowerCase();
			    var closingTag = (tagBody.match(/^<\//)) ? true : false;
					
					if(tagName=="img" || tagName=="a") return tagBody;
					else return "";
			  }
			
	    // Poistaa kaikki tägit valitusta tekstistä, eli vain oma <P class=...> sallitaan ja img+a(href), ks filterTag
			  RegExp.lastIndex = 0;
		    var matchTag = /<\/?(\w+)((?:[^'">]*|'[^']*'|"[^"]*")*)>/g;   // this will match tags, but still doesn't handle container tags (textarea, comments, etc)
		  	
		  	sHtml = sHtml.replace(matchTag, filterTag);
		  
	    // Lisättävä teksti (html), lisätään alkuun oma P-tägi (ja tietenkin myös sulkeva p), väliin sHtml
		    pAlku='<p class="'+cssClassName+'" align="left">';
		    pLoppu='</p>';
		    
		    uusiHtml=pAlku+sHtml+pLoppu;
		    
	    // Suoritetaan lisäys
		    sRange.pasteHTML(uusiHtml);
		  
		  // Palautus ja uudelleenvalinta
			  sRange.collapse(false);
			  sRange.select();
		}
    window.onerror = oldHandler;	// Palautetaan error handleri entiselleen
	}
	konteksti.focus();
    /*
		editdoc.execCommand('FontName',0,'636c6173734e616d6520706c616365686f6c646572');	// "Merkataan" ko FONT-tagi
		var fontArray = editdoc.all.tags("FONT");			// Kaikki FONT-tagit
		for (i=0; i<fontArray.length; i++) {
		  if (fontArray[i].face == '636c6173734e616d6520706c616365686f6c646572') {	// Jos merkattu font-tagi kyseessä, jatka
		    fontArray[i].face = "";
		    fontArray[i].className = cssClassName;
		    fontArray[i].outerHTML = fontArray[i].outerHTML.replace(/face=['"]+/, "");
				
				
			    var curRange = editdoc.selection.createRange();
			
			    // check element and element parents for class names
			    var pElement;
			    if (curRange.length) { pElement = curRange[0]; }              // control tange
			    else                 { pElement = curRange.parentElement(); } // text range
			    
			    pElement=pElement.parentElement;
		    alert(pElement.outerHTML);
		    
    var curRange = editdoc.selection.createRange();

    // check element and element parents for class names
    var pElement;
    if (curRange.length) { pElement = curRange[0]; }              // control tange
    else                 { pElement = curRange.parentElement(); } // text range
		    }
		}
*/
}

////////////////////// VÄRIPALKKI ////////////////////// 
//This variable needs to have global scope for the callColorDlg function to persist the chosen color
var sInitColor = null;
function callColorDlg(pleaseReturnColor){
	//if sInitColor is null, the color dialog box has not yet been called
	if (sInitColor == null)
		var sColor = dlgHelper.ChooseColorDlg();
	else
	//call the dialog box and initialize the color to the color previously chosen
		var sColor = dlgHelper.ChooseColorDlg(sInitColor);
	//change the return value from a decimal value to a hex value and make sure the value has 6
	//digits to represent the RRGGBB schema required by the color table
		sColor = sColor.toString(16);
	if (sColor.length < 6) {
	  var sTempString = "000000".substring(0,6-sColor.length);
	  sColor = sTempString.concat(sColor);
	}
	
	// OMA, JOS KUTSUTTU MUUALTA KUIN CONTENTEDITABLESTA, PALAUTETAAN ARVO, MUUTEN document.execCommand.....
	if(pleaseReturnColor==true) {
		//set the initialization color to the color chosen
		sInitColor = sColor;
		return "#"+sColor.toUpperCase();
	}
	else {
		document.execCommand("ForeColor", false, sColor);
	//set the initialization color to the color chosen
		sInitColor = sColor;
	}
}
////////////////////// VÄRIPALKKI ////////////////////// 


function valitseTaustaVari()
{
	colorValueFields_id="bgSettings[taustavari]";
	esimerkkiAlueen_id="bgSettings[previewTD]";
	colorDisplayFields_id="bgSettings[variexamplebox]";
	
	htmlColor=callColorDlg(true);
	document.getElementById(colorValueFields_id).value=htmlColor;
	document.getElementById(colorDisplayFields_id).style.backgroundColor=htmlColor;
	
//	if(esimerkkiAlueen_id!=false && esimerkkiAlueen_id!=undefined)
//		document.getElementById(esimerkkiAlueen_id).style.backgroundColor=htmlColor;
	
	updateEsimerkkiTausta(false);
}

function valitseMuotoilunVari(colorValueFields_id,colorDisplayFields_id,muotoiluMode)
{
	htmlColor=callColorDlg(true);
	document.getElementById(colorValueFields_id).value=htmlColor;
	document.getElementById(colorDisplayFields_id).style.backgroundColor=htmlColor;
	
	if(muotoiluMode) updateMuotoiluExample("color",htmlColor);
}

