
var cookies;
var alternatestyles;
var fonts;
var breadcrumbs_last_item;
var breadcrumbs_last_dropdown;

/**
 * Cross browser attach event
 */

// This code is copyright 2003 by Gavin Kistner, gavin@refinery.com
// It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	}
} 

function MyAttachEvent(obj,evt,fnc) {
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}

/**
 * insertAfterElement
 */

function insertAfterElement(parent, referenceNode, node) {
  if (referenceNode) referenceNode = referenceNode.nextSibling;
	parent.insertBefore(node, referenceNode);
}

/**
 * insertBeforeElement
 */

function insertBeforeElement(parent, referenceNode, node) {
	parent.insertBefore(node, referenceNode);
}

/**
 * HTTP Cookie Class
 */

// HTTP.Cookies - Burak Gursoy burak[at]cpan[dot]org>
if (!HTTP) var HTTP = {}; // create base class if undefined

HTTP.Cookies = function () { // HTTP.Cookies constructor
   this.JAR = ''; // data cache
}

HTTP.Cookies.VERSION = '1.01';

HTTP.Cookies.Date = function () { // expire time calculation class
   this.format = {
   's' : 1,
   'm' : 60,
   'h' : 60 * 60,
   'd' : 60 * 60 * 24,
   'M' : 60 * 60 * 24 * 30,
   'y' : 60 * 60 * 24 * 365
   };
}

HTTP.Cookies.Date.prototype.parse = function (x) {
   if(!x || x == 'now') return 0;
   var date = x.match(/^(.+?)(\w)$/i);
   var of = 0;
   return (this.is_num(date[1]) && (of = this.is_date(date[1],date[2]))) ? of : 0;
}

HTTP.Cookies.Date.prototype.is_date = function (num, x) {
   if (!x || x.length != 1) return 0;
   var ar = [];
   return (ar = x.match(/^(s|m|h|d|w|M|y)$/) ) ? num * 1000 * this.format[ar[0]] : 0;
}

HTTP.Cookies.Date.prototype.is_num = function (x) {
   if (x.length == 0) return;
   var ok = 1;
   for (var i = 0; i < x.length; i++) {
      if ("0123456789.-+".indexOf(x.charAt(i)) == -1) {
         ok--;
         break;
      }
   }
   return ok;
}

HTTP.Cookies.prototype.date = new HTTP.Cookies.Date; // date object instance

// Get the value of the named cookie. Usage: password = cookie.read('password');
HTTP.Cookies.prototype.read = function (name) {
   var value  = '';
   if(!this.JAR) {
		this.JAR = {};
      var array  = document.cookie.split(';');
      for (var x = 0; x < array.length; x++) {
         var pair = array[x].split('=');
         if(pair[0].substring (0,1) == ' ') pair[0] = pair[0].substring(1, pair[0].length);
         if(pair[0] == name) {
            value = pair[1];
         }
         this.JAR[pair[0]] = pair[1];
      }
   } else {
      for(var cookie in this.JAR) {
         if(cookie == name) {
            value = this.JAR[cookie];
         }
	   }
   }
   return value ? unescape(value) : '';
}

// Create a new cookie or overwrite existing. Usage: cookie.write('password', 'secret', '1m');
HTTP.Cookies.prototype.write = function (name, value, expires, path, domain, secure) {
   var extra = '';
   if (!expires) expires = '';
   if (expires == '_epoch') {
      expires = new Date(0);
   } else if (expires != -1) {
      var Now  = new Date;
      Now.setTime(Now.getTime() + this.date.parse(expires));
      expires = Now.toGMTString();
   }
   if(expires) extra += "; expires=" + expires;
   if(path   ) extra += "; path="    + path;
   if(domain ) extra += "; domain="  + domain;
   if(secure ) extra += "; secure="  + secure;
   document.cookie = name + "=" + escape(value) + extra;
}

// Delete the named cookie. Usage: cookie.remove('password');
HTTP.Cookies.prototype.remove = function (name, path, domain, secure) {
   this.write(name, '', '_epoch', path, domain, secure);
}

/**
 * Alternate Stylesheets Class
 */

var AlternateStyles = Class.create();
AlternateStyles.prototype = {

	initialize: function() {
	},

  set: function(id, prefix) {
    var i, lnk;
    if (!prefix) { prefix=""; }
  	 for( i = 0; lnk = document.getElementsByTagName("link")[i]; i++ ) {
      if ( lnk.getAttribute("rel") && lnk.getAttribute("rel").indexOf("style" ) != -1 && lnk.getAttribute("title") &&
           lnk.id.substring(0,prefix.length) == prefix ) {
            lnk.disabled=(lnk.id != id);
  		}
  	}
   //hogy IE alatt is menjen cookie-bol visszaolvasaskor (uj oldalon):
   for( i=0; i<document.styleSheets.length; i++){
    if( document.styleSheets[i].href.match('small')||
        document.styleSheets[i].href.match('normal')||
        document.styleSheets[i].href.match('large') ){
      if(document.styleSheets[i].href.match(id)){
        document.styleSheets[i].disabled = false;
      }else{
        document.styleSheets[i].disabled = true;
      }
    }
   }
  },

  get: function(prefix) {
    var i, lnk;
    if (!prefix) { prefix=""; }
  	 for( i = 0; lnk = document.getElementsByTagName("link")[i]; i++ ) {
      if ( lnk.getAttribute("rel").indexOf("style" ) != -1 && lnk.getAttribute("title") &&
           !lnk.disabled && lnk.id.substring(0,prefix.length) == prefix) {
        return lnk.id;
      }
  	}
  }

}

/**
 * Font Size Class
 */

var Fonts = Class.create();
Fonts.prototype = {
  initialize: function() {
    var id = cookies.read('preferences.fonts');
    if (!id || id == 'undefined') { id = 'fonts-normal'; }
    alternatestyles.set(id);
    AttachEvent(window, 'unload', this.save);
  },
  
  set: function(size) {
    id = 'fonts-' + size;
	  $('toolbar-fonts-small').src = "/framework/skins/mohumain/images/toolbar-fonts-small"+ (id=="fonts-small"?"-active":"") +".png";
	  $('toolbar-fonts-normal').src = "/framework/skins/mohumain/images/toolbar-fonts-normal"+ (id=="fonts-normal"?"-active":"") +".png";
	  $('toolbar-fonts-large').src = "/framework/skins/mohumain/images/toolbar-fonts-large"+ (id=="fonts-large"?"-active":"") +".png";
    alternatestyles.set(id);
    cookies.write('preferences.fonts', id, '100y','/');
  },
  
  save: function() {
 	  id = alternatestyles.get('fonts-');
    if (!id || id == 'undefined') { id = 'fonts-normal'; }
    cookies.write('preferences.fonts', id, '100y','/');
  }
};

/**
 * OpenClose effect - opening/closing boxes
 */

fx.OpenClose = Class.create();
fx.OpenClose.prototype = {
	setOptions: function(options) {
		this.options = {
			delay: 100,
			opacity: false
		}
		Object.extend(this.options, options || {});
	},

	initialize: function(togglers, elements, options) {
		this.elements = elements;
		this.setOptions(options);
		var options = options || '';
		elements.each(function(el, i){
			options.onComplete = function(){
				if (el.offsetHeight > 0) el.style.height = '1%';
			}
			el.fx = new fx.Combo(el, options);
		});

		togglers.each(function(tog, i){
			tog.onclick = function(){
                var id=elements[i].parentNode.id;
                if (elements[i].parentNode.className.split(/\s+/).contains('closed')) {
                    var newState='';
                }
                else {
                    var newState='closed';
                }
                doChangeSideBarState(id);
               
                this.clearAndToggle(elements[i]);
                return(false);
			}.bind(this);
			if (elements[i].parentNode.className.split(/\s+/).contains('closed')) {
				elements[i].fx.hide();
			}
			if (elements[i].className.split(/\s+/).contains('hidden')) {
				elements[i].fx.hide();
			}
		}.bind(this));
	},

	clearAndToggle: function(el){
		el.fx.clearTimer();
		pn = el.parentNode;
		if (pn.className.split(/\s+/).contains('closed')) {
            pn.className = pn.className.replace(/^closed| closed/,'');
            el.fx.toggle();
            if (pn.childNodes[0] && pn.childNodes[0].childNodes[0] && pn.childNodes[0].childNodes[0].src) {
                pn.childNodes[0].childNodes[0].src = '/framework/skins/mohumain/images/icon-openclose.png';
            }
		} else {
            el.fx.toggle();
            pn.className += ' closed';
            if (pn.childNodes[0] && pn.childNodes[0].childNodes[0] && pn.childNodes[0].childNodes[0].src) {
                pn.childNodes[0].childNodes[0].src = '/framework/skins/mohumain/images/icon-open.png';
            }
		}
	}
}

function removeFavourites(){

  function sideboxFavouritesRemove() {
	  var el = this;
	  var url = el.nextSibling.href;
	  var id  = el.parentNode.id;
	  doModifyBookmark('delete',url,'', id);
	  var effect = new fx.Opacity( this.parentNode.id,
	      {duration: 300,
	       onComplete: function() {
	         el.parentNode.parentNode.removeChild(el.parentNode);
	       }
	      } );
    effect.toggle();
		return(false);
  }
  
	var closeicons = document.getElementsByClassName('icon-close');
	closeicons.each(function(icon, i){
	  if (icon.parentNode.id=='') {
	    icon.parentNode.id = 'icon-close-' + i;
	  }
		icon.onclick = sideboxFavouritesRemove;
	});

}

/**
 * toolbar texts
 */
 
function getText(type) {
    if (type=='toolbar-fonts-small') {
        return "Kis bet\u0171m\u00E9ret be\u00E1ll\u00EDt\u00E1sa";
    } else if (type=='toolbar-fonts-normal') {
        return "Norm\u00E1l bet\u0171m\u00E9ret be\u00E1ll\u00EDt\u00E1sa";
    } else if (type=='toolbar-fonts-large') {
        return "Nagy bet\u0171m\u00E9ret be\u00E1ll\u00EDt\u00E1sa";
    } 
}
    

/**
 * Initial page setup
 */

function init() {
  // setup global objects
  cookies = new HTTP.Cookies();
  alternatestyles = new AlternateStyles();
  fonts = new Fonts();

  // antispam
  var links = document.getElementsByTagName('a');
  for (var i=0; i<links.length; i++) {
    var link = links[i];
	  if (link.href.match(/^mailto:/)) {
      link.href = link.href.replace(/.kitorlendo/g, '');
	  }
	}

  // sidebox open-close  
	var stretchers = document.getElementsByClassName('sidebox-content'); //div that stretches
	var toggles = document.getElementsByClassName('sidebox-header-open'); //h3s where I click on

	var myAccordion = new fx.OpenClose (
		toggles, stretchers, {opacity: false, duration: 400}
	);

  // helpbox open-close
	var stretchers_all = document.getElementsByClassName('helpbox-content'); //div that stretches
	var toggles_all = document.getElementsByClassName('helpbox-header'); //h3s where I click on
  var stretchers = [];
  var toggles = [];

  for (var i=0; i<toggles_all.length; i++) {
    if (toggles_all[i].innerHTML.match(/class="?openclose-icon"?/)) {
      stretchers.push(stretchers_all[i]);
      toggles.push(toggles_all[i]);
    }
  }

	var myAccordion = new fx.OpenClose (
		toggles, stretchers, {opacity: false, duration: 400}
	);

  // formbox show-hide
	var stretchers = document.getElementsByClassName('formbox-hidden'); //div that stretches
	var toggles = document.getElementsByClassName('formbox-button'); //h3s where I click on

	var myAccordion = new fx.OpenClose (
		toggles, stretchers, {opacity: false, duration: 400}
	);

  // sidebox favourites remove
  
	removeFavourites();
  
	var toggles = document.getElementsByClassName('icon-openclose');
	var stretchers = new Array();
	toggles.each(function(icon, i){
	  stretchers[i] = icon.nextSibling.nextSibling.nextSibling;
	  icon.childNodes[0].src = '/framework/skins/mohumain/images/icon-openclose.png';
	});

	var myAccordion = new fx.OpenClose (
		toggles, stretchers, {opacity: false, duration: 400}
	);

  // breadcrumbs setup	
	var breadcrumbs = document.getElementsByClassName('breadcrumb-handle'); // +-
	breadcrumbs.each(function(button, i){
	  button.id = 'breadcrumbs-button-'+i;
	  var item = button.parentNode;
	  var itempos = Position.cumulativeOffset(item);
	  var dropdown = button.nextSibling;

    var newdropdown = document.createElement('table');
	  newdropdown.id = 'breadcrumbs-dropdown-'+i;
    newdropdown.className = 'breadcrumbs-dropdown';
	  newdropdown.style.top = itempos[1]+'px';
	  newdropdown.style.left = itempos[0]+'px';
	  newdropdown.style.visibility = 'hidden';
	  document.body.insertBefore(newdropdown, $('header'));

    bpos = Position.cumulativeOffset(button);
    ipos = Position.cumulativeOffset(item);
    if (bpos[1]!=ipos[1]) {
      item.parentNode.style.clear = 'left';
      item.parentNode.style.width = item.offsetWidth+18+'px';
      ipos = Position.cumulativeOffset(item);
      newdropdown.style.position = 'absolute';
      newdropdown.style.top = ipos[1]+'px';
      newdropdown.style.left = ipos[0]+'px';
    }

    var tBody = document.createElement('tbody'); newdropdown.appendChild(tBody);
    var trT =  document.createElement('tr'); trT.className = 'top'; tBody.appendChild(trT);
    var tdTL = document.createElement('td'); tdTL.className = 'left'; trT.appendChild(tdTL);
    var tdTC = document.createElement('td'); tdTC.className = 'center'; trT.appendChild(tdTC);
    var tdTR = document.createElement('td'); tdTR.className = 'right'; trT.appendChild(tdTR);
    var trM = document.createElement('tr'); trM.className = 'middle'; tBody.appendChild(trM);
    var tdML = document.createElement('td'); tdML.className = 'left'; trM.appendChild(tdML);
    var tdMC = document.createElement('td'); tdMC.className = 'center'; trM.appendChild(tdMC);
    var tdMR = document.createElement('td'); tdMR.className = 'right'; trM.appendChild(tdMR);
    var trB = document.createElement('tr'); trB.className = 'bottom'; tBody.appendChild(trB);
    var tdBL = document.createElement('td'); tdBL.className = 'left'; trB.appendChild(tdBL);
    var tdBC = document.createElement('td'); tdBC.className = 'center'; trB.appendChild(tdBC);
    var tdBR = document.createElement('td'); tdBR.className = 'right'; trB.appendChild(tdBR);
	  tdMC.appendChild(dropdown);

    if (newdropdown.currentStyle && newdropdown.currentStyle.marginTop == '13px') { // IE
      newdropdown.style.marginTop = '24px';
    }

	  if (newdropdown.offsetWidth < item.offsetWidth + 6) {
	    newdropdown.style.width = item.offsetWidth + 6 + "px";
	  }

	  dropdown.style.display = 'block';

		button.onclick = function(){
		  var dropdown = $(this.id.replace(/-button-/,'-dropdown-'));
		  if (Element.hasClassName(item, 'open')) {
		    Element.removeClassName(item, 'open');
		    dropdown.style.visibility = 'hidden';
		   } else {
		    if (breadcrumbs_last_item) {
		      Element.removeClassName(breadcrumbs_last_item, 'open');
		      breadcrumbs_last_dropdown.style.visibility = 'hidden';
		    }
		    Element.addClassName(item, 'open');
		    dropdown.style.visibility = 'visible';
		    breadcrumbs_last_item = item;
		    breadcrumbs_last_dropdown = dropdown;
		  }
			return(false);
		};

	});

  var breadcrumbsdiv = document.getElementsByClassName('breadcrumbs');
  if (breadcrumbsdiv && breadcrumbsdiv[0])
    breadcrumbsdiv[0].style.addClassName = 'breadcrumbs-initialized'; 
  
  // registermenu setup
  
  if ($('registermenu')) {
    var lis = $('registermenu').getElementsByTagName('li');
    for (var i=0; i<lis.length; i++) {
      var item = lis[i];
      $('registermenu-help-text-' + item.className).style.display = 'none';
      item.onmouseover = function() {
        $('registermenu-help-text-' + this.className).style.display = 'block';
        $('registermenu-help-text-default').style.display = 'none';
      };
      item.onmouseout = function() {
        $('registermenu-help-text-' + this.className).style.display = 'none';
        $('registermenu-help-text-default').style.display = 'block';
      };
    }
  }
  
  // tools setup
  var tools = document.getElementsByClassName('tools'); // aA [mail]  [favourite]
  if (tools && isArray(tools) && tools[0]) {
    var icon = document.createElement('img');
    icon.id="toolbar-fonts-small";
  	icon.src="/framework/skins/mohumain/images/toolbar-fonts-small.png";
  	icon.alt = icon.title = getText(icon.id);
  	icon.onclick = function() {
  	  this.src
  	  fonts.set('small');
  	}
  	insertBeforeElement(tools[0], $('toolbar-send'), icon)

    var icon = document.createElement('img');
    icon.id="toolbar-fonts-normal";
  	icon.src="/framework/skins/mohumain/images/toolbar-fonts-normal.png";
  	icon.alt = icon.title = getText(icon.id);
  	icon.onclick = function() {
  	  fonts.set('normal');
  	}
  	insertBeforeElement(tools[0], $('toolbar-send'), icon)

    var icon = document.createElement('img');
    icon.id="toolbar-fonts-large";
  	icon.src="/framework/skins/mohumain/images/toolbar-fonts-large.png";
  	icon.alt = icon.title = getText(icon.id);
  	icon.onclick = function() {
  	  fonts.set('large');
  	}
  	insertBeforeElement(tools[0], $('toolbar-send'), icon)

	
    var icon = $('toolbar-favourite');
    if (icon) {
      icon.onclick = function() {
        var params = this.href.split(/\?/)[1].split(/&/);
        var url;
        var title;
        for (var i=0; i<params.length; i++) {
          var param = params[i].split(/=/);
          if (param[0]=='url') {
            url = unescape(param[1]);
          }
          if (param[0]=='title') {
            title = unescape(param[1]);
          }
        }
        if (url && title) {
          var list = $('sidebox-sajatmappa-items');
          var item = document.createElement('li');
          item.id = 'ez-egy-id-lesz-itt-ez-meg-todo';
  
          var item_a = document.createElement('a');
          item_a.href="";
          item_a.className="icon-close";
          item_a.onclick = sideboxFavouritesRemove;
  
          var item_a_img = document.createElement('img');
          item_a_img.src = "/framework/skins/mohumain/images/icon-close.png";
          
          item_a.appendChild(item_a_img);
          item.appendChild(item_a);
          
          var item_a = document.createElement('a');
          item_a.title=title;
          item_a.href=url;
  
          if (title.length>19) {title = title.substring(0,19) + '...'; }
          var item_a_text = document.createTextNode(title);
  
          item_a.appendChild(item_a_text);
          item.appendChild(item_a);
  
          list.appendChild(item);
      	  var effect = new fx.Opacity( item.id, { duration: 300 } );
      	  effect.hide();
      	  effect.toggle();
        }
        return(false);
      };
    }
    
  	var id = alternatestyles.get('fonts-');
    if (!id || id == 'undefined') { id = 'fonts-normal';}
	  $('toolbar-fonts-small').src = "/framework/skins/mohumain/images/toolbar-fonts-small"+ (id=="fonts-small"?"-active":"") +".png";
	  $('toolbar-fonts-normal').src = "/framework/skins/mohumain/images/toolbar-fonts-normal"+ (id=="fonts-normal"?"-active":"") +".png";
	  $('toolbar-fonts-large').src = "/framework/skins/mohumain/images/toolbar-fonts-large"+ (id=="fonts-large"?"-active":"") +".png";
  }

}

function isArray() {
  if (typeof arguments[0] == 'object') {  
    var criterion = arguments[0].constructor.toString().match(/array/i); 
    return (criterion != null);
  }return false;
}
