// Positionierung

function get_y( oElement )
{
    var iReturnValue = 0;
    while( oElement !== null ) {
        iReturnValue += oElement.offsetTop;
        oElement = oElement.offsetParent;
    }
    return iReturnValue;
}

function get_x( oElement )
{
    var iReturnValue = 0;
    while( oElement !== null ) {
        iReturnValue += oElement.offsetLeft;
        oElement = oElement.offsetParent;
    }
    return iReturnValue;
}

// AJAX Basics +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var httpRequest = false;
var noResult = "Ein Fehler ist aufgetreten :-(";

// ===================================
function handleHttpResponse(content, outputId) {
    if(!document.getElementById)
    {
        return false;
    }
    if(!document.getElementById(outputId))
    {
        return false;
    }
    if(content == "FALSE")
    {
        document.getElementById(outputId).innerHTML = noResult;
    }
    else
    {
        document.getElementById(outputId).innerHTML = content;
    }
}

function doHttpRequest(url, outputId)
{
    httpRequest = false;
    if(window.XMLHttpRequest)  // Mozilla, Safari,...
    {
        httpRequest = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    { // IE
        try
        {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (eMS) {}
        }
    }
    if(!httpRequest)
    {
        return false;
    }
    
    httpRequest.onreadystatechange = function() {
        if(httpRequest.readyState == 4)
        {
            if(httpRequest.status == 200)
            {
                handleHttpResponse(httpRequest.responseText, outputId);
                return true;
            }
            else
            {
              if (outputId == 'upload_fg')
              {
                upload_off();
                messageUrl('/ajax/error.html');
              }
              return false;
            }
        }
        else
        {
            return false;
        }
    };
    httpRequest.open('get', url, true);
    httpRequest.send(null);
    
    return true;
}

// Messages
message_loading = '';
refreshUrl = null;

function message_reset()
{
    if (document.getElementById('message_fg') && document.getElementById('message_content')) {
        document.getElementById('message_content').innerHTML = message_loading;
        document.getElementById('message_countdown').innerHTML = message_loading;
    }
}

function message_off (just_logged_in)
{
    if (document.getElementById)
    {
        if (document.getElementById('message_bg')) {
            document.getElementById('message_bg').style.visibility = 'hidden';
        }
        if (document.getElementById('message_fg') && document.getElementById('message_content')) {
            document.getElementById('message_fg').style.visibility = 'hidden';
            window.setTimeout("message_reset()", 500);
        }
        else {
            alert(':-(');
        }
    }
    else
    {
        return false;
    }
    
    if (refreshUrl)
    {
      window.location = refreshUrl;
    }
    
    return true;
}

function message_countdown_step ()
{
    if (time_left <= 0) {
        message_off();
        window.clearInterval(countdown_interval);
    }
    else {
        document.getElementById('message_countdown').innerHTML = "(Schlie&szlig;t in <strong>" + time_left + "</strong> Sekunden)";
        time_left--;
    }
}

function message_countdown()
{
    if (document.getElementById && document.getElementById('message_content')) {
        time_left = 3;
        countdown_interval = window.setInterval("message_countdown_step()", 1000);
        message_countdown_step();
    }
}

function message_strecken ()
{
  if (document.getElementById && document.getElementById('message_bg'))
  {
    bodyHeight = document.getElementsByTagName('body')[0].parentNode.scrollHeight;
    document.getElementById('message_bg').style.height=bodyHeight+'px';
  }
}

function message (messageText, suppress_countdown)
{
    window.scrollTo(0,0);
    
    if (document.getElementById) {
        document.getElementById('message_content').innerHTML = message_loading;
        
        if (document.getElementById('message_bg')) {
            document.getElementById('message_bg').style.visibility = 'visible';
        }
        
        message_strecken ();
        
        if (document.getElementById('message_fg')) {
            document.getElementById('message_fg').style.visibility = 'visible';
            
            document.getElementById('message_content').innerHTML = messageText;
            
            if (!suppress_countdown) {
                message_countdown();
            }
        }
    }
}

function messageUrl (uri, suppress_countdown)
{
    window.scrollTo(0,0);
    
    if (document.getElementById) {
        document.getElementById('message_content').innerHTML = message_loading;
        
        if (document.getElementById('message_bg')) {
            document.getElementById('message_bg').style.visibility = 'visible';
        }
        
        message_strecken ();
        
        if (document.getElementById('message_fg')) {
            document.getElementById('message_fg').style.visibility = 'visible';
            
            doHttpRequest(uri, 'message_content');
            ajax_uri = uri;
            
            if (!suppress_countdown) {
                message_countdown();
            }
        }
    }
}

function message_string (message, suppress_countdown)
{
    window.scrollTo(0,0);
    
    if (document.getElementById) {
        document.getElementById('message_content').innerHTML = message_loading;
        
        if (document.getElementById('message_bg')) {
            document.getElementById('message_bg').style.visibility = 'visible';
        }
        
        message_strecken ();
        
        if (document.getElementById('message_fg')) {
            document.getElementById('message_fg').style.visibility = 'visible';
            
            document.getElementById('message_content').innerHTML = message;
            
            if (!suppress_countdown) {
                message_countdown();
            }
        }
    }
}

// Rating stars

function stars_on (stars)
{
    if (document.getElementById) {
        //stars_off();
        
        for (i=1; i<=5; i++) {
            if (document.getElementById('star'+i)) {
                if (i<=stars) {
                    document.getElementById('star'+i).src = "/images/herz_gr.gif";
                }
                else {
                    document.getElementById('star'+i).src = "/images/herz_gr_grau.gif";
                }
            }
        }
    }
}

function stars_reset(stars)
{
  if (document.getElementById) {
        //stars_off();
        
        for (i=1; i<=5; i++) {
            if (document.getElementById('star'+i)) {
                if (i<=stars) {
                    document.getElementById('star'+i).src = "/images/herz_gr.gif";
                }
                else {
                    document.getElementById('star'+i).src = "/images/herz_gr_grau.gif";
                }
            }
        }
    }
}

function stars_off () {
    if (document.getElementById) {
        for (i=1; i<=5; i++) {
            if (document.getElementById('star'+i)) {
                document.getElementById('star'+i).src = "/images/herz_gr_grau.gif";
            }
        }
    }
}

// Preview

function nopreview ()
{
    if (document.getElementById) {        
        if (document.getElementById("preview")) {
            document.getElementById("preview").style.display = "none";
        }
    }
}

function preview (element, image, scrollPos)
{
    if (document.getElementById) {        
        if (document.getElementById("preview")) {
            document.getElementById("preview").style.display = 'block';
        }
        
        if (document.getElementById('preview_image').height > 0)
        {
          top_offset  = (get_y(element)-scrollPos)-(document.getElementById("preview_image").height+100);
        }
        else
        {
          top_offset  = (get_y(element)-scrollPos)-(document.getElementById("preview_image").height+100+282);
        }
        
        left_offset = get_x(element)+90;
        
        document.getElementById("preview").style.top  = top_offset+"px";
        document.getElementById("preview").style.left = left_offset+"px";
        
        document.getElementById("preview_image").src = image;
    }
}

// Upload ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function upload_off ()
{
    if (document.getElementById && document.getElementById("upload_bg")) {
        document.getElementById("upload_bg").style.visibility = 'hidden';
    }
    if (document.getElementById && document.getElementById("upload_fg")) {
        document.getElementById("upload_fg").style.visibility = 'hidden';
    }
}
function upload_strecken ()
{
    if (document.getElementById && document.getElementById('upload_bg')) {
        bodyHeight = document.getElementsByTagName('body')[0].offsetHeight;
        document.getElementById('upload_bg').style.height=bodyHeight+'px';
    }
}

function upload (id_comic)
{
    var uri  = "/comics/getUploadFlash";
    var milli = new Date();
    
    if (id_comic) {
        uri += encodeURI("?id_comic="+id_comic+"&msec="+milli.getMilliseconds());
    }else {
        uri += encodeURI("?msec="+milli.getMilliseconds());
    }
    
    if (document.getElementById && document.getElementById("upload_bg")) {
        document.getElementById("upload_bg").style.visibility = 'visible';
        upload_strecken();
    }
    if (document.getElementById && document.getElementById("upload_fg")) {
        document.getElementById("upload_fg").style.visibility = 'visible';
        doHttpRequest(uri, "upload_fg");
    }
}

//motion comic
function motion_comic_off ()
{
    if (document.getElementById && document.getElementById("motion_comic_bg")) {
        document.getElementById("motion_comic_bg").style.visibility = 'hidden';
    }
    if (document.getElementById && document.getElementById("motion_comic_fg")) {
        document.getElementById("motion_comic_fg").style.visibility = 'hidden';
    }
}

function motion_comic_strecken ()
{
  if (document.getElementById && document.getElementById('motion_comic_bg')) {
      bodyHeight = document.getElementsByTagName('body')[0].offsetHeight;
      document.getElementById('upload_bg').style.height=bodyHeight+'px';
  }
}

function motionComic (id_comic)
{
  try
  {
    message_off();
  }catch (e){}
  
    var uri  = "/comics/getMotionComicFlash";
    var milli = new Date();
    
    if (id_comic) {
        uri += encodeURI("?comic_id="+id_comic+"&msec="+milli.getMilliseconds());
    }else {
        uri += encodeURI("?msec="+milli.getMilliseconds());
    }
    
    if (document.getElementById && document.getElementById("motion_comic_bg")) {
        document.getElementById("motion_comic_bg").style.visibility = 'visible';
        motion_comic_strecken();
    }
    if (document.getElementById && document.getElementById("motion_comic_fg")) {
        document.getElementById("motion_comic_fg").style.visibility = 'visible';
        doHttpRequest(uri, "motion_comic_fg_content");
    }
}

//    SEITE Drucken +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function printPage()
{
  if (window.print)
  {
    jetztdrucken = confirm('Diese Seite jetzt drucken?');
    if (jetztdrucken)
    {
      window.print();
    }
  }
}

function welcome()
{
    fade_step = 32;
    
    if (typeof welcome_height == "undefined") {
        welcome_height = document.getElementById("welcome").offsetHeight;
    }
    
    if (document.getElementById && document.getElementById("welcome") && typeof fade_interval == "undefined") {
        if (document.getElementById("welcome").style.display == "block") {
            // fade out
            current_height = document.getElementById("welcome").offsetHeight;
            target_height  = 0;
            
            fade_interval = window.setInterval("welcome_fade('out')", 50);
        }
        else if (document.getElementById && document.getElementById("welcome")) {
            // fade in 
            document.getElementById("welcome").style.display       = "block";
            
            target_height  = welcome_height;
            current_height = 0;
            
            document.getElementById("welcome").style.height     = "0px";
            document.getElementById("welcome").style.visibility = "visible";
            
            fade_interval = window.setInterval("welcome_fade('in')", 50);
        }
    }
}

function welcome_fade(fade_type) {
    welcome_object = document.getElementById("welcome");
    button_object  = document.getElementById("logout_button");
    
    if (fade_type == "in")
    {
        current_height += fade_step;
        
        if (current_height >= target_height)
        {
            current_height = target_height;
            clearInterval(fade_interval);
            delete fade_interval;
        }
        else if (current_height / target_height > 0.95)
        {
            fade_step = 4;
        }
        else if (current_height / target_height > 0.9)
        {
            fade_step = 8;
        }
        else if (current_height / target_height > 0.8)
        {
            fade_step = 16;
        }
        
        welcome_object.style.height   = current_height + "px";
        button_object.style.marginTop = current_height + "px";
    }
    else if (fade_type == "out")
    {
        current_height-=fade_step;
        if (current_height <= target_height)
        {
            current_height = target_height;
            clearInterval(fade_interval);
            delete fade_interval;
            
            document.getElementById("welcome").style.display         = "none";
            document.getElementById("logout_button").style.marginTop = "0px";
        }
        else if (current_height / welcome_height < 0.05)
        {
            fade_step = 4;
        }
        else if (current_height / welcome_height < 0.1)
        {
            fade_step = 8;
        }
        else if (current_height / welcome_height < 0.2)
        {
            fade_step = 16;
        }
        
        welcome_object.style.height   = current_height + "px";
        button_object.style.marginTop = current_height + "px";
    }
}
