function send_request(){
this.request.send(this.params);
}
function httpGet( page, ready_state_change ){
this.request = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
this.request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
this.request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
this.request = false;
}
}
@end @*/
if (!this.request && typeof XMLHttpRequest!='undefined') {
try {
this.request = new XMLHttpRequest();
} catch (e) {
this.request=false;
}
}
if (!this.request && window.createRequest) {
try {
this.request = window.createRequest();
} catch (e) {
this.request=false;
}
}
this.request.open("GET", page ,true);
this.request.onreadystatechange = ready_state_change;
this.params = null;
this.send = send_request;
}
function generate_navigation(){
var inner_html = "
";
for ( i = 0; i < r.num_slides; i++ ){
if ( r.slide_num == i ){
var j = i+1;
inner_html += "- "+j+"
";
} else {
var j = i+1;
inner_html += "- "+j+"
";
}
}
inner_html += (r.animating == false ) ? "
" : "
";
inner_html += "
";
document.getElementById(r.div + "_navigation").innerHTML = inner_html;
}
function animate(){
if ( ( r.animating == true ) ){
if ( typeof(r.keyframe[r.tick]) != "undefined" ){
var frm = r.keyframe[r.tick];
//change animation
if ( typeof (frm.top ) != "undefined" ){
r.top = frm.top;
}
if ( typeof (frm.left) != "undefined" ){
r.left = frm.left;
}
if ( typeof( frm.vtop ) != "undefined" ){
r.vtop = frm.vtop;
}
if ( typeof( frm.vleft ) != "undefined" ){
r.vleft = frm.vleft;
}
if ( typeof( frm.opacity) != "undefined" ){
r.opacity = frm.opacity;
}
if ( typeof( frm.vopacity) != "undefined" ){
r.vopacity = frm.vopacity;
}
if ( typeof( frm.text_left ) != "undefined" ){
r.text_left = frm.text_left;
}
if ( typeof( frm.vtext_left ) != "undefined" ){
r.vtext_left = frm.vtext_left;
}
if ( typeof( frm.text_top ) != "undefined" ){
r.text_top = frm.text_top;
}
if ( typeof( frm.vtext_top ) != "undefined" ){
r.vtext_top = frm.vtext_top;
}
}
r.top += r.vtop;
r.left += r.vleft;
r.opacity += r.vopacity;
r.text_left += r.vtext_left;
r.text_top += r.vtext_top;
var div = document.getElementById( r.div + "_fg" );
div.style.left = r.left + "px";
div.style.top = r.top + "px";
div.style.opacity = r.opacity / 100;
div.style.filter = "alpha(opacity=" + r.opacity + ")";
var div_textbox = document.getElementById( r.div + "_textbox" );
var div_text = document.getElementById( r.div + "_text" );
div_textbox.style.left = r.text_left + "px";
div_text.style.left = r.text_left + "px";
div_textbox.style.top = r.text_top + "px";
div_text.style.top = r.text_top + "px";
div_text.style.display = "block";
div_textbox.style.display = "block";
r.tick++;
if ( r.tick <= r.animation_ticks ){
setTimeout(animate, 1000 / r.animation_resolution);
} else {
load_next_slide();
}
}
}
var load_slide_request = false;
function do_link( dest, target ){
switch ( target ){
case "window":
window.open(dest);
break;
default:
window.location = dest;
break;
}
}
function load_slide_request_ready_state_change(){
if ( load_slide_request != false ){
switch ( load_slide_request.request.readyState ){
case 4:
var slide = r.slide[r.slide_num];
var div = document.getElementById( r.div + "_fg" );
switch ( slide.type ){
case "html":
div.innerHTML = load_slide_request.request.responseText;
document.getElementById( r.div ).style.cursor = "";
break;
case "image":
div.innerHTML = "";
document.getElementById( r.div ).style.cursor = "pointer";
break;
case "flash":
var t = "";
t += "";
div.innerHTML = t;
document.getElementById( r.div ).style.cursor = "";
break;
}
generate_navigation();
r.tick = 0;
animate();
load_slide_request = false;
break;
}
}
}
function load_next_slide(){
r.slide_num++;
if ( r.slide_num >= r.num_slides ){
r.slide_num -= r.num_slides;
}
//copy the current slide to the background, including styles
var div_bg = document.getElementById( r.div + "_bg" );
var div_fg = document.getElementById( r.div + "_fg" );
var slide = r.slide[r.slide_num];
var slide_bottom = parseInt(slide.height) - parseInt(r.height);
var slide_right = parseInt(slide.width) - parseInt(r.width);
var transition_ticks = Math.round( slide.transition_speed * r.animation_resolution )
var exposure_ticks = Math.round( slide.exposure_length * r.animation_resolution );
var animation_ticks = Math.round( slide.pause_speed * r.animation_resolution );
var pause_ticks = Math.round( slide.animation_speed * r.animation_resolution );
r.animation_ticks = exposure_ticks + transition_ticks;
div_bg.innerHTML = div_fg.innerHTML;
div_bg.style.top = div_fg.style.top;
div_bg.style.left = div_fg.style.left;
div_bg.style.width = div_fg.style.width;
div_bg.style.height = div_fg.style.height;
div_bg.style.display = "block";
div_fg.style.display = "none";
div_fg.innerHTML = "";
//compile the animations keyframes
r.keyframe = new Array();
switch ( slide.transition ){
case "fade":
r.keyframe[0] = new Object();
r.keyframe[0].vtop = 0;
r.keyframe[0].vleft = 0;
r.keyframe[0].left = 0;
r.keyframe[0].top = 0;
r.keyframe[0].opacity = 0;
r.keyframe[0].vopacity = 100 / transition_ticks;
break;
case "slide_from_left":
r.keyframe[0] = new Object();
r.keyframe[0].vtop = 0;
r.keyframe[0].vleft = parseInt(slide.width) / transition_ticks;
r.keyframe[0].left = -parseInt(slide.width);
r.keyframe[0].top = 0;
r.keyframe[0].opacity = 100;
r.keyframe[0].vopacity = 0;
break;
case "slide_from_right":
r.keyframe[0] = new Object();
r.keyframe[0].vtop = 0;
r.keyframe[0].vleft = -parseInt(r.width) / transition_ticks;
r.keyframe[0].left = parseInt(r.width);
r.keyframe[0].top = 0;
r.keyframe[0].opacity = 100;
r.keyframe[0].vopacity = 0;
break;
case "slide_from_top":
r.keyframe[0] = new Object();
r.keyframe[0].vtop = parseInt(slide.height) / transition_ticks;
r.keyframe[0].vleft = 0;
r.keyframe[0].left = 0;
r.keyframe[0].top = -parseInt(slide.height);
r.keyframe[0].opacity = 100;
r.keyframe[0].vopacity = 0;
break;
case "slide_from_bottom":
r.keyframe[0] = new Object();
r.keyframe[0].vtop = -parseInt(r.height) / transition_ticks;
r.keyframe[0].vleft = 0;
r.keyframe[0].left = 0;
r.keyframe[0].top = parseInt(r.height);
r.keyframe[0].opacity = 100;
r.keyframe[0].vopacity = 0;
break;
}
//sliding text comes in
switch ( slide.text_animation ){
case "slide_from_right":
r.keyframe[0].text_top = 0;
r.keyframe[0].vtext_top = 0;
r.keyframe[0].text_left = parseInt(r.width);
r.keyframe[0].vtext_left = -parseInt(r.width) / transition_ticks;
break;
case "slide_from_top":
r.keyframe[0].text_left = 0;
r.keyframe[0].vtext_left = 0;
r.keyframe[0].text_top = -parseInt(r.height);
r.keyframe[0].vtext_top = parseInt(r.height) / transition_ticks;
break;
case "slide_from_left":
r.keyframe[0].text_top = 0;
r.keyframe[0].vtext_top = 0;
r.keyframe[0].text_left = -parseInt(r.width);
r.keyframe[0].vtext_left = parseInt(r.width) / transition_ticks;
break;
default:
r.keyframe[0].text_left = 0;
r.keyframe[0].vtext_left = 0;
r.keyframe[0].text_left = 0;
r.keyframe[0].vtext_left = 0;
break;
}
var i =transition_ticks;
r.keyframe[i] = new Object();
r.keyframe[i].text_left = 0;
r.keyframe[i].vtext_left = 0;
r.keyframe[i].text_top = 0;
r.keyframe[i].vtext_top = 0;
switch ( slide.animation ){
case "slide_down_and_up":
var mode = 0;
while ( i <= exposure_ticks + transition_ticks){
if ( typeof( r.keyframe[i] ) == "undefined" ){
r.keyframe[i] = new Object();
}
r.keyframe[i].opacity = 100;
r.keyframe[i].vopacity = 0;
switch ( mode ){
case 0: //move down
r.keyframe[i].vtop = -slide_bottom / animation_ticks;
r.keyframe[i].vleft = 0;
r.keyframe[i].left = 0;
r.keyframe[i].top = 0;
i += animation_ticks;
mode++;
break;
case 1: //pause
r.keyframe[i].vtop = 0;
r.keyframe[i].vleft = 0;
r.keyframe[i].left = 0;
r.keyframe[i].top = -slide_bottom;
i += pause_ticks;
mode++;
break;
case 2: //move up
r.keyframe[i].vtop = slide_bottom / animation_ticks;
r.keyframe[i].vleft = 0;
r.keyframe[i].left = 0;
r.keyframe[i].top = -slide_bottom;
i += animation_ticks;
mode++;
break;
case 3: //pause
r.keyframe[i].vtop = 0;
r.keyframe[i].vleft = 0;
r.keyframe[i].left = 0;
r.keyframe[i].top = 0;
i += pause_ticks;
mode = 0;
break;
}
}
break;
case "slide_right_and_left":
var mode = 0;
while ( i <= exposure_ticks + transition_ticks){
if ( typeof( r.keyframe[i] ) == "undefined" ){
r.keyframe[i] = new Object();
}
r.keyframe[i].opacity = 100;
r.keyframe[i].vopacity = 0;
switch ( mode ){
case 0: //move down
r.keyframe[i].vleft = -slide_right / animation_ticks;
r.keyframe[i].vtop = 0;
r.keyframe[i].top = 0;
r.keyframe[i].left = 0;
i += animation_ticks;
mode++;
break;
case 1: //pause
r.keyframe[i].vleft = 0;
r.keyframe[i].vtop = 0;
r.keyframe[i].top = 0;
r.keyframe[i].left = -slide_right;
i += pause_ticks;
mode++;
break;
case 2: //move up
r.keyframe[i].vleft = slide_right / animation_ticks;
r.keyframe[i].vtop = 0;
r.keyframe[i].top = 0;
r.keyframe[i].left = -slide_right;
i += animation_ticks;
mode++;
break;
case 3: //pause
r.keyframe[i].vleft = 0;
r.keyframe[i].vtop = 0;
r.keyframe[i].top = 0;
r.keyframe[i].left = 0;
i += pause_ticks;
mode = 0;
break;
}
}
break;
default:
var i = transition_ticks;
if ( typeof( r.keyframe[i] ) == "undefined" ){
r.keyframe[i] = new Object();
}
r.keyframe[i].opacity = 100;
r.keyframe[i].vopacity = 0;
r.keyframe[i].vtop = 0;
r.keyframe[i].vleft = 0;
r.keyframe[i].left = 0;
r.keyframe[i].top = 0;
break;
}
//sliding text leaves the screen
var x = exposure_ticks - transition_ticks;
if (typeof( r.keyframe[x] ) == "undefined" ){
r.keyframe[x] = new Object();
}
r.keyframe[x].text_left = 0;
r.keyframe[x].text_top = 0;
switch ( slide.text_animation ){
case "slide_from_right":
r.keyframe[x].vtext_left = parseInt(r.width) / transition_ticks;
break;
case "slide_from_top":
r.keyframe[x].vtext_top = -parseInt(r.height) / transition_ticks;
break;
case "slide_from_left":
r.keyframe[x].vtext_left = -parseInt(r.width) / transition_ticks;
break;
default:
r.keyframe[x].vtext_left = parseInt(r.width) / transition_ticks;
break;
}
r.animating = true;
r.tick = 0;
var div = document.getElementById( r.div + "_fg" );
div.style.display = "block";
div.style.left = r.keyframe[0].left + "px";
div.style.top = r.keyframe[0].top + "px";
div.style.width = slide.width;
div.style.height = slide.height;
var div_textbox = document.getElementById( r.div + "_textbox" );
var div_text = document.getElementById( r.div + "_text" );
div_text.style.display = "none";
div_textbox.style.display = "none";
div_textbox.style.height = slide.text_height;
div_textbox.style.top = "0px";
div_text.style.top = "0px";
div_text.innerHTML = slide.text;
if ( load_slide_request == false ){
load_slide_request = new httpGet(slide.src,load_slide_request_ready_state_change);
load_slide_request.send();
}
}
function rotator_pause(){
r.animating = false;
generate_navigation();
}
function rotator_play(){
generate_navigation();
r.animating = true;
animate();
}
function rotator_browse( i ){
r.slide_num = i-1;
r.animating = false;
setTimeout(load_next_slide,2000 / r.animation_resolution);
}
function init_rotator(){
div = document.getElementById( r.div );
r.slide_num = -1;
div.style.position = "relative";
div.style.width = r.width;
div.style.height = r.height;
div.style.border = "1px solid black";
div.style.overflow = "hidden";
div.style.padding = "0px";
//add the queue and the focus divs.
//the queue is the slide in transit
//the focus is the slide in focus.
var new_inner_html = "\n\r";
new_inner_html += "\n\r";
new_inner_html += "\n\r";
new_inner_html += "\n\r";
new_inner_html += "\n\r";
div.innerHTML = new_inner_html;
//set up the foreground and background div styles
var div_fg = document.getElementById( r.div + "_fg" );
var div_bg = document.getElementById( r.div + "_bg" );
var div_navigation = document.getElementById( r.div + "_navigation" );
var div_textbox = document.getElementById( r.div + "_textbox" );
var div_text = document.getElementById( r.div + "_text" );
div_fg.style.display = "none";
div_bg.style.display = "none";
div_fg.style.position = "absolute";
div_bg.style.position = "absolute";
div_navigation.style.position = "absolute";
div_navigation.style.top = (parseInt(r.height) - 40) + "px";
div_textbox.style.position = "absolute";
div_text.style.position = "absolute";
div_text.style.left = -(parseInt(r.width)) + "px";
div_textbox.style.left = -(parseInt(r.width)) + "px";
div_text.style.top = "0px";
div_textbox.style.top = "0px";
div_textbox.style.opacity = r.textbox_opacity;
div_textbox.style.filter = "alpha(opacity=" + (r.textbox_opacity*100) + ")";
div_textbox.style.background = "#000000";
div_textbox.style.width = r.width;
div_text.style.width = r.width;
div_textbox.style.height = "100px";
div_text.style.padding = r.textbox_padding;
div_text.style.color = r.textbox_color;
div_textbox.style.margin = "0px";
div_text.style.margin = "0px";
//calculate some misc things
r.slide_num = -1;
r.num_slides = r.slide.length;
r.paused = false;
//start animating the rotator
load_next_slide();
}