// disable or enable all checkboxes (based on thiscb value)
function toggleCB(field_name, thiscb) {
    var cblist = document.getElementsByName(field_name);
    for (i=0; i<cblist.length; i++) {
	cblist[i].checked = thiscb.checked;
    }
}

function in_array(v,arr) {
    if (!arr.length) return false;
    var r = false;
    for (var i=0;i<arr.length;i++) {
	if (arr[i] == v) { r = true; break; }
    }
    return r;
}

function addNicEditors(owner_layer_id) {
    var owner_layer = document.getElementById(owner_layer_id);
    if (typeof nicE_setup=='undefined') {
        nicE_setup = new Array();
    }
    if ((typeof nicE_ids!='undefined') && (owner_layer.style.visibility == 'visible')) {
	var tas = owner_layer.getElementsByTagName('TEXTAREA');
	if (tas.length) {
	    for (var i=0;i<tas.length;i++) {
		if (in_array(tas[i].id, nicE_ids)) {
		    if (!in_array(tas[i].id, nicE_used)) {
                        if (nicE_setup[tas[i].id]) {
			    var x = new nicEditor(nicE_setup[tas[i].id]).panelInstance(tas[i].id);
                        } else {
                            var x = new nicEditor().panelInstance(tas[i].id);
                        }
			nicE_used[nicE_used.length] = tas[i].id;
		    }
		}
	    }
	}
    }
}

function toggleDialogLayer(owner_layer_id) {
    var owner_layer = document.getElementById(owner_layer_id);
    var divs = owner_layer.getElementsByTagName('DIV');
    if (!divs.length)
        return;

    owner_layer.style.display = (owner_layer.style.visibility == 'visible') ? 'block' : 'none';

    for (var i=0; i<divs.length; i++) {
        if (divs[i].className == 'content') {
            divs[i].style.display = (owner_layer.style.visibility == 'visible') ? 'block' : 'none';
        }
    }

}

/* DHTML API Position elements */
var isCSS, isW3C, isIE4, isNN4, isIE6CSS;

function initDHTMLAPI() {
  if (document.images) {
    isCSS = (document.body && document.body.style) ? true : false;
    isW3C = (isCSS && document.getElementById) ? true : false;
    isIE4 = (isCSS && document.all) ? true : false;
    isNN4 = (document.layers) ? true : false;
    isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1")>=0) ? true : false;
  }
}

initDHTMLAPI();

function getRawObject(obj) {
  var theObj;
  if (typeof obj == 'string') {
    if (isW3C) {
      theObj = document.getElementById(obj);
    } else if (isIE4) {
      theObj = document.all(obj);
    }
  } else {
    theObj = obj;
  }
  return theObj;
}

function getInsideWindowHeight() {
  if (window.innerHeight) {
    return window.innerHeight;
  } else if (isIE6CSS) {
    return document.body.parentElement.clientHeight;
  } else if (document.body && document.body.clientHeight) {
    return document.body.clientHeight;
  }
  return 0;
}

function getPageSize() {
  var x,y;
  var test1 = document.body.scrollHeight;
  var test2 = document.body.offsetHeight;
  if (test1 > test2) // all but Explorer Mac
  {
	x = document.body.scrollWidth;
	y = document.body.scrollHeight;
  }
  else // Explorer Mac;
       //would also work in Explorer 6 Strict, Mozilla and Safari
  {
	x = document.body.offsetWidth;
	y = document.body.offsetHeight;
  }
  return {width:x, height:y};
}

function getScrollY() {
    return document.all ? (document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop) : pageYOffset;
}

function getPage_Size(){
        var windowWidth, windowHeight;
        if (self.innerHeight) { // all except Explorer
                windowWidth = self.innerWidth;
                windowHeight = self.innerHeight;
        } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
                windowWidth = document.documentElement.clientWidth;
                windowHeight = document.documentElement.clientHeight;
        } else if (document.body) { // other Explorers
                windowWidth = document.body.clientWidth;
                windowHeight = document.body.clientHeight;
        }

        var pageWidth = 0;
        if(document.body.clientWidth && pageWidth < document.body.clientWidth) pageWidth = document.body.clientWidth;
        if(document.body.scrollWidth && pageWidth < document.body.scrollWidth) pageWidth = document.body.scrollWidth;
        if(document.documentElement.scrollWidth && pageWidth < document.documentElement.scrollWidth) pageWidth = document.documentElement.scrollWidth;
        if(document.documentElement.clientWidth && pageWidth < document.documentElement.clientWidth) pageWidth = document.documentElement.clientWidth;
        if(document.documentElement.offsetWidth && pageWidth < document.documentElement.offsetWidth) pageWidth = document.documentElement.offsetWidth;
        if(document.body.offsetWidth && pageWidth < document.body.offsetWidth) pageWidth = document.body.offsetWidth;
        if(window.innerWidth && pageWidth < window.innerWidth) pageWidth = window.innerWidth;

        var pageHeight = 0;
        if(document.body.clientHeight && pageHeight < document.body.clientHeight) pageHeight = document.body.clientHeight;
        if(document.body.scrollHeight && pageHeight < document.body.scrollHeight) pageHeight = document.body.scrollHeight;
        if(document.documentElement.scrollHeight && pageHeight < document.documentElement.scrollHeight) pageHeight = document.documentElement.scrollHeight;
        if(document.documentElement.clientHeight && pageHeight < document.documentElement.clientHeight) pageHeight = document.documentElement.clientHeight;
        if(document.documentElement.offsetHeight && pageHeight < document.documentElement.offsetHeight) pageHeight = document.documentElement.offsetHeight;
        if(document.body.offsetHeight && pageHeight < document.body.offsetHeight) pageHeight = document.body.offsetHeight;
        if(window.innerHeight && pageHeight < window.innerHeight) pageHeight = window.innerHeight;

        return {page_width:pageWidth, page_height:pageHeight, window_width:windowWidth, window_height:windowHeight};
}


function _getElementPosition(elemID) {
  var offsetTrail = document.getElementById(elemID);
  var offsetLeft = 0;
  var offsetTop = 0;
  while (offsetTrail) {
    offsetLeft += offsetTrail.offsetLeft;
    offsetTop += offsetTrail.offsetTop;
    offsetTrail = offsetTrail.offsetParent;
  }

  return {left: offsetLeft, top: offsetTop};
}

function getObjectTop(obj) {
  var elem = getRawObject(obj);
  var result = 0;
  if (document.defaultView) {
    var style = document.defaultView;
    var cssDecl = style.getComputedStyle(elem, "");
    result = cssDecl.getPropertyValue('top');
  } else if (elem.currentStyle) {
    result = elem.currentStyle.top;
  } else if (elem.style) {
    result = elem.style.top;
  } else if (isNN4) {
    result = elem.top;
  }
  return parseInt(result);
}

function getObjectHeight(obj) {
  var elem = getRawObject(obj);
  var result = 0;
  if (elem.offsetHeight) {
    result = elem.offsetHeight;
  } else if (elem.clip && elem.clip.height) {
    result = elem.clip.height;
  } else if (elem.style && elem.style.pixelHeight) {
    result = elem.style.pixelHeight;
  }
  return parseInt(result);
}

function getObjectWidth(obj) {
  var elem = getRawObject(obj);
  var result = 0;
  if (elem.offsetWidth) {
    result = elem.offsetWidth;
  } else if (elem.clip && elem.clip.width) {
    result = elem.clip.width;
  } else if (elem.style && elem.style.pixelWidth) {
    result = elem.style.pixelWidth;
  }
  return parseInt(result);
}
/* end of DHTML API Position elements */

//function getElementWidth(obj) {
  //var w = 0;
  //var w = getObjectWidth(obj);
  //if (w == 0) {
    //for (var i=0;i<obj.childNodes.length;i++) {
	//w = getElementWidth(obj.childNodes[i]);
	//if (w > 0) break;
    //}
  //} 
  //return w;
//}

function showProperties(obj, objName)
{
  var result = "The properties for the " + objName + " object:" + "\n";

  for (var i in obj) {result += i + " = " + obj[i] + "\n";}

  return result;
}

var glassID = 'glass_layer';
var footerID = 'footer_yellow_line';
var LoadTimer;
var showedLayer;

function toggleLayerByTimer(scroll_top) {
    setGlassHeight(showedLayer, scroll_top);
    clearTimeout(LoadTimer);
}

function setGlassHeight(layer_name, scroll_top) {
    var footer_height = 25;
    var pageHeaderHeight = 85;
    var dialog_top = 145;
    var margin_ = 25;
    var layer=document.getElementById(layer_name);
    var glasslayer=document.getElementById(glassID);
    var winHeight = getInsideWindowHeight();
    var pageHeight = getPageSize().height;
    var topOfFooter = _getElementPosition(footerID).top;
    var topOfGlass = 0;
    glasslayer.style.top = topOfGlass;

    var tbls = layer.getElementsByTagName('TABLE');
    if (tbls.length == 0) { // glass layer height fix for student mentor popup without table element
        tbls = getElementByClassName(layer, "div", "ment-popup-content");
    }

    if (!scroll_top) {
        var content_div = layer.children[0];
        content_div.style.top = (dialog_top + getScrollY()) + "px";
    }

    if (tbls.length == 0 ) {
        glasslayer.style.height = (topOfFooter - pageHeaderHeight)+'px';
        return;
    }

    var table_top = (typeof tbls[0].offsetTop == 'undefined') ? 0 : tbls[0].offsetTop;
    var table_height = (typeof tbls[0].offsetHeight == 'undefined') ? 0 : tbls[0].offsetHeight;
    var bottomOfDialog = table_height + table_top + dialog_top + margin_;
    topOfFooter = (topOfFooter + footer_height + 5 > pageHeight) ? topOfFooter : pageHeight;
    topOfFooter = (typeof bottomOfDialog != 'undefined') && (topOfFooter > bottomOfDialog) ? topOfFooter : bottomOfDialog;
    glasslayer.style.height = (topOfFooter - pageHeaderHeight)+'px';
}

function getElementByClassName(parent, tagName, className) {
    var children = parent.getElementsByTagName(tagName);
    for (var i = 0; i < children.length; i++) {
        var child = children[i];
        var classesStr = child.className;
        if (!classesStr) {
            continue;
        }
        var classesList = classesStr.split(' ');
        for (var j = 0; j < classesList.length; j++) {
            if (classesList[j] == className) {
                return [child];
            }
        }
    }
    return [];
}

function toggleLayer(layer_name) {
    doToggleLayer(layer_name, true);
}

function doToggleLayer(layer_name, scroll_top) {
    var layer=document.getElementById(layer_name);
    var sublayer=document.getElementById('bg_layer');
    var glasslayer=document.getElementById(glassID);
    var timedelay = 200; // ms
    if (scroll_top) {
        location.hash='top'; // scroll top before the dialog show
    }

    if (layer.style.visibility=='hidden') {
    	layer.style.visibility='visible';
        if (sublayer) {
            sublayer.style.overflow='hidden';
        }
        if (glasslayer) {
            setGlassHeight(layer_name, scroll_top);
            LoadTimer = window.setTimeout('toggleLayerByTimer(' + scroll_top + ')',timedelay);
            showedLayer = layer_name;
            glasslayer.style.display='block';
        }
    } else {
        layer.style.visibility='hidden';
        if (sublayer) {
            sublayer.style.overflow='auto';
        }
        if (glasslayer) {
            glasslayer.style.display='none';
            glasslayer.style.height = '10px';
        }
    }
    toggleDialogLayer(layer_name);
    addNicEditors(layer_name);
    return false;
}


function copyLayer(list_name,form_name,layer_name,empty_alert) {
    if (copyCBList(list_name,form_name,empty_alert)) {
	toggleLayer(layer_name);
    }
}

function copyCBList(list_name,form_name,empty_alert) {
    var idlist=document.getElementsByName(list_name);
    var subform=document.forms[form_name];
    var namelist=document.getElementById(form_name+'_namelist');
    // Clear lists
    while (namelist.childNodes[0]) {namelist.removeChild(namelist.childNodes[0]);}
    var newidlist=document.getElementsByName('id_list[]');
    for (i=newidlist.length-1; i>=0; i--) {newidlist[i].parentNode.removeChild(newidlist[i]);}
    // Fill lists
    var items=0;
    for (i=0; i<idlist.length; i++) {
	if (idlist[i].checked) {
	    items++;
	    var myhi=document.createElement('input');
	    myhi.setAttribute('type', 'hidden');
	    myhi.setAttribute('name', 'id_list[]');
	    myhi.setAttribute('value', idlist[i].value);
	    subform.appendChild(myhi);
	    var myli=document.createElement('li');
	    var nametext=document.createTextNode(idlist[i].title);
	    myli.appendChild(nametext);
	    namelist.appendChild(myli);
	}
    }
    if (items==0) {
	alert(empty_alert);
	return false;
    } else {
	return true;
    }
}

