/*------------------------------------------------------------------------------
-- Megváltoztatja a td háttérszínét.
--
-- @param tr: A tr objektumot kapja meg benne.
-- @param color: A színkódot kapja meg benne.
------------------------------------------------------------------------------*/
function settrBackgroundColor(tr, color) {
    if (tr != null) {
        var tds = tr.getElementsByTagName('td');

        for (var i = 0; i < tds.length; i++) {
			tds[i].setAttribute('oldBackgroundColor', tds[i].style.backgroundColor);
            tds[i].style.backgroundColor = color;
        }
    }
}

/*------------------------------------------------------------------------------
-- Visszaállítja az eredeti háttérszínt.
--
-- @param tr: A tr objektumot kapja meg benne.
------------------------------------------------------------------------------*/
function restoretrBackgroundColor(tr) {
    if (tr != null) {
        var tds = tr.getElementsByTagName('td');
        
        for (var i = 0; i < tds.length; i++) {
			tds[i].style.backgroundColor = tds[i].getAttribute('oldBackgroundColor');
        }
    }
}

/*------------------------------------------------------------------------------
-- Megváltoztatja a csengő formáját. Áthúzottból sima, simából áthúzott.
-- 
-- @param tr: A tr objektumot kapja meg benne. 
-- @param i_remove_image_class: Áthúzott csengő class típusa.
-- @param i_add_image_class: Sima csengő class típusa.
------------------------------------------------------------------------------*/
function setBellIcon(tr,i_remove_image_class,i_add_image_class) {
    var w_is_have = 0;
    var w_pos = 0;
    if (tr != null) {
        // Kiszedi a tv oldalon a második td-t, amiben az adatok vannak. 
        td = tr.getElementsByTagName('td')[1];

        //A pictogramok sorban mennek ki. Előszőr kamere, fényképezőgép, végül
        // csengő. Nekem az utolsó "A" tag kell, így kiválasztom a csengőt.
        for (i=0;i<td.childNodes.length;i++)
        //Megkeresi az utolsó anchors-t, és ha megtalálta, elmenti a 
        //pozícióját, és átbillent egy flag-et, jelezve, hogy volt találat.
        {if (td.childNodes[i].tagName=="A") {w_pos = i;w_is_have = 1;}}        
        
        // Ha remove csengő van kint, akkor kicseréli sima csengőre.
        // Egyébként, ha sima csengő van kint, akkor kicserél remove csengőre.
        if (td.childNodes[w_pos].className == i_remove_image_class)
        {if (w_is_have){td.childNodes[w_pos].className = i_add_image_class;}}
        else {if (td.childNodes[w_pos].className == i_add_image_class) 
              {
              if (w_is_have){td.childNodes[w_pos].className = i_remove_image_class;}
              }
        }          
    }
}

/*------------------------------------------------------------------------------
-- A felugró ablakot készíti el.
--
-- @param i_url: Az url, amit meg kell nyitni. 
-- @param i_name: Az ablak nevét kapja meg.
-- @param i_settings: Az ablak beállításait kapja meg. 
-- @param i_popupWindow: Object-et kap meg benne.
------------------------------------------------------------------------------*/
function popup_window(i_url, i_name, i_settings, i_popupWindow) {
	var w_popupWindow;
		
	this.name = 'mainWindow';
	if (i_popupWindow && i_popupWindow[0] && !i_popupWindow[0].closed && i_popupWindow[0].location) {
		i_popupWindow[0].location.href = i_url;
		if (window.focus) {i_popupWindow[0].focus()}
	
	} else {
		w_popupWindow = window.open(i_url, i_name, i_settings);
		if (!w_popupWindow.opener) w_popupWindow.opener = self;
		i_popupWindow[0] = w_popupWindow;
		if (window.focus) {w_popupWindow.focus()
}
	}
	return false;
}

/*------------------------------------------------------------------------------
-- Az összesített oldalon változtatja meg a user kommentet.
--
-- @param i_record_id: Melyik eseménynél történt a változtatás.
-- @param i_user_comment: A szöveg, amire változtatta a user. Erre kell cserélni. 
------------------------------------------------------------------------------*/
function modify_object(i_record_id,i_user_comment) 
{
  // Megnyitja, azt az elemet, ahol a változtatás szükséges, és megnézi
  // hogy, mennyi gyereke van. 
  try {var w_elements = opener.document.getElementById(i_record_id);	 
       var w_elements_child_length = w_elements.childNodes.length;
            
       // Megkeresi az adat bokszot. 
       for (var i=0;i<w_elements_child_length;i++)
       {if (w_elements.childNodes[i].id == "data-box") {var w_data_box = w_elements.childNodes[i];break}}
    
      // Ha van adat boksz, megkeresi, annak gyerekei közül, hogy hova kell betenni
      // a user kommentet.  
      if (w_data_box != "undefined")
      {var w_data_box_child_length = w_data_box.childNodes.length;
         for (var j=0;j<w_data_box_child_length;j++)
          {if (w_data_box.childNodes[j].id == "location-box") {var w_user_comment_position = ++j;break;}}
      }
      
        // Ha minden ok, és megvan a hely, akkor beteszi a megváltozott szöveget.
        if (w_user_comment_position != "undefined")
        {w_data_box.childNodes[w_user_comment_position].nodeValue = i_user_comment.replace(/[_]/gi,' ');}
      }
  catch (ex) {}
}

/*------------------------------------------------------------------------------
-- Egy átdobó függvény, ami az összesített esemény oldalon, esemény törlésekor
-- hajtódik végre.
--
-- @param i_object_id: Az esemény, ami törölve lesz. 
-- @param i_time_box: Megkapja, annak a boksznak az azonosítóját, ahol az eseményt
--                    végre kell hajtani.   
-- @param i_area_site_id: A terület azonosítóját kapja meg benne.
-- @param i_personal_text: Ha minden esemény törölve lesz, akkor kiírja egy 
--                         ismertető szöveget.
------------------------------------------------------------------------------*/
function remove_object(i_object_id,i_time_box,i_area_site_id,i_personal_text)
{
	remove_elements(i_object_id);
	remove_time_box(i_time_box);
	remove_area_header(i_personal_text,i_area_site_id);
}

/*------------------------------------------------------------------------------
-- Ha minden bejegyzett eseménytörlésre kerül, kiszedi a headert, és
-- kiír egy ismertető szöveget.
--
-- @param i_personal_text: Ismertető szöveget tartalmazza.
-- @param i_area_site_id: A terület típusát kapja meg benne.
------------------------------------------------------------------------------*/
function remove_area_header(i_personal_text,i_area_site_id)
{
  var w_close = 1;
  var i_is_header;
  var i = 0;
  var area_td = opener.document.getElementById("record_set");	     
	
	// Két féle képpen lehet kezelni a DOM-ot, köszönhető ez annak, hogy
  // két féle megjelenítő van. (Időszerinti, és cím szerinti).
  // Ha az exception nem hajtódik végre, akkor időszerinti a bontás, és
  // úgy kell eljárnia. Ilyenkor egy flag, az i_is_header 1-s értéket kap.
  // Ez egyben azt is jelenti, hogy van header, mert a rendezés olyan.
  try {var exception_test = opener.document.getElementById("area_site_"+i_area_site_id).tagName;
       var area = opener.document.getElementById("area_site_"+i_area_site_id);
	     var area_header = opener.document.getElementById("area_site_header_"+i_area_site_id);
       i_is_header = 1;}
	catch (ex) {i_is_header = 0;}
  
  try {   
  
  // Ha nincs gyerek, akkor az azt jelenti, hogy nincs esemény, és
  // ki lehet szedni a DOM-ból. 
  if (area_td.childNodes.length == 0) {w_close = 0;}
  
  // Megnézi, hogy milyen gyerekek léteznek. Ha van olyan tag, ami "table" típusú,
  // akkor ki is ugrik a ciklusból, és átbillent egy flag-et, hogy van esemény
  //  nem kell csinálni a DOM-al semmit. 
  for (var i=0;i<area_td.childNodes.length;i++)
	  {if (area_td.childNodes[i].tagName == "TABLE") {w_close = 1;break;} else {w_close = 0;}}
  	    
	// Kiszedi a DOM-ból, mert nincs esemény, és kiírja a figyelmeztető szöveget.
  if (w_close == 0) { 
      if (i_is_header == 1) {area_header.parentNode.removeChild(area_header);area_td.removeChild(area);}
                      area_td.className = "txt";
                      area_td.innerHTML = i_personal_text;}
  }
  catch (ex) {}                        
}

/*------------------------------------------------------------------------------
-- Kiszedi az időpontot tartalmazó bokszot, amennyiben nem tartoznak hozzá 
-- események
--
-- @param i_time_box: Az időpontot tartalmazó boksz azonosítója.
------------------------------------------------------------------------------*/
function remove_time_box(i_time_box)
{
	try 
  {
	 
	 var w_time_table = opener.document.getElementById("table_"+i_time_box);
	 var w_time_box = opener.document.getElementById(i_time_box);
	 var i = 0;
	 var w_close = 1;

	 // Cilkus indúl végig az eseményket tartalmazó tábla gyerekein, és 
	 // vizsgálja, hogy van-e még gyereke. 
    for (var i=0;i < w_time_table.childNodes.length;i++)
	 {	
		//Ha van TBODY tag, akkor beleugrik, és annak gyerekeit kezdi el vizsgálni. 
    if (w_time_table.childNodes[i].nodeType == 1 && w_time_table.childNodes[i].tagName == "TBODY")
		{ if (w_time_table.childNodes[i].childNodes.length == 0)
      {w_close = 0;}
          
			// Megnézi, a TBODY gyerekeit, és ha talál benne, TR típusú tag-t, akkor
			// kiugrik a ciklusból, és flag átbillentésével jelzi, hogy van gyerek 
      for (j=0;j<w_time_table.childNodes[i].childNodes.length;j++)
			{if (w_time_table.childNodes[i].childNodes[j].tagName == "TR") {w_close=1;break;} else {w_close=0;}}
		}
	 }  
  }
	catch(e){}

  // Ha zárni kell a bokszot.
	if (w_close == 0)
	{

    // Megnézi, hogy mi a boksz következő testvére.
    // Ha "BR" tag-t tartalmaz, akkor kiszedi azt is, hogy
    // a majd hiányzó boksz után ne legyen nagy széthúzás.
    try {
		if (w_time_table.nextSibling.nodeType == 3)
      {var w_next_brother = w_time_table.nextSibling.nextSibling;} 
		else
		  {var w_next_brother = w_time_table.nextSibling;}
      }
    catch (e) {w_next_brother = null;}	

    
    if (w_next_brother != null)
    {
		  if (w_next_brother.tagName == 'BR')
		  {w_next_brother.parentNode.removeChild(w_next_brother);}
    }
    // Kiszedi az időpontot tartalmazó objektumot, és az eseményket
    // tartalmazó táblát. 
		w_time_box.parentNode.removeChild(w_time_box);				
		w_time_table.parentNode.removeChild(w_time_table);
	}

}

/*------------------------------------------------------------------------------
-- Kiszed a DOM-ből, egy eseményt.
-- 
-- @param i_object_id: az esemény, amit ki kell szedni.
------------------------------------------------------------------------------*/
function remove_elements(i_object_id)
{
 try {   
	w_element = opener.document.getElementById(i_object_id);
	w_time_box_position = -1;


	try {
	// Ha van következő testvére egyéb műveleteket is fog csinálni, ha nincs, akkor
	// simán kiszedi az eseményt.
	if (w_element.nextSibling.nodeType == 3)
	{var w_next_brother = w_element.nextSibling.nextSibling;} 
	else
	{var w_next_brother = w_element.nextSibling;}		
	} catch(err) {w_element.parentNode.removeChild(w_element);}

  // Ha van testvére az eseménynek.
	if (w_next_brother && w_next_brother != null)
	{
    // Kiszedi a testvér gyerekienek számát.
		var w_child_length = w_next_brother.childNodes.length;
		for (var i=0;i<w_child_length;i++)
		{ // Megnézi, hogy van-e nem sima szöveget (tag-t) tartalmazó gyereke. 
			if (w_next_brother.childNodes[i].nodeType != 3)
			{
          //Ha a gyerek idő bokszában jár, megnézi, hogy van-e időpont
          // hozzárendelve a gyerekez.   
			    if (w_next_brother.childNodes[i].id=="time-box")
			    { //Ha nincs időpont mgjegyzi a gyerek helyét. 
				    if (remove_different_element(w_next_brother.childNodes[i].innerHTML) == "" )
					  {w_time_box_position = i;}
 			    }
			}
		}

    // Időpontot örököl a testvér gyereke.
		if (w_time_box_position != -1)
		{w_next_brother.childNodes[w_time_box_position].innerHTML = w_element.childNodes[w_time_box_position].innerHTML;}
	}
     //Végül kiszedi a DOM-ból az eseményt.
	   w_element.parentNode.removeChild(w_element);
	}
	catch (err){}
}

/*------------------------------------------------------------------------------
-- Kiszedi az átadott stringből, a nem kívánatos karaktereket.
--
-- @param i_from_replace: A string, amiből ki kell szedni a kerektereket.
-- @param return: Megtisztított string.
------------------------------------------------------------------------------*/
function remove_different_element(i_from_replace)
{
	var w_str = i_from_replace;
	w_str = strim(w_str);
	w_str.replace("/n", "");
	w_str = strim(w_str);
	w_str.replace("<tbody>", "");	
	w_str = strim(w_str);
	w_str.replace("</tbody>", "");	
 	return strim(w_str);
}

/*------------------------------------------------------------------------------
-- Kiszedi a szöveg elejéről és végéről a fölösleges space-t.
--
-- @param i_from_trim: A szöveg, amit csonkítani kell.
-- @param return: Megtisztított string.
------------------------------------------------------------------------------*/
function strim(i_from_trim) {return i_from_trim.replace(/^\s+|\s+$/g,"");}

/*------------------------------------------------------------------------------
-- Kiszedi a szöveg elejéről fölösleges space-t.
--
-- @param i_from_trim: A szöveg, amit csonkítani kell.
-- @param return: Megtisztított string.
------------------------------------------------------------------------------*/
function sltrim (i_from_ltrim) {return i_from_ltrim.replace(/^\s+/,"");}

/*------------------------------------------------------------------------------
-- Kiszedi a szöveg végéről fölösleges space-t.
--
-- @param i_from_trim: A szöveg, amit csonkítani kell.
-- @param return: Megtisztított string.
------------------------------------------------------------------------------*/
function srtim (i_from_rtrim) {return i_from_rtrim.replace(/\s+$/,"");}

