jQuery.noConflict();

// Create the eviesays namespace
//   throw an error is there is a conflict
var eviesays;
if(!eviesays) eviesays = {};
else if(typeof eviesays != "object")
	throw new Error("eviesays already exists and is not an object");

eviesays.baseURL = "http://widget.eviesays.com";
eviesays.styleURL = "http://widget.eviesays.com";
eviesays.title = "Event Calendar";
eviesays.what = "";
eviesays.when = "";
eviesays.where = "";
eviesays.priority = "";
eviesays.version = "";
eviesays.parameters = "";
eviesays.popup = false;

eviesays.showWidget = function (eid,version) {
	if( !eviesays.version ) {
		alert( "Invalid version ID for Eviesays calendar" );
		return 0;
	}
        if (eviesays.popup) {
          jQuery.facebox.init();
        }
	eviesays.includeCSS(eviesays.styleURL + '/style/widget.css');
	var request = new eviesays.Xss.HttpRequest();
	eviesays.parameters = "/version/" + eviesays.version;
	if( eviesays.title ) {
		eviesays.parameters += "/title/" + eviesays.title;
	}
	if( eviesays.what ) {
		eviesays.parameters += "/what/" + eviesays.what;
	}
	if( eviesays.when ) {
		eviesays.parameters += "/when/" + eviesays.when;
	}
	if( eviesays.where ) {
		eviesays.parameters += "/where/" + eviesays.where;
	}
	if( eviesays.priority ) {
		eviesays.parameters += "/priority/" + eviesays.priority;
	}
	request.open("GET", eviesays.baseURL + "/widget"+eviesays.parameters+".html", true);
	request.onreadystatechange=function() {
		if(request.readyState==4) {
			jQuery('#'+eid).html(request.responseText);
		}
	};
	request.send(null);
  return false;
};

eviesays.popupCalDate = function (date,version) {
	if( !eviesays.version ) {
		alert( "Invalid version ID for Eviesays calendar" );
	}
        if (jQuery.facebox.settings.inited) {
          jQuery.facebox(
            function($) {
	      var request = new eviesays.Xss.HttpRequest();
	      request.open("GET", eviesays.baseURL + "/widget/action/popup/when/"+date+eviesays.parameters+".html", true);
	      request.onreadystatechange=function() {
	      if(request.readyState==4) {
		jQuery.facebox(request.responseText);
	      }
	    };
	      request.send(null);
	    });
        } else if (eviesays.popup) {
          jQuery.facebox.init();
          eviesays.popupCalDate(date,version);
        }
};

eviesays.toCalDate =	function(date) {
	window.location = eviesays.baseURL + "/search/when/"+date+eviesays.parameters+".html";
};

eviesays.clickCalDate = function (date) {
  (eviesays.popup) ? eviesays.popupCalDate(date) : eviesays.toCalDate(date);
};

eviesays.createCookie = function (name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
};

eviesays.readCookie = function (name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
};

eviesays.eraseCookie = function (name) {
	createCookie(name,"",-1);
};

/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Benoit Asselin | http://www.ab-d.fr/ */
eviesays.includeCSS = function (p_file) {
	var v_css  = document.createElement('link');
        v_css.rel = 'stylesheet';
	v_css.type = 'text/css';
	v_css.href = p_file;
	document.getElementsByTagName('head')[0].appendChild(v_css);
};

/* XssHttpRequest version 1.0
 * (c) 2005 Jeffrey Sambells <info@jeffreysambells.com>
 *
 * XssHttpRequest is freely distributable under the terms of an MIT-style license.
 * For details, see the XssHttpRequest web page: http://jeffreysambells.com/XssHttpRequest
 */

eviesays.Xss = {
	HttpRequestCount: 0,
	HttpRequestWatchList: []
};
eviesays.Xss.X = function(){this.ins=++eviesays.Xss.HttpRequestCount;this.u=null;this.so=null;this.w=null;this.wc=0;this.to=30;this.responseText=null;this.responseXML=null;this.status=null;this.readyState=0;};
eviesays.Xss.X.prototype.onreadystatechange=function(){};
eviesays.Xss.X.prototype.onerror=function(){};
eviesays.Xss.X.prototype.onload=function(){};
eviesays.Xss.X.prototype.ss=function(s){this.status=s;};
eviesays.Xss.X.prototype.srs=function(a){if(this.readyState<a||a==0){this.readyState=a;this.onreadystatechange();if(this.readyState=='2'){this.srs(3);eval("if(typeof XssHttpRequest"+this.ins+"Loaded!='undefined'){this.responseText=XssHttpRequest"+this.ins+"Loaded;this.ss('200');}else{alert('invalidresponsefromserver.');}");this.so.parentNode.removeChild(this.so);this.srs(4);this.onload();}}};
eviesays.Xss.X.prototype.open=function(m,u,n){this.u=u;this.so=document.createElement('script');this.so.setAttribute('id','XssHttpRequest'+this.ins);if(navigator.userAgent.indexOf('Safari')){this.so.setAttribute('charset','utf-8');}};
eviesays.Xss.X.prototype.send=function(){this.srs(1);this.so.setAttribute('type','text/javascript');this.so.setAttribute('src',this.u+((this.u.indexOf('?')!=-1)?'&':'?')+'XssHttpRequestVar=XssHttpRequest'+this.ins+'Loaded');this.so=document.getElementsByTagName('head')[0].appendChild(this.so);eviesays.Xss.HttpRequestWatchList[this.ins]=this;this.w=setInterval('eviesays.Xss.HttpRequestWatchList['+this.ins+'].wl()',1000);};
eviesays.Xss.X.prototype.wl=function(){this.wc++;eval("if(typeof XssHttpRequest"+this.ins+"Loaded!='undefined'){clearInterval(this.w);this.srs(2);}else if(this.wc==this.to){clearInterval(this.w);this.onerror('TimedOut');}");};
eviesays.Xss.HttpRequest = eviesays.Xss.X;

/*
 * Facebox (for jQuery)
 * version: 1.0 (12/19/2007)
 * @requires jQuery v1.2 or later
 *
 * Examples at http://famspam.com/facebox/
 *
 * Licensed under the MIT:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright 2007 Chris Wanstrath [ chris@ozmm.org ]
 */
(function($) {
  $.facebox = function(data) {
  //  $.facebox.init();
    $.facebox.loading();
    $.isFunction(data) ? data.call() : $.facebox.reveal(data);
  };

  $.facebox.settings = {
    loading_image : eviesays.baseURL + '/image/facebox/loading.gif',
    close_image   : eviesays.baseURL + '/image/facebox/closelabel.png',
    image_types   : [ 'png', 'jpg', 'jpeg', 'gif' ],
    facebox_html  : '\
  <div id="facebox" style="display:none;"> \
    <div class="evie_popup"> \
      <table> \
        <tbody> \
          <tr> \
            <td class="tl"/><td class="b"/><td class="tr"/> \
          </tr> \
          <tr> \
            <td class="b"/> \
            <td class="body"> \
              <div class="content"> \
              </div> \
              <div class="footer"> \
                <a href="#" class="close"> \
                  <img src="" title="close" class="close_image" /> \
                </a> \
              </div> \
            </td> \
            <td class="b"/> \
          </tr> \
          <tr> \
            <td class="bl"/><td class="b"/><td class="br"/> \
          </tr> \
        </tbody> \
      </table> \
    </div> \
  </div>'
  };

  $.facebox.loading = function() {
    if ($('#facebox .loading').length == 1) return true;

    $('#facebox .content').empty();
    $('#facebox .body').children().hide().end().
      append('<div class="loading"><img src="'+$.facebox.settings.loading_image+'"/></div>');

    var pageScroll = $.facebox.getPageScroll();
    $('#facebox').css({
      top:	pageScroll[1] + ($.facebox.getPageHeight() / 10),
      left:	pageScroll[0]
      }).show();

    $(document).bind('keydown.facebox', function(e) {
      if (e.keyCode == 27) $.facebox.close();
                     });
    return false;
  };

  $.facebox.reveal = function(data, klass) {
    if (klass) $('#facebox .content').addClass(klass);
    $('#facebox .content').append(data);
    $('#facebox .loading').remove();
    $('#facebox .body').children().fadeIn('normal');
  };

  $.facebox.close = function() {
    $(document).unbind('keydown.facebox');
    $('#facebox').fadeOut(function() {
                            $('#facebox .content').removeClass().addClass('content');
                          });
    return false;
  };

  $.fn.facebox = function() {
    $.facebox.init();

    var image_types = $.facebox.settings.image_types.join('|');
    image_types = new RegExp('\.' + image_types + '$', 'i');

    function click_handler() {
      $.facebox.loading(true);

      // support for rel="facebox[.inline_popup]" syntax, to add a class
      var klass = this.rel.match(/facebox\[\.(\w+)\]/);
      if (klass) klass = klass[1];

      // div
      if (this.href.match(/#/)) {
        var url    = window.location.href.split('#')[0];
        var target = this.href.replace(url,'');
        $.facebox.reveal($(target).clone().show(), klass);

      // image
      } else if (this.href.match(image_types)) {
        var image = new Image();
        image.onload = function() {
          $.facebox.reveal('<div class="image"><img src="' + image.src + '" /></div>', klass);
        };
        image.src = this.href;

      // ajax
      } else {
        $.get(this.href, function(data) { $.facebox.reveal(data, klass); });
      }

      return false;
    }

    this.click(click_handler);
    return this;
  };

  $.facebox.init = function() {
    if ($.facebox.settings.inited) {
      return true;
    } else {
      $.facebox.settings.inited = true;
    }

    $('body').append($.facebox.settings.facebox_html);

    var preload = [ new Image(), new Image() ];
    preload[0].src = $.facebox.settings.close_image;
    preload[1].src = $.facebox.settings.loading_image;

    $('#facebox').find('.b:first, .bl, .br, .tl, .tr').each(
      function() {
        preload.push(new Image());
        preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1');
      });

    $('#facebox .close').click($.facebox.close);
    $('#facebox .close_image').attr('src', $.facebox.settings.close_image);
    return false;
  };

  // getPageScroll() by quirksmode.com
  $.facebox.getPageScroll = function() {
    var xScroll, yScroll;
    if (self.pageYOffset) {
      yScroll = self.pageYOffset;
      xScroll = self.pageXOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
      yScroll = document.documentElement.scrollTop;
      xScroll = document.documentElement.scrollLeft;
    } else if (document.body) {// all other Explorers
      yScroll = document.body.scrollTop;
      xScroll = document.body.scrollLeft;
    }
    return new Array(xScroll,yScroll);
  };

  // adapter from getPageSize() by quirksmode.com
  $.facebox.getPageHeight = function() {
    var windowHeight;
    if (self.innerHeight) {	// all except Explorer
      windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
      windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
      windowHeight = document.body.clientHeight;
    }
    return windowHeight;
  };
})(jQuery);