/*****************************
*VAROS-VEZETO-ELIT alkalmazas*
*javascript/view/box.js      *
*L. M.: 2008-03-15           *
*****************************/
/*******************************************************************************
*oView osztaly az egyes elemek megjelenitese a feladata                        *
*Az osztaly feltetelezi egy doboz CSS letezeset, ahol definialva van:          *
*maga a doboz,                                                                 *
*a doboz fejlece, cime,                                                        *
*es a doboz tartalma.                                                          *
*Ha ikonsorra is szukseg van, akkor annak felsorolasnak (ul) kell lenni.       *
*                                                                              *
*VALTOZOK                                                                      *
*parentElement: az az elem, amihez hozza akarjuk adni az uj elemet             *
*                                                                              *
*FUGGVENYEK                                                                    *
*initialize:     az osztaly konstruktora                                       *
*getId:          id alapjan keresi meg a szuloelemet                           *
*getClass:       class alapjan keresi meg a szuloelemet                        *
*shoSimpleBox:   egy egyszeru doboz kirajzolasa fejlec, cim, ikonok nelkul     *
*showBox:        egy doboz kirajzolasanak vezerlometodusa                      *
*boxHeadContent: a doboz fejlecenek kirajzolasa                                *
*boxText:        szoveg kiiratasa                                              *
*boxIcons:       a fejlec vezerlo ikonsoranak kirajzolasa                      *
*setIconList:    az ikonsor elemeinek elkeszitese                              *
*setLiList:      ul alapú menüsor/oszlop elkészítése                           *
*******************************************************************************/
oView={};

oView.initialize=function(styleDisplay)
{
  this.setStyleDisplay(styleDisplay);
}

oView.setStyleDisplay=function(styleDisplay)
{
  this.styleDisplay=styleDisplay;
}

oView.getStyleDisplay=function()
{
  return this.styleDisplay;
}

oView.getId=function(sParentElement)
{
  return this.parentElement=document.getElementById(sParentElement);
}

oView.getClass=function(sTag,sParentElement)
{
  var tags=document.getElementsByTagName(sTag);
  for(var i=0;i<tags.length;i++)
  {
    if(tags[i].getAttribute('class')==sParentElement)
    {
      return this.parentElement=tags[i];
    }
  }
}

oView.showSimpleBox=function(sParentElement,sId,sClassName)
{
  var newParag=document.createElement('div');
  
  if(sId)
  {
    newParag.setAttribute('id',sId);
  }
  if(sClassName){
    newParag.className=sClassName;
  }
  
  sParentElement.appendChild(newParag);
  
  return newParag;
}

/*
*oView.showBox
*param:
*  sParentElement: szulocimke,
*  sId:            a cimke id-je (ha 0, akkor nincs),
*  sClassName:     a cimke osztalya,
*  sHeadClass:     a doboz fejenek osztalya,
*  sTitle:         a doboz cime,
*  sContentClass:  a doboz tartalmanak osztalya,
*/
oView.showBox=function(sParentElement,sId,sClassName,sHeadClass,sTitle,
                       sContentClass)
{
  var parent=document.getElementById(sParentElement);
  var newParag=document.createElement('div');
  var newHead=oView.boxHeadContent(sHeadClass);
  var newContent=oView.boxHeadContent(sContentClass);
  var newHeadP=document.createElement('p');
  var newHeadText=oView.boxText(sTitle);
  
  if(sId)
  {
    newParag.setAttribute('id',sId);
  }
  
  if(sClassName)
  {
    newParag.className=sClassName;
  }
  
  newHeadP.appendChild(newHeadText);
  newHead.appendChild(newHeadP);
  newParag.appendChild(newHead);
  newParag.appendChild(newContent);
  parent.appendChild(newParag);

  newContent.style.display=this.getStyleDisplay();
  
  return newParag;
}

oView.boxHeadContent=function(sClass)
{
  var newHead=document.createElement('div');
  
  newHead.className=sClass;
  
  return newHead;
}

oView.boxText=function(sText)
{
  var newText=document.createTextNode(sText);
  
  return newText;
}

/*
*oView.boxIcons
*param:
*  oBox:       doboz objektum,
*  sClassName: az ikonsor osztalya,
*  bMin:       a minimalizalás engedélyezése
*  bClose:     a bezarás engedélyezése
*  classPrint: a nyomtatás engedélyezése
*/
oView.boxIcons=function(oBox,sClassName,bMin,bPrint,bClose,bHidden){
  var headClass=oBox.firstChild;
  var newIcons=document.createElement('div');
  var newIconsUl=oView.setIconList(oBox,bMin,bPrint,bClose,bHidden);
  
  newIcons.className=sClassName;
  newIcons.appendChild(newIconsUl);
  headClass.appendChild(newIcons);
}

/*oView.SetIconList
 *param:
 *  oBox:   a szulo doboz
 *  bMin:   a minimalizalasert felelos adatok
 *  bPrint: a nyomtatatert felelos adatok
 *  bClose: a bezarasert felelos adatok
 */
oView.setIconList=function(oBox,bMin,bPrint,bClose,bHidden){
  var aTitle=Array("Kicsinyít","Nyomtat","Bezár");
  var newUl=document.createElement('ul');
  
  for(var i=1;i<arguments.length;i++){
    if(arguments[i]){
      var newLi=document.createElement('li');
      var newAnchor=oView.setTextLinx(aTitle[i-1],bHidden);
      newAnchor.setAttribute('id',"icon"+i);
      newLi.appendChild(newAnchor);
      newUl.appendChild(newLi);
    }
  }

  return newUl;
}

oView.setTextLinx=function(sText,bHidden){
  var newAnchor=document.createElement('a');

  newAnchor.setAttribute('title',sText);
  newAnchor.setAttribute('href','javascript: void(0)');
  if(bHidden){
    newAnchor.innerHTML=sText;
  }
  else{
    newAnchor.innerHTML="&nbsp;";
  }
  
  return newAnchor;
}

oView.aDisplay=function(oBox,element,aPix1,aPix2,iPieces)
{
  var liAnchor=element.firstChild;
  var id=oBox.getAttribute('id');
  liAnchor.style.backgroundImage=aPix1;
  if(iPieces==1){
    if(navigator.appName=="Microsoft Internet Explorer"){
      liAnchor.attachEvent("onclick",oView.changeDisplay(id,aPix1,aPix2));
    }
    else{
      newButton.addEventListener("click",oView.changeDisplay(id,aPix1,aPix2));
    }
  }
  else
  {
    if(navigator.appName=="Microsoft Internet Explorer"){
      liAnchor.attachEvent("onclick",oView.changeDisplay(id,aPix1,aPix2));
    }
    else{
      newButton.addEventListener("click",oView.changeDisplay(id,aPix1,aPix2));
    }
  }
}

oView.changeDisplay=function(id,aPix1,aPix2)
{
  var parag=document.getElementById(id);
  var content=parag.childNodes[1];
  var liElement=parag.childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[0];
  
  if(content.style.display=='block')
  {
    content.style.display='none';
    liElement.style.backgroundImage=aPix2;
  }
  else
  {
    content.style.display='block';
    liElement.style.backgroundImage=aPix1;
  }
}

/*oView.setLiList
 *param:
 *  sParent:     a szulo doboz
 *  aLiElements: a listelemek
 *  sClass:      a listaelemek osztálya
 *  bHidden:     látható legyen a felirat, vagy sem.
 *               (akkor 1, ha van kép hozzárendelve a linkhez,
 *               ekkor nem látszik a felirat!)
 */
oView.setLiList=function(sParent,aLiElements,sClass,bHidden){
  var newUl=document.createElement('ul');
  for(var i=0;i<aLiElements.length;i++){
    var newLi=document.createElement('li');
    var newAnchor=oView.setTextLinx(aLiElements[i],bHidden);
	
	  newLi.className=sClass;
    
    newLi.appendChild(newAnchor);
    newUl.appendChild(newLi);
  }
  
  return sParent.appendChild(newUl);
}

oView.setAnchorOnClick=function(sAnchorElement,sFunction){
  var existAnchor=document.getElementById(sAnchorElement);

    if(existAnchor.attachEvent){
      existAnchor.attachEvent("onclick",sFunction);
    }
    else if(existAnchor.addEventListener){
      existAnchor.addEventListener("click",sFunction,false);
    }
}


oView.specialCharSafe=function(text)
{
  var e=[
    ["\u00E1", "&#225;"], //á
    ["\u00C1", "&#193;"], //Á
    ["\u00E9", "&#233;"], //é
    ["\u00C9", "&#201;"], //É
    ["\u00ED", "&#237;"], //í
    ["\u00CD", "&#205;"], //Í
    ["\u00F3", "&#243;"], //ó
    ["\u00D3", "&#211;"], //Ó
    ["\u00F6", "&#246;"], //ö
    ["\u00D6", "&#214;"], //Ö
    ["\u0151", "&#337;"], //ő
    ["\u0150", "&#336;"], //Ő
    ["\u00FA", "&#250;"], //ú
    ["\u00DA", "&#218;"], //Ú
    ["\u00FC", "&#252;"], //ü
    ["\u00DC", "&#220;"], //Ü
    ["\u0171", "&#369;"], //ű
    ["\u0170", "&#368;"], //Ű
    ["\u201E", "&#8222;"], //magyar also idezojel
    ["\u201D", "&#8221;"], //magyar felso idezojel
    ["\u00E4", "&#228;"], //ä
    ["\u00C4", "&#196;"], //Ä
    ["\u00EB", "&#235;"], //ë
    ["\u00CB", "&#203;"], //Ë
    ["\u00DF", "&#223;"], //ß
    ["\u2663", "&#9827;"], //clubs
    ["\u2666", "&#9830;"], //diams
    ["\u2660", "&#9824;"], //spades
    ["\uFFFD", ""], //&shy; fixalasa
    ["&", "%26"] //a POST-ban elkuldott szovegben nem lehet "&" jel
  ];

 for (var i=0; i<e.length; i++)
 {
   text = text.replace(e[i][0],e[i][1],"g");
 }

 return text;
} 

oView.specialCharEkezet=function(text)
{
  var e=[
    ["á", "&#225;"], //á
    ["Á", "&#193;"], //Á
    ["é", "&#233;"], //é
    ["É", "&#201;"], //É
    ["í", "&#237;"], //í
    ["Í", "&#205;"], //Í
    ["ó", "&#243;"], //ó
    ["Ó", "&#211;"], //Ó
    ["ö", "&#246;"], //ö
    ["Ö", "&#214;"], //Ö
    ["ő", "&#337;"], //ő
    ["Ő", "&#336;"], //Ő
    ["ú", "&#250;"], //ú
    ["Ú", "&#218;"], //Ú
    ["ü", "&#252;"], //ü
    ["Ü", "&#220;"], //Ü
    ["ű", "&#369;"], //ű
    ["Ű", "&#368;"], //Ű
  ];

 for (var i=0; i<e.length; i++)
 {
   text = text.replace(e[i][1],e[i][0],"g");
 }

 return text;
}

oView.initialize('block');
