// Javascript GTK 0.1

function gtkObj( p0 ){
	this.elements = Array ( Array () );
	this.animation = false;
	this.timer = 0;
	this.engineInterval = 42;
	this.first = true;
	this.detected = false;
	
	if ( p0 == true) this.debug = true;
	
	this.detect = function () {
		x = document.getElementsByTagName("img");
		for ( i=0; i<x.length; i++ ) if ( x[i].title.indexOf(":GTK") != -1 ) { this.addNewElement( x[i], i, "img"); x[i].title = x[i].title.substring(0,x[i].title.indexOf(":GTK")); }
		x = document.getElementsByTagName("div");
		for ( i=0; i<x.length; i++ ) if ( x[i].title.indexOf(":GTK") != -1 ) { this.addNewElement( x[i], i, "div"); x[i].title = x[i].title.substring(0,x[i].title.indexOf(":GTK")); }
		this.detected = true;
	}
	this.addNewElement = function ( obj, ind, tag ) {
		prop = obj.title.split(" ");
		p0 = ""; p1 = "standard"; p2="relative";
		for ( j=1; j<prop.length; j++){
			sub = prop[j].split(":");
			if ( sub[0] == 'name' ) p0 = sub[1];
			if ( sub[0] == 'reff' ) p2 = sub[1];
			if ( sub[0] == 'type' ) p1 = sub[1];
		}
		this.elements[this.elements.length] = new gtk_item_type(p0,p1,tag,ind,obj);
		if (p1 != 'stab'){
			var coord = this.findPos(obj);
			if ( coord[0] != NaN ) { this.elements[this.elements.length-1]._x = coord[0]; this.elements[this.elements.length-1]._y = coord[1];}
			document.getElementsByTagName(tag)[ind].style.position = p2;
		}
		if ( p1 == 'menu' ) document.getElementsByTagName(tag)[ind].style.overflow = 'hidden';
		try{document.getElementsByTagName(tag)[ind].style.filter = "alpha (opacity = 100)";}
		catch(err){document.getElementsByTagName(tag)[ind].style.opacity = 1;}
	}
	this.getIndex = function ( p0 , p1) { 
		for (i=0;i<this.elements.length;i++) {
			if ( this.elements[i].name == p0 ) 
				switch (p1) {
				case 0: return this.elements[i].index;	break;
				case 1: return this.elements[i].tag;	break;
				case 2: return i;						break;
			}
		}
		document.write ("error: "+p0+" ismeretlen objektum");
	}
	this.update = function (p0, p1){ ind = this.getIndex (p0,2);	this.elements[ind].obj.innerHTML = p1; }
	this.put = function ( p0, p1, p2 ){	
  		  i = this.getIndex (p0,2);
		  b=this.getIndex(p0,2); 
		  this.elements[b]._x = p1; 
		  this.elements[b]._y= p2; 
		  this.elements[i].obj.style.left = this.elements[i]._x+"px"; 
		  this.elements[i].obj.style.top  = this.elements[i]._y+"px";}
	this.findPos = function (obj) {	var curleft = curtop = 0; if (obj.offsetParent) { 	do { curleft += obj.offsetLeft; 	curtop += obj.offsetTop; } while (obj = obj.offsetParent);	return [curleft,curtop]; } }
	this.alpha = function (p0, p1) {
		ind = this.getIndex (p0,2);
		this.elements[ind]._alpha = p1;
		try{this.elements[ind].obj.filters.alpha.opacity = this.elements[ind]._alpha;}
		catch(err){this.elements[ind].obj.style.opacity = this.elements[ind]._alpha / 100;}
	}
	this.mov = function (p0, p1, p2, p3){	// [ obj name ], [ end x ], [ end y ], [ speed ]
		x = document.getElementsByTagName(this.getIndex(p0,1))[this.getIndex(p0,0)];
		coord = this.findPos(x);
		if ( coord[0] == NaN ) { this.put(p0, p1, p2); return; }
		ind = this.getIndex (p0,2);
		this.elements[ind].xe = p1;	this.elements[ind].ye = p2;
		this.elements[ind].vm = p3;	this.elements[ind].movEff = 1;
		this.elements[ind].is_anim = true;
		if ( !this.animation ) { this.animation = true; this.timer = setTimeout ("gtk.gtkEngine()",this.engineInterval ); if (this.debug)	{ this.debugEngine= "Engine status: on"; this.refreshDebug();}}
	}
	this.fade = function ( p0, p1, p2, p3, p4) { // [obj name], min alpha, max alpha, speed, dir
		ind = this.getIndex (p0,2);
		this.elements[ind]._amin = p1;
		this.elements[ind]._amax = p2;
		this.elements[ind].va = p3;
		this.elements[ind].dir = p4;
		this.elements[ind].fadEff = 1;
		this.elements[ind].is_anim ++;
		if ( !this.animation ) { this.animation = true; this.timer = setTimeout ("gtk.gtkEngine()",this.engineInterval ); }
	}
	this.resize = function ( p0, p1, p3, p2) { // [ obj name ], [ new width ], [ new height ], [ speed ]
		ind = this.getIndex (p0,2);
		if (ind == -1) return;
		this.elements[ind].ys = p3;	this.elements[ind].xs = p1;
		this.elements[ind].vs = p2;
		this.elements[ind].cwidth = this.elements[ind].obj.offsetWidth;
		this.elements[ind].cheight = this.elements[ind].obj.offsetHeight;
		if ( Number(this.elements[ind].width) == 0 )  this.elements[ind].width = this.elements[ind].obj.offsetWidth;
		if ( Number(this.elements[ind].height) == 0 ) this.elements[ind].height = this.elements[ind].obj.offsetHeight;
		this.elements[ind].scaEff = 1;	this.elements[ind].is_anim ++;
		if ( !this.animation ) { this.animation = true; this.timer = setTimeout ("gtk.gtkEngine()",this.engineInterval ); }
	}
	this.getWidth = function ( p0 ){ return document.getElementsByTagName(this.getIndex(p0,1))[this.getIndex(p0,0)].offsetWidth; }
	this.setWidth = function ( p0, p1 ){ document.getElementsByTagName(this.getIndex(p0,1))[this.getIndex(p0,0)].style.width = p1+"px"; }
	this.getHeight= function ( p0 ){ return document.getElementsByTagName(this.getIndex(p0,1))[this.getIndex(p0,0)].offsetHeight; }
	this.setHeight= function ( p0, p1 ){ ind = this.getIndex (p0,2); this.elements[ind].obj.style.height = p1+"px"; }
	this.gtkEngine = function(){
		var chg = false;
		for ( i=0; i<this.elements.length; i++){
			if ( this.elements[i].is_anim && this.elements[i].movEff == 1) {
				chg = true;
				var s1 = this.elements[i].xe - this.elements[i]._x;
				var s2 = this.elements[i].ye - this.elements[i]._y;
				this.elements[i]._x += s1 / this.elements[i].vm;
				this.elements[i]._y += s2 / this.elements[i].vm;
				this.elements[i].obj.style.left = this.elements[i]._x+"px"; this.elements[i].obj.style.top  = this.elements[i]._y+"px";
				if (Math.round(this.elements[i]._x) == Math.round(this.elements[i].xe) && Math.round(this.elements[i]._y) == Math.round(this.elements[i].ye)) {
					this.elements[i].movEff = 0;
				}
			}
			if ( this.elements[i].is_anim != 0 && this.elements[i].fadEff == 1) {
				chg = true;
    	 		this.elements[i]._alpha += this.elements[i].dir*this.elements[i].va;
     			if ( this.elements[i].dir < 0 && this.elements[i]._alpha <= this.elements[i]._amin  ) { this.elements[i]._alpha = this.elements[i]._amin; this.elements[i].fadEff = 0;this.elements[i].is_anim --;}
     			if ( this.elements[i].dir > 0 && this.elements[i]._alpha >= this.elements[i]._amax  ) { this.elements[i]._alpha = this.elements[i]._amax; this.elements[i].fadEff = 0;this.elements[i].is_anim --;}
				try{ this.elements[i].obj.filters.alpha.opacity = this.elements[i]._alpha;}
				catch(err){this.elements[i].obj.style.opacity = this.elements[i]._alpha / 100;}
     		}
			if ( this.elements[i].is_anim !=0 && this.elements[i].scaEff == 1) {
				chg = true;
    	 			ss1 = this.elements[i].xs - this.elements[i].cwidth;
     				ss2 = this.elements[i].ys - this.elements[i].cheight;
				this.elements[i].cwidth += ss1 / this.elements[i].vs;
				this.elements[i].cheight += ss2 / this.elements[i].vs;
				this.elements[i].obj.style.width = this.elements[i].cwidth+"px"; 
	 			this.elements[i].obj.style.height = this.elements[i].cheight+"px";
				if (Math.round(this.elements[i].cwidth) == Math.round(this.elements[i].xs) && Math.round(this.elements[i].cheight) == Math.round(this.elements[i].ys)) {
					this.elements[i].scaEff = 0; this.elements[i].is_anim --;
     			}
			}
		}
		if ( chg ) this.timer = setTimeout ("gtk.gtkEngine()",this.engineInterval );
		else { this.animation = false; }
	}
}


function gtk_item_type( p0, p1, p2, p3, p4 ) { 
	this.name = p0;	this.type = p1;	this.tag = p2;	
	this.index = p3; this.is_anim = 0;
	this.obj = p4;
	this.detected = false;
	
	if ( p1 != 'stab') {
		this.width = p4.offsetWidth;
		this.height = p4.offsetHeight;
		this.cwidth = p4.offsetWidth; 
		this.cheight = p4.offsetHeight;
		
		this.scaEff = 0; this.xs = 0; this.ys = 0; this.vs = 0;	
		
		this.movEff = 0; this.xe = 0; this.ye = 0; this.vm = 0;
		this._x = 0; this._y = 0;
	}
	
	this.fadEff = 0; this._alpha = 100; this._amin = 0; this._amax = 0;
	this.va = 0; this.dir = 0;
	}

var gtk = new gtkObj(false);
