﻿function makeWin(tUrl, strheight, strwidth) {
	agent = navigator.userAgent;
	windowName = "DefinitionWindow";
	
	var vwidth = strwidth;
	var vheight = strheight;
	var vtop = ((screen.height - vheight)/2);
	var vleft = ((screen.width - vwidth)/2); 
	params  = "";
	params += "toolbar=0,";
	params += "location=0,";
	params += "directories=0,";
	params += "status=0,";
	params += "menubar=0,";
	params += "scrollbars=1,";
	params += "resizable=1,";
	params += "width=" + vwidth + ",";
	params += "height=" + vheight + ",";
	params += "top=" + vtop + ",";
	params += "left=" + vleft;
	
	win = window.open(tUrl, windowName, params);
	if (agent.indexOf("Mozilla/2") != -1 && agent.indexOf("Win") == -1) {
	    win = window.open(url, windowName , params);
	}
	if (!win.opener) {
	    win.opener = window;
	}
}

var Event = {
    add: function(obj,type,fn) {
        if (obj.attachEvent) {
	        obj['e'+type+fn] = fn;
	        obj[type+fn] = function() { obj['e'+type+fn](window.event); }
	        obj.attachEvent('on'+type,obj[type+fn]);
        } else
        obj.addEventListener(type,fn,false);
    },
    remove: function(obj,type,fn) {
        if (obj.detachEvent) {
	        obj.detachEvent('on'+type,obj[type+fn]);
	        obj[type+fn] = null;
        } else
        obj.removeEventListener(type,fn,false);
    }
}

function $() {
    var elements = new Array();
    for (var i=0;i<arguments.length;i++) {
        var element = arguments[i];
        if (typeof element == 'string') element = document.getElementById(element);
        if (arguments.length == 1) return element;
        elements.push(element);
    }
    return elements;
}

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/,"");
}

function addClassName(el,className) {
    removeClassName(el,className);
    el.className = (el.className + " " + className).trim();
}

function removeClassName(el,className) {
    el.className = el.className.replace(className,"").trim();
}

var curSection = null;
var sectionInit = {};

function sectionMouseOver(node, e) {
    var sectionNode = getSection(node);
    
    if (!isSameSection(sectionNode, curSection)) {
        curSection = sectionNode;
        toggleSection(sectionNode);
    }
}

function sectionMouseOut(node, e) {
    var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
    if (node) {
        var sectionNode = getSection(reltg);
        if (!isSameSection(sectionNode, curSection)) {
            toggleSection(curSection);
            curSection = null;
        }
    }
}

function sectionMouseClick(node)
{
var sections = document.getElementsByClassName("feed sections");
var gpNode = node.parentNode.parentNode;

    for (var i=0; i<sections.length; i++)
    {
        if (sections[i] == gpNode) {
            sections[i].parentNode.className = " current"; 
        } else {
            sections[i].parentNode.classname = "";
        }
    }

return true;
}

function isSameSection(node1, node2) {
    if (node1 && node2) {
        if (node1.id == node2.id) {
            return true;
        }
        else {
            return false;
        }
    }
    return false;
}

function getSection(node) {
    if (node) {
        var n = node;
        while (n) {
            if (hasClass(n, 'sections')) {
	            return n;
            }
            n = n.parentNode;
        }
    }
    return null;
}

function hasClass (obj, className) {
    if (typeof obj == 'undefined' || obj==null || !RegExp) {
        return false; 
    }
    
    var re = new RegExp("(^|\\s)" + className + "(\\s|$)");
    if (typeof(obj)=="string") {
          return re.test(obj);
    } 
    else if (typeof(obj)=="object" && obj.className) {
        return re.test(obj.className);
    }
        
    return false;  
}
                        
function toggleSection(node) {
    var links = getFirstElement(node, "div", "links");
    if (links) {
        if (links.className.indexOf("l-show") >= 0) {
            replaceClassName(links, "l-show", "l-hide");
        } 
        else  {
            replaceClassName(links, "l-hide", "l-show");
            if (!sectionInit[node.id]) {
	            sectionInit[node.id] = true;
	            var pos = findPos(links);
	            var lwidth = links.offsetWidth ? links.offsetWidth : links.scrollWidth;
	            var bwidth = document.body.offsetWidth ? document.body.offsetWidth : document.body.scrollWidth;
	            var width = pos[0] + lwidth;
	            if (width > bwidth) {
		            links.style.left = (bwidth - width) + "px";
	            }
	            else {
		            links.style.left = "0px";
	            }
            }
        } 
    }
}

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        do {
	        curleft += obj.offsetLeft;
	        curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft,curtop];
}

function getElements(oElm, strTagName, strClassName) {
    return $getElements(oElm, strTagName, strClassName, false);
}

function getFirstElement(oElm, strTagName, strClassName) {
    var items = $getElements(oElm, strTagName, strClassName, true);
    return (items && (items.length == 1)) ? items[0] : null;
}

function $getElements(oElm, strTagName, strClassName, firstOnly) {
    var oElement;
    var arrReturnElements = [ ];
    var arrClassNames = strClassName.split(" ");
    if (oElm) {
        var arrElements = (strTagName == "*" && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTagName);
        for(var i=0;i<arrElements.length;i++) {
	        oElement = arrElements[i];
	        if (oElement.className) {
		        var oClasses = oElement.className.split(" ");
		        var bolFound = false;
		        for (var j = 0; j < oClasses.length; j++) {
			        for (var k = 0; k < arrClassNames.length; k++) {
				        if (oClasses[j] == arrClassNames[k]) {
					        bolFound = true;
					        break;
				        } 
				        if (!bolFound) {
					        if (strClassName == "*") {
						        bolFound = true;
					        }
				        }
				        if (bolFound) {
					        break;
				        }
			        }
			        if (bolFound) {
				        break;
			        }
		        }
	        } 
	        else {
		        if (strClassName == "*") {
			        bolFound = true;
		        }
	        }
	        if (bolFound) {
		        arrReturnElements.push(oElement);
		        if ((arrReturnElements.length == 1) && firstOnly) {
			        break;
		        }
	        }
        }
    }
    return (arrReturnElements)
}

function replaceClassName( elementRef, oldClassName, newClassName )
{
  if( elementRef.className.indexOf( oldClassName ) != -1 )
  {
    if( elementRef.className.indexOf( newClassName ) != -1 )
      elementRef.className =
        elementRef.className.replace( oldClassName, "" );
    else
      elementRef.className =
        elementRef.className.replace( oldClassName, newClassName );
  }
  else
  {
    if( elementRef.className.indexOf( newClassName ) == -1 )
      elementRef.className = elementRef.className + " " + newClassName;
  }
}

Event.add(window, 'load', function()
{
    var form = document.getElementById("pageForm");

    var sections = getElements(document, "*", "feed sections");

    for (var i=0; i<sections.length; i++)
    {
            Event.add(sections[i], 'mouseover', function(e) { var event = e || window.event; sectionMouseOver(this, event); return false; });
            Event.add(sections[i], 'mouseout', function(e) { var event = e || window.event; sectionMouseOut(this, event); return false; });
            
//    var sectionLink = getFirstElement(sections[i], "a", "*");

//    if (sectionLink)
//                Event.add(sectionLink, 'click', function() { sectionMouseClick(this); return true; });

    }
});

