
var dragtab=false, dragport=false;
var z,x,y, noTabs, noPorts, origPort, newPort, curEdit, curTab, searchNum=1, catNum=1, maxTabs, origTab, origTabPos, noOwn, origPortX, origPortY, binPos;
var T = new Array();
var TC = new Array();
var portPos = new Array();
var portCode = new Array();
var tabCode = new Array();
var ownPort = new Array();

addTab = function(tab) {
    if (tab==curTab)
    {
        document.getElementById("tabs").innerHTML=document.getElementById("tabs").innerHTML + '<li id="tab'+tab+'" class="dropdown-button" style="background:url(images/tab-sel.png) repeat-x;"><div id="txt'+tab+'" class="text" style="visibility:visible; background:url(images/tab-left-sel.png) no-repeat;" onmouseover="this.style.cursor=\'pointer\';" ondblclick="Rename('+tab+');"><a id="txtA'+tab+'" style="color:#A1BD06;"></a></div><input class="rename" id="NameField'+tab+'" type="text" onblur="SetName('+tab+');" onkeydown="StopEnter();" maxlength="10"/><div id="img'+tab+'" class="btn" style="background:url(images/tab-right-sel.png) no-repeat;" onmouseover="showTabMenu('+tab+');" onmouseout="hideTabMenu('+tab+');">&nbsp;<div class="dropdown-box" id="tabOption'+tab+'"><div class="dropdown-content"><ul><li><a href="javascript:void(0);" onclick="addTabMenu('+tab+');">Add</a></li><li><a href="javascript:void(0);" onclick="deleteTabMenu('+tab+');">Delete</a></li><li><a href="javascript:void(0);" onclick="renameTabMenu('+tab+');">Rename</a></li></ul></div><div class="btm-bg"><span>&nbsp;</span></div></div></div></li>';
    }
    else
    {
        document.getElementById("tabs").innerHTML=document.getElementById("tabs").innerHTML + '<li id="tab'+tab+'" class="dropdown-button"><div id="txt'+tab+'" class="text" style="visibility:visible" onmouseover="this.style.cursor=\'pointer\';" ondblclick="Rename('+tab+');" onclick="setCurrentTab('+tab+');"><a id="txtA'+tab+'"></a></div><input class="rename" id="NameField'+tab+'" type="text" onblur="SetName('+tab+');" onkeydown="StopEnter();" maxlength="10"/><div id="img'+tab+'" class="btn" onmouseover="showTabMenu('+tab+');" onmouseout="hideTabMenu('+tab+');">&nbsp;<div class="dropdown-box" id="tabOption'+tab+'"><div class="dropdown-content"><ul><li><a href="javascript:void(0);" onclick="addTabMenu('+tab+');">Add</a></li><li><a href="javascript:void(0);" onclick="deleteTabMenu('+tab+');">Delete</a></li><li><a href="javascript:void(0);" onclick="renameTabMenu('+tab+');">Rename</a></li></ul></div><div class="btm-bg"><span>&nbsp;</span></div></div></div></li>';
    }
}

showTabMenu = function(tab) {
    document.getElementById("tabOption"+tab).style.display="block";
    document.getElementById("Columns").style.zIndex=10;
}

hideTabMenu = function(tab) {
    document.getElementById("tabOption"+tab).style.display="none";
}

setCurrentTab = function(tab) {
    curTab=tab;
    initTabs();
    loadPorts();
    drawPorts();
    if (document.getElementById('header').style.display=="block") {document.getElementById('searchbar').focus();}
}

search = function() {
if (searchNum==1 && catNum==1)
    {
        window.location.href = "http://www.google.com/search?q="+document.getElementById("searchbar").value;
    }
if (searchNum==1 && catNum==2)
    {
        window.location.href = "http://images.google.com/images?q="+document.getElementById("searchbar").value;
    }
if (searchNum==1 && catNum==3)
    {
        window.location.href = "http://maps.google.com/maps?q="+document.getElementById("searchbar").value;
    }
if (searchNum==1 && catNum==4)
    {
        window.location.href = "http://video.google.com/videosearch?q="+document.getElementById("searchbar").value;
    }
if (searchNum==2 && catNum==1)
    {
        window.location.href = "http://search.yahoo.com/search?p="+document.getElementById("searchbar").value;
    }
if (searchNum==2 && catNum==2)
    {
        window.location.href = "http://images.search.yahoo.com/search/images?p="+document.getElementById("searchbar").value;
    }
if (searchNum==2 && catNum==3)
    {
        window.location.href = "http://news.search.yahoo.com/search/news?p="+document.getElementById("searchbar").value;
    }
if (searchNum==2 && catNum==4)
    {
        window.location.href = "http://video.search.yahoo.com/search/video?p="+document.getElementById("searchbar").value;
    }
if (searchNum==3 && catNum==1)
    {
        window.location.href = "http://www.altavista.com/web/results?q="+document.getElementById("searchbar").value;
    }
if (searchNum==3 && catNum==2)
    {
        window.location.href = "http://www.altavista.com/image/results?q="+document.getElementById("searchbar").value;
    }
if (searchNum==3 && catNum==3)
    {
        window.location.href = "http://www.altavista.com/news/results?q="+document.getElementById("searchbar").value;
    }
if (searchNum==3 && catNum==4)
    {
        window.location.href = "#";
    }
if (searchNum==4 && catNum==1)
    {
        window.location.href = "http://www.bing.com/search?q="+document.getElementById("searchbar").value;
    }
if (searchNum==4 && catNum==2)
    {
        window.location.href = "http://www.bing.com/images/search?q="+document.getElementById("searchbar").value;
    }
if (searchNum==4 && catNum==3)
    {
        window.location.href = "http://www.multimap.com/maps/?q="+document.getElementById("searchbar").value;
    }
if (searchNum==4 && catNum==4)
    {
        window.location.href = "http://www.bing.com/videos/search?q="+document.getElementById("searchbar").value;
    }
if (searchNum==5 && catNum==1)
    {
        window.location.href = "http://search.aol.com/aol/search?query="+document.getElementById("searchbar").value;
    }
if (searchNum==5 && catNum==2)
    {
        window.location.href = "http://search.aol.com/aol/image?query="+document.getElementById("searchbar").value;
    }
if (searchNum==5 && catNum==3)
    {
        window.location.href = "http://search.aol.com/aol/news?query="+document.getElementById("searchbar").value;
    }
if (searchNum==5 && catNum==4)
    {
        window.location.href = "http://video.aol.com/video-search/query/"+document.getElementById("searchbar").value;
    }
if (searchNum==6 && catNum==1)
    {
        window.location.href = "http://www.ask.com/web?q="+document.getElementById("searchbar").value;
    }
if (searchNum==6 && catNum==2)
    {
        window.location.href = "http://images.ask.com/pictures?q="+document.getElementById("searchbar").value;
    }
if (searchNum==6 && catNum==3)
    {
        window.location.href = "http://news.ask.com/news?q="+document.getElementById("searchbar").value;
    }
if (searchNum==6 && catNum==4)
    {
        window.location.href = "http://www.ask.com/video?q="+document.getElementById("searchbar").value;
    }
}

addBlank = function(pos) {
    var col = ((pos-1) % 4)+1;
	var el = document.getElementsByTagName("div");
			for (var j=0; j<el.length; j++)
			{
				 if (el[j].id == ("column"+col))
				{
                    el[j].innerHTML=el[j].innerHTML+'<div class="content2">&nbsp;</div>';
				}	
			}
}

dean = function() {
	var el = document.getElementsByTagName("div");
			for (var j=0; j<el.length; j++)
			{
				 if (el[j].className.indexOf("search-dropdown-box") != -1)
				{
                    el[j].style.display="none";
				}	
			}
}

initPage = function() {
	loadOptions();
	var query = location.search.substring(1); 
    var pairs = query.split("&"); 
    for(var i = 0; i < pairs.length; i++) 
    { 
        var pos = pairs[i].indexOf('='); 
        if (pos == -1) continue; 
        if (pairs[i].substring(0,pos)=="tab") 
            {curTab = pairs[i].substring(pos+1);} 
    } 
	initTabs();
	loadOwnPorts();
	initPorts();
	introPage();
    if (document.all)
	{
	    makeHomepage.style.display = "block";
	}
}

initTabs = function() {
maxTabs = Math.floor((document.getElementById("footer").offsetWidth-300)/110);
noTabs = getNoTabs();
document.getElementById("tabs").innerHTML="";
for(var i=1;i <= noTabs;i++) {
addTab(i);
document.getElementById("tab"+i).firstChild.firstChild.innerHTML = getTab(i);
}
if (noTabs>=maxTabs) {document.getElementById("addtab").style.visibility="hidden";}
if (noTabs>=7)
    {document.getElementById("xxx").style.minWidth=300+110*noTabs;}
else
    {document.getElementById("xxx").style.minWidth=1000;}
}

getTab = function(tab) {
    var cook;
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf("tabs=") == 0) 
		    {
		        cook = c.substring(5,c.length);
		        var charpos = 1;
		        for(var j=1; j <= tab; j++) {
		            chars = 2 + charpos + getCode(cook.charAt(charpos));
		            if (j==tab) {tabCode[tab]=getCode(cook.charAt(charpos+1)); return cook.substring(charpos+2, chars);}
		            charpos = chars;  
		        }
		    }
	}
	tabCode[tab]=tab;
	if (tab==1) {return "Popular";}
	if (tab==2) {return "Your Ports";}
}

getNoTabs = function() {
    var cook;
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf("tabs=") == 0) 
		{
		    cook = c.substring(5,c.length);
		    return getCode(cook.charAt(0));
		}
	}
	return 2;
}

Rename = function(tab) {
	if (document.getElementById("txt"+tab).style.visibility=='visible') {
    	document.getElementById("NameField"+tab).value = document.getElementById("txt"+tab).firstChild.innerHTML;
	    document.getElementById("NameField"+tab).style.visibility = 'visible';
	    document.getElementById("txtA"+tab).style.visibility = 'hidden';
		document.getElementById("xxx").onselectstart="";
		setTimeout(function(){document.getElementById("NameField"+tab).focus();
		document.getElementById("NameField"+tab).select();},10)
		
		document.getElementById("NameField"+tab).style.textAlign='center';
	}
}

SetName = function(tab) {
	document.getElementById("txt"+tab).firstChild.innerHTML = document.getElementById("NameField"+tab).value;
	document.getElementById("NameField"+tab).style.visibility = 'hidden';
	document.getElementById("txtA"+tab).style.visibility = 'visible';
		document.getElementById("xxx").onselectstart= function() { return false ;};
    saveTabs();
}

saveTabs = function() {
    var cook = "tabs="+getChar(noTabs);
    var Exp = new Date("January 1, 3000");

    for(var i=1;i <= noTabs;i++)
    {
        cook = cook + tabLength(document.getElementById("tab"+i).firstChild.firstChild.innerHTML) + getChar(tabCode[i]) + document.getElementById("tab"+i).firstChild.firstChild.innerHTML;
    }
    document.cookie = cook+"; path=/; expires="+Exp.toGMTString();
    saveOwnPorts();
}

StopEnter =	function() {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if(keyCode==13) {event.keyCode=9;}
}

function drags(e){
    if (!document.all)
    {
        if (e.target.id.substring(0,3)=="txt" || e.target.className=="btn")
        {
            dragtab=true;
        	document.body.style.MozUserSelect="none";
            if (e.target.id.substring(0,4)=="txtA")
            {
                z=e.target.parentNode;
            }
            else
            {
                z=e.target;
            }
            for(var i=1;i <= noTabs;i++)
            {
                T[i] = document.getElementById("tab"+i).firstChild.firstChild.innerHTML;
                TC[i] = tabCode[i];
                document.getElementById("tab"+i).style.left = document.getElementById("tab"+i).offsetLeft+"px";
            }
            document.getElementById("addtab").style.left = (document.getElementById("addtab").offsetLeft - 5)+"px";
            temp1=parseInt(z.parentNode.style.left);
            x=e.clientX;
            y=e.clientY;
            z.parentNode.style.zIndex=100;
            z.parentNode.style.mozOpacity=0.5;
	        z.parentNode.style.opacity=0.5;
            origTab = tabCode[curTab];
            origTabPos = parseInt(z.parentNode.style.left);
            origTabNo = parseInt((origTabPos + 76)/110);
            for(var i=1;i <= noTabs;i++)
            {
                document.getElementById("tab"+i).style.position = "absolute";
            }
            document.getElementById("addtab").style.position = "absolute";
        }
        if (e.target.className.substring(0,4)=="port" || e.target.className=="content1" || e.target.className=="body" || e.target.className=="bigporttxt")
        {
            dragport=true
        	document.body.style.MozUserSelect="none"
            if (document.getElementById("portMenu").parentNode.id != "container")
                {document.getElementById("container").appendChild(document.getElementById("portMenu"));}
            if (e.target.className=="content1")
            {
                z=e.target.parentNode.parentNode.parentNode.parentNode;
            }
            else if (e.target.className=="portcontent")
            {
                z=e.target.parentNode.parentNode.parentNode.parentNode.parentNode;
            }
            else if (e.target.className=="body")
            {
                z=e.target.parentNode.parentNode.parentNode;
            }
            else
            {
                z=e.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
            }
            for(var i=1;i <= noPorts;i++)
            {
                document.getElementById("port"+i).style.left = document.getElementById("port"+i).offsetLeft+"px";
                document.getElementById("port"+i).style.top = (document.getElementById("port"+i).offsetTop + document.getElementById("port"+i).parentNode.offsetTop)+"px";
                document.getElementById("port"+i).style.height = document.getElementById("port"+i).offsetHeight+"px";
                document.getElementById("port"+i).style.width = document.getElementById("port"+i).offsetWidth+"px";
            }
            document.getElementById("footer").style.top = (document.getElementById("footer").offsetTop + document.getElementById("footer").parentNode.offsetTop + 25)+"px";
            document.getElementById("footer").style.width = (document.getElementById("footer").offsetWidth-36)+"px";
            //document.getElementById("footerlinks").style.left = (document.getElementById("footerlinks").offsetLeft+150)+"px";
            //document.getElementById("footerlinks").style.width = document.getElementById("footer").offsetWidth+"px";
            //footerlinks.style.top = footerlinks.offsetTop;
            temp1=parseInt(z.style.left);
            temp2=parseInt(z.style.top);
            z.style.zIndex=100;
            z.style.mozOpacity=0.5;
	        z.style.opacity=0.5;
            document.getElementById("Columns").style.zIndex=100;
            x=e.clientX;
            y=e.clientY;
            origPortX = parseInt(z.style.left);
            origPortY = parseInt(z.style.top);
            for(var i=1;i <= noPorts;i++)
            {
                document.getElementById("port"+i).style.position = "absolute";
            }
            document.getElementById("footer").style.position = "absolute";
            
            origPort = Math.round(parseInt(z.style.top) / z.offsetHeight)*4+Math.round(parseInt(z.style.left) / z.parentNode.offsetWidth)+1;
        }
    }
    else
    {
        if (event.srcElement.id.substring(0,3)=="txt" || event.srcElement.className=="btn")
        {
            dragtab=true;
            if (event.srcElement.id.substring(0,4)=="txtA")
            {
                z=event.srcElement.parentNode;
            }
            else
            {
                z=event.srcElement;
            }
            for(var i=1;i <= noTabs;i++)
            {
                T[i] = document.getElementById("tab"+i).firstChild.firstChild.innerHTML;
                TC[i] = tabCode[i];
                document.getElementById("tab"+i).style.left = document.getElementById("tab"+i).offsetLeft;
            }
            addtab.style.left = addtab.offsetLeft-5;
            temp1=z.parentNode.style.pixelLeft;
            x=event.clientX;
            y=event.clientY;
            z.parentNode.style.zIndex=100;
	        z.parentNode.style.filter="alpha(opacity: 50)";
            origTab = tabCode[curTab];
            origTabPos = parseInt(z.parentNode.style.left);
            origTabNo = parseInt((origTabPos + 76)/110);
            for(var i=1;i <= noTabs;i++)
            {
                document.getElementById("tab"+i).style.position = "absolute";
            }
            addtab.style.position = "absolute";
        }
        if (event.srcElement.className.substring(0,4)=="port" || event.srcElement.className=="content1" || event.srcElement.className=="body" || event.srcElement.className=="bigporttxt")
        {
            dragport=true
            if (document.getElementById("portMenu").parentNode.Id != "container")
                {document.getElementById("container").appendChild(document.getElementById("portMenu"));}
            if (event.srcElement.className=="content1")
            {
                z=event.srcElement.parentNode.parentNode.parentNode.parentNode;
            }
            else if (event.srcElement.className=="portcontent")
            {
                z=event.srcElement.parentNode.parentNode.parentNode.parentNode.parentNode;
            }
            else if (event.srcElement.className=="body")
            {
                z=event.srcElement.parentNode.parentNode.parentNode;
            }
            else
            {
                z=event.srcElement.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
            }
            for(var i=1;i <= noPorts;i++)
            {
                document.getElementById("port"+i).style.left = document.getElementById("port"+i).parentNode.offsetLeft;
//                document.getElementById("port"+i).style.left = document.getElementById("port"+i).offsetLeft + document.getElementById("port"+i).parentNode.offsetLeft;
                document.getElementById("port"+i).style.top = document.getElementById("port"+i).offsetTop + document.getElementById("port"+i).parentNode.offsetTop;
                document.getElementById("port"+i).style.height = document.getElementById("port"+i).offsetHeight;
                document.getElementById("port"+i).style.width = document.getElementById("port"+i).offsetWidth;
            }
            footerright.style.left = footerright.offsetLeft;
            footerright.style.width = footerright.offsetWidth;
            footerlinks.style.left = footerlinks.offsetLeft+150;
            footerlinks.style.width = footerlinks.offsetWidth;
            if (navigator.appName == 'Microsoft Internet Explorer') 
            {
                var ua = navigator.userAgent;
                var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
                if (re.exec(ua) != null) rv = parseFloat(RegExp.$1);
                if (rv!=8.0) {
                                footerlinks.style.top = footerlinks.offsetTop;
                             }
            }
            footer.style.top = footer.offsetTop + footer.parentNode.offsetTop + 25;

            temp1=z.style.pixelLeft;
            temp2=z.style.pixelTop;
            z.style.zIndex=100;
	        z.style.filter="alpha(opacity: 50)";
            document.getElementById("Columns").style.zIndex=100;
            origPortX = parseInt(z.style.left);
            origPortY = parseInt(z.style.top);
            x=event.clientX;
            y=event.clientY;
            for(var i=1;i <= noPorts;i++)
            {
                document.getElementById("port"+i).style.position = "absolute";
            }
            footer.style.position = "absolute";
            if (navigator.appName == 'Microsoft Internet Explorer') 
            {
                var ua = navigator.userAgent;
                var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
                if (re.exec(ua) != null) rv = parseFloat(RegExp.$1);
                if (rv==8.0) {
                                footerright.style.position = "absolute";
                             }
            }
            origPort = Math.round(z.style.pixelTop / z.offsetHeight)*4+Math.round(z.style.pixelLeft / z.parentNode.offsetWidth)+1;
        }
    }
}

function rest(e){
    if (!document.all)
    {
        document.getElementById("binicon").style.backgroundImage="url(./images/bin_tab.png)";
        z.parentNode.style.mozOpacity=1;
        z.parentNode.style.opacity=1;
        if (dragtab==true) {
            dragtab=false;
            var lm, dm
            if (e.clientY < (binPos+25) && e.clientY > binPos && e.clientX < 51 && e.clientX > 22)
            {
                var origPos;
                for(var i=1;i <= noTabs;i++)
                {
                    document.getElementById("tab"+i).style.position="";
                    document.getElementById("tab"+i).style.left = "";
                    if (tabCode[i] == origTabNo) {lm=i;}
                }
                document.getElementById("addtab").style.position="";
                document.getElementById("addtab").style.left="";
                document.getElementById("footer").style.position="";
                document.getElementById("footer").style.left="";
                deleteTabMenu(origTabNo+1);
            }
            else
            {
	        for(var i=1;i <= noTabs;i++) {
                    lm = HowManyBiggerFox(parseInt(document.getElementById("tab"+i).style.left));
                    SetTabPos(i, lm);
                }
                dm=parseInt(z.parentNode.style.left);
                for(var i=1;i <= noTabs;i++) {
                    document.getElementById("tab"+i).style.position="";
                    document.getElementById("tab"+i).style.left = "";
                    if (tabCode[i] == origTab) {lm=i;}
                }
                document.getElementById("addtab").style.position="";
                document.getElementById("addtab").style.left="";
                saveTabs();
                if (origTabPos != dm) {setCurrentTab(lm);}
                else
                {
                    setCurrentTab(parseInt((dm-12)/108)+1);
                }
//                if (origTabPos == dm) {setCurrentTab(parseInt((dm-12)/108)+1);}
              	document.body.style.MozUserSelect="undefined";
            }
        }
        if (dragport==true) {
            dragport=false;
            document.getElementById("Columns").style.zIndex=30;
            if (e.clientY < (binPos+25) && e.clientY > binPos && e.clientX < 51 && e.clientX > 22)
            {
                var origPos;
                for(var i=1;i <= noPorts;i++) {
                    document.getElementById("port"+i).style.position="";
                    document.getElementById("port"+i).style.left="";
                    document.getElementById("port"+i).style.top="";
                    document.getElementById("port"+i).style.height = "";
                    document.getElementById("port"+i).style.width = "";
                    if (portPos[i] == origPort) {origPos = i;}
                }
                document.getElementById("footer").style.position="";
                document.getElementById("footer").style.left="";
                closePort(origPos);
            }
            else if (e.clientY < (binPos+25) && e.clientY > binPos && e.clientX > 52 && e.clientX-5 < (110*noTabs))
            {
                var newTab, origContent
                for(var i=1;i <= noPorts;i++) {
                    document.getElementById("port"+i).style.position="";
                    document.getElementById("port"+i).style.left="";
                    document.getElementById("port"+i).style.top="";
                    document.getElementById("port"+i).style.height = "";
                    document.getElementById("port"+i).style.width = "";
                    if (portPos[i] == origPort) {origContent = portCode[i];}
                }
                document.getElementById("footer").style.position="";
                document.getElementById("footer").style.left="";
                document.getElementById("footer").style.width="";
                newTab = Math.round((e.clientX+27) / 110);
                if (newTab != curTab)
                {
                    closePort(origPort ,true);
                    var prevTab = curTab;
                    curTab = newTab;
                    if (curTab<1) {curTab=1;}
                    if (curTab>noTabs) {curTab=noTabs;}
                    loadPorts();
                    addNewPort(origContent);
                    curTab = prevTab;
                    setCurrentTab(curTab);
                }
            }
            else
            {
               if (parseInt(z.style.left)==origPortX && parseInt(z.style.top)==origPortY)
                {
                    if (z.firstChild.firstChild.childNodes[1].firstChild.innerHTML!="")
                    {
                        dragtab=false;
                        dragport=false;
                        window.location.href=z.firstChild.firstChild.childNodes[1].firstChild.childNodes[2].href;
                    }
                }
                newPort = Math.round(parseInt(z.style.top) / z.offsetHeight)*4+Math.round(parseInt(z.style.left) / z.parentNode.offsetWidth)+1;
                if (newPort < 1)
                {
                    newPort = origPort;
                } 
                for(var i=1;i <= noPorts;i++) {
                    document.getElementById("port"+i).style.position="";
                    document.getElementById("port"+i).style.left="";
                    document.getElementById("port"+i).style.top="";
                    document.getElementById("port"+i).style.height = "";
                    document.getElementById("port"+i).style.width = "";
                }
                document.getElementById("footer").style.position="";
                document.getElementById("footer").style.left="";
                document.getElementById("footer").style.width="";
                swapPorts(origPort, newPort);
	            var el = document.getElementsByTagName("div");
			            for (var j=0; j<el.length; j++)
			            {
				             if (el[j].id.substring(0,6) == "column")
				            {
                                el[j].innerHTML="";
				            }	
			            }
                var portNo = 1;
                for(var i=1;i <= portPos[noPorts];i++) {
                    if (portPos[portNo]==i)
                    {
                        addPort(portNo,i);
                        document.getElementById("portcontent"+portNo).innerHTML = getPort(portNo);
                        portNo = portNo + 1;
                    }
                    else
                    {
                        addBlank(i);
                    }
                }
                savePorts();
            }
        }
      	document.body.style.MozUserSelect="undefined";
    }
    else
    {
        document.getElementById("binicon").style.backgroundImage="url(./images/bin_tab.png)";
        if (dragtab==true) {
            z.parentNode.style.filter="alpha(opacity: 100)";
            dragtab=false;
            var lm, dm
            if (event.clientY < (binPos+25) && event.clientY > binPos && event.clientX < 51 && event.clientX > 22)
            {
                var origPos;
                for(var i=1;i <= noTabs;i++)
                {
                    document.getElementById("tab"+i).style.position="";
                    document.getElementById("tab"+i).style.left = "";
                    if (tabCode[i] == origTabNo) {lm=i;}
                }
                addtab.style.position="";
                addtab.style.left="";
                footer.style.position="";
                footer.style.left="";
                footerright.style.position="";
                footerright.style.left="";
                footerlinks.style.top="";
                footerlinks.style.left="50%";
                deleteTabMenu(origTabNo+1);
            }
            else
            {
                for(var i=1;i <= noTabs;i++)
                {
                    lm = HowManyBigger(document.getElementById("tab"+i).style.pixelLeft);
                    SetTabPos(i, lm);
                }
                dm=z.parentNode.style.pixelLeft;
                for(var i=1;i <= noTabs;i++)
                {
                    document.getElementById("tab"+i).style.position="";
                    document.getElementById("tab"+i).style.left = "";
                    if (tabCode[i] == origTab) {lm=i;}
                }
                addtab.style.position="";
                addtab.style.left="";
                saveTabs();
                if (origTabPos != dm) {setCurrentTab(lm)};
            }
        }
        if (dragport==true) {
            z.parentNode.style.filter="alpha(opacity: 100)";
            document.getElementById("Columns").style.zIndex=30;
            dragport=false;
            if (event.clientY < (binPos+25) && event.clientY > binPos && event.clientX < 51 && event.clientX > 22)
            {
                var origPos;
                for(var i=1;i <= noPorts;i++) {
                    document.getElementById("port"+i).style.position="";
                    document.getElementById("port"+i).style.left="";
                    document.getElementById("port"+i).style.top="";
                    document.getElementById("port"+i).style.height = "";
                    document.getElementById("port"+i).style.width = "";
                    if (portPos[i] == origPort) {origPos = i;}
                }
                footer.style.position="";
                footer.style.left="";
                footerlinks.style.top="";
                footerlinks.style.left="50%";
                footerright.style.position="";
                footerright.style.left="";
                closePort(origPos);
            }
        else if (event.clientY < (binPos+25) && event.clientY > binPos && event.clientX > 52 && event.clientX-5 < (110*noTabs))
            {
                var newTab, origContent
                for(var i=1;i <= noPorts;i++) {
                    document.getElementById("port"+i).style.position="";
                    document.getElementById("port"+i).style.left="";
                    document.getElementById("port"+i).style.top="";
                    document.getElementById("port"+i).style.height = "";
                    document.getElementById("port"+i).style.width = "";
                    if (portPos[i] == origPort) {origContent = portCode[i];}
                }
                footer.style.position="";
                footer.style.left="";
                footerlinks.style.top="";
                footerlinks.style.left="50%";
                footerright.style.position="";
                footerright.style.left="";
                newTab = Math.round((event.clientX+27) / 110);
                if (newTab != curTab)
                {
                    closePort(origPort ,true);
                    var prevTab = curTab;
                    curTab = newTab;
                    if (curTab<1) {curTab=1;}
                    if (curTab>noTabs) {curTab=noTabs;}
                    loadPorts();
                    addNewPort(origContent);
                    curTab = prevTab;
                    setCurrentTab(curTab);
                }
            }
            else
            {
                if (parseInt(z.style.left)==origPortX && parseInt(z.style.top)==origPortY)
                {
                    if (z.firstChild.firstChild.children[1].firstChild.innerHTML!="")
                    {
                        dragtab=false;
                        dragport=false;
                        window.location.href=z.firstChild.firstChild.children[1].firstChild.children[2].href;
                    }
                }
                newPort = Math.round(z.style.pixelTop / z.offsetHeight)*4+Math.round(z.style.pixelLeft / z.parentNode.offsetWidth)+1;
                if (newPort < 1)
                {
                    newPort = origPort;
                } 
                for(var i=1;i <= noPorts;i++) {
                    document.getElementById("port"+i).style.position="";
                    document.getElementById("port"+i).style.left="";
                    document.getElementById("port"+i).style.top="";
                    document.getElementById("port"+i).style.height = "";
                    document.getElementById("port"+i).style.width = "";
                }
                footer.style.position="";
                footer.style.left="";
                footerlinks.style.top="";
                footerlinks.style.left="50%";
                footerright.style.position="";
                footerright.style.left="";
                swapPorts(origPort, newPort);
                var el = document.getElementsByTagName("div");
		                for (var j=0; j<el.length; j++)
		                {
			                 if (el[j].id.substring(0,6) == "column")
			                {
                                el[j].innerHTML="";
			                }	
		                }
                var portNo = 1;
                for(var i=1;i <= portPos[noPorts];i++) {
                    if (portPos[portNo]==i)
                    {
                        addPort(portNo,i);
                        document.getElementById("portcontent"+portNo).innerHTML = getPort(portNo);
                        portNo = portNo + 1;
                    }
                    else
                    {
                        addBlank(i);
                    }
                }
                savePorts();
            }
        }
    }
    dragtab=false;
    dragport=false;
}

addNewTab = function() {
    maxTabs = Math.floor((document.getElementById("footer").offsetWidth-300)/110);
    noTabs = noTabs + 1;
    addTab(noTabs);
    for (var i=10; i<(noTabs+10); i++)
    { 
        for (var j=1; j<=noTabs; j++) {if (i==tabCode[j]) {j=100;}}
        if (j<100) {nextSpace=i; i=100;}
    } 
    tabCode[noTabs] = nextSpace;
    document.getElementById("tab"+noTabs).firstChild.firstChild.innerHTML = "New Tab";
    saveTabs();
    setCurrentTab(noTabs);
    savePorts();
    if (noTabs==maxTabs) {document.getElementById("addtab").style.visibility="hidden";} 
    if (noTabs>=7)
        {document.getElementById("xxx").style.minWidth=300+110*noTabs;}
    else
        {document.getElementById("xxx").style.minWidth=1000;}
    Rename(noTabs);
}

addNewPort = function(content) {
    var free;
    if (content == 'zz')
    {
        noPorts = noPorts + 1;
        free = getFreePort();
        insertPort(free,content);
    }
    else
    {
        free = getBlankPort()
        if (free>noPorts) {noPorts++;}
        portPos[free] = free;
        portCode[free] = content;   
    }
    drawPorts();
    savePorts();
    if (noPorts==40) {document.getElementById("addport").style.visibility="hidden";} 
}

tabLength = function(str) {
var ans = getChar(str.length);
return ans;
}

function move(e){
    if (!document.all)
    {
        if (e.button==0&&dragtab){
            var mx = temp1+e.clientX-x;
            if (z.id.substring(0,3)=="txt" || z.id.substring(0,3)=="img") {
               z.parentNode.style.left=mx+"px";
               if (e.clientY < (binPos+25) && e.clientY > binPos && e.clientX < 51 && e.clientX > 22)
               {
                   document.getElementById("binicon").style.backgroundImage="url(./images/bin.png)";
               }
               else
               {
                   document.getElementById("binicon").style.backgroundImage="url(./images/bin_tab.png)";
               }
            }
            return false
        }
        if (e.button==0&&dragport){
            var mx = temp1+e.clientX-x;
            var my = temp2+e.clientY-y;
            if (z.id.substring(0,4)=="port") {
                z.style.left=mx+"px";
                z.style.top=my+"px";
                if (e.clientY < (binPos+25) && e.clientY > binPos && e.clientX < 51 && e.clientX > 22)
                {
                    document.getElementById("binicon").style.backgroundImage="url(./images/bin.png)";
                }
                else
                {
                    document.getElementById("binicon").style.backgroundImage="url(./images/bin_tab.png)";
                }
            }
            return false
        }
    }
    else
    {
        if (event.button==1&&dragtab){
            var mx = temp1+event.clientX-x;
            if (z.id.substring(0,3)=="txt" || z.id.substring(0,3)=="img") {
                z.parentNode.style.pixelLeft=mx;
                if (event.clientY < (binPos+25) && event.clientY > binPos && event.clientX < 51 && event.clientX > 22)
                {
                    document.getElementById("binicon").style.backgroundImage="url(./images/bin.png)";
                }
                else
                {
                    document.getElementById("binicon").style.backgroundImage="url(./images/bin_tab.png)";
                }
            }
            return false
        }
        if (event.button==1&&dragport){
            var mx = temp1+event.clientX-x;
            var my = temp2+event.clientY-y;
            if (z.id.substring(0,4)=="port") {
                z.style.pixelLeft=mx;
                z.style.pixelTop=my;
                if (event.clientY < (binPos+25) && event.clientY > binPos && event.clientX < 51 && event.clientX > 22)
                {
                    document.getElementById("binicon").style.backgroundImage="url(./images/bin.png)";
                }
                else
                {
                    document.getElementById("binicon").style.backgroundImage="url(./images/bin_tab.png)";
                }
            }
            return false
        }
    }
}

function HowManyBigger(xa) {
var rs=0;
for(var i=1;i <= noTabs;i++) {
    if (document.getElementById("tab"+i).style.pixelLeft>xa) {rs=rs+1;}
}
return (noTabs-rs);
}

function HowManyBiggerFox(xa) {
var rs=0;
for(var i=1;i <= noTabs;i++) {
    if (parseInt(document.getElementById("tab"+i).style.left)>xa) {rs=rs+1;}
}
return (noTabs-rs);
}

function SetTabPos(tb, tp) {
if (tp<1) {tp=1;}
if (tp>noTabs) {tp=noTabs;}
document.getElementById("tab"+tp).firstChild.firstChild.innerHTML=T[tb];
tabCode[tp] = TC[tb];
}

addTabMenu = function(tab) {
    maxTabs = Math.floor((document.getElementById("footer").offsetWidth-300)/110);
    if (noTabs<maxTabs) 
    { 
        document.getElementById("tabOption"+tab).style.display="none";
        addNewTab();
        for(var i=noTabs;i > (tab+1);i--) {
            document.getElementById("tab"+i).firstChild.firstChild.innerHTML=document.getElementById("tab"+(i-1)).firstChild.firstChild.innerHTML;
        }
        document.getElementById("tab"+(tab+1)).firstChild.firstChild.innerHTML="New Tab";
        saveTabs();
    }
}

deleteTabMenu = function(tab) {

    var Exp = new Date("January 1, 3000");
    if (noTabs>1)
    {
        maxTabs = Math.floor((document.getElementById("footer").offsetWidth-300)/110);
        document.getElementById("tabOption"+tab).style.display="none";
        document.cookie = "ports"+getChar(tabCode[tab])+"=A; path=/; expires="+Exp.toGMTString();
        for(var i=tab;i<noTabs;i++) {
            document.getElementById("tab"+i).firstChild.firstChild.innerHTML=document.getElementById("tab"+(i+1)).firstChild.firstChild.innerHTML;
            tabCode[i] = tabCode[i+1];
        }
        document.getElementById("tabs").removeChild(document.getElementById("tab"+noTabs));
        tabCode[noTabs]=0;
        noTabs--;
        if (noTabs<maxTabs)
            {document.getElementById("addtab").style.visibility="visible";}
        else
            {document.getElementById("addtab").style.visibility="hidden";}
        if (noTabs>=7)
            {document.getElementById("xxx").style.minWidth=300+110*noTabs;}
        else
            {document.getElementById("xxx").style.minWidth=1000;}
        saveTabs();
        if (tab=curTab) {setCurrentTab(1);}
    }
}

renameTabMenu = function(tab) {
document.getElementById("tabOption"+tab).style.display="none";
Rename(tab);
}

initPorts = function() {
var portNo = 1;
loadPorts();
for(var i=1;i <= portPos[noPorts];i++) {
if (portPos[portNo]==i)
{
    addPort(portNo,i);
    document.getElementById("portcontent"+portNo).innerHTML = getPort(portNo);
    portNo = portNo + 1;
}
else
{
addBlank(i);
}
}
if (noPorts==40) {document.getElementById("addport").style.visibility="hidden";} 
}

addPort = function(port, pos) {
    var col = ((pos-1) % 4)+1;
	var el = document.getElementsByTagName("div");
			for (var j=0; j<el.length; j++)
			{
				 if (el[j].id == ("column"+col))
				{
                    el[j].innerHTML=el[j].innerHTML+'<div class="placeholder" id="port'+port+'"><div class="box"><div class="inner"><div class="title"><div class="bg"><div class="portcontent"><ul class="controls"><li><a href="javascript:void(0);" onclick="editPort('+port+');" class="edit">edit</a></li><li class="close"><a href="javascript:void(0);" onclick="closePort('+port+');">close</a></li><li id="portBut'+port+'" class="dropdown-button"><a href="javascript:void(0);" onmouseover="showMenu('+port+');" class="open-popup">open popup</a></li></ul></div></div></div><div class="body"><div class="content1" id="portcontent'+port+'">&nbsp;</div></div><div class="btm"><a class="expand-button"><span></span></a></div></div></div></div>';
				}	
			}
}

showMenu = function(port) {
    if (document.getElementById("portMenu").parentNode.id != ("portBut"+port))
    {
//        var footPos = findPosY(document.getElementById("footer"));
        var footPos = 650;
        if (parseInt(navigator.appVersion)>3) {
            if (navigator.appName=="Netscape") {
                footPos = window.innerHeight;
            }
            if (navigator.appName.indexOf("Microsoft")!=-1) {
                footPos = document.body.offsetHeight;
            }
        }
        
        footPos = footPos + document.documentElement.scrollTop;

        document.getElementById("portBut"+port).appendChild(document.getElementById("portMenu"));
        document.getElementById('Columns').style.zIndex=200;
        
        if ((portPos[port] % 4) == 0)
        {
            document.getElementById("portMenu").style.marginLeft = "-47px";
            document.getElementById("portSub1").style.marginLeft = "-362px";
            document.getElementById("portSub2").style.marginLeft = "-264px";
            document.getElementById("portSub3").style.marginLeft = "-264px";
            document.getElementById("portSub4").style.marginLeft = "-264px";
            document.getElementById("portSub5").style.marginLeft = "-264px";
            document.getElementById("portSub6").style.marginLeft = "-264px";
            document.getElementById("portSub7").style.marginLeft = "-264px";
            document.getElementById("portSub8").style.marginLeft = "-264px";
            document.getElementById("portSub9").style.marginLeft = "-264px";
            document.getElementById("portSub10").style.marginLeft = "-264px";
            document.getElementById("portSub11").style.marginLeft = "-264px";
            document.getElementById("portSub12").style.marginLeft = "-264px";
            document.getElementById("portSub13").style.marginLeft = "-264px";
            document.getElementById("portSub14").style.marginLeft = "-264px";
            document.getElementById("portSub15").style.marginLeft = "-264px";
            document.getElementById("portSub16").style.marginLeft = "-264px";
            document.getElementById("portSub17").style.marginLeft = "-264px";
            document.getElementById("portSub18").style.marginLeft = "-264px";
            document.getElementById("portSub19").style.marginLeft = "-264px";
            document.getElementById("portSub20").style.marginLeft = "-264px";
            document.getElementById("sub1").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub1").style.backgroundPosition = "2px 6px";
            document.getElementById("sub2").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub2").style.backgroundPosition = "2px 6px";
            document.getElementById("sub3").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub3").style.backgroundPosition = "2px 6px";
            document.getElementById("sub4").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub4").style.backgroundPosition = "2px 6px";
            document.getElementById("sub5").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub5").style.backgroundPosition = "2px 6px";
            document.getElementById("sub6").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub6").style.backgroundPosition = "2px 6px";
            document.getElementById("sub7").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub7").style.backgroundPosition = "2px 6px";
            document.getElementById("sub8").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub8").style.backgroundPosition = "2px 6px";
            document.getElementById("sub9").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub9").style.backgroundPosition = "2px 6px";
            document.getElementById("sub10").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub10").style.backgroundPosition = "2px 6px";
            document.getElementById("sub11").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub11").style.backgroundPosition = "2px 6px";
            document.getElementById("sub12").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub12").style.backgroundPosition = "2px 6px";
            document.getElementById("sub13").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub13").style.backgroundPosition = "2px 6px";
            document.getElementById("sub14").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub14").style.backgroundPosition = "2px 6px";
            document.getElementById("sub15").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub15").style.backgroundPosition = "2px 6px";
            document.getElementById("sub16").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub16").style.backgroundPosition = "2px 6px";
            document.getElementById("sub17").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub17").style.backgroundPosition = "2px 6px";
            document.getElementById("sub18").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub18").style.backgroundPosition = "2px 6px";
            document.getElementById("sub19").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub19").style.backgroundPosition = "2px 6px";
            document.getElementById("sub20").style.backgroundImage = "url(images/ico-dropdown_l.gif)";
            document.getElementById("sub20").style.backgroundPosition = "2px 6px";
        }
        else
        {
            document.getElementById("portMenu").style.marginLeft = "-20px";
            document.getElementById("portSub1").style.marginLeft = "-20px";
            document.getElementById("portSub2").style.marginLeft = "-20px";
            document.getElementById("portSub3").style.marginLeft = "-20px";
            document.getElementById("portSub4").style.marginLeft = "-20px";
            document.getElementById("portSub5").style.marginLeft = "-20px";
            document.getElementById("portSub6").style.marginLeft = "-20px";
            document.getElementById("portSub7").style.marginLeft = "-20px";
            document.getElementById("portSub8").style.marginLeft = "-20px";
            document.getElementById("portSub9").style.marginLeft = "-20px";
            document.getElementById("portSub10").style.marginLeft = "-20px";
            document.getElementById("portSub11").style.marginLeft = "-20px";
            document.getElementById("portSub12").style.marginLeft = "-20px";
            document.getElementById("portSub13").style.marginLeft = "-20px";
            document.getElementById("portSub14").style.marginLeft = "-20px";
            document.getElementById("portSub15").style.marginLeft = "-20px";
            document.getElementById("portSub16").style.marginLeft = "-20px";
            document.getElementById("portSub17").style.marginLeft = "-20px";
            document.getElementById("portSub18").style.marginLeft = "-20px";
            document.getElementById("portSub19").style.marginLeft = "-20px";
            document.getElementById("portSub20").style.marginLeft = "-20px";
            document.getElementById("sub1").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub1").style.backgroundPosition = "118px 6px";
            document.getElementById("sub2").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub2").style.backgroundPosition = "118px 6px";
            document.getElementById("sub3").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub3").style.backgroundPosition = "118px 6px";
            document.getElementById("sub4").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub4").style.backgroundPosition = "118px 6px";
            document.getElementById("sub5").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub5").style.backgroundPosition = "118px 6px";
            document.getElementById("sub6").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub6").style.backgroundPosition = "118px 6px";
            document.getElementById("sub7").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub7").style.backgroundPosition = "118px 6px";
            document.getElementById("sub8").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub8").style.backgroundPosition = "118px 6px";
            document.getElementById("sub9").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub9").style.backgroundPosition = "118px 6px";
            document.getElementById("sub10").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub10").style.backgroundPosition = "118px 6px";
            document.getElementById("sub11").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub11").style.backgroundPosition = "118px 6px";
            document.getElementById("sub12").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub12").style.backgroundPosition = "118px 6px";
            document.getElementById("sub13").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub13").style.backgroundPosition = "118px 6px";
            document.getElementById("sub14").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub14").style.backgroundPosition = "118px 6px";
            document.getElementById("sub15").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub15").style.backgroundPosition = "118px 6px";
            document.getElementById("sub16").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub16").style.backgroundPosition = "118px 6px";
            document.getElementById("sub17").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub17").style.backgroundPosition = "118px 6px";
            document.getElementById("sub18").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub18").style.backgroundPosition = "118px 6px";
            document.getElementById("sub19").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub19").style.backgroundPosition = "118px 6px";
            document.getElementById("sub20").style.backgroundImage = "url(images/ico-dropdown_r.gif)";
            document.getElementById("sub20").style.backgroundPosition = "118px 6px";
        }
        if (parseInt((portPos[port]+3)/4) >= parseInt((footPos-140)/160))
        {
            document.getElementById("portMenu").style.marginTop = "-338px";
        }
        else
        {
            document.getElementById("portMenu").style.marginTop = "7px";
        }
    }
    document.getElementById('portSub1').style.display='none';
    document.getElementById('portSub2').style.display='none';
    document.getElementById('portSub3').style.display='none';
    document.getElementById('portSub4').style.display='none';
    document.getElementById('portSub5').style.display='none';
    document.getElementById('portSub6').style.display='none';
    document.getElementById('portSub7').style.display='none';
    document.getElementById('portSub8').style.display='none';
    document.getElementById('portSub9').style.display='none';
    document.getElementById('portSub10').style.display='none';
    document.getElementById('portSub11').style.display='none';
    document.getElementById('portSub12').style.display='none';
    document.getElementById('portSub13').style.display='none';
    document.getElementById('portSub14').style.display='none';
    document.getElementById('portSub15').style.display='none';
    document.getElementById('portSub16').style.display='none';
    document.getElementById('portSub17').style.display='none';
    document.getElementById('portSub18').style.display='none';
    document.getElementById('portSub19').style.display='none';
    document.getElementById('portSub20').style.display='none';

}

function getTitle(port) {
var portstr = portString(portCode[port], false);
var titleLength = getCode(portstr.charAt(0));
return portstr.substring(1, titleLength);
}

function getPort(port) {
    if (portCode[port] == 'zz')
    {
        return "<BR><div></div><a class='emptyPort1' onmousedown='return false' href='javascript:editPort("+port+");' onclick='javascript:editPort("+port+");'>"+port+"</a><BR><a class='emptyPort2' onmousedown='return false' onclick='javascript:editPort("+port+");'>click to add site</a>";
    }
    else
    {
        return boxContent(portCode[port]);
    }
}

function boxContent(item){
var portstr = portString(item, true);
var titleLength = getCode(portstr.charAt(0))+1;
return portstr.substring(titleLength, portstr.length);
}

function savePorts() {
    var Exp = new Date("January 1, 3000");
    var cook = "ports"+getChar(tabCode[curTab])+"="+getChar(noPorts);
    for(var i=1;i <= noPorts;i++) {
        cook = cook + getChar(portPos[i]) + portCode[i];
    }
    document.cookie = cook+"; path=/; expires="+Exp.toGMTString();
}

function loadPorts() {
    var cook;
    var tot = 0;
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf("ports"+getChar(tabCode[curTab])+"=") == 0) 
		    {
		        cook = c.substring(7,c.length)+"  ";
		        noPorts=getCode(cook.charAt(0));
		        if (noPorts>=0)
		        {
		            for(var j=1; j <= noPorts; j++) {
		                portPos[j] = getCode(cook.charAt(j*3-2));
		                portCode[j] = cook.substring(j*3-1,j*3+1);
		            }
		            return;
		        }
		    }
	}
    if (tabCode[curTab]==1)
    {
    	noPorts = 12;
        portCode[1] = "AA";
        portCode[2] = "AB";
        portCode[3] = "AC";
        portCode[4] = "AD";
        portCode[5] = "AE";
        portCode[6] = "AF";
        portCode[7] = "AI";
        portCode[8] = "AJ";
        portCode[9] = "AK";
        portCode[10] = "BB";
        portCode[11] = "AM";
        portCode[12] = "AN";
     }
     else
     {
    	noPorts = 12;
        portCode[1] = "zz";
        portCode[2] = "zz";
        portCode[3] = "zz";
        portCode[4] = "zz";
        portCode[5] = "zz";
        portCode[6] = "zz";
        portCode[7] = "zz";
        portCode[8] = "zz";
        portCode[9] = "zz";
        portCode[10] = "zz";
        portCode[11] = "zz";
        portCode[12] = "zz";
     }
    for(var j=1; j <= noPorts; j++) {
        portPos[j] = j;
    }
}

swapPorts = function(a,b) {
var port1 = 0;
var port2 = 0;
for(var j=1; j <= noPorts; j++) {
    if (portPos[j] == a) {port1=j;}
    if (portPos[j] == b) {port2=j;}
}
var tempCode = portCode[port1];
if (port2>0)
{
    portCode[port1] = portCode[port2];
    portCode[port2] = tempCode;
}
else
{
    if (b > a)
        {
        if (b > portPos[port1+1]) 
        {
            for(var j=port1; j <= noPorts; j++) {
                if (portPos[j+1]>b || j==noPorts) {
                    portPos[j] = b;
                    portCode[j] = tempCode;
                    j=noPorts;
                }
                else
                {
                portPos[j] = portPos[j+1];
                portCode[j] = portCode[j+1];
                }
            }
        }
        else
        {
            portPos[port1] = b;
        }
    }
    else
        {
        if (b <= portPos[port1-1]) 
        {
            for(var j=port1; j >= 1; j--) {
                if (portPos[j-1]<b || j==1) {
                    portPos[j] = b;
                    portCode[j] = tempCode;
                    j=1;
                }
                else
                {
                portPos[j] = portPos[j-1];
                portCode[j] = portCode[j-1];
                }
            }
        }
        else
        {
            portPos[port1] = b;
        }
    }
}
}

function getFreePort() {
    var nextFree = 1;
    var found = true;
    while (found==true)
    {
        found = false;
        for(var j=1; j <= noPorts; j++) {
            if (portPos[j] == nextFree)
            {
                found=true;
            }
        }
        if (found == true)
        {
            nextFree++;
        }
    }
    return nextFree;
}

function getBlankPort() {
    var nextFree = 1;
    var found = true;
    while (found==true)
    {
        found = false;
        for(var j=1; j <= noPorts; j++) {
            if (portPos[j] == nextFree && portCode[j]!='zz')
            {
                found=true;
            }
        }
        if (found == true)
        {
            nextFree++;
        }
    }
    return nextFree;
}

insertPort = function(portNo, code) {
    for(var j=noPorts; j > portNo; j--)
    {
            portPos[j] = portPos[j-1];
            portCode[j] = portCode[j-1];
    }
    portPos[portNo] = portNo;
    portCode[j] = code;   
}

clearPort = function(portNo) {
portCode[portNo] = "zz";
drawPorts();
savePorts();
}

drawPorts = function() {
    if (document.getElementById("portMenu").parentNode.Id != "container")
    {
        document.getElementById("container").appendChild(document.getElementById("portMenu"));
    }

	var el = document.getElementsByTagName("div");
	for (var j=0; j<el.length; j++)
	{
		if (el[j].id.substring(0,6) == "column")
		{
            el[j].innerHTML="";
		}	
	}
    var portNo = 1;
    for(var i=1;i <= portPos[noPorts];i++) {
        if (portPos[portNo]==i)
        {
            addPort(portNo,i);
            document.getElementById("portcontent"+portNo).innerHTML = getPort(portNo);
            portNo++;
        }
        else
        {
            addBlank(i);
        }
    }
}

deletePort = function(portNo, draw) {
    for(var i=portNo;i < noPorts;i++)
    {
        portPos[i] = portPos[i+1];
        portCode[i] = portCode[i+1];
    }
    noPorts--;
    if (draw) {drawPorts();}
    savePorts();
}

closePort = function(portNo) {
    if (portCode[portNo].charCodeAt(0)==32)
    {
        ownPort[getCode(portCode[portNo].charAt(1))]="";
    }
    if (portPos[portNo] <= 12)
    {
        clearPort(portNo);
    }
    else
    {
        deletePort(portNo, true);
    }
}

setColumnsHeight = function() {
    maxTabs = Math.floor((document.getElementById("footer").offsetWidth-300)/110);
    if (noTabs<maxTabs)
        {document.getElementById("addtab").style.visibility="visible";}
    else
        {document.getElementById("addtab").style.visibility="hidden";}
}

editPort = function(portNo) {
    var own;
    
    if (portCode[portNo].charCodeAt(0) == 32)
    {
        own=getCode(portCode[portNo].charAt(1));
        if (portCode[portNo]=="zz")
        {
            window.location.href = "NewPort.aspx?tab="+tabCode[curTab]+"&port="+portPos[portNo]+"&own="+own+"&tabpos="+curTab;
        }
        else
        {
            window.location.href = "ChangePort.aspx?tab="+tabCode[curTab]+"&port="+portPos[portNo]+"&own="+own+"&tabpos="+curTab;
        }
    }
    else
    {
        own=noOwn+1;
        newOne=true;
        if (portCode[portNo]=="zz")
        {
            window.location.href = "NewPort.aspx?tab="+tabCode[curTab]+"&port="+portPos[portNo]+"&own="+own+"&tabpos="+curTab;
        }
        else
        {
            window.location.href = "ChangePort.aspx?tab="+tabCode[curTab]+"&port="+portPos[portNo]+"&own="+own+"&tabpos="+curTab+"&new=1";
        }
    } 
}

setSearch = function(item, save) {
    switch (item) {
        case 1: document.getElementById("curSearch").innerHTML = "Google"; break
        case 2: document.getElementById("curSearch").innerHTML = "Yahoo"; break
        case 3: document.getElementById("curSearch").innerHTML = "AltaVista"; break
        case 4: document.getElementById("curSearch").innerHTML = "Bing"; break
        case 5: document.getElementById("curSearch").innerHTML = "Aol"; break
        case 6: document.getElementById("curSearch").innerHTML = "Ask"; break
    }
    document.getElementById("engine").style.display="none";
    searchNum = item;
    setCategories(item);
    setCategory(1, false);
    if (save) {saveOptions();}
}

function saveOptions() {
    var showStatus = 0;
    var Exp = new Date("January 1, 3000");
    if (document.getElementById("btnHide").style.display=="none") {showStatus = 1;}
    var cook = "options="+getChar(searchNum)+getChar(catNum)+getChar(curTab)+getChar(showStatus);
    document.cookie = cook+"; path=/; expires="+Exp.toGMTString();
}

function loadOptions() {
    var cook;
	var ca = document.cookie.split(';');
    curTab=1;
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf("options=") == 0) 
		{
	        cook = c.substring(8,c.length);
	        chars = getCode(cook.charAt(0));
	        setSearch(chars, false);
	        chars = getCode(cook.charAt(1));
	        setCategory(1, false);
//	        setCategory(chars, false);
	        chars = getCode(cook.charAt(2));
	        curTab = chars;
	        chars = getCode(cook.charAt(3));
	        if(chars==1)
	        {
	            hideHeader();
	        }
	        else
	        {
    		    if (document.getElementById("intro_block"))
	    	    {
	                if (document.getElementById("intro_block").style.display=="block")
	                {
	                    binPos=230;
	                }
	                else
	                {
	                    binPos=93;
	                }
	            }
	            else
	            {
	                    binPos=93;
	            }
	        }
		}
		else
		{
		    if (document.getElementById("intro_block"))
		    {
                if (document.getElementById("intro_block").style.display=="block")
                {
                    binPos=230;
                }
                else
                {
                    binPos=93;
                }
            }
		}
    }
}

setCategory = function(item, save) {
    document.getElementById("cat1").style.fontWeight = "normal";
    document.getElementById("cat2").style.fontWeight = "normal";
    document.getElementById("cat3").style.fontWeight = "normal";
    document.getElementById("cat4").style.fontWeight = "normal";
    switch (item) {
        case 1: document.getElementById("cat1").style.fontWeight = "bold"; break
        case 2: document.getElementById("cat2").style.fontWeight = "bold"; break
        case 3: document.getElementById("cat3").style.fontWeight = "bold"; break
        case 4: document.getElementById("cat4").style.fontWeight = "bold"; break
    }
    catNum = item;
    if (save) {saveOptions();}
}

setCategories = function(item) {
    switch (item) {
        case 1: document.getElementById("cat1").innerHTML = "web";
                document.getElementById("cat2").innerHTML = "images";
                document.getElementById("cat3").innerHTML = "maps";
                document.getElementById("cat4").innerHTML = "video"; 
                break
        case 2: document.getElementById("cat1").innerHTML = "web";
                document.getElementById("cat2").innerHTML = "images";
                document.getElementById("cat3").innerHTML = "news";
                document.getElementById("cat4").innerHTML = "video"; 
                break
        case 3: document.getElementById("cat1").innerHTML = "web";
                document.getElementById("cat2").innerHTML = "images";
                document.getElementById("cat3").innerHTML = "news";
                document.getElementById("cat4").innerHTML = ""; 
                break
        case 4: document.getElementById("cat1").innerHTML = "web";
                document.getElementById("cat2").innerHTML = "images";
                document.getElementById("cat3").innerHTML = "maps";
                document.getElementById("cat4").innerHTML = "video"; 
                break
        case 5: document.getElementById("cat1").innerHTML = "web";
                document.getElementById("cat2").innerHTML = "images";
                document.getElementById("cat3").innerHTML = "news";
                document.getElementById("cat4").innerHTML = "video"; 
                break
        case 6: document.getElementById("cat1").innerHTML = "web";
                document.getElementById("cat2").innerHTML = "images";
                document.getElementById("cat3").innerHTML = "news";
                document.getElementById("cat4").innerHTML = "video"; 
                break
    }
}

setPortContent = function(code) {
    port=document.getElementById("portMenu").parentNode.id;
    port=port.substring(7,port.length);
    portCode[port] = code;
    drawPorts();
    savePorts();
}

getOwnPort = function(portNo) {
    var hrefText, titleText, imageText, textText, cha, len, hexColour, fontID, layout=0;

    port = ownPort[portNo];

    cha = getCode(port.charAt(0)) + 4;
    hrefText = port.substring(4, cha);
    len = getCode(port.charAt(1));
    titleText = port.substring(cha, cha+len);
    cha = cha + len;
    len = getCode(port.charAt(2));
    if (len>0)
    {
        if (port.charCodeAt(cha) == 95 || port.charCodeAt(cha) == 94)
        {
            imageText = 'userLogos/'+port.substring(cha+1, cha+len)+'.jpg';
        }
        else
        {
            imageText = 'Logos/'+port.substring(cha, cha+len)+'.gif';
        }
        layout = 1;
    }
    cha = cha + len;
    len = getCode(port.charAt(3));
    if (len>0)
    {
        textText = port.substring(cha, cha+len);
        layout = layout + 2;
    }

    if (layout == 1)
    {
        return port.substring(1,2)+titleText+"<BR><BR><a href='http://"+hrefText+"'><img class='portimg' src='"+imageText+"'/></a>";
    }
    if (layout == 2)
    {
        hexColour = textText.substring(0,6);
        fontID = textText.substring(6,7);
        textText = textText.substring(7,textText.length);
        return port.substring(1,2)+titleText+"<BR><BR><a href='http://"+hrefText+"'><B style='COLOR: #"+hexColour+"' class='bigporttxt"+fontID+"'>"+textText+"</B></a>";
    }
    if (layout == 3)
    {
        return port.substring(1,2)+titleText+"<BR><BR><a href='http://"+hrefText+"'><img class='portimg' src='"+imageText+"'/><br><B class='porttxt'>"+textText+"</B></a>";
    }
}

if (window.addEventListener)
	window.addEventListener("load", initPage, false);
else if (window.attachEvent)
	window.attachEvent("onload", initPage);
	

loadOwnPorts = function() {
    var cook;
    var tot = 0;
    var port;
    noOwn=0;
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf("own=") == 0) 
	    {
	        noOwn = getCode(c.charAt(4));
	        cook = c.substring(5,c.length);
	        tot = getCode(cook.charAt(1)) + getCode(cook.charAt(2)) + getCode(cook.charAt(3)) + getCode(cook.charAt(4)) + 5;
    		while (tot > 5) 
	        {
	            port = getCode(cook.charAt(0));
                ownPort[port] = cook.substring(1, tot);
                cook = cook.substring(tot, cook.length);
    	        tot = getCode(cook.charAt(1)) + getCode(cook.charAt(2)) + getCode(cook.charAt(3)) + getCode(cook.charAt(4)) + 5;
	        }
	    }
	}
}

saveOwnPorts = function(){
    var cook = "own="+getChar(noOwn);
    var Exp = new Date("January 1, 3000");
    for(var i=1;i <= noOwn;i++)
    {
        if(ownPort[i].length>0)
        {
            cook = cook + getChar(i) + ownPort[i];
        }
    }

    if (noOwn>0)
    {
        document.cookie = cook+"; path=/; expires="+Exp.toGMTString();
    }
}

introPage = function() {

	var ca = document.cookie.split(';');
	var init = false;
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf("init=") == 0) 
	    {
	        init = true;
	    }
    }
    if (init==false)
    {
        if (document.getElementById("intro_block"))
        {
            document.getElementById("intro_block").style.display = "block";
            if(document.getElementById("header").style.display == "none")
            {
                binPos = 158;        
            }
            else
            {
                binPos = 230;        
            }
        }
    }
}

hideIntro = function() {

    var cook = "init=1";
    var Exp = new Date("January 1, 3000");
    document.cookie = cook+"; path=/; expires="+Exp.toGMTString();
    if (document.getElementById("intro_block"))
    {
        document.getElementById("intro_block").style.display = "none";
    }
    if(document.getElementById("header").style.display == "none")
    {
        binPos = 20;        
    }
    else
    {
        binPos = 93;        
    }
}

hideHeader = function()
{
    document.getElementById("header").style.display = "None";
    document.getElementById("tab-bar").style.marginTop = "0";
    document.getElementById("btnHide").style.display = "None";
    document.getElementById("btnShow").style.display = "Block";
    if (document.getElementById("intro_block"))
    {
        if (document.getElementById("intro_block").style.display=="block")
        {
            binPos=158;
        }
        else
        {
            binPos=20;
        }
    }
    else
    {
        binPos = 20;
    }
    saveOptions();
}

showHeader = function()
{
    document.getElementById("header").style.display = "Block";
    document.getElementById("tab-bar").style.marginTop = "4px";
    document.getElementById("btnShow").style.display = "None";
    document.getElementById("btnHide").style.display = "Block";
    if (document.getElementById("intro_block"))
    {
        if (document.getElementById("intro_block").style.display=="block")
        {
            binPos=230;
	    }
	    else
	    {
	        binPos=93;
	    }
	}
	else
	{
	    binPos=93;
	}
    saveOptions();
}

function findPosY(obj)
{
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}

function showSubMenu(curObj, idNum, size)
{
    document.getElementById('portSub1').style.display='none';
    document.getElementById('portSub2').style.display='none';
    document.getElementById('portSub3').style.display='none';
    document.getElementById('portSub4').style.display='none';
    document.getElementById('portSub5').style.display='none';
    document.getElementById('portSub6').style.display='none';
    document.getElementById('portSub7').style.display='none';
    document.getElementById('portSub8').style.display='none';
    document.getElementById('portSub9').style.display='none';
    document.getElementById('portSub10').style.display='none';
    document.getElementById('portSub11').style.display='none';
    document.getElementById('portSub12').style.display='none';
    document.getElementById('portSub13').style.display='none';
    document.getElementById('portSub14').style.display='none';
    document.getElementById('portSub15').style.display='none';
    document.getElementById('portSub16').style.display='none';
    document.getElementById('portSub17').style.display='none';
    document.getElementById('portSub18').style.display='none';
    document.getElementById('portSub19').style.display='none';
    document.getElementById('portSub20').style.display='none';
    document.getElementById('portSub'+idNum).style.top = "-16px";
    document.getElementById('portSub'+idNum).style.display='block';
    var footPos = 650;
    var botPos;
    if (parseInt(navigator.appVersion)>3) {
        if (navigator.appName=="Netscape") {
            footPos = window.innerHeight + 14;
            botPos = footPos + document.documentElement.scrollTop + document.body.scrollTop - findPosY(document.getElementById('bot'+idNum))-20;
        }
        if (navigator.appName.indexOf("Microsoft")!=-1) {
            footPos = document.body.offsetHeight;
            botPos = footPos + document.documentElement.scrollTop - document.getElementById('sub'+idNum).offsetParent.offsetTop - document.getElementById('sub'+idNum).offsetTop - findPosY(document.getElementById('bot'+idNum))-20;
        }
    }
    
   if (botPos<0)
   {
        document.getElementById('portSub'+idNum).style.top = (botPos-16)+"px";
   }
}

function hideSubMenu(idNum)
{
    //document.getElementById('portSub'+idNum).style.display='none';
}

document.onmousedown=drags;
document.onmouseup=rest;
document.onmousemove=move;

function showSearchMenu()
{
    document.getElementById('engine').style.display='block';
    document.getElementById("Columns").style.zIndex=30;
}

function hideSearchMenu()
{
    document.getElementById('engine').style.display='none';
    document.getElementById("Columns").style.zIndex=100;
}

function getCode(letter)
{
    cha = letter.charCodeAt(0);
    if (cha >= 48 && cha <= 57)
    {
        return cha - 48;
    }
    else if (cha >= 65 && cha <= 90)
    {
        return cha - 55;
    }
    else if (cha >= 97 && cha <= 122)
    {
        return cha - 61;
    }
    else
    {
        return -1;
    }
}

function getChar(code)
{
    if (code >= 0 && code <= 9)
    {
        return String.fromCharCode(code + 48);
    }
    else if (code >= 10 && code <= 35)
    {
        return String.fromCharCode(code + 55);
    }
    else if (code >= 36 && code <= 61)
    {
        return String.fromCharCode(code + 61);
    }
    else
    {
        return "";
    }
}
