// (c) 2004-2006 Rob Rohan, Richard Applebaum, and Barney Boisvert

if(typeof SYSMOUSE_VERSION=="undefined"||typeof EVENTMANAGER_VERSION=="undefined"||typeof DEBUG_VERSION=="undefined")
{alert("Fatal Error: Recorder is missing required libraries");throw new Error("recorder.js missing required libraries");}
var RECORDER_VERSION="0.3";var replay_items=new Array();var replay_clock_text;var recording=false;function replay_addCursor(e)
{var mybody=document.getElementsByTagName("body").item(0);cdiv=document.createElement("div");cimg=document.createElement("img");cdiv.setAttribute("id","replaycursor");cdiv.setAttribute("style","position: absolute; top: 0 px; left: 0 px;");cimg.setAttribute("src","cur.gif");cdiv.appendChild(cimg);mybody.appendChild(cdiv);curele=document.getElementById("replaycursor");}
function replay_addSimpleControl()
{var mybody=document.getElementsByTagName("body").item(0);var div_wrapper=document.createElement("div");div_wrapper.setAttribute("id","recorder_toolbar");var a_start=document.createElement("span");a_start.setAttribute("id","recorder_text");a_start_txt=document.createTextNode("      Stopped");a_start.appendChild(a_start_txt);div_wrapper.appendChild(a_start);a_start=document.createElement("a");a_start.setAttribute("href","javascript: replay_start();");a_start_txt=document.createTextNode("start ");a_start.appendChild(a_start_txt);div_wrapper.appendChild(a_start);a_start=document.createElement("a");a_start.setAttribute("href","javascript: replay_stop();");a_start_txt=document.createTextNode("stop ");a_start.appendChild(a_start_txt);div_wrapper.appendChild(a_start);a_start=document.createElement("a");a_start.setAttribute("href","javascript: replay_replay();");a_start_txt=document.createTextNode("replay ");a_start.appendChild(a_start_txt);div_wrapper.appendChild(a_start);a_start=document.createElement("a");a_start.setAttribute("href","javascript: replay_clear();");a_start_txt=document.createTextNode("clear ");a_start.appendChild(a_start_txt);div_wrapper.appendChild(a_start);mybody.appendChild(div_wrapper);var barele=document.getElementById("recorder_toolbar");replay_clock_text=document.getElementById("recorder_text");replay_clock_text.style.width="20px";replay_clock_text.style.paddingRight="3px";barele.style.position="absolute";barele.style.left="50%";barele.style.top="1px";}
click_happened=function(event)
{var t=event.target;log.debug("@@click: "+t.name+" "+t.value+" "+(typeof event.target),event);if(recording){replay_items[replay_items.length]="replay_ElementFilled('"+t.name+"','"+t.value+"')"
+"~"+replay_TimeStamp();}};neuro_addClickListener(click_happened);key_happened=function(event)
{var t=event.target;log.debug("@@key: "+t.name+" "+t.value,event);if(recording){replay_items[replay_items.length]="replay_ElementFilled('"+t.name+"','"+t.value+"')"
+"~"+replay_TimeStamp();}};neuro_addKeyUpListener(key_happened);mouse_moved=function(event)
{log.debug("@@move: "+SysMouse.X+" "+SysMouse.Y);if(recording){replay_items[replay_items.length]="replay_MouseMove("+SysMouse.X+","+SysMouse.Y+")"
+"~"+replay_TimeStamp();}};neuro_addMoveListener(mouse_moved);function replay_TimeStamp()
{return new Date().getTime();}
function replay_MouseMove(x,y)
{curele.style.top=y;curele.style.left=x;}
function replay_ElementFilled(control,value)
{log.debug("@@replay_elementfilled: going to lookup: "+control+" with value "+value);var focusele=document.forms[0][control];if(focusele!=null)
{if(focusele.length!=null&&focusele.length>0)
{for(var i=0;i<focusele.length;i++)
{var cur=focusele[i];log.debug("@@got: "+cur);replay_setSingleElement(cur,value);}}
else
{replay_setSingleElement(focusele,value);}}}
var SELECTONE="select-one";var TEXTBOX="text";var CHECKBOX="checkbox";var RADIO="radio";var TEXTAREA="textarea";function replay_setSingleElement(control,value)
{log.debug("@@replay_single: "+control.type);if(control.type==TEXTBOX||control.type==TEXTAREA)
{log.debug("@@replay_single: Running Text");control.value=value;}
else if(control.type==CHECKBOX||control.type==RADIO)
{log.debug("@@replay_single: Running Checkbox or Radio");if(value==control.value&&control.checked)
control.checked=false;else if(value==control.value)
control.checked=true;}
else
{log.debug("@@replay_single: Assuming an option");control.selected=true;}}
function replay_start()
{recording=true;replay_clock_text.innerHTML="Running...";}
function replay_stop()
{recording=false;replay_clock_text.innerHTML="Stopped";}
function replay_replay()
{var cmdstmp;for(var i=0;i<replay_items.length;i++)
{cmdstmp=new Array();cmdstmp=replay_items[i].split("~");replay_clock_text.innerHTML=cmdstmp[1];setTimeout("replay_item_with_stamp("+cmdstmp[0]+","+cmdstmp[1]+")",(i*10)+1000);}}
function replay_item_with_stamp(cmd,stamp)
{replay_clock_text.innerHTML=stamp;eval(cmd);}
function replay_clear()
{replay_items=new Array();}
function replay_dumpReplayItems()
{for(var q=0;q<replay_items.length;q++)
{log.info("ITEM: "+replay_items[q]);}}