//glimmer_vis.js
//Author: Joshua Birk
//current modDate: Aug,13,1999

//glimmer.js mod for visual effects.
//Scrolling got placed in here because it's dependant on it and glimmer_move,
//but can be used without actually moving the object around the window.

scrolling = false;

//init function for this mod.  goes before initAll() is called.
function initGvis() {
	addMod("hide",layer_hide);
	addMod("show",layer_show);
	addMod("setDepth",layer_setDepth);
	addMod("clip",layer_clip);
	addMod("growUp",layer_growUp);
	addMod("growDown",layer_growDown);
	addMod("growLeft",layer_growLeft);
	addMod("growRight",layer_growRight);
	addMod("swipeUp",layer_swipeUp);
	addMod("swipeDown",layer_swipeDown);
	addMod("swipeLeft",layer_swipeLeft);
	addMod("swipeRight",layer_swipeRight);
	addMod("scrollUp",layer_scrollUp);
	addMod("scrollDown",layer_scrollDown);
	addMod("scrollLeft",layer_scrollLeft);
	addMod("scrollRight",layer_scrollRight);
	addMod("scrollOnUp",layer_scrollOnUp);
	addMod("scrollOnDown",layer_scrollOnDown);
	addMod("scrollOnLeft",layer_scrollOnLeft);
	addMod("scrollOnRight",layer_scrollOnRight);
	}

function layer_clip(top,left,bottom,right){
	if (document.layers) {
		this.layer.clip.top = top;
		this.layer.clip.left = left;
		this.layer.clip.bottom = bottom;	
		this.layer.clip.right = right;
		this.refresh();
		}
	if (document.getElementById || document.all) {
      //  alert(this.layer.clip);
		rect = 'rect\('+top+' '+right+' '+bottom+' '+left+'\)';
		this.layer.clip =  rect;
		this.refresh();
		}
	}
	

//show the layer
function layer_show(x,y,codette){
	this.layer.visibility = "visible";
	this.refresh();
	if (codette){runMe(codette);}
	}
	
//hide the layer
function layer_hide(x,y,codette){
	this.layer.visibility = "hidden";
	this.refresh();
	if (codette){runMe(codette);}
	}

//alter zindex
function layer_setDepth(depth,y,codette){
	this.layer.zIndex = depth;
	this.refresh();
	if (codette){runMe(codette);}
	}
	
	
//swipe/grow functions - scroll clipping the direction asked
function layer_swipeRight(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipLeft);
	xD = xD + speed;
	this.layer.clipLeft = xD;
	setcodette = this.obj_name+'.clip('+this.clipTop+','+xD+','+this.clipBottom+','+this.clipRight+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
	if (distance > 0) {
		setcodette = this.obj_name+'.swipeRight('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
		}	
	}

function layer_swipeLeft(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipRight);
	xD = xD - speed;
	this.layer.clipRight = xD;
	setcodette = this.obj_name+'.clip('+this.clipTop+','+this.clipLeft+','+this.clipBottom+','+xD+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
//	alert(xD);
	if (distance > 0) {
		setcodette = this.obj_name+'.swipeLeft('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
		}
	}	

function layer_swipeDown(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipTop);
	xD = xD + speed;
	this.layer.clipTop = xD;
	setcodette = this.obj_name+'.clip('+xD+','+this.clipLeft+','+this.clipBottom+','+this.clipRight+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
//	alert(xD);
	if (distance > 0) {
		setcodette = this.obj_name+'.swipeDown('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
		}
	}	
	
function layer_swipeUp(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipBottom);
	xD = xD - speed;
	this.layer.clipBottom = xD;
	setcodette = this.obj_name+'.clip('+this.clipTop+','+this.clipLeft+','+xD+','+this.clipRight+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
//	alert(xD);
	if (distance > 0) {
		setcodette = this.obj_name+'.swipeUp('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
		}
	}

function layer_growLeft(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipLeft);
	xD = xD - speed;
	this.layer.clipLeft = xD;
	setcodette = this.obj_name+'.clip('+this.clipTop+','+xD+','+this.clipBottom+','+this.clipRight+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
//	alert(this.clipLeft);
	if (distance > 0) {
		setcodette = this.obj_name+'.growLeft('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
		}
	}	
	
function layer_growRight(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipRight);
	xD = xD + speed;
	this.layer.clipRight = xD;
	setcodette = this.obj_name+'.clip('+this.clipTop+','+this.clipLeft+','+this.clipBottom+','+xD+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
//	alert(xD);
	if (distance > 0) {
		setcodette = this.obj_name+'.growRight('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
                       }
	}	

function layer_growUp(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipTop);
	xD = xD - speed;
	this.layer.clipTop = xD;
	setcodette = this.obj_name+'.clip('+xD+','+this.clipLeft+','+this.clipBottom+','+this.clipRight+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
//	alert(xD);
	if (distance > 0) {
		setcodette = this.obj_name+'.growUp('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
                       }
	}	
	
function layer_growDown(distance, speed, codette){
	if (distance < speed){speed = distance;}
	xD = parseInt(this.clipBottom);
	xD = xD + speed;
	this.layer.clipBottom = xD;
	setcodette = this.obj_name+'.clip('+this.clipTop+','+this.clipLeft+','+xD+','+this.clipRight+')';
	eval(setcodette);
	this.refresh();
	distance = distance - speed;
	if (distance > 0) {
		setcodette = this.obj_name+'.growDown('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,speed);
		}
	else {
		if (codette){runMe(codette);}
	}
}


//scroll functions.  move clip one way, layer the other.  needs glimmer_move
function layer_scrollUp(distance,speed) {
	codette="end";
	if(!this.north){
		alert("ERROR!\nThis function will not work without both glimmer_move and glimmer_vis");
		}
	else{
		this.north(distance,speed);
		}
	newTop = this.clipTop + distance;
	newBottom = this.clipBottom + distance;
	this.clip(newTop,this.clipLeft,newBottom,this.clipRight);
	}

function layer_scrollDown(distance,speed) {
	codette="end";
	if(!this.south){
		alert("ERROR!\nThis function will not work without both glimmer_move and glimmer_vis");
		}
	else{
		this.south(distance,speed);
		}
	newTop = this.clipTop - distance;
	newBottom = this.clipBottom - distance;
	this.clip(newTop,this.clipLeft,newBottom,this.clipRight);
	}
	
function layer_scrollRight(distance,speed) {
	codette="end";
	if(!this.east){
		alert("ERROR!\nThis function will not work without both glimmer_move and glimmer_vis");
		}
	else{
		this.east(distance,speed);
		}
	newRight = this.clipRight - distance;
	newLeft = this.clipLeft - distance;
	this.clip(this.clipTop,newLeft,this.clipBottom,newRight);
	}
	
function layer_scrollLeft(distance,speed) {
	codette="end";
	if(!this.west){
		alert("ERROR!\nThis function will not work without both glimmer_move and glimmer_vis");
		}
	else{
		this.west(distance,speed);
		}
	newRight = this.clipRight + distance;
	newLeft = this.clipLeft + distance;
	this.clip(this.clipTop,newLeft,this.clipBottom,newRight);
	}

	
//scrollon functions.  Like before, but resets itself.
function layer_scrollOnUp(distance,speed) {
	if(scrolling == true){
		this.scrollUp(distance,speed);
		setcodette = this.obj_name+'.scrollOnUp('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,10);
		}
	}
	
function layer_scrollOnDown(distance,speed) {
	if(scrolling == true){
		this.scrollDown(distance,speed);
		setcodette = this.obj_name+'.scrollOnDown('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,10);
		}
	}
	
function layer_scrollOnLeft(distance,speed) {
	if(scrolling == true){
		this.scrollLeft(distance,speed);
		setcodette = this.obj_name+'.scrollOnLeft('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,10);
		}
	}
	
function layer_scrollOnRight(distance,speed) {
	if(scrolling == true){
		this.scrollRight(distance,speed);
		setcodette = this.obj_name+'.scrollOnRight('+distance+','+speed+',"'+codette+'")';
		setTimeout(setcodette,10);
		}
	}

initGvis();
