// require xlib.js
// require ajaxupdate.js


var Blog = {

  _onMessageClose: null,

  Initialize: function() {

    xLib.onLoad(function(){
      var loadMain = xLib.createEventCallback(function(){document.location.href='http://beta-blog.net/'});
      xLib.addHandler(xLib.$('bb1-banner_1'),'click',loadMain);
      xLib.addHandler(xLib.$('bb1-banner_2'),'click',loadMain);
      xLib.addHandler(xLib.$('bb1-banner_3'),'click',loadMain);
      xLib.addHandler(xLib.$('bb1-banner_4'),'click',loadMain);
    });

    xLib.onLoad(function(){
      xLib.addHandler(xLib.$('message-layer-close'),'click',function(){Blog.messageHide()});
    });


    // AjaxUpdate

    AjaxUpdate.Case.enable();

    AjaxUpdate.mapUri = function(uri,id) {
      switch(id) {
        case 'comment-form-reply':
          return uri;
          break;
      }
      return null;
    };

    AjaxUpdate.CaseObject.addSharedEventCallback(
      AjaxUpdate.Event.Started,
      function(event,sender,object) {
        document.getElementById('progress-layer').style.visibility = 'visible';
      });

    AjaxUpdate.CaseObject.addSharedEventCallback(
      AjaxUpdate.Event.Succeeded,
      function(event,sender,object) {
        document.getElementById('progress-layer').style.visibility = 'hidden';
      });

    AjaxUpdate.CaseObject.addSharedEventCallback(
      AjaxUpdate.Event.Canceled,
      function(event,sender,object) {
        document.getElementById('progress-layer').style.visibility = 'hidden';
      });


    xLib.Initialize();

  },

  messageShow: function(msg,error,onClose) {
    with (document.getElementById('message-layer-message')) {
      innerHTML = msg;
      className = error ? 'error' : 'success';
    }
    document.getElementById('message-layer').style.display = 'block';
    Blog._onMessageClose = onClose || null;
  },

  messageHide: function() {
    document.getElementById('message-layer').style.display = 'none';
    if (typeof Blog._onMessageClose === 'function')
      Blog._onMessageClose();
    Blog._onMessageClose = null;
  }

};


// CommentScript
var CommentScript = {

  replytoText: 'replying to \<a href=\"#comment-__PARENT__\" onclick=\"location.href=this.href; return false\"\>comment from __AUTHOR__\<\/a\>',

  recaptchaOptions: {
    theme: 'white'
  },

  __visible: false,

  open: function(entryId,replytoId,replytoAuthor) {
    if (entryId) {
      CommentScript.setReplyto(replytoId,replytoAuthor);
      if (!CommentScript.__visible) {
        var captcha = document.getElementById("recaptcha_container");
        Recaptcha.create("6Lc_WAYAAAAAAJISnDDnuBrK-WfUtThRjV2w5IHu",captcha,CommentScript.recaptchaOptions);
        CommentScript.__visible = true;
        Collapsible2.getInstance('comment-new-win').show();
      }
      var h = document.location.href;
      h = h.replace(/#.*$/,'');
      document.location.href = h+'#comment-new';
    }
  },

  cancel: function() {
    if (CommentScript.__visible) {
      CommentScript.setReplyto();
      Recaptcha.destroy();
      CommentScript.__visible = false;
      Collapsible2.getInstance('comment-new-win').hide();
      var h = document.location.href;
      document.location.href = h.replace(/#.*$/,'');
    }
  },

  setReplyto: function(replytoId,replytoAuthor) {
    var row = document.getElementById('comment-replyto-row');
    var lbl = document.getElementById('comment-replyto-label');
    var chk =  document.getElementById('comment-replyto');
    if (replytoId) {
      var t = CommentScript.replytoText;
      t = t.replace(/__PARENT__/, replytoId);
      t = t.replace(/__AUTHOR__/, replytoAuthor);
      lbl.innerHTML = t;
      chk.value = replytoId;
      chk.checked = true;
      row.style.display = '';
    } else {
      lbl.innerHTML = '';
      chk.value = '';
      row.style.display = 'none';
    }
  },

  setError: function(field,value) {
    var lbl = document.getElementById('comment-'+field+'-label');
    var msg = document.getElementById('comment-'+field+'-error');
    if (value) {
      if (lbl) lbl.className = 'error';
      if (msg) msg.style.visibility = 'visible';
    } else {
      if (lbl) lbl.className = '';
      if (msg) msg.style.visibility = 'hidden';
    }
  },

  setCaptchaError: function(msg) {
    var lbl = document.getElementById('comment-captcha-error');
    if (msg) {
      lbl.innerHTML = msg;
      Recaptcha.reload();
      if (focus) Recaptcha.focus_response_field();
    } else {
      lbl.innerHTML = '';
    }
  },

  setFocus: function(field) {
    if (field == 'captcha')
      Recaptcha.focus_response_field();
    else
      document.getElementById('comment-'+field).focus();
  }

};


Blog.Collapsible = {

  label_on:  '[+] show code',
  label_off: '[-] hide code',

  create: function(id,collapsed) {
    var link = xLib.$(id);
    var subject = link.parentNode.nextSibling;
    return Collapsible2.create(id,subject,!collapsed,true)
      .addTrigger(id,'Toggle')
      .setHandler('Collapse', function(){xLib.$(id).innerHTML = Blog.Collapsible.label_on})
      .setHandler('Expand', function(){xLib.$(id).innerHTML = Blog.Collapsible.label_off});
  }
};


// http://groups.google.com/group/comp.lang.javascript/browse_thread/thread/2b389e61c7b951f2/99b5f1bee9922c39?lnk=gst&q=(doc+%3D+node.ownerDocu%20ment)+%26%26+(win+%3D+doc.defaultView)&rnum=1&hl=e%20n#99b5f1bee9922c39
/*
function selectNode (node) {
   var selection, range, doc, win;
   if ((doc = node.ownerDocument) && (win = doc.defaultView) && typeof
win.getSelection != 'undefined' && typeof doc.createRange != 'undefined'
&& (selection = window.getSelection()) && typeof
selection.removeAllRanges != 'undefined') {
     range = doc.createRange();
     range.selectNode(node);
     selection.removeAllRanges();
     selection.addRange(range);
   }
   else if (document.body && typeof document.body.createTextRange !=
'undefined' && (range = document.body.createTextRange())) {
     range.moveToElementText(node);
     range.select();
   }
}*/

// common x-browser library
//var xLib = {};

/*
xLib.elem = function(id) {
  return document.getElementById(id);
};

if (window.HTMLElement && window.addEventListener) { // w3c DOM Core Level 2

  xLib.createEventCallback = function(handler) {
    return function(e) {
			e.stopPropagation();
			if (!handler(e)) e.preventDefault();
    };
  };

  xLib.addHandler = function(node,event,handler) {
    node.addEventListener(event,handler,false);
  };

  xLib.removeHandler = function(node,event,handler) {
    node.removeEventListener(event,handler,false);
  };

} else if (window.ActiveXObject && window.attachEvent) { // MSIE

  xLib.createEventCallback = function(handler) {
    return function() {
      var e = window.event;
			e.cancelBubble = true;
			e.returnValue = handler(e);
    };
  };

  xLib.addHandler = function(node,event,handler) {
    node.attachEvent('on'+event,handler);
  };

  xLib.removeHandler = function(node,event,handler) {
    node.detachEvent('on'+event,handler);
  };

}

xLib.onLoad = function(handler) {
  xLib.addHandler(window,'load',handler);
};


xLib.select = function(node) {
   var selection, range, doc, win;
   if ((doc = node.ownerDocument) && (win = doc.defaultView) && typeof
win.getSelection != 'undefined' && typeof doc.createRange != 'undefined'
&& (selection = window.getSelection()) && typeof
selection.removeAllRanges != 'undefined') {
     range = doc.createRange();
     range.selectNode(node);
     selection.removeAllRanges();
     selection.addRange(range);
   }
   else if (document.body && typeof document.body.createTextRange !=
'undefined' && (range = document.body.createTextRange())) {
     range.moveToElementText(node);
     range.select();
   }
};




*/


