function Delegate() {}
Delegate.create = function (o, f) {
	var a = new Array() ;
	var l = arguments.length ;
	for(var i = 2 ; i < l ; i++) a[i - 2] = arguments[i] ;
	return function() {
		var aP = [].concat(arguments, a) ;
		f.apply(o, aP);
	}
}

Tween = function(obj, prop, func, begin, finish, duration, suffixe){
	this.init(obj, prop, func, begin, finish, duration, suffixe)
}
var t = Tween.prototype;

t.obj = new Object();
t.prop='';
t.func = function (t, b, c, d) { return c*t/d + b; };
t.begin = 0;
t.change = 0;
t.prevTime = 0;
t.prevPos = 0;
t.looping = false;
t._duration = 0;
t._time = 0;
t._pos = 0;
t._position = 0;
t._startTime = 0;
t._finish = 0;
t.name = '';
t.suffixe = '';
t._listeners = new Array();
t.setTime = function(t){
	this.prevTime = this._time;
	if (t > this.getDuration()) {
		if (this.looping) {
			this.rewind (t - this._duration);
			this.update();
			this.broadcastMessage('onMotionLooped',{target:this,type:'onMotionLooped'});
		} else {
			this._time = this._duration;
			this.update();
			this.stop();
			this.broadcastMessage('onMotionFinished',{target:this,type:'onMotionFinished'});
		}
	} else if (t < 0) {
		this.rewind();
		this.update();
	} else {
		this._time = t;
		this.update();
	}
}
t.getTime = function(){
	return this._time;
}
t.setDuration = function(d){
	this._duration = (d == null || d <= 0) ? 100000 : d;
}
t.getDuration = function(){
	return this._duration;
}
t.setPosition = function(p){
	this.prevPos = this._pos;
	var a = this.suffixe != '' ? this.suffixe : '';
	this.obj[this.prop] = Math.round(p) + a;
	this._pos = p;
	this.broadcastMessage('onMotionChanged',{target:this,type:'onMotionChanged'});
}
t.getPosition = function(t){
	if (t == undefined) t = this._time;
	return this.func(t, this.begin, this.change, this._duration);
};
t.setFinish = function(f){
	this.change = f - this.begin;
};
t.geFinish = function(){
	return this.begin + this.change;
};
t.init = function(obj, prop, func, begin, finish, duration, suffixe){
	if (!arguments.length) return;
	this._listeners = new Array();
	this.addListener(this);
	if(suffixe) this.suffixe = suffixe;
	this.obj = obj;
	this.prop = prop;
	this.begin = begin;
	this._pos = begin;
	this.setDuration(duration);
	if (func!=null && func!='') {
		this.func = func;
	}
	this.setFinish(finish);
}
t.start = function(){
	this.rewind();
	this.startEnterFrame();
	this.broadcastMessage('onMotionStarted',{target:this,type:'onMotionStarted'});
	//alert('in');
}
t.rewind = function(t){
	this.stop();
	this._time = (t == undefined) ? 0 : t;
	this.fixTime();
	this.update();
}
t.fforward = function(){
	this._time = this._duration;
	this.fixTime();
	this.update();
}
t.update = function(){
	this.setPosition(this.getPosition(this._time));
	}
t.startEnterFrame = function(){
	this.stopEnterFrame();
	this.isPlaying = true;
	this.onEnterFrame();
}
t.onEnterFrame = function(){
	if(this.isPlaying) {
		this.nextFrame();
		setTimeout(Delegate.create(this, this.onEnterFrame), 0);
	}
}
t.nextFrame = function(){
	this.setTime((this.getTimer() - this._startTime) / 1000);
	}
t.stop = function(){
	this.stopEnterFrame();
	this.broadcastMessage('onMotionStopped',{target:this,type:'onMotionStopped'});
}
t.stopEnterFrame = function(){
	this.isPlaying = false;
}

t.continueTo = function(finish, duration){
	this.begin = this._pos;
	this.setFinish(finish);
	if (this._duration != undefined)
		this.setDuration(duration);
	this.start();
}
t.resume = function(){
	this.fixTime();
	this.startEnterFrame();
	this.broadcastMessage('onMotionResumed',{target:this,type:'onMotionResumed'});
}
t.yoyo = function (){
	this.continueTo(this.begin,this._time);
}

t.addListener = function(o){
	this.removeListener (o);
	return this._listeners.push(o);
}
t.removeListener = function(o){
	var a = this._listeners;
	var i = a.length;
	while (i--) {
		if (a[i] == o) {
			a.splice (i, 1);
			return true;
		}
	}
	return false;
}
t.broadcastMessage = function(){
	var arr = new Array();
	for(var i = 0; i < arguments.length; i++){
		arr.push(arguments[i])
	}
	var e = arr.shift();
	var a = this._listeners;
	var l = a.length;

	for (var i=0; i<l; i++){
		if(a[i][e])
		a[i][e].apply(a[i], arr);
	}
}
t.fixTime = function(){
	this._startTime = this.getTimer() - this._time * 1000;
}
t.getTimer = function(){
	return new Date().getTime() - this._time;
}

Tween.strongEaseOut = function(t,b,c,d){
	return c*((t=t/d-1)*t*t*t*t + 1) + b;
	}

zst = {};
/* zst common */
zst.elements = [];
zst.BASE_URL = 'http://view.adpionier.de';
zst.delay = 1;
zst.dev = '';
zst.check_timeout = function() {
  // returns true if timeout is not expired
  var timeout = Number('0');
  if (timeout > 0)
  {
    var last_launched = Number(zst.getCookie('zst_last_launch'));
    var next_possible_launch = last_launched + timeout*60000;

    if (new Date().getTime() < next_possible_launch)
    {
      return false;
    }
  }
  return true;
}
zst.browser=function() {
  if((document.all)&&(navigator.appVersion.indexOf("MSIE 6.")!=-1)) {
    return {type:'ie',version:6};
  }
  if((document.all)&&(navigator.appVersion.indexOf("MSIE 7.")!=-1)){
    return {type:'ie',version:7};
  }
  if(navigator.userAgent.indexOf('Firefox/3')!=-1) {
    return{type:'ff',version:3};
  }
  if(navigator.userAgent.indexOf('Firefox/2')!=-1) {
    return{type:'ff',version:2};
  }
  return {type:undefined,version:undefined}
};

zst.el = function(id) {
  return zst.addUtils(document.getElementById(id));
};

zst.loadCssFile = function(file) {
  var links = document.getElementsByTagName('link');
  for (var i=0; i<links.length; i++) {
    if(links[i].href==file) {
      return true;
    }
  }
  var link = document.createElement('link');
  link.rel = 'stylesheet';
  link.type = 'text/css';
  link.href = file;
  document.getElementsByTagName('head')[0].appendChild(link);
  zst.elements.push(link);
  //alert(file);
  //document.write(file)
};

zst.show = function() {
  zst.mainDiv.style.display = 'block';
  zst.ie6fix();
};
zst.hide = function() {
  zst.mainDiv.style.display = 'none';
};
zst.unload = function() {
  for (var i=0; i<zst.elements.length; i++) {
    zst.elements[i].parentNode.removeChild(zst.elements[i]);
  }
  zst = null;
}
zst.hover = function(el) {
  if(el.className.indexOf('hover')!=-1) {
    return false;
  }
  el.className = el.className+' hover';
};

zst.unhover = function(el) {
  if(el.className.indexOf('hover')==-1) {
    return false;
  }
  el.className = el.className.split('hover').join('');
};
zst.addEvent=function( el, type, fn ) {
  if ( el.attachEvent ) {
    el['e'+type+fn] = fn;
    el[type+fn] = function(){
      el['e'+type+fn]( window.event );
    };
    el.attachEvent( 'on'+type, el[type+fn] );
  } else {
    el.addEventListener( type, fn, false );
  }
};
zst.removeEvent=function( el, type, fn ) {
  if ( el.detachEvent ) {
    el.detachEvent( 'on'+type, el[type+fn] );
    el[type+fn] = null;
  } else {
    el.removeEventListener( type, fn, false );
  }
};
zst.numFromPx=function(cssValue) {
    if(cssValue.indexOf('px')!=-1) {
      return Number(cssValue.split('px')[0]);
    }
    else {
      return cssValue;
    }
};
zst.addUtils=function(obj) {
  //alert(obj+', '+obj.tagName)
    if(obj.tween) {
      return obj;
    }
    obj.tween = function(prop, value, append) {
      //alert(this.tagName+':'+this.id+' tween('+prop+','+value+')')
      var _from = zst.numFromPx(obj.style[prop]);
      var _to = value;
      var _append = !append ? "px" : append;
      var use_tween = 1;
      var duration = 0.5;
      if(use_tween) {
        var tw = new Tween(obj.style, prop, Tween.strongEaseOut, _from, _to, duration, _append);
        tw.start();
        return tw;
      } else {
        obj.style[prop] = value+_append;
      }
    };
    obj.visible = function(value) {
        value = value ? "visible" : "hidden";
        obj.style.visibility = value;
    };
    obj.opacity = function(value) {
        obj.style.MozOpacity=value;
        obj.style.opacity=value;
        obj.filters.alpha.opacity=String(value*100);
    };
    return obj;
};
zst.getCookie = function (name)
{
  var cookie = ' ' + document.cookie;
  var search = ' ' + name + '=';
  var setStr = null;
  var offset = 0;
  var end = 0;
  if (cookie.length > 0){
    offset = cookie.indexOf(search);
    if (offset != -1){
      offset += search.length;
      end = cookie.indexOf(';', offset)  ;
      if (end == -1){
        end = cookie.length;
      }
      setStr = unescape(cookie.substring(offset, end));
    }
  }
 return(setStr);
};
zst.setCookie = function (name, value, expires, path, domain, secure) {
  exp = expires ? expires : '01-Jan-2038 12:00:00 GMT';
  document.cookie = name + '=' + escape(value) +
  ((expires) ? '; expires=' + expires : '') +
  ((path) ? '; path=' + path : '') +
  ((domain) ? '; domain=' + domain : '') +
  ((secure) ? '; secure' : '');
};
zst.getStyle = function(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}
/* zst balloons */
zst.width = 250;
zst.height = 50;
function showit(text) {
  if(zst.check_timeout()==false) {
    return false;
  }
  zst.loadCssFile('http://view.adpionier.de/style2.css');
  var div = document.createElement('div');
  zst.mainDiv = div;
  div.id = 'zst_holder';
  div.innerHTML =text;
  div.style.position='absolute';
  div.style.bottom='5px';
  div.style.right='5px';
  div.style.display = 'none';
  div.style.zIndex = 999999;
  zst.elements.push(div);
  document.body.appendChild(div);

  var browser = zst.browser();
  var bt = browser.type;
  var bv = browser.version;

  if(!(bt=='ie' && bv==6)) {
    div.style.position='fixed';
  }

  if(bt=='ie' && bv==6) {
    // set gif icons for IE6
    var icon;
    if(icon) {
      //icon = zst.el('zst_top_title').getElementsByTagName('img')[0];
      //icon.src = String(icon.src).replace(/png/,'gif');
    }
    if(icon) {
      //icon = zst.el('zst_body_title').getElementsByTagName('img')[0];
      //icon.src = String(icon.src).replace(/png/,'gif');
    }
    zst.addEvent(window,'scroll',zst.ie6fix);
    zst.addEvent(window,'resize',zst.ie6fix);
    zst.ie6fix();
  }

  zst.setCookie('zst_last_launch',new Date().getTime());

  window.setTimeout(zst.show, 1+(zst.delay*1000));
}



zst.ie6fix = function() {
  if(zst.browser().type=='ie' && zst.browser().version==6) {
    var div = zst.mainDiv;
    div.style.left = (document.body.clientWidth - div.offsetWidth -5) + 'px';
    div.style.top = (document.documentElement.scrollTop + document.documentElement.clientHeight  - div.offsetHeight-5) + 'px'//(document.body.clientHeight - 105) + 'px';
  }else{
    return false;
  }
}


var zst_hscr = document.getElementsByTagName('head')[0].getElementsByTagName('script');
var zst_string = 'browsertraps';
var zst_in_head = false;

for (var i=0; i<zst_hscr.length; i++) {
  if (zst_hscr[i].src.indexOf(zst_string)!=-1) {
    zst_in_head = true;
  }
}
if (zst_in_head) {
  //zst.addEvent(window,'load',zst.init);
}else {
  //zst.init();
}
