var sort = "a";
var debug = false;
var current = 0;
var maximum = 5;
var STEPS = 7;
var is_moving = false;

//window.onload = SetChildBoxes;

function SetChildBoxes(mode)
{
    if (is_moving) return;

    is_moving = true;
    switch (mode)
    {
        case 'next': DisplayNextChildBox(); break;
        case 'prev': DisplayPrevChildBox(); break;
        default: ResetChildBoxes(); break;
    }
}

function RequestData(mode) {
    DisplayLoadingBar("block");
    var request = GetNewAjaxRequest();
    if (!request)  {
        if (debug) alert("Fehler aufgetreten kann keinen request erzeugen.")
        return;
    }
    
    request.open("GET", "child_ajax.php?start=" + current + "&maximum=" + maximum + "&gender=" + sort, true);  
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.onreadystatechange = function() {
        switch (request.readyState) {
            case 4:
                if(request.status != 200) {
                    if (debug) alert("Fehler aufgetreten kann keine Daten empfangen.")
                    return;
                } 
                else {
                    var response = eval(request.responseText);
                    SetBoxes(response, mode);
                }
                break;
            default:
                break;
        }
    }; 
    request.send(null);
}

function SetBoxes(values, mode) {
    if (!values) {
        //Keine Daten empfangen, nix ausgeben, Fehler vermeiden
        return;
    }
    
    switch (mode)
    {
        case 'reset':
        {
            ClearAllBoxes();
            var boxes = document.getElementsByClassName('child_box');
    
            for (i = 0; i < boxes.length; i++) {
                SetChildBoxClass(boxes[i], "child_box_" + values[i]['geschlecht']);
                var html = "";
                html += "<div>"+values[i]['name_kind'] + "</div>";
                var name = values[i]['bild'].split("/");
                html += "<a href='javascript:DisplayLayer("+values[i]['fiona_ID']+", 0);'><div id='child_slide_"+name[name.length - 1]+"'><img src='"+values[i]['bild']+"' alt='Loading' /></div></a>";
                html += "<div>" + values[i]['geburtsdatum']+"</div>";
                
                boxes[i].innerHTML = html;
                boxes[i].style.display = "block";
                is_moving = false;
                DisplayLoadingBar('none');
            }
			
			var bar = document.getElementById('loadingbar');
			if (bar && bar.style.display == 'block')
				bar.style.display = 'none';
        }
        break;
        case 'next':
        {
            var layer = document.getElementById('child_slider_layer');
            var boxes = document.getElementsByClassName('child_box');
            var slider = document.getElementById('child_slider');
            
            html = '<div class="child_box child_box_' + values[4]['geschlecht'] + '" style="display:block;">';
            html += "<div>"+values[4]['name_kind'] + "</div>";
            var name = values[4]['bild'].split("/");
            html += "<a href='javascript:DisplayLayer("+values[4]['fiona_ID']+", 0);'><div id='child_slide_"+name[name.length - 1]+"'><img src='"+values[4]['bild']+"' alt='Loading' /></div></a>";
            html += "<div>" + values[4]['geburtsdatum']+"</div>";
            html += '</div>';
            
            var bild = new Image();
            bild.src = values[4]['bild'];
            
            bild.onload = function(){
                slider.innerHTML += html;
                DisplayLoadingBar('none');
                MoveLeft(slider, 64);
                return;
            }
            
            if(bild.complete && document.all)
            {
                bild.onload();
            }
        }
        break;
        case 'prev':
        {
            var layer = document.getElementById('child_slider_layer');
            var boxes = document.getElementsByClassName('child_box');
            var slider = document.getElementById('child_slider');
            
            html = '<div class="child_box child_box_' + values[0]['geschlecht'] + '" style="display:block;">';
            html += "<div>"+values[0]['name_kind'] + "</div>";
            var name = values[0]['bild'].split("/");
            html += "<a href='javascript:DisplayLayer("+values[0]['fiona_ID']+", 0);'><div id='child_slide_"+name[name.length - 1]+"'><img src='"+values[0]['bild']+"' alt='Loading' /></div></a>";
            html += "<div>" + values[0]['geburtsdatum']+"</div>";
            html += '</div>';
            
            old = slider.innerHTML;
            
            slider.style.marginLeft = "-64px";
            
            slider.innerHTML = html;
            slider.innerHTML += old;
            
            var bild = new Image();
            bild.src = values[4]['bild'];
            
            bild.onload = function(){
                slider.innerHTML += html;
                DisplayLoadingBar('none');
                MoveRight(slider, 64);
                return;
            }
            
            if(bild.complete && document.all)
            {
                bild.onload();
            }
        }
        break;
    }
    
    SetArrows();
    
    //Etracker und IVW nachladen
    if (!document.getElementById('etracker_frame')) {
        var etracker = document.createElement("iframe");
        var etrackerid = document.createAttribute("id");
        etrackerid.nodeValue = "etracker_frame";
        etracker.setAttributeNode(etrackerid);
        
        var body = document.getElementsByTagName("body");
        
        if (document.all) {
            body.onload = function() {
                body[0].appendChild(etracker);
            }
        }
        else
            body[0].appendChild(etracker);
            
        if (body[0].complete && document.all)
            body[0].onload();
    }
    
    var tracker = document.getElementById('etracker_frame');
    if (tracker) {
        tracker.src = "etracker.php";
        tracker.style.display = "none";
    }
}

function DisplayPrevChildBox() {
    current--;
    RequestData('prev');
}

function DisplayNextChildBox() {
    current++;
    RequestData('next');
}

function ResetChildBoxes() {
    current = 0;
    RequestData('reset');
}

function SetArrows() {    
    var request = GetNewAjaxRequest();
    if (!request)  {
        if (debug) alert("Fehler aufgetreten kann keinen request erzeugen.")
        return;
    }
    
    request.open("GET", "child_ajax.php?&mode=count&gender=" + sort, true);  
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.onreadystatechange = function() {
        switch (request.readyState) {
            case 4:
                if(request.status != 200) {
                    if (debug) alert("Fehler aufgetreten kann keine Daten empfangen.")
                    return;
                } 
                else {
                    var count = request.responseText;
                    
                    var right = document.getElementById('child_arrow_right');
                    var left = document.getElementById("child_arrow_left");                    
                                        
                    if (current >= count - 5) 
                        right.innerHTML = '<img src="_images/pfeil_rechts_grey.gif" />';
                    else                
                        right.innerHTML = '<a href="javascript:SetChildBoxes(\'next\');"><img src="_images/pfeil_rechts.gif" /></a>';
                        
                    if (current <= 0)
                        left.innerHTML = '<img src="_images/pfeil_links_grey.gif" />';
                    else
                        left.innerHTML = '<a href="javascript:SetChildBoxes(\'prev\');"><img src="_images/pfeil_links.gif" /></a>';
                }
                break;
            default:
                break;
        }
    }; 
    request.send(null);
}

function SetSort(_sort) {
    sort = _sort;    
    ResetChildBoxes();
}

function ClearAllBoxes() {
    var boxes = document.getElementsByClassName('child_box');

    for (i = 0; i < boxes.length; i++) {
        boxes[i].innerHTML = '';
    }
}

function GetNewAjaxRequest() {
    if(window.XMLHttpRequest) {
        request = new XMLHttpRequest(); // Mozilla, Safari, Opera
    } 
    else if(window.ActiveXObject) {
        try {
            request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
        } 
        catch (e) {
            try {
                request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
            } 
            catch (e) { }
        }
    }
    return request;
}

function SetChildBoxClass(element, value) {
    element.className = "child_box";
    
    var newClassName = element.className;
    newClassName += " ";
    newClassName += value;
    element.className = newClassName;
}

function getClassArray(i_array, clsName) {
    var retArray = new Array();
    
    for (i = 0; i < i_array.length; i++) {
        if (objHasClass(i_array[i], clsName))
            retArray.push(i_array[i]);
    }
    
    return retArray;
}

function objHasClass(obj, clsName){
    if(obj.className.indexOf(" ") >= 0){
        var classes = obj.className.split(" ");
        
        for(var j = 0;j < classes.length;j++){
            if(classes[j] == clsName)
                return true;
        }
    }
    else if(obj.className == clsName)
        return true;
        
    return false;
}

document.getElementsByClassName = function(clsName) {
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    
    return retVal;
}

function MoveLeft(elem, move) {
    var leftm = (1 * elem.style.marginLeft.replace(/px/, ""));
    
    if (leftm > (leftm - move)) {
        elem.style.marginLeft = (leftm - STEPS) + "px";
        move -= STEPS;
        window.setTimeout(function(){MoveLeft(elem, move);}, STEPS);
    }
    else {
        elem.style.marginLeft = "0px";
        elem.removeChild(elem.childNodes[0]);
        is_moving = false;
    }
}

function MoveRight(elem, move) {
    var leftm = (1 * elem.style.marginLeft.replace(/px/, ""));
    
    if (leftm < (leftm + move)) {
        elem.style.marginLeft = (leftm + STEPS) + "px";
        move -= STEPS;
        window.setTimeout(function(){MoveRight(elem, move);}, STEPS);
    }
    else {
        elem.style.marginLeft = "0px";
        elem.removeChild(elem.lastChild);
        is_moving = false;
    }
}

function DisplayLoadingBar(mode) {
    var loading = document.getElementById('child_loader');
    if(!loading) return;
        
    loading.style.display = mode;
}