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 = ""; 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 += ""; t += ""; t += ""; 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(); }