  function replaceParent() {
    $(".replaceParent").each(
      function() {
        try {
          this.cData=new $.CData(this,"replaceParent");
          $(this).click(function() {
            var replace = $(this).parent();
            if ( this.cData.has("parent") ) {
              replace = eval(this.cData.get("parent"));
            }
            replace.html($("#ajaxLoading").html());
            var url = this.cData.get("url"); 
            $.get(
              url,
              {t: new Date().getTime()},
              function(data) {
                  replace.replaceWith(data);
                  replaceParent();
            });
            return false;
          });
        } catch(ex) {}
      }
    );    
  }
  
  function openComment(url, itemId, type, commentId, isLast, openAnswer) {
    $.get(url,
    {itemId: itemId, commentId: commentId, type: type, t: new Date().getTime()},
    function(data) {
      $("#commentContainer"+commentId).replaceWith(data);
      if (isLast) {
        $($('#commentContainer'+commentId).find('.commentBox')[0]).addClass('currient');
        if (openAnswer) $($('#commentContainer'+commentId).find('.writeAnswer')[0]).show();
      }
      replaceParent();
    });
  }
  
  function writeAnswer(el, id, pinned) {
    $(el).hide();
    var answerbox = $(el).parents(".commentContent").find(".writeAnswer");
    answerbox = $(answerbox.get(0));
    answerbox.show();
    answerbox.find(".errorBox").hide();
    var form = answerbox.find("form");
    // clear form data
    form.find("input:text,textarea").val("");
    form.find("label").removeClass("error");
    // set headline into form
    var headline = $('#commentHeader'+id).html();
    if (headline.substr(0,4) != 'Re: ') headline = 'Re: ' + headline;
    if (!pinned) form.find("input:text").val(headline); 
    return false;
  }
  function closeAnswer(el) {
    var answerbutton = $(el).parents(".writeAnswer").parent().find(".answerButton");
    answerbutton = $(answerbutton.get(0));
    answerbutton.show();
    $(el).parent().hide();
    return false;
  }
  function submitCommentLogin(form, targetId) {
     var url = $(form).attr("action");
     (url.indexOf("?") == -1) ? url += "?" : url += "&";
     url += $(form).serialize();
     $(targetId).load(url);
     return false;
  }
  
  function submitIsWiseLogin(el, url, parentId) {
     var replace = $(el).parents("#" + parentId);
     $.get(url,function(data) {
       replace.replaceWith(data);
       replaceParent();
       if (parentId.indexOf('comment') != -1) {
        updateRate(parentId.substr(parentId.indexOf('_')+1, parentId.length));
       }
     });
     return false;
  }
  
  function updateRate(elId) {
     $.get("/html/detail/comments/ratingBlock.html",
     {theCommentId : elId, t : new Date().getTime()},
     function(data) {
       $("#ratingBlock_"+elId).replaceWith(data);
     });
     return false;
  }
  
  function doSubmit (el, url, parentId, loginUrl) {
    //if(userLoggedIn) 
      submitIsWiseLogin(el, url, parentId);
  }
  
  function answerInputOk(el) {
     var id = $(el).attr("id");
     var value = $(el).val();
     var label = $("#label"+id);
     if (value != null && value.length > 0 ) {
       label.removeClass("error");
     } else {
       label.addClass("error");
       return false;
     }
     return true;
  }
  
  function submitTheForm(form, box) {
    var errorBox = box.find(".errorBoxJS");
    var foundError = false;
    // check form values
    $(form).find("input:text,textarea").each(
      function() {
        if (!answerInputOk(this)) {
          foundError = true;
        }
      }
    );
    // check if radios exist too
    if($(form).find("input:radio").length > 0) {
        if($(form).find("input:radio:checked").length > 0) {
          $('#label'+$(form).find("input:radio")[0].name).removeClass('error');
        } else {
          foundError = true;
          $('#label'+$(form).find("input:radio")[0].name).addClass('error');
        }
    }
    
    if (!foundError) {
      // build up url     
      var url = $(form).attr("action");
      //(url.indexOf("?") == -1) ? url += "?" : url += "&";
      //url += $(form).serialize();
      var fields = $(form).serializeArray();
        //if (!userLoggedIn) {
        //    open_popup(url, 460, 300);
        //    return false;
        //}
      $(form).find(".button, .red").removeClass('red').addClass('grey');
      $(form).find(".button, .red").unbind();

      // ajax call
      //$(box).load(url);
      $.post(url, fields, function(data){
        $(box).html(data);
      });
    } else {
      errorBox.find(".input").show();
      errorBox.show();
    }
    return false;
  }