/*
 * jQuery hashchange event - v1.2 - 2/11/2010
 * http://benalman.com/projects/jquery-hashchange-plugin/
 */
(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);

$.hash = function(p1, p2){
  var getHash = function(){
     var hashObj = {};
     var hash = document.location.href;
     if (hash.indexOf("#") == -1) hash = '';
     else hash = hash.replace(/^.*#/, '');
     if (!hash) return hashObj;
     var split = hash.split('&');
     for (var i in split){
        var t = split[i].split('=');
        t[0] = decodeURIComponent(t[0]);
        if (t[1]) t[1] = decodeURIComponent(t[1]);
        else t[1] = '';
        if (t[0] && !t[1]) hashObj["val"] = t[0];
        else if (t[0]) hashObj[t[0]] = t[1];
     }
     return hashObj;
  }
  var setHash = function(obj){
     var hash = '';
     for (var i in obj){
        var name = encodeURIComponent(i);
        var value = obj[i];
        if (name == "val" && value) hash += value+"&";
        else if (name && value) hash += name+"="+encodeURIComponent(value)+"&";
        else if (name != "val" && !value) hash += name+"&";
     }
     hash = hash.substring(0, hash.length-1);
     hash = '#'+hash;
     document.location.href = document.location.href.replace(/#.*$/, '')+hash;
     return hash;
  }
  if (p1 == 'refresh'){
    var func = $(window).data("func");
    func.call(this, getHash());
    return false;
  }
  if (typeof(p1) == 'string' && typeof(p2) == 'string'){
    var hashObj = getHash();
    hashObj[p1] = p2;
    setHash(hashObj);
  }
  if (typeof(p1) == 'object'){

    if (p2) setHash(p1);
    else {      var hashObj = getHash();
      hashObj = $.extend(hashObj, p1);
      setHash(hashObj);
    }
  }
  if (typeof(p1) == 'string' && !p2){
    var hashObj = getHash();
    return hashObj[p1];
  }
  if (typeof(p1) == 'function' && !p2){
    $(window).bind('hashchange', function(){p1.call(this, getHash())});
    $(document).ready(function(){p1.call(this, getHash(), true)});
    $(window).data("func", p1);
  }
}
$.hashChange = function(func){$.hash(func)}
$.changeHash = function(func){$.hash(func)}
