function forEach(object,fun /*, thisp*/){for (var i = 0,len = object.length; i < len; i++)fun.call(arguments[2], object[i], i);};
  Array.prototype.inArray = function(val /*, thisp*/)
  {
    var len = this.length;
    for (var i = 0; i < len; i++)
    {
      if (this[i]==val)
        return true;
    }

    return false;
  };
function o(a){return document.getElementById(a)}



NODE = {
    getPos:function(obj){var curleft = curtop = 0;
        if (obj.offsetParent) {curleft = obj.offsetLeft;curtop = obj.offsetTop;
        while (obj = obj.offsetParent) {curleft += obj.offsetLeft;curtop += obj.offsetTop;}}
        return [curleft,curtop];
    },
    addClass:function (obj,c){
    
      if(obj.className.indexOf(c)==-1 )
      obj.className+=" "+c;
      
    },
    removeClass:function (obj,c){
    
      if(obj)
      obj.className=obj.className.replace(new RegExp("(\s*"+c+")","gi"),'');
    },
    make:function(tag,attr,css){
      var elem=document.createElement(tag);
      for(var i in attr){
      elem.setAttribute(i,attr[i]);
      }
      for(var i in css){
      elem.style[i]=css[i];
      }
      return elem;
    },
    makeText:function(arg){
    return document.createTextNode(arg);
    },
    css:function(obj,css){
     for(var i in css){
      obj.style[i]=css[i];
      }
      return obj;
    
    },
    getStyle:function (el,styleProp)
    {
    	
    	var stylIE = styleProp.replace(/-(.){1,1}/g ,function(s){return s.charAt(1).toUpperCase();});
    
    	var x = el;
    	if (x.currentStyle)
    		var y = x.currentStyle[stylIE];
    	else if (window.getComputedStyle)
    		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
    	return y;
    }
    
  
  };

EVENT = {
    add : function(obj,evt,fn) {
	   if (obj.addEventListener)obj.addEventListener(evt,fn,false);
	   else if (obj.attachEvent){
       obj["e"+evt+fn] = fn;
        obj.attachEvent( "on"+evt, function() { obj["e"+evt+fn](); } );
        }
    //
    },
    fire:function(obj,event){

        if (document.createEventObject){
            // dispatch for IE
            var evt = document.createEventObject();
            return obj.fireEvent('on'+event,evt)
        }
        else{
            // dispatch for firefox + others
            var evt = document.createEvent("HTMLEvents");
            evt.initEvent(event, true, true ); // event type,bubbling,cancelable
            return !obj.dispatchEvent(evt);
        }

    
    },
    remove : function(obj,evt,fn) {
      if (obj.removeEventListener)obj.removeEventListener(evt,fn,false);
      else if (obj.detachEvent){
      obj.detachEvent( "on"+type, obj["e"+type+fn] );
      obj["e"+type+fn] = null;
      }
    },
    target : function(e) {
      var targ;
      if (!e) var e = window.event;
      if (e.target) targ = e.target;
      else if (e.srcElement) targ = e.srcElement;
      if (targ.nodeType == 3)targ = targ.parentNode;
      return targ;	
    },
    related : function(e) {
     if (!e) var e = window.event;
	    return  e.relatedTarget || e.toElement;
    },
    cancel : function(e) {
      try{
      if (!e) var e = window.event;
      e.cancelBubble = true;
      if (e.stopPropagation) e.stopPropagation();
      }catch(ex){}	
    },
    mouseXY : function(e){
      var e = e || window.event;
      return (e.pageX?[e.pageX,e.pageY]:[e.clientX,e.clientY])
    },
    key:function(e) {
    	var code;
    	if (!e) var e = window.event;
    	if (e.keyCode) code = e.keyCode;
    	else if (e.which) code = e.which;
    	return code;
    }

  };





function ajax(met,url,func,params)
  {
  var xmlHttp;
  try{xmlHttp=new XMLHttpRequest();}catch (e){
    try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){
      try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }
    xmlHttp.onreadystatechange=function()
    {
       if(xmlHttp.readyState==4)
       {
        func(xmlHttp.responseText);
       }
     };
	if(met=="get"||met=="GET"){xmlHttp.open(met,url,true);xmlHttp.send(null);}
if(met=="post"||met=="POST"){
	xmlHttp.open(met,url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");

	xmlHttp.send(params);
	}
	return xmlHttp;
  };






function addClass(c){
if(this.className.indexOf(c)==-1 )
this.className+=c;
};
function removeClass(c){
if(this)
this.className=this.className.replace(new RegExp("(\s*"+c+")","gi"),'');
};
function hasClass(c){
return this.className.indexOf(c)!=-1;
};














/*Prosty querySelector by Orzech:) */
function q(query,context){
  var base_context=context=context||new Array(document);
  var filters={
  hasClass:function(c){return this.className.split(/\s+/).inArray(c)  },
  isTag:function(t){return (this.nodeType==1&&this.nodeName==t.toUpperCase())},
  isNode:function(){return (this.nodeType==1)},
  attr:function(a,v){return this.getAttribute(a)==v}
  };
  var get=[];
  get['#']=function(id){return [document.getElementById(id)]};
  get['']=get[' ']=function(tag){return this.getElementsByTagName(tag)};
  get['>']=function(){return this.childNodes};
  get['<']=function(id){return [this.parentNode]};
  get['+']=function(id){return [this.nextSibling]};
  get['~']=function(id){return [this.previousSibling]};
  var exe;
  var fin=new Array();
  forEach(query.split(','),function(q_part){
  var gen_reg =new RegExp(/([_><~\+\s#]{0,1})([a-z_\d]*)(\.{0,1})([a-zA-Z\.\d_\-]*)(\[[a-z\d;=\-]+\])*(:[a-zA-Z\-]+){0,1}/g);
  while((exe=gen_reg.exec(q_part)) && exe[0]){
    var new_context=new Array();var filter_arr=new Array();var s_i=null;var e_i=null;var only_last=false;var m;
    
    if( exe[1]!=''&&exe[1]!=' '&&exe[1]!='#' )
      filter_arr.push(  (exe[2]?['isTag',exe[2]]:['isNode'])  );
    
    if(exe[3]=='.')
    forEach(exe[4].split('.'),function(v,k){ filter_arr.push( ['hasClass',v] ); } );
    
    if(m=/^\[(\d+)\-(\d*)\]$/gi.exec(exe[5]) ){
      s_i=m[1];e_i=(m[2]?parseInt(m[2])+1:null);
    }else if(m=/^\[(\d+)\]$/gi.exec(exe[5]) ){
      s_i=m[1];e_i=parseInt(m[1])+1;
    }else if(m=/^\[(\w+)=(\w+)\]$/gi.exec(exe[5])){
       filter_arr.push(  ['attr',m[1],m[2]]  );
    }else if(m=/^:([\-a-zA-Z]*)$/gi.exec(exe[6])){
      if(m[1]=='first-child'){s_i=0;e_i=1}
      else if(m[1]=='last-child'){only_last=true}
    }
    forEach(context,function(v,k){
        var   t=get[exe[1]].apply(v, exe[2]?[exe[2]]:['*']);
      //alert("GET FROM "+(s_i?s_i:0)+" TO "+(e_i?e_i:t.length)+"\nfilters: "+filter_arr+"\nlist:\n-----\n"+t+"\n----\nlen="+t.length)
      var item=0;
      var ee_i=(e_i?e_i:t.length);
      var ss_i=(s_i?s_i:0);
      if(only_last){ee_i=t.length;ss_i=ee_i-1;}
      for(var i=0;i<t.length;i++){
        var test_ok=1;
        for(var j=0;j<filter_arr.length;j++){
          if( filters[filter_arr[j][0]].apply(t[i],filter_arr[j].slice(1) )){
            test_ok=1;
          }else{
            test_ok=0;
            break;
          }
        }
        if(test_ok){
          if(item>=ss_i )new_context.push(t[i]);
          item++;
          if(item>=ee_i)break;
        }
      }
    });
   context=new_context;
  }
  fin=fin.concat(context);
  context = base_context;
  })
 return fin;
};


var COOKIE={
create:function (c_name,value,expiredays) {
	var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  document.cookie=c_name+ "=" +escape(value)+";path=/"+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
  
},
read:function (c_name) {
	if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return "";
},
erase:function (name) {
	COOKIE.create(name,"",-1);
}
};



var fontSizer = {

  set:function(size){
    document.body.style.fontSize=size
    fontSizer.save(size);
  },
  save:function(size){
    COOKIE.create('fs',size,7);
  },
  load:function(){
    var f;
    if(f=COOKIE.read('fs'))
    fontSizer.set(f)
    return f;
  }
  
}





var fontlinks = {'smallFont':'10px','normalFont':'12px','bigFont':'14px'}
function main(){

var f = fontSizer.load();
for(var i in fontlinks){
  o(i).onclick=new Function("fontSizer.set('"+fontlinks[i]+"');q('#dummymenu a.sel')[0].className='';this.className='sel';return false;")
  if(f==fontlinks[i]){
  q('#dummymenu a.sel')[0].className='';
  o(i).className='sel'
  }
}



forEach(q("div.gallery"),function(v){
    v.onclick=function(e)
    {
      var t=EVENT.target(e);
      if(t.nodeName=='IMG')t=t.parentNode;
      if(t.nodeName!="A")          
      return;          
                  if(hasClass.call(t,'next')||hasClass.call(t,'prev') ){
                    
                    var i = this.id.replace('gallery_','');
                    
                    if(t.href.replace('http://'+location.host+location.pathname,'')!="")
                    ajax('GET',t.href+'/J/'+i+'/',function(arg){o('gallery_'+i).innerHTML=arg},'' )
                    return false;
                    
                  }else{
                  
                    var i = this.id.replace('gallery_','');
                    var s;
                    if(s=q("a.selected",[this])[0] )s.className='';
                    t.className='selected';
                    
                    ajax('GET',t.href+'/J/',function(arg){o('media_'+i).innerHTML=arg},'' )
                    return false;
                  
                }
  
    }
});





}


