/* 
 * Custom Texturebase Functions
 * 
 */



function showDialogBox(widthIn,heightIn){
    
     if(heightIn == null){
         heightIn = 200;
     }
     if(widthIn == null){
         widthIn = 500;
     }

     //Zentriertes ausrichten der Dialog Box
     var height = $(window).height();
     var width  = $(window).width();

     var centerH = (height-heightIn)/2;
     var centerW = (width-widthIn)/2;

     //Setzen des Bg
     //$('#dialog_bg').css("display","block");
     $('#dialog_bg').fadeIn();

     //Setzen des Inhalts
     $('#dialog_box').html("<img src='./images/ajax-loader.gif' class='loading' alt='loading' />");

     //Zentrieren und anzeigen der Box
     $('#dialog_box').css("left", centerW + 'px');
     $('#dialog_box').css("top", centerH + 'px');
     $('#dialog_box').css("width",widthIn + "px");
     $('#dialog_box').css("height",heightIn + "px");
     $('#dialog_box').css("display","block");
     
}

function hideDialogBox(){
     $('#dialog_box').css("display","none");
     //$('#dialog_bg').css("display","none");
     $('#dialog_bg').fadeOut();
}

function toggleSearch(){
     $('#search_panel').toggle(100);
     $('#search_panel_field').focus();

}

function resetAfterReload(){
    
    $('#nav_user_name').load("session.php?getUserNameForMenu",function(){

         var test = $('#nav_user_name').html();
         //alert("!"+test+"!");

         if( test  != " abmelden"){
            
             //alert("User war angemeldet");
             //Verstecken des Anmelde & Registrieren Buttons
             $('#login_button_list').hide();
             $('#register_button_list').hide();
             $('#nav_user_name').load("session.php?getUserNameForMenu");
             $('#logout_button_list').show();
             $('#new_texture_button_list').show();
      }
    });
}

function showLoginBox(){
     showDialogBox(400,240);

     //Laden des Deafult Contents
     $("#dialog_box").load("./templates/login.php",function(){

              var options = {
                    target:  '#login_message',
                    success: closeLoginOnSuccess
              };

              $('#login_form').ajaxForm(options);

              $("#login_abbrechen_button").bind("click", function(){
                   hideDialogBox();
              });

              $("#register_login_link").bind("click", function(){
                   showRegisterBox();
              });
     }); 
}

function showLogoutBox(){
     showDialogBox(400,70);
     $("#dialog_box").load("do_logout.php",function(){
              $("#close_button").bind("click", function(){
                  hideDialogBox();
                  window.location.reload()
              });
     });
}

function uploadComplete(){

     var id = $("#upload_result").html();
    
     hideDialogBox();
     showAdvanceFileDialog(id);

     //Update normalview
     $('#image_box').html("<img src='./images/ajax-loader.gif' class='loading' alt='loading' />");
     $("#image_box").load("./templates/view_normal.php",function() {

               //Registrieren der Info Funktions und des Mauskiks auf ein Thumb
               searchReady();
     });
}

function showUploadDialog(){
    showDialogBox(300, 120);
       $("#dialog_box").load("./templates/upload_dialog.php",function() {
                  $('#upload_dialog_close').bind("click", function(){
                         hideDialogBox();
                  });
    
                  var options = {
                     target:  '#upload_result',
                     success:  uploadComplete
                  };

                  $('#upload_form').ajaxForm(options);

       });
}

function showRegisterBox(){
       showDialogBox(500, 335);
       $("#dialog_box").load("./templates/agb_dialog.php",function() {
                  $('#dialog_close').bind("click", function(){
                         hideDialogBox();
                  });

                  $('#accept_agb').bind("click", function(){
                         showDialogBox(500,340);
                         $("#dialog_box").load("./templates/register_dialog.php",function() {
                                 $('#dialog_close').bind("click", function(){
                                     hideDialogBox();
                                  });

                                  var options = {
                                     target:  '#register_message',
                                     success: checkLoginResult
                                  };

                                  $('#user_register').ajaxForm(options);

                         });
                  });
       });
}

function checkLoginResult(){
   
    if($("#register_message").html() == "true"){
          showDialogBox(500, 150);
          $("#dialog_box").load("./ajaxElements/register/success.php",function() {
                     $('#dialog_close').bind("click", function(){
                         hideDialogBox();
                      });
          });
    }
}

function closeLoginOnSuccess(){
    if( $('#login_message').html() == "Login..."){

        //Verstecken des Anmelde & Registrieren Buttons
        $('#login_button_list').hide();
        $('#register_button_list').hide();
        $('#dialog_box').hide();
        $('#nav_user_name').load("session.php?getUserNameForMenu");
        $('#logout_button_list').show();
        $('#new_texture_button_list').show();

        //Anzeigen des Uploads
        hideDialogBox();
    }
}

function showInfoBox(inp){
    
    var id = "#"+inp.getAttribute('id')+" > .image_hover_div";
    var ownId = "#"+inp.getAttribute('id');
    var info = inp.getAttribute('id').split('_', 2);
    info = "#info_"+info[1];
    var left = Math.floor($(ownId).offset().left);
    var top = Math.floor($(ownId).offset().top);
    
    top = top + 152;
    top = top + "px";
    
    left = left + 2;
    left = left + "px";

    //$(id).css('display','block');
    $(id).fadeIn();

    $(info).css('top',top);
    $(info).css('left',left);
    //$(info).css('display','block');
    $(info).fadeIn();

    //alert(top + " <-> " +left);

}

function hideInfoBox(inp){
    var id = "#"+inp.getAttribute('id')+" > .image_hover_div";
    var info = inp.getAttribute('id').split('_', 2);
    info = "#info_"+info[1];

    //$(id).css('display','none');
    //$(info).css('display','none');

    $(id).fadeOut();
    $(info).fadeOut();

  
}

function showAdvanceFileDialog(info){
    showDialogBox(885,696);
    window.saved = false;
    if(info){
        //alert("INFO:"+info);
        var path = "./templates/detail.php?showId="+info;

        $("#dialog_box").load(path,function() {
            

            if($('#info_keywords').val() == ""){ 
                window.disabled = true;
                $("#close_details").css("background-color","white");
                $("#close_details").css("color","black");
                $("#result").html("<span style='color:red'>Es muss mindestens ein Tag eingegeben werden!</span>");
            }
            else{
                window.disabled = false;
                $("#close_details").bind("click", function(){
                        hideDialogBox();
                });
            }

             $('#info_keywords').bind('keypress', function(e){
                var test = $('#info_keywords').val()
                test = test.replace (/^\s+/, '').replace (/\s+$/, '');

                 if( test != "" ){
                    $("#close_details").css("background-color","black");
                    $("#close_details").css("color","gray");
                    $("#result").html("");
                    window.disabled = false;
                 }
                 else{
                      $("#close_details").css("background-color","white");
                      $("#close_details").css("color","black");
                      $("#result").html("<span style='color:red'>Es muss mindestens ein Tag eingegeben werden!</span>");

                      $("#close_details").unbind("click");
                      window.disabled = true;
                 }
             });

            //Tile Vorschau
            $("#show_tiles").bind("click", function(){
                   $('#tile').css("display","block");
                   var src = $(".prev_image").attr("src");
                   $('#tile').css('backgroundRepeat','repeat');
                   $('#tile').css('backgroundImage','url(' + src +')');
            });

            $("#tile").bind("click", function(){
                   $('#tile').css("display","none");
            });

            //show Texture
            $("#show_full").bind("click", function(){
                   $('#tile').css("display","block");
                   var src = $("#full_image").val();
                   $('#tile').css('backgroundImage','url(' + src +')');
                   $('#tile').css('backgroundRepeat','no-repeat');       
            });
            $(".prev_image").bind("click", function(){
                   $('#tile').css("display","block");
                   var src = $("#full_image").val();
                   $('#tile').css('backgroundImage','url(' + src +')');
                   $('#tile').css('backgroundRepeat','no-repeat');
            });

            //Klickbare Tags
             $(".tag").bind("click", function(){
                   var tag = $(this).html();
                   
                   if($('#search_panel').css("display") == "none"){
                       toggleSearch();
                   }

                   $("#search_panel_field").val($("#search_panel_field").val()+" "+tag);
                   $('#result').html("Tag zu Suche hinzugefügt");
             });

             //Klickbare farben
             $(".color_example").bind("click", function(){
                   var color = ($(this).css("background-color"));

                   //if($(".wheel").length == 0){
                   //    $('#colorpicker').farbtastic('#search_color_field');
                   //}

                   if($('#search_panel').css("display") == "none"){
                       toggleSearch();
                   }
                   
                   $("#search_color_field").val(color);
                   //$('#colorpicker').setColor($('#search_color_field').val());
                   $('#result').html("Farbe der Suche hinzugefügt");
             });

            //File löschen
            $("#delete_file").bind("click", function(){

                if($("#delete_file").html() == "Löschen ?"  ){
                    var idV =  $('#info_image_id').val();
                    $.post("delete.php", { id: idV},
                       function(data){
                         $('#result').html(data);

                                 var page = $('#current_page').html();
                                 page = parseInt(page);

                                 //Update normalview
                                 $('#image_box').html("<img src='./images/ajax-loader.gif' class='loading' alt='loading' />");
                                 $("#image_box").load("./templates/view_normal.php?page="+page,function() {

                                   //Registrieren der Info Funktions und des Mauskiks auf ein Thumb
                                   searchReady();
                                 });
                    });
                    hideDialogBox();
                }

                $("#delete_file").html("Löschen ?");
                $("#delete_file").css("background-color","white");
                $("#delete_file").css("color","black");

               
            });


            $("#save_details").bind("click", function(){

                var keywordsV = $('#info_keywords').val();
                keywordsV = keywordsV.replace (/^\s+/, '').replace (/\s+$/, '');

                var descriptionV =  $('#info_description').val();
                var idV =  $('#info_image_id').val();
                var licenceV =  $('#info_image_licence').val();

                if(keywordsV != ""){
                  window.saved = true;
                  $("#close_details").bind("click", function(){
                      hideDialogBox();
                  });
                }

                $.post("detail_save.php", { id: idV, keywords: keywordsV, description: descriptionV},
                   function(data){
                     $('#result').html(data);
                     //alert("Data Loaded: " + data);
                });
            });
        });
    }
}

function searchReady(){
   //Registrieren der Info Funktions und des Mauskiks auf ein Thumb
   $(".image_loader").hover(function () {showInfoBox(this)},function () {hideInfoBox(this)});

   $(".image_loader").bind("click", function(){
           var info = this.getAttribute('id').split('_', 2);
           info = info[1];
           showAdvanceFileDialog(info);
   });

   $(".pager").bind("click", function(){
                       var id = this.getAttribute('id').split("_");
                       showPage(id[1]);
   });
}

function showPage(id){
 
  $("#image_box").load("./templates/view_normal.php?page="+id,function() {
    searchReady();
  });
}


function getPrevImage(id){
  
    var list = $("#set").html();
    var array = list.split(",");
    var size = array.length;

    for(i = 0; i < size; i++ ){
        if(parseInt(array[i]) == id ){
            return array[i-1];
        }
    }
    return false;
}

function getNextImage(id){
    
    var list = $("#set").html();
    var array = list.split(",");
    var size = array.length;

    for(var i = 0; i < size; i++ ){
        if(array[i] == id ){
            return array[i+1];
        }
    }
    return false;

}


////////////////////////////////////////////////////////////////////////////////
//
//
//  Onload
//
//
////////////////////////////////////////////////////////////////////////////////

$(function() {

       //Versteken der Javascript Aktivieren Message
       $("#javascript_off").hide();

       //Alle Seiten Impressum
       $("#impressum_link").bind("click", function(){
           showDialogBox(500,380);
           $("#dialog_box").load("./templates/impressum_dialog.php",function(){

               $("#close_impressum_button").bind("click", function(){
                    hideDialogBox();
               });
           });
       });

       //Laden von Bug Report und hinzufügen der Funktionalität
       $('#bug_report_start').bind("click", function(){
           showDialogBox(450, 420);
           $("#dialog_box").load("./templates/bug_report.php",function() {
                  $('#dialog_close').bind("click", function(){
                         hideDialogBox();
                  });

                  var options = {
                     target:  '#bug_message'
                  };

                  $('#bug_form').ajaxForm(options);

           });
       });

       //Hinzufügen der Funktionalität

               //Alle Seiten - verstecken der Buttons
               $('#logout_button_list').hide();
               $('#new_texture_button_list').hide();

               //Entfernen des Impressum Links - bei Aktivierten JavaScript wird Dialog angezeigt
               $('#impressum_link').removeAttr('href');

               //Alle Seiten Login
               $("#login_button").bind("click", function(){
                       showLoginBox();
               });

               //Such Bereich Toggeln
               $("#search_button").bind("click", function(){
                       toggleSearch();
               });

               var searchOptions = {
                 target:  '#image_box',
                 success: searchReady
               };

               //suche abschiken
               $('#search_form').ajaxForm(searchOptions);

               //suche zurücksetzen
               $('#reset_search').bind("click", function(){
                   $('#search_panel_field').val("");
                   $('#search_color_field').val("Farbe");
                   $('#search_color_field').css("background-color","white");
                   $('#search_color_field').css("color","black");
                   $('#search_form').submit();
               });

               //farbfeld text löschen farbe bei klick
               $('#search_color_field').bind("click", function(){
                    if( $('#search_color_field').val() == "Farbe" || $('#search_color_field').val() == " " ){
                        $('#search_color_field').val("");
                    }  
               });

               //farbe setzen bei manueller eingabe
               $('#search_color_field').bind("change", function(){
                    $('#colorpicker').setColor($('#search_color_field').val());   
               });

               $('#search_color').bind("click", function(){
                        
                        showDialogBox(200, 230);
                        $('#search_color_field').val(" ");
                        $('#dialog_box').html("<div id='colorpicker'></div><input type='button' class='button' value='Schließen' id='color_close'>");
                        
                            $('#color_close').bind("click", function(){
                                hideDialogBox();
                            });

                            if($(".wheel").length == 0){
                                $('#colorpicker').farbtastic('#search_color_field');
                            }
                            else{
                                 hideDialogBox();
                            }
                      
                        //alert((".wheel").lenght);// $('#colorpicker').fadeOut();
               });

               //Alle Seiten Logout
               $("#logout_button").bind("click", function(){
                     showLogoutBox();
               });

               //Registrieren
               $("#register_button").bind("click", function(){
                        showRegisterBox();
               });



               //Upload
               $("#new_texture").bind("click", function(){
                       showUploadDialog();
               });
               
               $(".pager").bind("click", function(){
                       var id = this.getAttribute('id').split("_");
                       showPage(id[1]);
               });

               //Registrieren der Info Funktions und des Mauskiks auf ein Thumb
               $(".image_loader").hover(function () {showInfoBox(this)},function () {hideInfoBox(this)});

               $(".image_loader").bind("click", function(){
                       var info = this.getAttribute('id').split('_', 2);
                       info = info[1];
                       showAdvanceFileDialog(info);
               });


               //Tastatur Steuerung
              $('html').bind('keypress', function(e) {


                   if(window.disabled != true){

                    var done = false;
                    var imageId = 0;
                    //alert(e.keyCode);

                    //Esc
                    if(e.keyCode==27){
 
                        if( $('#tile').css("display") == "block"){
                            $('#tile').css("display","none");
                            done = true;
                        }

                        //Hide all dialogs (if one is open)
                        if(done == false){
                            hideDialogBox();
                        }
                    }
                   }

                    // nach rechts
                    if(e.keyCode==39){
                        //nächstes Bild 
                        
                        imageId = $(".prev_image").attr('alt');
                        imageId = parseInt(imageId);
                        imageId = getNextImage(imageId);
                        var nextImageId = '#info_'+(imageId);

                        if($(nextImageId).length != 0){
                            showAdvanceFileDialog((imageId));
                        }
                        else{
                            hideDialogBox();
                        }
                    }

                    //Nach links
                    if(e.keyCode==37){
                        //nächstes Bild
                        imageId = $(".prev_image").attr('alt');
                        imageId = parseInt(imageId);
                        imageId = getPrevImage(imageId);
                        var prevImageId = '#info_'+(imageId);

                        if($(prevImageId).length != 0){
                            showAdvanceFileDialog(imageId);
                        }
                        else{
                            hideDialogBox();
                        }
                    }
                });

               //Reset after Reload --> muss ganz am ende Stehen
               resetAfterReload();
               
       });

      



