// javaskritto-kl3d.js
// Version: 4.0
//
// Client-side JavaScript web site functions library.
// Written by: Ben van Setten (skritto@settembre.nl).
// Copyrights: Settembre, the Netherlands, 2001-2007.
//
// Everyone is allowed to use and modify this module,
// as long as this header information remains intact.
// If you make enhancements, please e-mail us a copy.
//
// See http://www.settembre.com for info & downloads.


// -------------------------------------------------------------------------------------------------


// Initalise environment
//
function Environment() {
	this.nav = navigator.userAgent.toLowerCase();
	this.db = (document.compatMode && document.compatMode.toLowerCase() != 'backcompat') ?
		document.documentElement : (document.body || null);
	this.op = !!(window.opera && document.getElementById);
	this.ie = !!(this.nav.indexOf('msie') >= 0 && document.all && this.db && !this.op);
	this.iem = !!(this.nav.indexOf('msie') >= 0 && this.nav.indexOf('mac') >= 0);
	this.ie4 = !!(this.ie && !document.getElementById);
	this.ns4 = !!(document.layers && typeof document.classes != 'undefined');
	this.ns6 = !!(typeof window.getComputedStyle != 'undefined'
		&& typeof document.createRange != 'undefined');
	this.w3c = !!(!this.op && !this.ie && !this.ns6 && document.getElementById);
	this.ce = !!(document.captureEvents && document.releaseEvents && !this.ns6);
	this.any = new Array();
	this.busy = false;
	this.cool = false;
	this.done = false;
	this.easy = false;
	this.frames = 36;	// Number of frames in viewing circle
	this.ground = 1;	// Base ground level
	this.hand_x = 0;	// Mouse pointer X pos
	this.hand_y = 0;	// Mouse pointer Y pos
	this.idle_x = 0;	// Idling X movement
	this.idle_y = 0;	// Idling Y movement
	this.idle_z = 0;	// Idling Z movement
	this.jump_x = 12;	// Maximum X jump
	this.jump_y = 26;	// Maximum Y jump
	this.kick_x = 0;	// Maximum X jump
	this.kick_y = 0;	// Maximum Y jump
	this.last_x = 0;	// Previous X pos
	this.last_y = 0;	// Previous Y pos
	this.move_x = 0;	// Current X move
	this.move_y = 0;	// Current Y move
	this.navi_f = 1;	// Current frame
	this.navi_x = 0;	// Current X pos
	this.navi_y = 0;	// Current Y pos
	this.navi_z = 0;	// Current Z pos
	this.obj_id = 'view';	// Parent object ID
	this.player = 1;	// 
	this.quirks = 0;	// 
	this.rounds = 0;	// 
	this.scroll = 0.01;	// Scroll speed factor
	this.timing = 10;	// Interval n/1000 sec
	this.unit_h = 500;	// Standard frame height
	this.unit_w = 500;	// Standard frame height
	this.view_f = 1;	// Number of frames visible at left and right
	this.view_h = 400;	// View height
	this.view_w = 700;	// View width
	this.view_x = 0;	// View X pos
	this.view_y = 0;	// View Y pos
	this.vscale = 0.95; // View scale
	this.walk_d = 10;	// Walking stepsize
	this.walk_n = 1;	// Walking counter
	this.walk_y = 0;	// Walking Y swing
	this.zdepth = 1000;	// View depth
	this.zpoint = 1000;	// Horizon depth
	this.zscale = 0.30;	// Perspective effect
}
say.its = new Environment();


// Define the Scene object
//
function Scene() {
	this.any = new Array();
	this.obj = new Object();
}


// Define the Column object
//
function Column() {
	this.any = new Array();
	this.obj = null;
	this.txt = '';
	this.url = null;
}


// Define the Figure object
//
function Figure(given) {
	this.a = true;	// Is active
	this.b = true;	// Is background
	this.c = null;	// Mouseover Cursor
	this.d = null;	// Description
	this.e = null;	// Element ID
	this.f = null;	// Frame name
	this.g = 0;		// Ground level in pixels counting from bottom of image
	this.h = 0;		// Height of image
	this.i = null;	// Item ID
	this.r = 0;		// Rotation
	this.s = 0;		// Size factor
	this.t = 0;		// File type
	this.u = 0;		// Units
	this.v = 0;		// Velocity
	this.w = 0;		// Width of image
	this.x = 0;		// Negative: left from center, positive: right from center
	this.y = 0;		// Negative: below ground level, positive: above ground level
	this.z = 0;		// Negative: in front of you, positive: behind you
	this.img = null; // Image
	this.obj = null; // Page object
	this.src = null; // Filename

	// Interprete values from given parameter
	if (typeof(given) == 'object') {
		this.obj = given;
		say.eat(given, this);
	}
	else {
		this.src = String(given);
	}

	// Parse parameters in image filename
	if (this.src) {
		say.imagepars(this, this);
	}

	// Calculate view number (example circle of 36 frames: n1..9, e1..9, w1..9, s1..9)
	switch (this.f.substr(0, 1).toLowerCase()) {
		case 'n' : this.f = parseInt(this.f.substr(1)); break;
		case 'e' : this.f = parseInt(this.f.substr(1)) + parseInt(0.25 * say.its.frames); break;
		case 's' : this.f = parseInt(this.f.substr(1)) + parseInt(0.50 * say.its.frames); break;
		case 'w' : this.f = parseInt(this.f.substr(1)) + parseInt(0.75 * say.its.frames); break;
	}
}


// Define the Handle object
//
function Handle() {
	this.any = new Array();
	this.obj = null;
	this.txt = '';
	this.url = null;
}


// Initialise globals and objects
//
say.see = new Scene();
say.see.any = new Array();
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e2-z200+y000-x100-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e4-z500+y100+x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e1-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e2-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e3-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e4-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e5-z700+y000+x320-g020-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e5-z900+y110+x400-g020-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e5-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e6-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e7-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e8-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e9-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n1-z000-y000-x210-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n1-z300+y050-x005-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n1-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n2-z200-y050+x250-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n2-z000+y025-x200-g040-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n2-z100+y090+x450-g090-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n2-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n2-z100+y100+x225-g025-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n3-zend-y000-x000-g150-1.jpg');
//say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n4-z000-y000-x005-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n4-z000-y030-x075-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n4-z000+y000+x020-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n4-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n5-z850+y125+x500-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n6-z300+y080+x300-g105-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n5-z800+y100+x500-g030-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n5-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n6-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n7-z050+y080+x150-g015-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n7-zend-y000-x000-g150-1.jpg');
//say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n8-z000+y030+x250-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n9-z900+y150+x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n9-z900+y150+x200-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n8-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n9-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s1-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s2-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s3-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s4-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s5-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s6-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s7-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s8-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s9-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s9-z000-y000-x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s7-z000-y000-x050-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s3-z000+y095-x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s2-z000+y095-x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-s1-z000+y095-x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-e9-z000+y095-x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w1-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w1-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w2-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w2-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w3-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w3-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w4-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w4-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w5-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w5-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w6-z000-y000-x000-g000-1.png');
//say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w6-z200-y000-x000-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w6-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w7-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w7-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w8-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w8-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w9-z000-y000-x000-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w9-zend-y000-x000-g150-1.jpg');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w9-z100-y055+x150-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w1-z400-y000+x450-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w3-z000-y010-x140-g000-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w9-z400-y055+x150-g150-1.png');
say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-w9-z500-y020+x020-g000-1.png'); 
//say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n9-z050-y000-x055-g000-1.png'); 
//say.see.any[say.see.any.length] = new Figure('http://www.klauterland.com/themes/kl3d-01/images/kd-n8-z050-y000-x245-g000-1.png');  
//say.see.any[say.see.any.length] = new Handle(document.getElementById('base_left_find'));
//say.see.any[say.see.any.length] = new Handle(document.getElementById('base_left_menu'));


// Initialize mouse tracking
//
say.start = function start() {
	document.onmousemove = say.move;
	if (say.its.op) document.onmousedown = new Function('e',
		'if(((e = e || window.event).target || e.srcElement).tagName == "IMAGE") return false;');
	setInterval(say.view, say.its.timing);
	say.view();
}


// Keeps track of mouse position
//
say.move = function move(pos) {
	if (say.its.ie || say.its.iem) {
		if (event && document.body) {
			say.its.hand_x = event.clientX + document.body.scrollLeft;
			say.its.hand_y = event.clientY + document.body.scrollTop;
		}
	}
	else {
		say.its.hand_x = parseInt(pos.pageX);
		say.its.hand_y = parseInt(pos.pageY);
	}
	if (say.its.hand_x < 0) say.its.hand_x = 0;
	if (say.its.hand_y < 0) say.its.hand_y = 0;

	return say.view();
}


// View control
//
say.view = function view() {
	if (!say.its.busy) {
		say.its.busy = true;
		say.show();
		say.its.busy = false;
	}
}


// Plots the current view
//
say.show = function show() {
	var view = document.getElementById(say.its.obj_id);

	// Stage 1: Parent item should be available
	if (!view) return false;

	var unit_h = say.its.unit_h || 500;
	var unit_w = say.its.unit_w || 500;
	var view_h = view.offsetHeight || say.its.view_h || unit_h;
	var view_w = view.offsetWidth  || say.its.view_w || unit_w;
	var view_x = view.offsetParentLeft || say.its.view_x || 0;
	var view_y = view.offsetParentTop  || say.its.view_y || 0;
	var init_x = 0.5 * window.innerWidth  || 0.5 * document.body.clientWidth;
	var init_y = 0.5 * window.innerHeight || 0.5 * document.body.clientHeight;
	var move_x = say.its.idle_x || 0;
	var move_y = say.its.idle_y || 0;
	var move_z = say.its.idle_z || 0;
	var from_l = say.its.view_f || 1;
	var from_r = say.its.view_f + parseInt(view_w / unit_w) + 1 || 2;
	var plot_f, plot_s, plot_z;
	var plot_h, plot_w, plot_x, plot_y;
	var clip_h, clip_w, clip_x, clip_y;
	var item, html, f, one, obj, n;

	// Mouse gestures
	if (say.its.hand_x && say.its.hand_y) {
		say.its.move_x = say.its.hand_x - say.its.last_x;
		say.its.move_y = say.its.hand_y - say.its.last_y;
		say.its.last_x = say.its.hand_x;
		say.its.last_y = say.its.hand_y;

		// Look around
		move_x += say.its.jump_x * Math.atan(say.its.move_x);
		move_y += say.its.jump_y * Math.atan(say.its.move_y);
	}

	// Walk
	if (++say.its.walk_n > say.its.walk_d) say.its.walk_n = -say.its.walk_d;
	if (Math.abs(init_x - say.its.hand_x) > 0.5 * say.its.unit_w) {
		move_x -= say.its.scroll * (init_x - say.its.hand_x);
		move_y += say.its.walk_y * Math.sin(say.its.walk_n / say.its.walk_d);
	}

	// Calculate move
	say.its.navi_x += move_x;
	say.its.navi_y += move_y;
	say.its.navi_z += move_z;

	// Obey gravity
	if (say.its.navi_y < 0) say.its.navi_y = say.its.navi_y / 2;

	// Duck
	if (say.its.navi_y > say.its.jump_y) say.its.navi_y = say.its.jump_y;

	// Calculate frame boundaries
	if (say.its.navi_x < 0) {
		say.its.navi_x = say.its.navi_x + unit_w;
		if (--say.its.navi_f < 1) say.its.navi_f += say.its.frames;
	}
	if (say.its.navi_x >= view_w) {
		say.its.navi_x = say.its.navi_x - unit_w;
		if (++say.its.navi_f > say.its.frames) say.its.navi_f -= say.its.frames;
	}

	// Cycle through object library
	for (one = 0; one < say.see.any.length; one++) {
		item = say.see.any[one];

		// Stage 2: Load file if not present
		if (!item.img || !item.img.src) {
			item.img = new Image(); // Image container
			item.img.src = item.src;
			continue;
		}

		// Stage 3: Wait until file is loaded
		if (!item.img.complete) {
			continue;
		}

		// Stage 4: Insert object in page
		if (!item.i && item.t) {
			item.i = view.id + '_n' + one;
			if (item.t.toUpperCase() == 'PNG' && say.its.ie) {
				html = '<span id="' + item.i + '" style="'
					+ 'width:1px; height:1px; left:0px; top:0px; '
					+ 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader'
					+ '(src=\'' + item.src + '\', sizingMethod=\'scale\');"></span>';
			}
			else {
				html = '<img id="' + item.i + '" style="height:1px; '
					+ '"width:1x; left:0px; top:0px;" '
					+ 'name="" src="' + item.src + '" />';
			}
			if (say.its.ns4) {
				obj = new Layer(item.w);
				obj.clip.height = item.h;
				obj.visibility = 'show';
				obj.document.open();
				obj.document.write(html);
				obj.document.close();
			}
			else if (view.insertAdjacentHTML) {
				view.insertAdjacentHTML('AfterBegin', html);
			}
			else if (document.createElement && view.appendChild) {
				obj = document.createElement('IMG');
				obj = view.appendChild(obj);
				obj.src = item.img.src;
				obj.id = item.i;
				obj.style.height = '1px';
				obj.style.width = '1px';
				obj.style.left = '0px';
				obj.style.top = '0px';
			}
			else if (view.innerHTML) {
				view.innerHTML += html;
			}
			else {
				document.write(html);
			}
			continue;
		}

		// Stage 5: Bind inserted object to library
		if (!item.obj) {
			item.obj = document.getElementById(item.i);
			if (item.img && item.img.complete) {
				// We've been waiting for this moment to read the item bounds in Safari
				if (!item.h) item.h = item.img.height;
				if (!item.w) item.w = item.img.width;
			}
			continue;
		}
		
		// Stage 6: When object is ready for viewing
		if (item.obj) {
			plot_f = null;
			f = say.its.navi_f - from_l;
			if (f < 1) f += say.its.frames;
			for (n = -from_l; n <= from_r; n++) {
				if (parseInt(item.f) == f) {
					plot_f = n;
					break;
				}
				if (++f > say.its.frames) f = 1;
			}
		
			// Stage 7: Hide or show object, depending on current view
			if (plot_f == null) {
				item.obj.style.display = 'none';
			}
			else {
				plot_z = (item.z == '-end') ? -say.its.zdepth : parseInt(item.z);
				plot_s = say.its.vscale
					+ say.its.zscale * (say.its.zpoint + plot_z) / (say.its.zpoint || 0);
				plot_h = 1 + plot_s * parseInt(item.h);
				plot_w = 1 + plot_s * parseInt(item.w);
				plot_x = view_x
					+ (0.5 * view_w)
					+ (plot_s * (
						(plot_f * unit_w)
						+ (parseInt(item.x) - 0.5 * parseInt(item.w))
						- say.its.navi_x
					));
				plot_y = view_y
					+ (0.5 * view_h)
					- (plot_s * (
						0.5 * unit_h
						- (unit_h - parseInt(item.y) - parseInt(item.h))
						+ say.its.navi_y
					));
				clip_h = view_y + view_h - plot_y;
				clip_w = view_x + view_w - plot_x;
				clip_x = (plot_x < view_x) ? view_x - plot_x : 0;
				clip_y = (plot_y < view_y) ? view_y - plot_y : 0;
				item.obj.style.zIndex = String(say.its.zdepth + plot_z);
				if (say.its.ns4) {
					item.obj.style.height = plot_h;
					item.obj.style.width = plot_w;
					item.obj.style.left = plot_x;
					item.obj.style.top = plot_y;
					item.obj.style.clip = 'rect(' + clip_y + ' '
						+ clip_w + ' ' + clip_h + ' ' + clip_x + ')';
				}
				else {
					item.obj.style.height = String(plot_h) + 'px';
					item.obj.style.width = String(plot_w) + 'px';
					item.obj.style.left = String(plot_x) + 'px';
					item.obj.style.top = String(plot_y) + 'px';
				//	item.obj.style.clip = 'rect(' + clip_y + 'px '
				//		+ clip_w + 'px ' + clip_h + 'px ' + clip_x + 'px)';
				}
				item.obj.style.position = 'absolute';
				item.obj.style.display = 'block';
			}

		}
	}
	return true;
}


// -------------------------------------------------------------------------------------------------


// Say it doesn't end here
//
say.start();
