mirror of
https://github.com/moodle/moodle.git
synced 2025-02-22 02:49:53 +01:00
238 lines
5.5 KiB
Plaintext
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, '"')
|
|
}
|
|
|
|
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'));
|
|
}
|
|
}
|
|
}
|
|
|