$(document).ready(function(){
// init work
  $('#grayOutBox').fadeTo(0,0.4);
  $('#tmpDialog').hide();
  var ajaxEditID;
  statusRefresher();
  editOff();
  $('body').append('<div id="loadDialog"></div>');
  killDialog();
  $('#changePassword').click(function(){ajaxLoop(999,"loadChangePassword");});
  $('#createNewPage').click(function(){ajaxLoop(999,"XXXloadChangePassword");});

//alert(navigator.userAgent.toLowerCase());
//alert(jQuery.browser.version);

// toolBox
  $('#toggleEditmode').toggle(editOn,editOff);
  function editOn(){
    $('#toggleEditmode').empty().append('Edit is <b>on</b>');
    $('.editableDBContent') .tinymce()
    $('#event_0').show();
    $('#person_0').show();
    $('#Person_0').show();
    $('.editableEvent').addClass('editEventON').removeClass('editableEvent')
//      .attr('title','<span style="color:red;">Click to edit this<\/span>')
      .attr('title','Click to edit this')
      .Tooltip({track: true,delay: 0,opacity: 1})
      .click(function(){
        ajaxEditID=$(this).attr("id");
        ajaxLoop(999,"loadEditEventsPage");
      });    
//$('.editablePerson').filter('.td1').css('color','lime');
    $('.editablePerson').addClass('editPersonON').removeClass('editablePerson')
      .attr('title','Click to edit this')
      .Tooltip({track: true,delay: 0,opacity: 1})
      .click(function(){
        ajaxEditID=$(this).attr("id");
        if (ajaxEditID=="person_0" || ajaxEditID=="Person_0"){
          ajaxLoop(822,"");
        } else { ajaxLoop(999,"loadEditUserMenu"); }
      })
//      .find('a').attr('hrefDisabled',function(){var hr=$(this).attr('href');return(hr);}).removeAttr('href')
      .find('a').attr('hrefDisabled',function(){return($(this).attr('href'));}).removeAttr('href')
      ;


    if ($.browser.msie && $.browser.version<7){
      $('.editPersonON') .hover(
        function(){$(this).addClass('editHover');},
        function(){$(this).removeClass('editHover');})
      $('.editEventON') .hover(
        function(){$(this).addClass('editHover');},
        function(){$(this).removeClass('editHover');})
    }
    $('#content').focus();
  }
  function editOff(){
    $('#toggleEditmode').empty().append('Edit is <b>off</b>');
//if (!jQuery.browser.opera){
    $('.editableDBContent').tinymceRemove();
//} else {
//    $('.editableDBContent').tinymceRemoveX();
//}
    $('#event_0').hide();
    $('#person_0').hide();
    $('#Person_0').hide();
    $('.editEventON').addClass('editableEvent').removeClass('editEventON').unbind();
    $('.editPersonON').addClass('editablePerson').removeClass('editPersonON').unbind()
      .find('a').attr('href',function(){return($(this).attr('hrefDisabled'));}).removeAttr('hrefDisabled');
    $('#content').focus();
  }

  function killDialog(){
    $('.ui-dialog').empty().remove();
    $('body').append('<div id="tmpDialog"></div>');
    $('#tmpDialog').hide();
  }
  function ajaxLoop(ajaxStatus,ajaxStatusText){
//alert("DEBUG in ajaxLoop: "+ ajaxStatus + " " + ajaxStatusText);
    if ($('#grayOutBox').css('display')=='block'){	// is gray
      if ($('#loadDialog').html()!=""){			// update dialog if new is loaded
        var dialogWidth=$('#loadDialog').width() + 40;
        var dialogHeight=$('#loadDialog').height() + 50;
        var wnd = $(window), doc = $(document), top = doc.scrollTop(), left = doc.scrollLeft();
        top += Math.max(Math.floor((wnd.height() / 2) - (dialogHeight / 2)),0);
        left += Math.max(Math.floor((wnd.width() / 2) - (dialogWidth / 2)),0);
//        $('.ui-dialog').css('width',dialogWidth).css('height',dialogHeight).css('left',left).css('top',top);
        $('.ui-dialog').animate({width: dialogWidth,height:dialogHeight,left:left,top:top},700);
        var trans=$('#loadDialog').html();	// store content
        $('#loadDialog').empty();		// delete before insert to prevent double IDs
        $('#tmpDialog').html(trans);		// insert content
      }
    } else {	// not gray? -> make it gray
     if ($.browser.msie && $.browser.version<7){
       $('#grayOutBox').css('height',Math.max($(document).height(),$(window).height()))
       .css('position','absolute');
     }
     $('#tmpDialog').dialog().show().parent().parent();
     $('.ui-dialog-title').text($('#tmpDialog').attr('title'));
     $('.ui-dialog').css('z-index','1005').addClass('flora');
     $('.ui-dialog-titlebar-close').click(function(){
       $('#grayOutBox').stop();
       $('#grayOutBox').slideUp("fast");
       killDialog();
     });
     $('#grayOutBox').slideDown("slow",function(){ $('#tmpDialog').parent().parent().fadeIn(); });
    }

    var postMap="";
    switch (ajaxStatus) {
      case 200 :
        $('#cancel').click(function(){ $('.ui-dialog-titlebar-close').trigger('click'); });
        var mode=$('#ajaxHelper').val();
//alert("TEST  Mode in ajaxLoop:"+mode+" ("+ajaxStatus + " " + ajaxStatusText+")");
        if (mode == undefined){mode=ajaxStatusText;}
        switch (mode){
          case "Login":
            $('#loginSubmit').click(function(){ajaxLoop(800,"");});
            $('#loginUser').focus(); // geht nicht, weil der focus noch beim fadeIn ist ...
            break;
          case "Logout OK":
          case "Login OK":
            $('#statusLogin').text($('#tmpDialog').text());
            statusRefresher();
            $('.ui-dialog-titlebar-close').trigger('click');
            $('#statusLogin').css("color","#000");	// weil der event verschwunden ist...
            break;
          case "editEventForm":
            $('#editEventSubmit').click(function(){ajaxLoop(810,"");});
            break;
          case "Event DB updated":
            if (ajaxEditID=="event_0"){
              $('#event_0').after($('#tmpDialog').html());
            } else {
              $("#"+ajaxEditID).replaceWith($('#tmpDialog').html());
            }
            editOn();	//
            $('#tmpDialog').empty();
            $('.ui-dialog-titlebar-close').trigger('click');
            break;
          case "editUserMenu":
            $('#editUserMenuSubmitED').click(function(){ajaxLoop(820,"");});
            $('#editUserMenuSubmitEP').click(function(){ajaxLoop(824,"");});
            $('#editUserMenuSubmitER').click(function(){ajaxLoop(826,"");});
            break;
          case "editUserData":
            $('#editUserDataSubmit').click(function(){ajaxLoop(821,"");});
            if (ajaxEditID=="person_0" || ajaxEditID=="Person_0"){
              $('#backTo_editUserMenu').click(function(){ajaxLoop(822,"");});	//getNewUserName
            } else {
              $('#backTo_editUserMenu').click(function(){ajaxLoop(999,"loadEditUserMenu");});
            }
            break;
          case "editUserPhoto":
            $('#editUserPhotoSubmit').click(function(){ajaxLoop(825,"");});
            $('#backTo_editUserMenu').click(function(){ajaxLoop(999,"loadEditUserMenu");});
            break;
          case "editUserRole":
            $('#editUserRoleSubmit').click(function(){ajaxLoop(827,"");});
            if (ajaxEditID=="person_0" || ajaxEditID=="Person_0"){
              $('#backTo_editUserMenu').attr('disabled','disabled');
//              $('#backTo_editUserMenu').click(function(){ajaxLoop(820,"");});	//loadEditUserData
//alert("added eventhandler 820 to back-button");
            } else {
              $('#backTo_editUserMenu').click(function(){ajaxLoop(999,"loadEditUserMenu");});
            }
            break;
          case "Person DB updated":
//            $("#"+ajaxEditID).replaceWith($('#tmpDialog').html());
            $("#"+ajaxEditID).html($('#tmpDialog').html());
            editOn();	//
            $('.ui-dialog-titlebar-close').trigger('click');
            break;
          case "Person inserted":
            $('#person_0').after($('#tmpDialog').html());
            $('#Person_0').after($('#tmpDialog').html());
            ajaxLoop(826,"");		//edit role
            break;
          case "checkNewUserNameDouble":
            $('#checkNewUserNameDoubleSubmit').click(function(){ajaxLoop(828,"");});
            $('#backTo_editUserMenu').click(function(){ajaxLoop(822,"");});
            break;
          case "checkNewUserName":
            $('#FNP_Forename').focus(); 
            $('#checkNewUserNameSubmit').click(function(){ajaxLoop(823,"");});
            break;
          case "User Role updated":
            editOn();	//
            $('.ui-dialog-titlebar-close').trigger('click');
            break;
          case "changePassword":
            $('#FCP_pass').focus();
            $('#FCP_passSubmit').click(function(){
              if ($('#FCP_pass').val()==$('#FCP_pass2').val()){
                if($('#FCP_pass').val().length>4){
                  $('#FCP_pass2').val("");
                  var pass=MD5($('#FCP_pass').val());
                  $('#FCP_pass').val(pass);
                  document.getElementById("FCP").submit();
                } else {
                  alert ("Password length must be greater than 4");
                }
              } else {
                alert ("Passwords mismatch - try again");
              }
              $('#FCP_pass2').val("");
              $('#FCP_pass').val("");
              $('#FCP_pass').focus();
            });
            $('#tmpDialog').attr("title","Change password");
            $('.ui-dialog-title').text($('#tmpDialog').attr('title'));
            break;
          case "Login disabled":
            break;
          case "showRequest":
            break;
          default:
            alert("Unhandelt Mode in ajaxLoop:"+mode+" ("+ajaxStatus + " " + ajaxStatusText+")");
            break;
        }
        return(true);
        alert("dont show this ...");
        break;
      case 400 :
      case 401 :
      case 402 :
      case 403 :
      case 500 :
          $('#tmpDialog').text(ajaxStatusText);
        break;
      case  800 :	// internal trigger "submitLoginPage"
        var phpidCooPos=document.cookie.search(/PHPSESSID/);
        if (phpidCooPos != -1){
          var user=$('#loginUser').val();
          var pass=MD5(document.cookie.substring(phpidCooPos+10,phpidCooPos+42)+MD5($('#loginPass').val()));
          postMap={
            type:"submitLoginPage",
            user:user,
            pass:pass
          };
        } else { alert("Can't submit logindata - check your cookie settings");return(false);}
        break;
      case  810 :	// internal trigger "submitEditEventsPage"
        var FEV_extra = new Array;
        for ( var i = 0, length = $('input[@id^="FEV_extra_"]').length; i < length; i++ ){
          FEV_extra[i]= $('#FEV_extra_'+i).val();
        }
        postMap={
          type:"submitEditEventsPage",
          FEV_announceUp:$('#FEV_announceUp').val(),
          FEV_announceDown:$('#FEV_announceDown').val(),
          FEV_ifipEventNumber:$('#FEV_ifipEventNumber').val(),
          'FEV_Contact[]':$('#FEV_Contact').val(),
          'FEV_unit[]':$('#FEV_unit').val(),
          'FEV_extra[]':FEV_extra,
          FEV_url:$('#FEV_url').val(),
          FEV_locationCountry:$('#FEV_locationCountry').val(),
          FEV_longName:$('#FEV_longName').val(),
          FEV_dateBegin:$('#FEV_dateBegin').val(),
          FEV_dateEnd:$('#FEV_dateEnd').val(),
          FEV_locationCity:$('#FEV_locationCity').val(),
          FEV_shortName:$('#FEV_shortName').val(),
          FEV_type:$('#FEV_type').val() 
        };
        break;
      case  820 :	// internal trigger "editUserMenuSubmitED" (data)
        postMap={id:ajaxEditID,type:"loadEditUserData"};
//alert(ajaxEditID);
        $('#tmpDialog').attr("title","Edit Userdata").text("Loading ...");
        break;
      case  821 :	// internal trigger "editUserDataSubmit"
        postMap={
          type:"submitEditUserData",
          FPD_Title:$('#FPD_Title').val(),
          FPD_Forename:$('#FPD_Forename').val(),
          FPD_Surname:$('#FPD_Surname').val(),
          FPD_eMail:$('#FPD_eMail').val(),
          FPD_persUrl:$('#FPD_persUrl').val(),
          FPD_Institution:$('#FPD_Institution').val(),
          FPD_instUrl:$('#FPD_instUrl').val(),
          FPD_tel:$('#FPD_tel').val(),
          FPD_mobile:$('#FPD_mobile').val(),
          FPD_Fax:$('#FPD_Fax').val(),
          FPD_instAdress1:$('#FPD_instAdress1').val(),
          FPD_instAdress2:$('#FPD_instAdress2').val(),
          FPD_instAdress3:$('#FPD_instAdress3').val(),
          FPD_Country:$('#FPD_Country').val()
        };
        $('#tmpDialog').attr("title","New User").text("Submiting ...");
        break; 
      case  822 :	//  trigger "newUserData" (new user)
        postMap={id:ajaxEditID,type:"getNewUserName"};
        $('#tmpDialog').attr("title","New User").text("Loading ...");
        break; 
      case  823 :	// internal trigger "checkNewUserNameSubmit" (new user)
        postMap={
          type:"checkNewUserName",
          id:ajaxEditID,
          FNP_Forename:$('#FNP_Forename').val(),
          FNP_Surname:$('#FNP_Surname').val()
        };
        $('#tmpDialog').attr("title","New User").text("Submiting ...");
        break; 
      case  824 :	// internal trigger "editUserMenuSubmitEP" (photo)
        postMap={id:ajaxEditID,type:"loadEditUserPhoto"};
        break;
      case  825 :	// internal trigger "editUserPhotoSubmit" (photo)
// geht noch nicht. wie schicke ich eine datei mit ajax?...
        postMap={id:ajaxEditID,type:"submitEditUserPhoto"};
        break;
      case  826 :	// internal trigger "editUserMenuSubmitER" (role)
        postMap={id:ajaxEditID,type:"loadEditUserRole"};
        $('#tmpDialog').attr("title","Edit Userroles").text("Loading ...");
        break;
      case  827 :	// internal trigger "editUserRoleSubmit"
        var FPR_data = new Array;
        var radio;
        for (var i=0; i<= document.getElementById("FPR_data_count").value;i++){
          radio='FPR_data_'+i;
          for (var j=0;j<3;j++){
            if (document.getElementsByName(radio)[j].checked == true) {FPR_data[i]=document.getElementsByName(radio)[j].value;}
          }
        }
        postMap={
          type:"submitEditUserRole",
          'FPR_data[]':FPR_data,
          FPR_unit:$('#FPR_unit').val(),
          FPR_function:$('#FPR_function').val()
        };
        $('#tmpDialog').attr("title","New User").text("Submiting ...");
        break;
      case  828 :	// internal trigger "checkNewUserNameDoubleSubmit"
        var pid=0;
        for (var j=0;j<document.getElementsByName('FCN_id').length;j++){
          if (document.getElementsByName('FCN_id')[j].checked == true){pid=document.getElementsByName('FCN_id')[j].value;}
        }
        if (pid==0){postMap={ id:"person_0",type:"loadAfterCheckNewUserNameDouble"};}
        else {postMap={id:"person_"+pid,type:"loadEditUserRole"};}
        break;
      case 999 :
        postMap={ type:ajaxStatusText };
        switch (ajaxStatusText) {
          case "loadLoginPage":
            $('#tmpDialog').attr("title","IFIP Web login").text("Loading ...");
            $('#statusLogin').css("color","orange");
            $('.ui-dialog-titlebar-close').click(function(){ $('#statusLogin').css("color","#000"); }); // geht nicht?
          break;
          case "loadEditEventsPage":
            postMap={id:ajaxEditID,type:ajaxStatusText};
            $('#tmpDialog').attr("title","Edit window").text("Loading ...");
          break;
          case "loadEditUserMenu":
            $('#tmpDialog').attr("title","Edit User").text("Loading ...");
          break;
        }
        $('#tmpDialog').text("Loading ...");
        break;
      default:
        alert("Fehler in ajaxLoop (main): "+ ajaxStatus + " " + ajaxStatusText);
        break;
    }
    $('.ui-dialog-title').text($('#tmpDialog').attr('title'));
// mache ajax
    $('#loadDialog').empty().hide()
      .load("/ajax.php",postMap,
        function(txt,status, XMLHttpRequest){ ajaxLoop(XMLHttpRequest.status,XMLHttpRequest.statusText); });

  }

  function statusRefresher(){
    var tip;
    if($('#statusLogin').text()=="Not logged in"){
//after logout
      tip='Click here to <span style="color:green;">login<\/span>';
      editOff();
      $('#toolBox').hide();
    }else{
//after login
      tip='Click here to <span style="color:red;">logout<\/span>';
//      editOn();
      $('#toolBox').show();
    }
    $('#statusLogin')
      .attr('title',tip)
      .Tooltip({track: true,delay: 0,opacity: 1});
  }

// loginbox machen
  $('#statusLogin').click(function(){ ajaxLoop(999,"loadLoginPage"); });


// schreibt die statuszeile nach ajax-request
  $('#statusValue')
    .ajaxSend(function(){ $(this).text("Send .. waiting").css("color","orange"); })
    .ajaxComplete(function(event, XMLHttpRequest){
      $(this).text(XMLHttpRequest.statusText);
      if(XMLHttpRequest.status==200){$(this).css("color","green");}
      else { $(this).css("color","red"); }
    });

  $(".nav") .superfish({ animation : { opacity:"show", height:"show" } });
  $(".nav *") .Tooltip({track: true,delay: 0,opacity: 1,showURL: false,positionLeft:true, left: -30,top:1});

  $(".doTooltip").Tooltip({track: true,delay: 0,opacity: 1,showURL: false});
  $(".doTooltipRight").Tooltip({track: true,delay: 0,opacity: 1,showURL: false,positionLeft:true,left:-40,top:-40});



// test
  $('#clicktest').click(function(){
    $("#"+ajaxEditID).text("asdasdasdasd");
  });

//    tip='Click here to <span style="color:red;">logout<\/span>';


// reste...

$('#a').click(function(){ $('#xli1').clone().prependTo($('#testUL')); });
$('#b').click(function(){ $('#xli2').clone().prependTo($('#testUL')); });
//$('.knopf').prepend("XX");$('.knopf').prepend("XX");$('.knopf').prepend("XX");$('.knopf').prepend("XX");

  $('#c').click(function(){ 
    $('#xli1').clone().appendTo($('#testUL')); 
    $('#xli2').clone().appendTo($('#testUL')); 
    $('#xli3').clone().appendTo($('#testUL')); 
    $('#xli11').clone().appendTo($('#testUL')); 
    $('#xli9').clone().appendTo($('#testUL')); 
  });


});
