// Javascript from Moodle modules
 // support for the templates form

function dataplusisdefined(object, variable){
    return (typeof(eval(object)[variable]) != 'undefined');
}

var dataplusCursorStart = null;
var dataplusCursorEnd = null;

function datapluscursorPosition() {
    obj = document.getElementById('id_record');

    if(dataplusisdefined(document,'selection')){
        var bookmark = document.selection.createRange().getBookmark();

        obj.selection = obj.createTextRange();  // create in textarea object and
        obj.selection.moveToBookmark(bookmark);  // match to document.selection
        obj.selLeft = obj.createTextRange(); // create textrange object

        obj.selLeft.collapse(true);           // for left amount of textarea &

        obj.selLeft.setEndPoint("EndToStart", obj.selection); // align them

        dataplusCursorStart = obj.selLeft.text.length;
        dataplusCursorEnd = obj.selLeft.text.length +  obj.selection.text.length;
    }
    else if (dataplusisdefined(obj, 'selectionStart')) {
        dataplusCursorStart = obj.selectionStart;
        dataplusCursorEnd = obj.selectionEnd;
    }
    else{
        dataplusCursorStart = null;
    }
}
    
    
function dataplusUpdateTextbox(str,id) {
    if (typeof(currEditor) != 'undefined' && currEditor._editMode == 'wysiwyg') {
        currEditor.focusEditor();
        currEditor.insertHTML(str);         
    }
    else if (typeof(tinyMCE) != 'undefined'){
        tinyMCE.getInstanceById(id).execCommand('mceInsertContent',false,str);     
    }
    else {
        var textbox    = document.getElementById(id);
        var currentVal = textbox.value;
        var scroll     = textbox.scrollTop;

        if (dataplusCursorStart == null){
            document.getElementById(id).value = currentVal + str;
            return;
        }

        start = currentVal.substring(0,dataplusCursorStart);
        end   = currentVal.substring(dataplusCursorEnd,currentVal.length);

        document.getElementById(id).value = start + str + end;

        dataplusCursorStart = dataplusCursorStart + str.length;
        dataplusCursorEnd   = dataplusCursorStart;

        textbox.scrollTop = scroll;

        if(dataplusisdefined(document,'selection')){
            var range = textbox.createTextRange();
            range.move("character",dataplusCursorStart);
            range.select();
        }
        else {
            textbox.select();
            textbox.setSelectionRange(dataplusCursorStart,dataplusCursorEnd);
        }
    }
}


function dataplusShowHideTemplateFormElement(id,link_id,show_string,hide_string){

    var form_element_grandparent = document.getElementById(id).parentNode.parentNode;
    var link = document.getElementById(link_id);
    
    if(form_element_grandparent.style.display == 'none'){
        form_element_grandparent.style.display = 'block';
        link.value = hide_string;
    }
    else {
        form_element_grandparent.style.display = 'none';  
        link.value = show_string;                
    }
}

var slideNo=-1;
var currentSlideNo=0;
var autoSync = false;

<!-- TabView -->
var tabView = new YAHOO.widget.TabView("tabset");

<!--goto next slide -->
function gotoNextSlide(){
	if(numberOfSlides!=slideNo){
		slideNo += 1;
		displaySlide();
	}else{
		alert("Slide Show Ends!");
	}	
}

<!-- goto previous slide -->
function gotoPrevSlide(){
	if(slideNo > 1){
		slideNo -= 1;
		displaySlide();
	}else{
		alert("We are at the first slide!");
	}
}

<!-- goto first slide -->
function gotoFirstSlide(){
	if(slideNo != 1){
		slideNo= 1;
		displaySlide();
	}else{
		alert("Already on the first slide!");
	}
}

<!-- goto first slide -->
function gotoLastSlide(){
	if(slideNo != numberOfSlides){
		slideNo=numberOfSlides;
		displaySlide();
	}else{
		alert("Already on the last slide!");
	}
}

function displaySlide(){
	var slide= slidePath+"Slide"+slideNo+".JPG";
	var FO = {	movie:slide,width:600,height:450,majorversion:"7",build:"0",bgcolor:"#FFFFFF"};
	UFO.create(	FO, "slide-show");	
}

<!-- Trig Auto Sync -->
function trigAutoSync(){
	autoSync= document.getElementById('autosync').checked;
	checkAutoSync();
}

<!-- Handle Presenters Auto Sync -->
function checkAutoSync(){
	clearMsg();
	if(autoSync){
		if(currentSlideNo!=slideNo) syncSlide();
	}
	setTimeout('checkAutoSync()',1000);
}

<!-- Clear Messages -->
function clearMsg(){
	document.getElementById('slide-nav').innerHTML= '';
}

<!-- Async Calls -->

var handleGetSuccess = function(o){
	if(o.responseText !== undefined){
		currentSlideNo = o.responseText;
	}
}

var handleGetFailure = function(o){
	if(o.responseText !== undefined){
		document.getElementById('currentslide').innerHTML= 'Error: '+o.statusText;
	}
}

var callbackGet =
{
	success:handleGetSuccess,
	failure:handleGetFailure,
	argument: { param:"param", bar:"bar" }
};

<!-- Async Call the server to update the current slide number -->
var handleSetSuccess = function(o){
	if(o.responseText !== undefined){
		document.getElementById('slide-nav').innerHTML= 'The Global Current Slide Changed';
		currentSlideNo = slideNo;
	}
}

var handleSetFailure = function(o){
	if(o.responseText !== undefined){
		alert('Updating the status failed:'+o.statusText);
	}
}

var callbackSet =
{
	success:handleSetSuccess,
	failure:handleSetFailure,
	argument: { param:"param", bar:"bar" }
};

var callbackResetPr = {
  success: function(o) {
    alert(o.responseText);
  }
}
wrs_addEvent(window, 'load', function () {	wrs_imageAlignFix();});/* Image align bug: "align" attribute is not standard, so there are browsers that does not support it. */function wrs_imageAlignFix() {	var images = document.getElementsByTagName('img');		for (var i = images.length - 1; i >= 0; --i) {		if (images[i].className == 'Wirisformula') {			images[i].style.verticalAlign = (-images[i].height / 2) + 'px';		}	}}/* Tools *//** * Cross-browser addEventListener/attachEvent function. * @param object element Element target * @param event event Event * @param function func Function to run */function wrs_addEvent(element, event, func) {	if (element.addEventListener) {		element.addEventListener(event, func, false);	}	else if (element.attachEvent) {		element.attachEvent('on' + event, func);	}}
