/**
 * @author alexanderfried
 */
//time in millisec = duration
var time = 1;
//difference
var difference = 8;
var minSize = 0;
var maxSizePerEl = 20;//pro element
var activeElement = "";
var enlargeFinished = false;

/**maximises the menu without time delay
 *
 * @param {Object} id
 */
function activeMenu(menu){
	alert(menu);
    var id = "item" + menu;
    document.getElementById(id).style.display = "block";
    document.getElementById(id).style.height = maxSizePerEl;
    
    
    var cont = document.getElementById(id);
    
    var myObjColl = getElementsByClassName('subSpan', 'span', cont);
    for (var i = 0, j = myObjColl.length; i < j; i++) {
        myObjColl[i].style.display = "block";
        
        
    }
    
}


/**
 * resizes the menu. if the size is already maximum then resize to the minumum size (and vice versa).
 */
function resizeMenu(id){
    var sizeInt = getHeight(id);
    document.getElementById(id).style.display = "block";
    
    //depending on the size of the menu, either shrink or enlarge the menu
    if (sizeInt > 40) 
        shrinkMenu(id);
    else 
        enlargeMenu(id);
    
    shrinkOthers(id);
}

/**
 * shrinks the menu to the normal size.
 */
function shrinkMenu(id){
    var sizeInt = getHeight(id);
    sizeInt = (sizeInt) - difference;
    
    if (sizeInt < minSize) 
        sizeInt = minSize;
    
    document.getElementById(id).style.height = sizeInt + "px";
    
    //recursive call of method with time delay
    if (sizeInt > minSize) {
        window.setTimeout("shrinkMenu('" + id + "');", time);
    }
    
    
    //make submenu invisible
    
    
    var cont = document.getElementById(id);
    
    var myObjColl = getElementsByClassName('subSpan', 'span', cont);
    for (var i = 0, j = myObjColl.length; i < j; i++) {
        myObjColl[i].style.display = "none";
        
        
    }
    /*
     if (id == "item3") {
     elements = getElementsByClassName("sub3");
     for (i = 0; i < elements.length; i++)
     elements.item(i).style.display = "none";
     }
     */
    if (sizeInt < 10) {
    
        document.getElementById(id).style.display = "none";
    }
    
    
}

function setActive(id){
    activeElement = id;
    shrinkOthers(id);
}

function shrinkOthers(id){


    if (id == 'item1') {
        shrinkMenu('item2');
        shrinkMenu('item3');
    }
    
    if (id == 'item2') {
        shrinkMenu('item3');
        shrinkMenu('item1');
        
    }
    
    if (id == 'item3') {
    
        shrinkMenu('item2');
        shrinkMenu('item1');
        
    }
    
    
    
}

/**
 * enlarges the menu to the maximum size.
 */
function enlargeMenu(id){
    var num = 0;
    /*if(id=="item1"){
     num = getElementsByClassName("sub1").length;
     }
     
     if(id=="item2")
     num = getElementsByClassName('sub2').length;
     if(id=="item3")
     num = getElementsByClassName('sub3').length;
     */
    //anzahl der sub elemente ermitteln
    var cont = document.getElementById(id);
    var myObjColl = getElementsByClassName('subSpan', 'span', cont);
    num = myObjColl.length;
    
    var maxSize = maxSizePerEl * num;
    var sizeInt = getHeight(id);
    
    sizeInt = parseInt(sizeInt) + difference;
    document.getElementById(id).style.height = sizeInt + "px";
    
    if (sizeInt < maxSize) {
    
        /*  if (id == "item1") {
         
         document.getElementById("item1").style.backgroundColor= "#FF3B3C";
         
         }*/
        window.setTimeout("enlargeMenu('" + id + "');", time);
    }
    else {
    
        //make sub visible
        
        
        var cont = document.getElementById(id);
        
        var myObjColl = getElementsByClassName('subSpan', 'span', cont);
        for (var i = 0, j = myObjColl.length; i < j; i++) {
            myObjColl[i].style.display = "block";
            
            
        }
        /*
        
         //make submenu visible
        
         if (id == "item1") {
        
         
        
         //document.getElementById("sub1_1").style.display ="block";
        
         
        
         
        
         
        
         var elements = getElementsByClassName("sub1");
        
         
        
         
        
         
        
         for (var i = 0; i < elements.length; i++) {
        
         
        
         elements.item(i).style.display = "block";
        
         
        
         }
        
         
        
         document.getElementById("sub1").style.display = "block";
        
         
        
         var img = document.getElementById("item1").style.backgroundImage;
        
         
        
         document.getElementById("item1").style.background = "none";
        
         
        
         document.getElementById("item1").style.backgroundImage = img;
        
         
        
         document.getElementById("item1").style.backgroundRepeat = "no-repeat";
        
         
        
         document.getElementById("item1").style.backgroundColor = "#FF3B3C";
        
         
        
         
        
         
        
         
        
         
        
         }
        
         
        
         */
        
    }
    
    //document.getElementById("subitem").style.display = "block";





}


/**
 * Returns the height of the element without px suffix
 * @param {Object} id identity of the element
 */
function getHeight(id){
    var size = document.getElementById(id).style.height;
    var sizeInt;
    
    if (size != "") {
        //if size is set, get size from that value
        var sizeArray = new String(size).split("px");
        sizeInt = sizeArray[0];
        
    }
    else {
    
        sizeInt = document.getElementById(id).offsetHeight;
    }
    
    
    return parseInt(sizeInt);
}

function getElementsByClassName(strClass, strTag, objContElm){
    strTag = strTag || "*";
    objContElm = objContElm || document;
    var objColl = objContElm.getElementsByTagName(strTag);
    if (!objColl.length && strTag == "*" && objContElm.all) 
        objColl = objContElm.all;
    var arr = new Array();
    var delim = strClass.indexOf('|') != -1 ? '|' : ' ';
    var arrClass = strClass.split(delim);
    for (var i = 0, j = objColl.length; i < j; i++) {
        var arrObjClass = objColl[i].className.split(' ');
        if (delim == ' ' && arrClass.length > arrObjClass.length) 
            continue;
        var c = 0;
        comparisonLoop: for (var k = 0, l = arrObjClass.length; k < l; k++) {
            for (var m = 0, n = arrClass.length; m < n; m++) {
                if (arrClass[m] == arrObjClass[k]) 
                    c++;
                if ((delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
                    arr.push(objColl[i]);
                    break comparisonLoop;
                }
            }
        }
    }
    return arr;
}

// To cover IE 5.0's lack of the push method
Array.prototype.push = function(value){
    this[this.length] = value;
}


/**
 * @author alexanderfried
 */

function setStartX(id){
	
	var width = document.getElementById("bubbleWrapper").offsetWidth;
	var height = document.getElementById("bubbleWrapper").offsetHeight;
	
	var startX = parseInt(width)/2;

	//offset vom bubble noch abziehen
	startX = startX - parseInt(document.getElementById(id).offsetWidth) / 2;
	
	
	return startX;
}

function setStartY(id){
	var width = document.getElementById("bubbleWrapper").offsetWidth;
	var height = document.getElementById("bubbleWrapper").offsetHeight;
	
	var startY = parseInt(height)/2;
	startY = startY - parseInt(document.getElementById(id).offsetHeight) / 2;
	return startY;	
}

function orderBubbles(){
	
    //-1 weil main bubble center ausgenommen
    var angleStep = 2 * Math.PI / (getElementsByClassName("bubble").length - 1);
    
	var radius = document.getElementById("bubbleWrapper").offsetHeight/2 - 5;
    
    //bubble 0 = main bubble = center
    for (var i = 0; i <= getElementsByClassName("bubble").length; i++) {
    
        var random = Math.random();
        var angle = angleStep * i;
       	var id = "bubble" + i;
       
	   
        //i == 0 ist das mittelelement
        if (i != 0) {
			
			var x = parseInt(setStartX(id)) + (radius - 40 * random) * Math.cos(angle);
            var y = parseInt(setStartY(id)) + (radius - 40 * random) * Math.sin(angle);
			
            var fontSize = 11 + random * 6;
            
        }
        else {
            var x = parseInt(setStartX(id));
            var y = parseInt(setStartY(id));
			
            var fontSize = 20;
        }
        
       
		document.getElementById(id).style.left = x + "px";
        document.getElementById(id).style.top = y + "px";
    	document.getElementById(id).style.fontSize = fontSize + "pt";   	
	}
	
}

function fadeoutExcept(id, url){
	for(var i = 0; i < getElementsByClassName("bubble").length; i++){
		var idOther = "bubble" + i;
		//alert(i);
		//das das angeklickt wurde nicht ausblenden
		if(id != idOther )
		 	window.setTimeout("fadeout('"+idOther+"', 2000, '"+url + "')", 0);
		
	}
	
	window.setTimeout("fadeout('" + id +"', 2600)",900);
	
	
}
function fadeout(id, velocity, url) {
	var fps = Math.round(velocity / 100); 
	var tmp = 0;
    for(i = 100; i >= 0; i--) {
        setTimeout("fadeout2('" + id + "'," + i + ", '" + url + "')", (tmp * fps));
        tmp++;
    }
}
function fadeout2(id, pas, url) {
	var element = document.getElementById(id).style;
	if(pas > 0) {
		element.opacity = (pas / 100);
		element.MozOpacity = (pas / 100);
		element.KhtmlOpacity = (pas / 100);
		element.filter = "alpha(opacity=" + pas + ")"; 
	} else {
		element.display = "none";
		
		self.location.href = url;
	}
}

function smallerFont(id){
	var fontSize = parseInt(document.getElementById(id).style.fontSize);
	fontSize = fontSize / 1.1;
		
	document.getElementById(id).style.fontSize = fontSize + "pt";
}
function biggerFont(id){
	
	var fontSize = parseInt(document.getElementById(id).style.fontSize);
	fontSize = fontSize * 1.1;
		
	document.getElementById(id).style.fontSize = fontSize + "pt";
}


function showHide(id){
	
	if(document.getElementById(id).style.display='none')
		document.getElementById(id).style.display='block';
	else
	document.getElementById(id).style.display='none';
}  


function showSubmenu(id)
{
	hideSubmenus();
	var id = "submenu" + id;
	document.getElementById(id).style.display = 'block';
	
}

function hideSubmenus()
{
	document.getElementById("submenu1").style.display = "none";
	document.getElementById("submenu2").style.display = "none";
	document.getElementById("submenu3").style.display = "none";
	document.getElementById("submenu4").style.display = "none";
}
function hideSubmenu(id)
{
	var id = "submenu" + id;
	
	document.getElementById(id).style.display = 'none';
}


function getImages(start){
		
		new Ajax.Updater('images', 'sites/imagegallery.php?start='+start, {
        method: 'get'
    });
	
	
}

function getImagesNachbarn(start){
		
		new Ajax.Updater('images', 'sites/imagegallery_nachbarn.php?start='+start, {
        method: 'get'
    });
	
	
}
function getImagesNachbarnCelebs(start){
		
		new Ajax.Updater('images', 'sites/imagegallery_nachbarn_celebs.php?start='+start, {
        method: 'get'
    });
	
	
}




/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

