moodle/mod/hotpot/v6/source/hp6utilities.js_

238 lines
5.5 KiB
Plaintext

//GENERAL UTILITY FUNCTIONS AND VARIABLES
//PAGE DIMENSION FUNCTIONS
function PageDim(){
//Get the page width and height
this.W = 600;
this.H = 400;
this.W = document.getElementsByTagName('body')[0].clientWidth;
this.H = document.getElementsByTagName('body')[0].clientHeight;
}
var pg = null;
function GetPageXY(El) {
var XY = {x: 0, y: 0};
while(El){
XY.x += El.offsetLeft;
XY.y += El.offsetTop;
El = El.offsetParent;
}
return XY;
}
function GetScrollTop(){
if (document.documentElement && document.documentElement.scrollTop){
return document.documentElement.scrollTop;
}
else{
if (document.body){
return document.body.scrollTop;
}
else{
return window.pageYOffset;
}
}
}
function GetViewportHeight(){
if (window.innerHeight){
return window.innerHeight;
}
else{
return document.getElementsByTagName('body')[0].clientHeight;
}
}
function TopSettingWithScrollOffset(TopPercent){
var T = Math.floor(GetViewportHeight() * (TopPercent/100));
return GetScrollTop() + T;
}
//CODE FOR AVOIDING LOSS OF DATA WHEN BACKSPACE KEY INVOKES history.back()
var InTextBox = false;
function SuppressBackspace(e){
if (InTextBox == true){return;}
if (C.ie) {
thisKey = window.event.keyCode;
}
else {
thisKey = e.keyCode;
}
var Suppress = false;
if (thisKey == 8) {
Suppress = true;
}
if (Suppress == true){
if (C.ie){
window.event.returnValue = false;
window.event.cancelBubble = true;
}
else{
e.preventDefault();
}
}
}
if (C.ie){
document.attachEvent('onkeydown',SuppressBackspace);
window.attachEvent('onkeydown',SuppressBackspace);
}
else{
if (window.addEventListener){
window.addEventListener('keypress',SuppressBackspace,false);
}
}
function ReduceItems(InArray, ReduceToSize){
var ItemToDump=0;
var j=0;
while (InArray.length > ReduceToSize){
ItemToDump = Math.floor(InArray.length*Math.random());
InArray.splice(ItemToDump, 1);
}
}
function Shuffle(InArray){
var Num;
var Temp = new Array();
var Len = InArray.length;
var j = Len;
for (var i=0; i<Len; i++){
Temp[i] = InArray[i];
}
for (i=0; i<Len; i++){
Num = Math.floor(j * Math.random());
InArray[i] = Temp[Num];
for (var k=Num; k < (j-1); k++) {
Temp[k] = Temp[k+1];
}
j--;
}
return InArray;
}
function WriteToInstructions(Feedback) {
document.getElementById('InstructionsDiv').innerHTML = Feedback;
[inclPreloadImages]
RefreshImages();
[/inclPreloadImages]
}
[inclPreloadImages]
Imgs = new Array();
function PreloadImages(){
var a = PreloadImages.arguments;
for (var i=0; i<a.length; i++){
Imgs[i] = new Image();
Imgs[i].src = a[i];
}
}
function RefreshImages(){
for (var i=0; i<document.images.length; i++){
if (document.images[i].name.substring(0,6) != 'NavBar'){
document.images[i].src = document.images[i].src;
}
}
}
[/inclPreloadImages]
function EscapeDoubleQuotes(InString){
return InString.replace(/"/g, '&quot;')
}
function TrimString(InString){
var x = 0;
if (InString.length != 0) {
while ((InString.charAt(InString.length - 1) == '\u0020') || (InString.charAt(InString.length - 1) == '\u000A') || (InString.charAt(InString.length - 1) == '\u000D')){
InString = InString.substring(0, InString.length - 1)
}
while ((InString.charAt(0) == '\u0020') || (InString.charAt(0) == '\u000A') || (InString.charAt(0) == '\u000D')){
InString = InString.substring(1, InString.length)
}
while (InString.indexOf(' ') != -1) {
x = InString.indexOf(' ')
InString = InString.substring(0, x) + InString.substring(x+1, InString.length)
}
return InString;
}
else {
return '';
}
}
function FindLongest(InArray){
if (InArray.length < 1){return -1;}
var Longest = 0;
for (var i=1; i<InArray.length; i++){
if (InArray[i].length > InArray[Longest].length){
Longest = i;
}
}
return Longest;
}
//UNICODE CHARACTER FUNCTIONS
function IsCombiningDiacritic(CharNum){
var Result = (((CharNum >= 0x0300)&&(CharNum <= 0x370))||((CharNum >= 0x20d0)&&(CharNum <= 0x20ff)));
Result = Result || (((CharNum >= 0x3099)&&(CharNum <= 0x309a))||((CharNum >= 0xfe20)&&(CharNum <= 0xfe23)));
return Result;
}
function IsCJK(CharNum){
return ((CharNum >= 0x3000)&&(CharNum < 0xd800));
}
//SETUP FUNCTIONS
//BROWSER WILL REFILL TEXT BOXES FROM CACHE IF NOT PREVENTED
function ClearTextBoxes(){
var NList = document.getElementsByTagName('input');
for (var i=0; i<NList.length; i++){
if ((NList[i].id.indexOf('Guess') > -1)||(NList[i].id.indexOf('Gap') > -1)){
NList[i].value = '';
}
if (NList[i].id.indexOf('Chk') > -1){
NList[i].checked = '';
}
}
}
//EXTENSION TO ARRAY OBJECT
function Array_IndexOf(Input){
var Result = -1;
for (var i=0; i<this.length; i++){
if (this[i] == Input){
Result = i;
}
}
return Result;
}
Array.prototype.indexOf = Array_IndexOf;
//IE HAS RENDERING BUG WITH BOTTOM NAVBAR
function RemoveBottomNavBarForIE(){
if ((C.ie)&&(document.getElementById('Reading') != null)){
if (document.getElementById('BottomNavBar') != null){
document.getElementById('TheBody').removeChild(document.getElementById('BottomNavBar'));
}
}
}