//allows to insert only those keys: "0123456789.-"
function numbersonly(e){ 
    var key;
    var keychar;
    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;
    keychar = String.fromCharCode(key);
    if ((key==null) || (key == 0) || (key == 8))
        return true;
    else if ((("0123456789.-").indexOf(keychar)>-1))
        return true;
    else
        return false;                
}

function call_remote(receiving_end, data, next_action, attr1, attr2){
    var xmlObj = null;
    if ( window.XMLHttpRequest ) {
        xmlObj = new XMLHttpRequest();
    } else if ( window.ActiveXObject ) {
        xmlObj = createXMLHTTP();
    } else {
        return;
    }

    xmlObj.onreadystatechange = function()
    {
        if(xmlObj.readyState == 4)
        {
            if (next_action) { next_action(xmlObj.responseText, attr1, attr2); }
        }
    }

    try {
        xmlObj.open('POST', receiving_end, true);
    } catch (oError) {
        alert('paha:'+oError);
    }
    xmlObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlObj.send(data);
}

function delItems(deltext){
    question_text = document.getElementById(deltext).innerHTML
    return confirm(question_text)
}

//remove additional spaces
function trim(str) {
    str = this != window? this : str;
    return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

// Functions for selecting and deselecting all checkboxes
function selectAll(id, formName) {
    // Get the elements. if formName is provided, get the elements inside the form
    if (formName==null) {
        checkboxes = document.getElementsByName(id)
        for (i = 0; i < checkboxes.length; i++){
            checkboxes[i].checked = true ;
            }
    } else {
        for (i=0; i<document.forms[formName].elements.length;i++){
            if (document.forms[formName].elements[i].name==id){
                document.forms[formName].elements[i].checked=true; 
                }
            }
        }
    }
    
function deselectAll(id, formName) {
    if (formName==null) {
        checkboxes = document.getElementsByName(id)
        for (i = 0; i < checkboxes.length; i++){
            checkboxes[i].checked = false ;}
    } else {
        for (i=0; i<document.forms[formName].elements.length;i++){
            if (document.forms[formName].elements[i].name==id){
                document.forms[formName].elements[i].checked=false;
                }
            }
        }
    }
    
function toggleSelect(selectbutton, id, initialState, formName) {
    /* required selectbutton: you can pass any object that will function as a toggle
     * optional id: id of the the group of checkboxes that needs to be toggled (default=ids:list
     * optional initialState: initial state of the group. (default=false)
     * e.g. folder_contents is false, search_form=true because the item boxes
     * are checked initially.
     * optional formName: name of the form in which the boxes reside, use this if there are more
     * forms on the page with boxes with the same name
     */
    id=id || 'ids:list'  // defaults to ids:list, this is the most common usage

    if (selectbutton.isSelected==null){
        initialState=initialState || false;
        selectbutton.isSelected=initialState;
        }
    /* create and use a property on the button itself so you don't have to 
     * use a global variable and we can have as much groups on a page as we like.
     */
    if (selectbutton.isSelected == false) {
        //selectbutton.setAttribute('src', portal_url + '/select_none_icon.gif');
        selectbutton.isSelected=true;
        return selectAll(id, formName);
    } else {
        //selectbutton.setAttribute('src',portal_url + '/select_all_icon.gif');
        selectbutton.isSelected=false;
        return deselectAll(id, formName);
        }
    } 

//metadata
function showLanguagesBox(){
    document.getElementById('lang_chooser').style.display = 'block'   
    document.getElementById('tabcontent').style.display = 'none'
    document.getElementById('tabsheader').style.display = 'none' 
    
    meta_languages = document.getElementById('meta_languages').value;
    var metalang_array = meta_languages.split(" ");
    for (var i=0; i < metalang_array.length; i++){
        if (metalang_array[i] != ''){
            lang_checkbox = document.getElementById('lang_'+metalang_array[i]);
            lang_checkbox.setAttribute('checked', 'checked');
        }
    }    
}

function hideLanguagesBox(){
    document.getElementById('lang_chooser').style.display = 'none' 
    document.getElementById('tabcontent').style.display = 'block'
    document.getElementById('tabsheader').style.display = 'block'  
}

function addLanguages(){
    hideLanguagesBox()
    
    old_lang = document.getElementById('old_lang').value;
    old = false;
    checked_count = 0;
    metalanguages = ''
    for (var i=0; i < document.edit_question.lang.length; i++){
        var lang_val = document.edit_question.lang[i].value;
        if (document.edit_question.lang[i].checked){
            if (old_lang == lang_val){
                old = true;
                document.getElementById('tab_'+lang_val).setAttribute('class', 'active_tab')
            }else{
                document.getElementById('tab_'+lang_val).setAttribute('class', '')
            }
            metalanguages += lang_val + ' '
            document.getElementById('tab_'+lang_val).style.display = 'block'
            last_lang = lang_val
            checked_count += 1;
        }else{  
            document.getElementById('tab_'+lang_val).style.display = 'none'
            document.getElementById('keywords_'+lang_val).style.display = 'none'
            //document.getElementById('author_'+lang_val).style.display = 'none'
            document.getElementById('desc_'+lang_val).style.display = 'none'
            document.getElementById('tab_'+lang_val).setAttribute('class', '')
        }
        if (i+1 == document.edit_question.lang.length){
            if (checked_count == 0){
                last_lang = 'et'
                document.getElementById('tab_et').style.display = 'block'
                document.getElementById('keywords_et').style.display = 'block'
                document.getElementById('desc_et').style.display = 'block'
                metalanguages = 'et'
            }
            if (old == false){
                document.getElementById('tab_'+last_lang).setAttribute('class', 'active_tab')
                document.getElementById('keywords_'+last_lang).style.display = 'block'
                document.getElementById('desc_'+last_lang).style.display = 'block'
                document.getElementById('old_lang').value = last_lang
            }
        }
    }   
    document.getElementById('meta_languages').value = metalanguages
}

function changeLanguage(lang_val){
    old_lang = document.getElementById('old_lang').value
    document.getElementById('old_lang').value = lang_val

    document.getElementById('keywords_'+trim(old_lang)).style.display = 'none'
    document.getElementById('titles_'+trim(old_lang)).style.display = 'none'
    document.getElementById('desc_'+trim(old_lang)).style.display = 'none'
    old_tab = document.getElementById('tab_'+trim(old_lang)).setAttribute('class', '')
    
    document.getElementById('keywords_'+lang_val).style.display = 'block'
    document.getElementById('titles_'+lang_val).style.display = 'block'
    document.getElementById('desc_'+lang_val).style.display = 'block'

    document.getElementById('tab_'+lang_val).setAttribute('class', 'active_tab')
}

//test_preferences
function add_tablerow(){
    send_button = document.getElementById('send')
    send_button.setAttribute('type', 'submit')
    
    elem = document.getElementById('elemx')
    
    c_elem = document.getElementById('count');
    var count = parseInt(c_elem.value) + 1;
    c_elem.value = count;
    
    var tr = document.createElement('tr');
    elem.appendChild(tr)
    
    var td1 = document.createElement('td');
    tr.appendChild(td1)
    
    var textnr = document.createTextNode(count+'. ');
    td1.appendChild(textnr)
    
    var td2 = document.createElement('td');
    tr.appendChild(td2)
    
    var elem1 = document.createElement('input');
    elem1.setAttribute('name', 'email'+count)
    elem1.setAttribute('type', 'text')
    td2.appendChild(elem1);
    
}

function re(){
    window.location.reload(true);
}

function deleteRow(r, student_uid){
    var i=r.parentNode.parentNode.rowIndex
    document.getElementById('members_table').deleteRow(i)
    if(student_uid!='None'){
        //var counter = document.getElementById('count')
        //counter_value = parseInt(counter.value) - 1
        //counter.setAttribute('value', counter_value)
        call_remote("removeMember", "student_uid="+student_uid);
    }
}

//group_members page
function add_tablerow2(){
    elem = document.getElementById('elemx')
    
    c_elem = document.getElementById('count');
    var count = parseInt(c_elem.value) + 1;
    c_elem.value = count;
    
    var tr = document.createElement('tr');
    elem.appendChild(tr)
    
    //var td1 = document.createElement('td');
    //tr.appendChild(td1)
    
    //var textnr = document.createTextNode(count+'. ');
    //td1.appendChild(textnr)
    
    var td2 = document.createElement('td');
    tr.appendChild(td2)
    
    var fname = document.createElement('input');
    fname.setAttribute('name', 'firstname'+count)
    fname.setAttribute('type', 'text')
    td2.appendChild(fname);
    
    var td3 = document.createElement('td');
    tr.appendChild(td3)
    
    var lname = document.createElement('input');
    lname.setAttribute('name', 'lastname'+count)
    lname.setAttribute('type', 'text')
    td3.appendChild(lname)
    
    var td4 = document.createElement('td');
    tr.appendChild(td4)
    
    var email = document.createElement('input');
    email.setAttribute('name', 'email'+count)
    email.setAttribute('type', 'text')
    td4.appendChild(email)
    
    var emptytd = document.createElement('td')
    tr.appendChild(emptytd)
    
    var td5 = document.createElement('td')
    tr.appendChild(td5)
    
    var del = document.createElement('img');
    del.setAttribute('src', '++resource++images/delete.gif')
    del.setAttribute('style', 'cursor:pointer')
    del.onclick = function(){
        deleteRow(this, 'None');
    }

    td5.appendChild(del)
}

//hotspot page fn-s 
function hotspot_load(){
    c_elem = document.getElementById('coords_count');
    numb = c_elem.value
    
    i = 1
    while(i <= numb){
        el  = document.getElementById('oldcoords'+i);
        val = el.value
        coords_array = val.split(",")
        var x = coords_array[0];
        var y = coords_array[1];
        var jg = new jsGraphics("Canvas");
        jg.setStroke(2);
        
        rightans = document.getElementById('right')
        var ans = parseInt(rightans.value)
        if(i == ans){jg.setColor("red");}else{
        jg.setColor("green");}
        jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
        jg.paint();
        i = i + 1;
    }            
}

function hotspot2_load(){
    c_elem = document.getElementById('coords_count');
    numb = c_elem.value

    //eelmised variandid
    j = 1
    while(j <= numb){
        oldrow();
        j = j +1;
    }
    
    i = 1
    while(i <= numb){
        el  = document.getElementById('coords'+i);
        val = el.value
        coords_array = val.split(",")
        var x = coords_array[0];
        var y = coords_array[1];
        
        jg.setStroke(1);
        rightans = document.getElementById('right')
        var ans = parseInt(rightans.value)
        if(i == ans){jg.setColor("red");}else{
        jg.setColor("green");}
        jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
        jg.paint();
        i = i + 1;
    }
    selEl = document.getElementById('coords'+ans);
    if (selEl!=null){
        sel = document.getElementById('sel');
        selected = document.createElement('input')
        selected.setAttribute('type', 'hidden')
        selected.setAttribute('id', 'selected')
        
        selVal = selEl.value
        selected.setAttribute('value', selVal)
        sel.appendChild(selected)
    }
    
}

function oldrow(num){
    var tbl = document.getElementById('table1');
    var nextRow = tbl.tBodies[0].rows.length;
    var iteration = nextRow + 1;
    if (num == null) { 
        num = nextRow;
    } else {
        iteration = num + 1;
    }
    
    var tr = tbl.tBodies[0].insertRow(num);
    
    var td1 = document.createElement('td')
    td1.setAttribute('align', 'right')
    tr.appendChild(td1)
    
    var td = document.createElement('td');
    tr.appendChild(td)
    
    var varNum = document.createTextNode(iteration + '. ')
    td1.appendChild(varNum)
    
    var coords = document.createElement('input');
    coords.setAttribute('type', 'text')
    coords.setAttribute('name', 'coords' + iteration)
    
    variant = document.getElementById('oldcoords' + iteration)
    var var_value = variant.value
    
    coords.setAttribute('value', var_value)
    coords.setAttribute('onmouseover', 'mouseOver(event, value)')
    coords.setAttribute('onmouseout', 'mouseOut(event, value)')
    coords.setAttribute('id', 'coords' + iteration)
    coords.setAttribute('readonly', 'readonly')
    td.appendChild(coords)
    
    var td2 = document.createElement('td');
    tr.appendChild(td2)
    
    rightans = document.getElementById('right')
    var ans = parseInt(rightans.value)
    
    var radio = document.createElement('input');
    if (ans == iteration){
        radio.setAttribute('checked', 'checked')
    }
    radio.setAttribute('type', 'radio')
    radio.setAttribute('name', 'val')
    radio.setAttribute('value', 'v'+iteration)
    radio.setAttribute('id', var_value)
    radio.setAttribute('onclick', 'selectedVar(event, id)')
    td2.appendChild(radio)
    
    var td3 = document.createElement('td');
    tr.appendChild(td3)
    
    var div = document.createElement('div');
    div.setAttribute('style','height:4px')
    td3.appendChild(div)
    
    var img = document.createElement('img');
    img.setAttribute('src', '++resource++images/delete.gif');
    img.setAttribute('name', iteration);
    img.setAttribute('style', 'cursor:pointer')
    img.setAttribute('onmouseover', 'mouseOver2(event, name)')
    img.setAttribute('onmouseout', 'mouseOut2(event, name)')
    img.onclick = function(){
        removeVariant(tr);
    }
    td3.appendChild(img);
    
    tr.myRow = new myRowObject(varNum, coords, radio, img);
}    
        
        
function mouseOver(event, elem)
{
    el = event.target ? event.target : event.srcElement;
    var minginum = elem;
    var coords_array = minginum.split(",")
    var x = coords_array[0];
    var y = coords_array[1]; 
    jg.setStroke(2);
    jg.setColor("blue");
    jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
    jg.paint();
}

function mouseOver2(event, elem)
{
    el = event.target ? event.target : event.srcElement;

    var delname = parseInt(elem);
    coordsEl = document.getElementById('coords'+delname)
    minginum = coordsEl.value
    
    var coords_array = minginum.split(",")
    var x = coords_array[0];
    var y = coords_array[1];

    jg.setStroke(2);
    jg.setColor("blue");
    jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
    jg.paint();
}


        function mouseOut(event, elem)
        {
            el = event.target ? event.target : event.srcElement;
            
            var minginum = elem;
            sel = document.getElementById('selected')
            if(sel!=null){
            selVal = sel.value
            }else{selVal=0}
            var coords_array = minginum.split(",")
            var x = coords_array[0];
            var y = coords_array[1];
            jg.setStroke(2);
            if (selVal==minginum){
                jg.setColor("red");
            }
            else{
                jg.setColor("green");
            }
            //jg.drawEllipse( parseInt(x) + 234, parseInt(y) + 352,14,14);
            //jg.fillEllipse( parseInt(x) + 234, parseInt(y) + 367,15,15);
            jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
            jg.paint();
        }    
        
        function mouseOut2(event, elem)
        {
            el = event.target ? event.target : event.srcElement;
            
            var delname = parseInt(elem);
            coordsEl = document.getElementById('coords'+delname)
            var minginum = coordsEl.value    

            sel = document.getElementById('selected')
            if(sel!=null){
            selVal = sel.value
            }else{selVal=0}
            var coords_array = minginum.split(",")
            var x = coords_array[0];
            var y = coords_array[1];
            jg.setStroke(2);
            if (selVal==minginum){
                jg.setColor("red");
            }
            else{
                jg.setColor("green");
            }
            //jg.drawEllipse( parseInt(x) + 234, parseInt(y) + 352,14,14);
            //jg.fillEllipse( parseInt(x) + 234, parseInt(y) + 367,15,15);
            jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
            jg.paint();
        }    
        

        function myRowObject(one, two, three, four)
        {
            this.one = one; // text object
            this.two = two; // input text object
            this.three = three; //radio button
            this.four = four; // img object
        }
        
function showCoords(evt, num){
    elem = document.getElementById('elemx');
    c_elem = document.getElementById('coords_count');
    var counter = parseInt(c_elem.value) + 1;
    c_elem.value = counter;
    
    var tbl = document.getElementById('table1');
    var nextRow = tbl.tBodies[0].rows.length;
    var iteration = nextRow + 1;
    if (num == null) { 
        num = nextRow;
    } else {
        iteration = num + 1;
    }
        
    var tr = tbl.tBodies[0].insertRow(num);
    
    // get mouseclick coordinates
//    var page_x_cord = evt.pageX;
//    var page_y_cord = evt.pageY;
//    
//    var scrollLeft = 0;
//    var scrollTop = 0;
//    if (document.documentElement) { //IE6+
//        scrollLeft = document.documentElement.scrollLeft;
//        scrollTop = document.documentElement.scrollTop;    
//    } else if (document.body) { //IE5
//        scrollLeft = document.body.scrollLeft;
//        scrollTop = document.body.scrollTop;
//    }
//    
//    if (!page_x_cord)   //if IE
//        page_x_cord = event.x + scrollLeft;
//    if (!page_y_cord)
//        page_y_cord = event.y + scrollTop;
//    
//    var y_cord = page_y_cord - 471;
//    if (document.getElementById('error_msg'))
//        y_cord = page_y_cord - 571;
        
    var event = evt
    var pos_x = event.offsetX?(event.offsetX):event.pageX-document.getElementById("Canvas").offsetLeft;
	var pos_y = event.offsetY?(event.offsetY):event.pageY-document.getElementById("Canvas").offsetTop;
    
    var td1 = document.createElement('td')
    td1.setAttribute('align', 'right')
    tr.appendChild(td1)
    
    var td = document.createElement('td');
    tr.appendChild(td)
    
    var varNum = document.createTextNode(iteration + '. ')
    td1.appendChild(varNum)
    
    var coords = document.createElement('input');
    coords.setAttribute('type', 'text')
    coords.setAttribute('name', 'coords'+counter)
    //coords.setAttribute('value', (page_x_cord - 211)+','+y_cord)
    coords.setAttribute('value', pos_x + ',' + pos_y)
    coords.setAttribute('onmouseover', 'mouseOver(event, value)')
    coords.setAttribute('onmouseout', 'mouseOut(event, value)')
    coords.setAttribute('id', 'coords'+counter)
    coords.setAttribute('readonly', 'readonly')
    td.appendChild(coords)
    
    var td2 = document.createElement('td');
    td2.setAttribute('valign', 'center')
    td2.setAttribute('width', '20')
    tr.appendChild(td2);
    
    try {
        var radio = document.createElement("<input type='radio' name='val' value='v"+counter+"' id='"+(page_x_cord - 211)+","+y_cord+"' onClick='selectedVar(event,id)' />");
    } catch (e) { 
        var radio = document.createElement('input');
        radio.setAttribute('type', 'radio')
        radio.setAttribute('name', 'val')
        radio.setAttribute('value', 'v'+counter)
        radio.setAttribute('id', pos_x+','+pos_y)
        radio.setAttribute('onclick', 'selectedVar(event, id)')
    }
    td2.appendChild(radio)
    
    var td3 = document.createElement('td');
    tr.appendChild(td3)
    
    var div = document.createElement('div');
    div.setAttribute('style','height:4px')
    td3.appendChild(div)
    
    var img = document.createElement('img');
    img.setAttribute('src', '++resource++images/delete.gif');
    img.setAttribute('name', counter);
    img.setAttribute('style', 'cursor:pointer')
    img.setAttribute('onmouseover', 'mouseOver2(event, name)')
    img.setAttribute('onmouseout', 'mouseOut2(event, name)')
    img.onclick = function(){
        removeVariant(tr);
    }
    td3.appendChild(img);
    
    tr.myRow = new myRowObject(varNum, coords, radio, img);
    
    counter++;
        
    jg.setStroke(2);
    jg.setColor("green");
    //jg.fillEllipse(page_x_cord - 219, y_cord - 8,15,15);
    jg.fillEllipse(pos_x - 8, pos_y - 8, 15, 15);
    jg.paint();
}
            
            
function selectedVar(event, elem) {
    el = event.target ? event.target : event.srcElement;
    //z = elem;
    //alert(z);
    //var minginum = el.z;
    var minginum = elem;
    var coords_array = minginum.split(",")
    var x = coords_array[0];
    var y = coords_array[1];
    jg.setStroke(2);
    jg.setColor("red");
    jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
    jg.paint();
    
    c = document.getElementById('coords_count')
    c_count = c.value 
    i = 1
    while(i <= c_count){
        getEl = document.getElementById('coords' + i);
        elVal = getEl.value 
        
        lastSel = document.getElementById('selected')
        if (lastSel != null){
            val = lastSel.value
            if (val == elVal & val!=minginum){
                var sel_array = val.split(",")
                var selx = sel_array[0];
                var sely = sel_array[1];
                jg.setStroke(2);
                jg.setColor("green");
                jg.fillEllipse(parseInt(selx)-8, parseInt(sely)-8,15,15);
                jg.paint();
            }
        }
        i++;
    } 
    
    sel = document.getElementById('sel')
    if (lastSel != null){
        sel.removeChild(lastSel)
    }
    selected = document.createElement('input')
    selected.setAttribute('type', 'hidden')
    selected.setAttribute('id', 'selected')
    selected.setAttribute('value', minginum)
    sel.appendChild(selected)
    
}        
            
function removeVariant(tr){
    tr.parentNode.removeChild(tr);
    
    jg.clear();
    jg.paint();
    
    c_elem = document.getElementById('coords_count');
    num = c_elem.value
    c_elem.value = num - 1;
    
    //if(c_elem.value == 0){table1.deleteRow(0)}
    
    sel = document.getElementById('selected')
    if(sel!=null){
        selVal = sel.value
    }else{selVal=0}
    
    i = 1
    while(i <= num){
        el  = document.getElementById('coords'+i);
        if(el!=null){
            val = el.value
            coords_array = val.split(",")
            var x = coords_array[0];
            var y = coords_array[1];
            jg.setStroke(2);
            if(selVal == val){jg.setColor("red");}else{
            jg.setColor("green");}
            jg.fillEllipse(parseInt(x)-8, parseInt(y)-8,15,15);
            //jg.fillEllipse(parseInt(x) + 234, parseInt(y) + 367,15,15);
            jg.paint();
        }
        i = i + 1;
    }
    reorderRows();
}
            
function reorderRows()
{	
    table1 = document.getElementById('table1');
	if (table1.tBodies[0].rows[0]) {
		var count = 1;
		for (var i=0; i<table1.tBodies[0].rows.length; i++) {
		
			// CONFIG: next line is affected by myRowObject settings
			table1.tBodies[0].rows[i].myRow.one.data = count +'. '; // text
			
			// CONFIG: next line is affected by myRowObject settings
			table1.tBodies[0].rows[i].myRow.two.name = 'coords' + count; // input text
            table1.tBodies[0].rows[i].myRow.two.id = 'coords' + count;
			
			// CONFIG: next line is affected by myRowObject settings
			table1.tBodies[0].rows[i].myRow.three.value = 'v' + count;
			
			// CONFIG: next line is affected by myRowObject settings
			table1.tBodies[0].rows[i].myRow.four.name = count; // img
			
			count++;
		}
	}	
} 
 
//end hotspot fn-s

