activehs-0.2: copy/common_en.js
var t;
var waiting = 0;
function get(params, targetHtml) {
// alert('get: ' + params);
var http = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http = new XMLHttpRequest();
if (http.overrideMimeType) {
http.overrideMimeType('text/html');
}
} else {
if (window.ActiveXObject) { // IE
try {
http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
if (!http) {
targetHtml.innerHTML = '<span class="error">Client error.</span>';
} else {
// alert('get ready: x ' );
if (waiting == 0) {
t = setTimeout("drawWarning(1);", 1000);
};
waiting = waiting + 1;
http.onreadystatechange = function () {
if (http.readyState == 4) {
targetHtml.innerHTML = http.responseText;
waiting = waiting - 1;
if (waiting == 0) {
clearTimeout(t);
setTimeout("clearWarning();", 500);
};
}
}
http.open('POST', "exercise/", true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.send(params);
}
}
function drawWarning(n) {
var r="Waiting.";
for (var a=0; a< n % 3; a++) r+='.';
document.getElementById('info').style.display = "block";
document.getElementById('info').innerHTML = '<div class="wait">' + r + '</div>';
t = setTimeout('drawWarning(' + (n+1) + ');', 500);
}
function clearWarning() {
document.getElementById('info').style.display = "none";
document.getElementById('info').innerHTML = "";
}
function getPos(evt, obj) { //this is the main function
var img_x;
var img_y;
var c;
if (document.all) { // MSIE
img_x = evt.offsetX;
img_y = evt.offsetY;
} else { // Netscape, etc.
img_x = evt.pageX;
img_y = evt.pageY;
c = findPos(obj); // here I get the images position
img_x -= c[0];
img_y -= c[1];
// c = checkscroll(); // then I check the scrollbar
// img_x += c[0];
// img_y += c[1];
}
return [img_x,img_y];
}
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft;
curtop = obj.offsetTop;
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
}
}
return [curleft,curtop];
}
// még nem jó..
function findScrolled(obj) {
var curleft = curtop = 0;
if (obj) {
curleft = obj.scrollLeft;
curtop = obj.scrollTop;
while (obj.tagName.toLowerCase () != "html") {
obj = obj.parentNode;
curleft += obj.scrollLeft;
curtop += obj.scrollTop;
}
}
return [curleft,curtop];
}
function findDiff(obj) {
var c = findPos(obj);
var d = findScrolled(obj);
return [c[0]-d[0],c[1]-d[1]];
}
function yTop() {
if(window.pageYOffset) {
return window.pageYOffset;
} else if(document.body.scrollTop) {
return document.body.scrollTop;
}
}
/*
function checkscroll() {
var x;
var y;
if(window.pageXOffset) {
x = window.pageXOffset;
} else if(document.body.scrollLeft) {
x = document.body.scrollLeft;
}
if(window.pageYOffset) {
y = window.pageYOffset;
} else if(document.body.scrollTop) {
y = document.body.scrollTop;
}
if(x == undefined){
x = 0;
}
if(y == undefined){
y = 0;
}
return [x,y];
}
*/
function getData(obj) {
return encodeURIComponent(document.getElementById('tarea' + obj).value);
}
function target(obj) {
return document.getElementById('res' + obj);
}
function getOne(a, t, x) {
get(a + "&lang=en&x=" + getData(x) + "&y=", target(t));
}
function getTwo(a, t, x, y) {
get(a + "&lang=en&x=" + getData(x) + "&y=" + getData(y), target(t));
}
function resetForms() {
var forms = document.getElementsByTagName("form");
for(var index=0;index<forms.length;index++) {
if (forms[index].className == 'resetinterpreter') {
forms[index].reset();
}
}
}
/*
var Black = "black";
var White = "white";
var Gray = "gray";
var Blue = "blue";
var Red = "red";
var Yellow = "yellow";
var Green = "green";
*/
function set(a,b,c) {
document.getElementById(a).setAttribute(b,c);
}
function replace(a,b) {
var q= document.getElementById(a);
q.replaceChild(document.getElementById(b).cloneNode(true), q.firstChild);
}
// after w3c slidy, http://www.w3.org/Talks/Tools/Slidy2/
var slidy = {
key_wanted: false,
slide_number: 0, // integer slide count: 0, 1, 2, ...
view_all: true, // true: view all slides + handouts
show_slide: function () {
window.scrollTo(0,0);
set_class(document.getElementsByTagName('body')[0].children[slidy.slide_number], "current");
},
switch_slide: function (event, n) {
if (slidy.view_all) {
return true;
} else {
var x = document.getElementsByTagName('body')[0].children;
if (n >= 0 && n < x.length && n != slidy.slide_number) {
set_class(x[slidy.slide_number], "");
slidy.slide_number = n;
slidy.show_slide();
}
return slidy.cancel(event);
}
},
// needed for Opera to inhibit default behavior
// since Opera delivers keyPress even if keyDown
// was cancelled
key_press: function (event) {
if (!event)
event = window.event;
if (!slidy.key_wanted)
return slidy.cancel(event);
return true;
},
// See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
key_down: function (event) {
var key, target, tag;
slidy.key_wanted = true;
if (!event)
event = window.event;
// kludge around NS/IE differences
if (window.event)
{
key = window.event.keyCode;
target = window.event.srcElement;
}
else if (event.which)
{
key = event.which;
target = event.target;
}
else
return true; // Yikes! unknown browser
// ignore event if key value is zero
// as for alt on Opera and Konqueror
if (!key)
return true;
if (slidy.special_element(target))
return true;
// check for concurrent control/command/alt key
// but are these only present on mouse events?
if (event.ctrlKey || event.altKey || event.metaKey)
return true;
if (key == 32 || key == 39) { // space bar, right arrow
slidy.switch_slide(event, slidy.slide_number + 1);
} else if (key == 37) { // left arrow
slidy.switch_slide(event, slidy.slide_number - 1);
} else if (key == 36) { // Home
slidy.switch_slide(event, 0);
} else if (key == 35) { // End
slidy.switch_slide(event, document.getElementsByTagName('body')[0].children.length - 1);
} else if (key == 65 && document.getElementsByTagName('body')[0].children.length > 3) { // A
var x = document.getElementsByTagName('body')[0].children;
if (slidy.view_all) {
set_class(document.getElementsByTagName('body')[0], "single_slide");
// var y = 0; //yTop();
// slidy.slide_number = 0;
// while (findDiff(x[slidy.slide_number])[1] < 0
// && slidy.slide_number < x.length - 1) {
// slidy.slide_number += 1;
// }
slidy.show_slide();
} else {
set_class(document.getElementsByTagName('body')[0], "");
x[slidy.slide_number].scrollIntoView();
// set_class(x[slidy.slide_number], "");
}
slidy.view_all = !slidy.view_all;
return slidy.cancel(event);
}
return true;
},
special_element: function (e) {
var tag = e.nodeName.toLowerCase();
return e.onkeydown ||
e.onclick ||
tag == "a" ||
tag == "embed" ||
tag == "object" ||
tag == "video" ||
tag == "audio" ||
tag == "input" ||
tag == "textarea" ||
tag == "select" ||
tag == "option";
},
cancel: function (event) {
if (event)
{
event.cancel = true;
event.returnValue = false;
if (event.preventDefault)
event.preventDefault();
}
slidy.key_wanted = false;
return false;
},
};
function set_class(element, name) {
if (typeof element.className != 'undefined') {
element.className = name;
} else {
element.setAttribute("class", name);
}
};
function add_listener(event, handler) {
if (window.addEventListener)
document.addEventListener(event, handler, false);
else
document.attachEvent("on"+event, handler);
};
// attach event listeners for initialization
function slidy_init() {
add_listener("keydown", slidy.key_down);
add_listener("keypress", slidy.key_press);
};