function GetCookie(name) {
        var arg=name + "="
        var alen=arg.length
        var clen=document.cookie.length
        var i=0,prev=0;next=0;
        var retval=false;
        while(true) {
                next=document.cookie.indexOf("; ", prev);
                if(next<=0) {
		   var chkval=document.cookie.substring(prev,clen);
   		   var eqpos=chkval.indexOf("=", 0);
   		   if(eqpos>0)   {
    			if((chkval.substring(0,eqpos+1))==arg) {
     				retval=true;
     				break;
			}
		    }
   		    break;
  	     }
  	     if(next>0)  {
   		var chkval=document.cookie.substring(prev,next);
   		var eqpos=chkval.indexOf("=", 0);
   		if(eqpos>0)   {
    			if((chkval.substring(0,eqpos+1))==arg)    {
     				retval=true;
     				break;
  			}
   		}

  	     }
               prev=next+2;
 	}
 	return retval;
}

function calcCookTime (ms) {

	var today = new Date();
	var y = today.getYear();
	if (y < 1000) y +=1900;
	var m = today.getMonth();
	var d = today.getDate();
	var h = today.getHours();
	var mn = today.getMinutes();
	var newday = new Date(Date.UTC(y,m,d,h,mn)+ms+(today.getTimezoneOffset()*60000));
	return newday.toGMTString();
}

function SetCooKie(name,value) {
        var argv=SetCooKie.arguments;
        var argc=SetCooKie.arguments.length
        var expires=(argc>2) ? argv[2] : null
        var path=(argc>3) ? argv[3] : null
        var domain=(argc>4) ? argv[4] : null
        var secure=(argc>5) ? argv[5] : false
        document.cookie=name + "=" +escape(value) + ((expires==null) ? "" :( ";expires=" + expires)) + ((path==null) ? "" :( ";path=" + path)) + ((domain==null) ? "" :( ";domain=" + domain)) + ((secure==true) ? "; secure " : "")
}

function getTrigger(trig,trigval, browserobj, screenpos) {

	if (!trig) return 0;
	var pos;

	if (trig == 2) {	
		eval ("var img = document."+trigval+";");
	if (browserobj.ns4) {
		pos = img.y;			
	} else {
		var nTopPos = img.offsetTop;
   		var eParElement = img.offsetParent;
		while (eParElement != null)   {
      			if(browserobj.ie)  {
         				if( (eParElement.tagName != "TABLE") && (eParElement.tagName != "BODY") )   {
            				nTopPos += eParElement.clientTop;
				}
			} else {
				if(eParElement.tagName == "TABLE") {
					var nParBorder = parseInt(eParElement.border);
					if(isNaN(nParBorder)) {
						var nParFrame = eParElement.getAttribute('frame');
						 if(nParFrame != null) {
							nTopPos += 1;
						}
					}   else if(nParBorder > 0)  {
						nTopPos += nParBorder;
					}
				}
			}
			nTopPos += eParElement.offsetTop;
			eParElement = eParElement.offsetParent;
		}
	pos = nTopPos;
	}
	} else {
		pos = trigval;
	}
	var minus = 0;
	switch (screenpos) {
		case 2:
			minus = browserobj.scrh();
			break;
		case 1:
			minus = parseInt(browserobj.scrh()*0.5);
			break;
		default:
			break;
	}
	pos -= minus;
	if (pos < 0) pos = 0;
	return pos;
}


///////////////////class Scp_Onscroller (simulates onscroll event listener)
function Scp_Onscroller(n, browserobj) {
	this.name = n;
	this.is_scrolling = 0;
	this.presT = 0;
	this.afterScrollCommand = false;
	this.scpb = browserobj;
	this.onScrollCommands = false;
}

Scp_Onscroller.prototype.afterScrollExec = function() {

	if (!this.afterScrollCommand) return false;
	var com = this.afterScrollCommand;
	this.afterScrollCommand = false;
	eval (com);
}

Scp_Onscroller.prototype.start = function() {
	setInterval(this.name+".isScrolling()", 10);
}

Scp_Onscroller.prototype.isScrolling = function () {

	var sT = this.scpb.getScrollTop();
	if (sT == this.presT) {
		if (!this.is_scrolling) return;
		this.is_scrolling = 0;
		setTimeout(this.name+".afterScrollExec()", 200);	
		return;
	}		
	if (!this.is_scrolling) {
		this.is_scrolling = 1;
	}
	this.presT = sT;
	if (this.onScrollCommands) {
		for (var i = 0;i < this.onScrollCommands.length;i++) {
			eval(this.onScrollCommands[i]);
		}
	}
	return true;
}









////////////////class Scp_Div - popup layer object
function Scp_Div (div, browserobj, name) {
	this.name = name;
	this.state = 0;
	this.flyInstate = 0;
	this.flyOutstate = 0;
	this.automoveCommand = 0;
	this.dragCommand = 0;
	this.scpb = browserobj;
	this.posX = -1;
	this.posY = -1;
	this.offsettop = 0;
	this.screenpos = "1_1";
	this.indir = 0;
	this.outdir = -1;
	this.dragdir = 0;
	this.draglimit = 40;
	this.dragint = false;
	this.distime = 0;
	this.movestep = 0;
	this.mousedown = 0;
	this.mouseover = 0;
	this.countdown = 0;
	this.countdownint = 0;
	if (this.scpb.dom) {
		this.obj = document.getElementById(div).style;	
	} else {
		if (this.scpb.ie) {
			eval ("this.obj=document.all."+div);
		} else {
			eval ("this.obj=document."+div);
		}
	}
	this.objw = !this.scpb.ns4?parseInt(this.obj.width):this.obj.clip.width;
	this.objh = !this.scpb.ns4?parseInt(this.obj.height):this.obj.clip.height;
	/*for (a in this.obj.clip) {
		document.write(a+"<br>");
	}*/
}

Scp_Div.prototype.calcScreenPos = function() {

	var sw14 = parseInt(this.scpb.scrw()*0.25);
	var offw = parseInt(this.scpb.scrw() - this.objw - sw14*0.5);
	var sw34 = sw14*3;
	var sw = (this.objw < sw34)?sw14:offw;
	var sh14 = parseInt(this.scpb.scrh()*0.25);
	var offh = parseInt(this.scpb.scrh() - this.objh - sh14*0.5);
	var sh34 = sh14*3;
	var sh = (this.objh < sh34)?sh14:offh;
	var cw = (this.objw < sw34)?parseInt((this.scpb.scrw() - this.objw)*0.5):offw;
	var ch = (this.objh < sh34)?parseInt((this.scpb.scrh() - this.objh)*0.5):offh;
	var olrx = (this.objw > sw14)?offw:sw34;
	var olby =(this.objh > sh14)?offh:sh34;
	var xAr = new Array(sw, cw, olrx);
	var yAr = new Array(sh, ch, olby);
	var spAr = this.screenpos.split('_');
	var xi = spAr[0] - 1;
	var yi = spAr[1] - 1;
	this.posX = xAr[xi];
	this.posY = yAr[yi];
	return;
}




Scp_Div.prototype.flyIn = function() {
	load_div=1;
	switch (this.flyInstate) {
		case 0:
			this.automoveCommand = this.name+".flyIn();";
			if (this.posX < 0) this.calcScreenPos();

			switch (this.indir) {
				case 0:
					var top = this.offsettop - this.objh -5;
					var left = this.posX;
					break;
				case 1:
					var top = this.offsettop + this.scpb.scrh() + 5;
					var left = this.posX;
					break;

				case 2:
					var top = this.offsettop + this.posY;
					var left = -this.objw - 5;
					break;
				case 3:
					var top = this.offsettop + this.posY;
					var left = this.scpb.scrw() + 5;
					break;
			}
			this.obj.top = top + this.scpb.px;
			this.obj.left = left + this.scpb.px;
			this.flyInstate++;
			this.showIn();
			this.automove(2, this.posX, this.posY + this.offsettop);
			break;
		case 1:
			if (this.dragdir >=0) {
				this.dragCommand = this.name+".flyIn();";
				this.flyInstate++;
				this.drag();
				start=1;
				break;
			}
		case 2:
			//if (this.scrollback) window.scrollTo(0, this.offsettop);
			if (this.distime) {
				if (document.timerform&&document.timerform.timerinp) {
					this.countdown = this.distime;
					this.countdownint = setInterval(this.name+".downcounter()", 1000);
					
					break;
				} else {
					setTimeout(this.name+".flyOut()", this.distime*1000);
					break;
				}
			}
	}
	
	
}

Scp_Div.prototype.downcounter = function() {
	if (this.countdown <=0) {
		clearInterval(this.countdownint);
		document.timerform.timerinp.value = "0:00";
		this.flyOut();
		return;
	}
	var mins = Math.floor(this.countdown/60);
	var secs = this.countdown - mins*60;
	if (secs < 10) secs = "0"+secs;
	document.timerform.timerinp.value = mins+":"+secs;
	this.countdown--;
}

Scp_Div.prototype.flyOut = function() {
	if (this.outdir < 0) {
		this.obj.hideOut();
		return;		
	}
	this.automoveCommand = this.name+".hideOut();";
	switch (this.outdir) {
		case 0:
			var top = this.scpb.getScrollTop() - this.objh -5;
			var left = parseInt(this.obj.left);
			break;
		case 1:
			var top = this.scpb.getScrollTop() + this.scpb.scrh() + 5;
			var left = parseInt(this.obj.left);
			break;
		case 2:
			var top = parseInt(this.obj.top);
			var left = - this.objw - 5;
			break;
		case 3:
			var top = parseInt(this.obj.top);
			var left = this.scpb.scrw() + 5;
			break;
	}
	this.automove(2, left, top);
}

Scp_Div.prototype.automove = function(speed,tx,ty) {

	var distx = tx - parseInt(this.obj.left);
	var disty = ty - parseInt(this.obj.top);
	if ( !this.movestep) this.movestep = (Math.abs(distx) > Math.abs(disty)) ? Math.abs(Math.ceil(distx/25)) : Math.abs(Math.ceil(disty/25));
	var ystep = parseInt(disty/this.movestep);
	var xstep = parseInt(distx/this.movestep);
	if (this.movestep == 1) {
		this.changePos(tx,ty);
		this.movestep = 0;
		if (this.automoveCommand) eval(this.automoveCommand);
		return;
	} else {
		this.changePos(parseInt(this.obj.left)+xstep, parseInt(this.obj.top)+ystep);
		this.movestep--;
		setTimeout(this.name+".automove("+speed+","+tx+","+ty+")", speed*20);
	}
}

Scp_Div.prototype.followScroll = function() {
	if (!this.state||this.movestep) return;
	var newX = parseInt(this.obj.left);
	var newY = this.posY + this.scpb.getScrollTop();
	this.automove(1,newX, newY);
	if(Params['staypos']==2){ 
	  	//posx=lastx-parseInt(scpdiv.obj.left);
		//posy=lasty-parseInt(scpdiv.obj.top);
		scpdiv.changePos(x-posx, newY+posy);			
		lasty=newY;
 	}
}

Scp_Div.prototype.changePos = function(tx,ty) {
	this.obj.left = tx + this.scpb.px;
	this.obj.top = ty + this.scpb.px;
}

Scp_Div.prototype.hideOut = function() {
	if (!this.state) return;
	this.obj.visibility = "hidden";
	this.state = 0;
	
}

Scp_Div.prototype.showIn = function () {
	if (this.state) return;
	 this.obj.visibility=(this.scpb.dom||this.scpb.ie)?"visible":"show";
	this.state = 1;	
	
}

Scp_Div.prototype.drag = function() {
	var newX = parseInt(this.obj.left);
	var newY = parseInt(this.obj.top);
	!this.dragdir?newY-=this.draglimit:newX-=this.draglimit;
	if (this.draglimit<0) this.draglimit+=8;
	this.draglimit*=-1;
	this.changePos(newX, newY);
	if (this.dragint == false||this.dragint == undefined) this.dragint = setInterval(this.name+".drag()", 50);
	if (this.draglimit==0) {
		clearInterval(this.dragint);
		if (this.dragCommand) eval(this.dragCommand);
	}
}

////////////////class Scp_Browser - client browser
function Scp_Browser (n) {
	this.name= n;
	this.ie=document.all?true:false;
	this.dom=document.getElementById;
	this.ns4=(document.layers&&!this.dom)?1:0;
	this.ns6=document.getElementById&&!document.all;
	this.px = document.layers?"":"px";
	this.db = (document.compatMode && document.compatMode!="BackCompat")? document.documentElement :document.body;
}

Scp_Browser.prototype.scrw = function() {
	return ((this.ie)?parseInt(this.db.clientWidth):parseInt(window.innerWidth)-30);
}

Scp_Browser.prototype.scrh = function() {
	return ((this.ie)?parseInt(this.db.clientHeight):parseInt(window.innerHeight)-30);
}

Scp_Browser.prototype.getScrollTop = function () {
	return ((this.ie)?this.db.scrollTop:window.pageYOffset);
}

///////////////////////////////
function mmove(e) {
	//alert('Hello');
	scpdiv.mouseover=true;
	if (!scpdiv.mousedown) return;
	var x = (scpb.ns4 || scpb.ns6)?e.pageX:(event.x+scpb.db.scrollLeft);
	var y = (scpb.ns4 || scpb.ns6)?e.pageY:(event.y+scpb.db.scrollTop);
	//scpdiv.changePos(x - scpdiv.mX, y - scpdiv.mY);	
	
}

function mdown(e){
	
	var ol = parseInt(scpdiv.obj.left);
	var ot = parseInt(scpdiv.obj.top);
	var x = (scpb.ns4 || scpb.ns6)?e.pageX:(event.x+scpb.db.scrollLeft);
	var y = (scpb.ns4 || scpb.ns6)?e.pageY:(event.y+scpb.db.scrollTop);
	if (x < ol|| x > (ol + scpdiv.objw)||y < ot||y>(ot+scpdiv.objh)) return
	scpdiv.mousedown = true;
	scpdiv.mX = x - ol;
	scpdiv.mY = y - ot;	
}

function mup() {
	scpdiv.mousedown = false;
	scpdiv.mX = false;
	scpdiv.mY = false;
}

function init_e() {
	Window.onmousedown = mdown;
	window.onmouseup = mup;
	scpdiv.obj.onmousemove = mmove;
}

function scp_hideout() {
	start=0;
	(Params['distype'] < 0)?scpdiv.hideOut():scpdiv.flyOut();
	load_div=0;
}

function scp_onscroll() {
	
	if (scpb.getScrollTop()>trigger) {
		if (Params['scrollback']) window.scrollTo(0, trigger);
		scpdiv.flyIn();
	} else {
		scpo.afterScrollCommand="scp_onscroll()";
	}
}
/*start mod*/
function mousemov(ee){
	if (start==1) {
	if (navigator.appName == "Microsoft Internet Explorer"){
	 	x=event.x
	 	y=event.y
	}
	else	{
	 	x=ee.pageX;
	 	y=ee.pageY;		 	
	}

	if(scpdiv.mouseover){
		scpdiv.mouseover=false; 		
		lastx=x;
		lasty=y;
	}
	else {
		posx=lastx-parseInt(scpdiv.obj.left);
		posy=lasty-parseInt(scpdiv.obj.top);
		if((x-10>parseInt(scpdiv.obj.left)+parseInt(scpdiv.obj.width))||(y-10>parseInt(scpdiv.obj.top)+parseInt(scpdiv.obj.height))||(x+10<parseInt(scpdiv.obj.left))||(y+10<parseInt(scpdiv.obj.top))){
			posx=50;
			posy=50;
			scpdiv.changePos(x-posx, y-posy);
		}
		//alert(screen.width);
		a= x-posx+ parseInt(scpdiv.obj.width);
		b= screen.width -25;
		if(a > b){
			x=screen.width-25-parseInt(scpdiv.obj.width)+posx;
		//	alert(a+'  '+b);
		}
		if(x-posx<0){
			posx=0;
			x=5;
		}
		if(y-posy<0){
			posy=0;
			y=5;
		}
		if((x-lastx>10)||(x-lastx<10)||(y-lasty>10)||(y-lasty>10))
		scpdiv.changePos(x-posx, y-posy);
		
		/*if(((screen.he-10-x)>parseInt(scpdiv.obj.left)){
			x=screen.width-10-parseInt(scpdiv.obj.left);
		}*/
	 	
	}
}	
}
/*end mod*/
function scp_init() {
	if(load_div == 0) 
	{
	if (triger_set==4){
		triger_set=0;
		if (Params['cook']) {
		if (GetCookie(Params['div'])) return false;
		SetCooKie(Params['div'], "1",  calcCookTime(Params['cookval']*1000));
	}
	scpb = new Scp_Browser('scpb');
	if (scpb.ns4) document.captureEvents(Event.MOUSEMOVE|Event.MOUSEDOWN|Event.MOUSEUP);
	trigger = getTrigger(Params['trig'], Params['trigval'],scpb,Params['trigpos']);
	scpdiv = new Scp_Div(Params['div'], scpb, 'scpdiv');
	scpdiv.offsettop = trigger;
	scpdiv.screenpos = Params['screenpos'];
	scpdiv.indir = Params['dir'];
	scpdiv.outdir = Params['distype'];
	scpdiv.dragdir = Params['dragdir'];
	scpdiv.distime = Params['distime'];
	if (scpb.ns4||scpb.ns6)init_e();//TM
	}
	else  
	{
	if (Params['cook']) {
		if (GetCookie(Params['div'])) return false;
		SetCooKie(Params['div'], "1",  calcCookTime(Params['cookval']*1000));
	}
	scpb = new Scp_Browser('scpb');
	if (scpb.ns4) document.captureEvents(Event.MOUSEMOVE|Event.MOUSEDOWN|Event.MOUSEUP);
	trigger = getTrigger(Params['trig'], Params['trigval'],scpb,Params['trigpos']);
	scpdiv = new Scp_Div(Params['div'], scpb, 'scpdiv');
	scpdiv.offsettop = trigger;
	scpdiv.screenpos = Params['screenpos'];
	scpdiv.indir = Params['dir'];
	scpdiv.outdir = Params['distype'];
	scpdiv.dragdir = Params['dragdir'];
	scpdiv.distime = Params['distime'];
	if (scpb.ns4||scpb.ns6)init_e();//TM
	if(Params['staypos']==2){ 
		lastx=0;
		lasty=0;
		document.onmousemove=mousemov;				
 	}
	if (trigger||Params['staypos']) {
		scpo = new Scp_Onscroller('scpo', scpb);
		if (Params['staypos']) {
			scpo.onScrollCommands = new Array();
			scpo.onScrollCommands[0] = "scpdiv.followScroll()";
		}
		if (trigger) scpo.afterScrollCommand="scp_onscroll()";
		scpo.start();
	}
	if (!trigger) {
		if (!Params['apptime']) {
			scpdiv.flyIn();
		} else {
		      setTimeout("scpdiv.flyIn()", Params['apptime']*1000);
		}
	}
  }	
}
}

var trigger;
var Params = new Array();

function scp_setParams(div,cook, cookval, trig, trigval, trigpos,apptime,screenpos,dir,dragdir,staypos,distime,distype,scrollback) {

	Params['div'] = div;
	Params['cook'] = cook;
	Params['cookval'] = cookval;
	Params['trig'] = trig;
	Params['trigval'] = trigval;
	Params['trigpos'] = trigpos;
	Params['apptime'] = apptime;
	Params['screenpos'] = screenpos;
	Params['dir'] = dir;
	Params['dragdir'] = dragdir;
	Params['staypos'] = staypos;
	Params['distime'] = distime;
	Params['distype'] = distype;
	Params['scrollback'] = scrollback;
}

window.onload = scp_init;
start=0;
load_div=0;