var Setster;
if(Setster == undefined) {
  Setster = {};
}

if(!Setster.initialized) {
  
  Setster.gId = function(id) {
    return document.getElementById(id);
  };

  Setster.hasClassName = function(element, className) {
    var elementClassName = element.className;

    return (elementClassName.length > 0 && (elementClassName == className ||
      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
  };

  Setster.addClassName = function(element, className) {
    if (!Setster.hasClassName(element, className))
      element.className += (element.className ? ' ' : '') + className;
    return element;
  };

  Setster.removeClassName = function(element, className) {
    var newClass = Setster.strip(element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' '));
    element.className = newClass;
    return element;
  };

  Setster.strip = function(string) {
    return string.replace(/^\s+/, '').replace(/\s+$/, '');
  };
  
  Setster.add_css = function(css_content) {  	
    var head = document.getElementsByTagName('head')[0];
    var style = document.createElement('style');
    style.type = 'text/css';
    
    if(style.styleSheet) {
      style.styleSheet.cssText = css_content;
    } else {
      rules = document.createTextNode(css_content);
      style.appendChild(rules);
    }
    head.appendChild(style);
  }
  
 
  Setster.initialized = true;
}

Setster.feedback_widget = function(options) {
	setster_widget = new Setster.setster_widget(options);
	return setster_widget;
}

Setster.setster_widget = function(options) {
  this.options = options;
  this.is_ssl = ("https:" == document.location.protocol);
  


  if(!this.options.display){ this.options.display = "overlay";}
  
  this.baseURL = this.options.setsterURL;
  
  //this.empty = this.baseURL + 'images/transparent.gif';
  this.empty = 'http://www.setster.com/widget/images/transparent.gif';

  
  /*
  query_string_obj = []
  if(this.options.product){ 
    query_string_obj.push("product=" + encodeURIComponent(this.options.product))
  } 
  
  query_string = "?" + query_string_obj.join("&");
  */
  
  this.frameSrc = this.baseURL + "?";
  if(this.options.uri) this.frameSrc = this.frameSrc + "&uri=" + this.options.uri;
  if(this.options.company) this.frameSrc = this.frameSrc + "&compID=" + this.options.company;
  if(this.options.intern) this.frameSrc = this.frameSrc + "&intern=1";
  if(options.display == 'overlay') this.frameSrc = this.frameSrc + "&overwdg=1";
  if(options.noInfo) this.frameSrc = this.frameSrc + "&noInfo=1";
  this.frameSrc = this.frameSrc + '&ref=' + escape(document.location.href);
  this.frameSrc = this.frameSrc ;
  
  this.options = options ? options : {};
  this.options.placement = this.options.placement ? this.options.placement : 'left';

  var iframeWidth = "100%";
  if(options.noInfo) { iframeWidth = "100%"; }
  
  if(this.options.display == 'overlay') {
    this.iframe_html = '<iframe src="' +  this.empty + '" id="setstr_iframe" allowTransparency="true" scrolling="no" frameborder="0"></iframe>';
  } else {
    this.iframe_html = '<iframe src="' + this.frameSrc + '" width="' + iframeWidth + '" height="458px" id="setstr_iframe" allowTransparency="true" scrolling="no" frameborder="0"></iframe>';
  }
  
  this.tab_html = '<a href="#" id="setstr_tab" class="setstr_tab_'+this.options.placement+'">Book It</a>';
//  this.tab_html = ';;
  if(this.options.display == 'hidden') 
		this.tab_html = '';

  this.overlay_html = '<div id="setstr_overlay" style="display:none">' +
                        '<div id="setstr_container">' +
                          '<a href="#" id="setstr_close"></a>' +
								this.iframe_html + 
                        '</div>' +
                        '<div id="setstr_screen"></div>' +
                      '</div>';
                      
  if(this.options.display == 'overlay') {
    
	raw_css = "#setstr_overlay {\n  width: 100%;\n  height: 100%;\n  top: 0;\n  left: 0;\n  z-index: 1000000;\n  position: absolute; }\n\n#setstr_screen {\n  top: 0;\n  left: 0;\n  z-index: 1;\n  width: 100%;\n  position: absolute;\n  background-color: #000;\n  opacity: 0.45;\n  -moz-opacity: 0.45;\n  filter: alpha(opacity=45); }\n\n#setstr_container {\n  width: 685px;\n  height: 480px;\n  margin: 0 auto;\n  z-index: 2;\n  position: relative; }\n  #setstr_container iframe {\n    width: 665px;\n    height: 100%;\n    margin: 20px;\n    background: transparent; }\n  \na#setstr_tab {\n border:0px; background-color:transparent; top: 25%;\n  left: 0;\n  width: 43px;\n  height: 124px;\n  color: #FFF;\n  cursor: pointer;\n  text-indent: -100000px;\n  overflow: hidden;\n  position: fixed;\n  z-index: 100000;\n  margin-left: -10px;\n  background-image: url("+this.baseURL+"/images\/bookitlogoL.png); background-repeat:no-repeat; \n  _position: absolute;\n  _background-image: url("+this.baseURL+"); }\n  a#setstr_tab:hover {\n    margin-left: -4px; }\n\na.setstr_tab_right {\n  right: 0 !important;\n  background-image: url("+this.baseURL+"/images\/bookitlogoR.png) !important; left: auto !important;\n  margin-right: -5px !important;\n  margin-left: auto !important;\n  width: 41px !important; }\n  a.setstr_tab_right:hover {\n    width: 45px !important;\n    margin-right: 0 !important;\n    margin-left: auto !important; }\n\na.setstr_tab_bottom {\n  top: auto!important;\n  bottom: 0 !important;\n  left: 20% !important;\n  height: 50px !important;\n  width: 232px !important;\n  background-image: url("+this.baseURL+"/images\/bookitlogoB.gif) !important;\n  margin-bottom: -7px !important;\n  margin-left: auto !important; }\n  a.setstr_tab_bottom:hover {\n    margin-bottom: -4px !important;\n    margin-left: auto !important; }\n\na.setstr_tab_hidden {\n  display: none !important; }\n\na#setstr_close {\n border:0px; background-color:transparent; position: absolute;\n  cursor: pointer;\n  outline: none;\n  top: 0;\n  left: 0;\n  z-index: 4;\n  width: 42px;\n  height: 42px;\n  overflow: hidden;\n  background-image: url(" + this.baseURL + "\/images\/close.png);\n  _background: none;\n  _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ this.baseURL +"\/images\/close.png', sizingMethod='crop'); }\n  a#setstr_close:hover {\n    background-position: -42px 0; }\n\n.setster_tab_on embed, .setster_tab_on select, .setster_tab_on object {\n  visibility: hidden; }\n";
	 
    Setster.add_css(raw_css);
    
    if(this.options.container) {
      var container_el = Setster.gId(this.options.container); 
      container_el.innerHTML = this.tab_html + this.overlay_html;
      
    } else {    	
      document.write(this.tab_html);
      document.write(this.overlay_html);     
    }
    
    
    
    var setster_obj = this;
    //Setster.gId('setstr_tab').onclick = function() { setster_obj.show(); return false; }
    //Setster.gId('joshua_img').onclick = function() { setster_obj.show(); return false; }
    Setster.gId('joshua_img_testimonial').onclick = function() { setster_obj.show(); return false; }
    Setster.gId('setstr_close').onclick = function() { setster_obj.hide(); return false; }
    
    var fisrtIframeSrc = this.empty;
    if(!this.options.intern && options.display == 'overlay') {
    	fisrtIframeSrc = this.baseURL + 'count_button_views.php?';
    	if(this.options.uri) fisrtIframeSrc = fisrtIframeSrc + "&uri=" + this.options.uri;
  		if(this.options.company) fisrtIframeSrc = fisrtIframeSrc + "&compID=" + this.options.company;
  		fisrtIframeSrc = fisrtIframeSrc + '&ref=' + escape(document.location.href);
    }
    
    Setster.gId('setstr_iframe').setAttribute("src", fisrtIframeSrc);

	
	window.onresize = this.set_position;

    if(/MSIE 6/i.test(navigator.userAgent) || /MSIE 7/i.test(navigator.userAgent))
      window.onscroll = function() {
        setster_obj.update_tab_position();
      }
  } else {
    if(this.options.container) {
      var container_el = Setster.gId(this.options.container);
      container_el.innerHTML = this.iframe_html; 
    } else {
      document.write(this.iframe_html);
    }
  }

};

Setster.setster_widget.prototype = {
  //setsterURL: "http:\/\/setster.com/testcalendar/",
  //setsterURLSSL: "https:\/\/setster.com/testcalendar/",
  //setsterURL: "http:\/\/localhost/setster/calendar/",
  //setsterURLSSL: "https:\/\/localhost/setster/calendar/",
  baseURL: '',

  
  
  asset_url: function(asset) {
    return this.asset_base_url + asset;
  },
    
  
  set_position : function() {
    this.scroll_top = document.documentElement.scrollTop || document.body.scrollTop;
    this.scroll_height = document.documentElement.scrollHeight;
    this.client_height = window.innerHeight || document.documentElement.clientHeight;
    
    Setster.gId('setstr_screen').style.height = this.scroll_height+"px";
    Setster.gId('setstr_container').style.top = this.scroll_top+(this.client_height*0.1)+"px";
	//alert('x');
  },
  
  update_tab_position : function() {
    this.scroll_top = document.documentElement.scrollTop || document.body.scrollTop;
    Setster.gId('setstr_tab').style.top = this.scroll_top+140+"px";
  },
  
  show : function() {
    Setster.gId('setstr_iframe').setAttribute("src", this.frameSrc);
	
    if (Setster.gId('setstr_iframe').addEventListener) {
		Setster.gId('setstr_iframe').addEventListener("load", this.loaded, false);
	} else if (Setster.gId('setstr_iframe').attachEvent) {
		Setster.gId('setstr_iframe').attachEvent("onload", this.loaded);
	}
    this.set_position();
  
    Setster.addClassName(document.getElementsByTagName('html')[0], 'setster_tab_on');
    Setster.gId('setstr_overlay').style.display = "block";
  },
  
  hide : function() {
    if (Setster.gId('setstr_iframe').addEventListener) {
      Setster.gId('setstr_iframe').removeEventListener("load", this.loaded, false);
    } else if (Setster.gId('setstr_iframe').attachEvent) {
      Setster.gId('setstr_iframe').detachEvent("onload", this.loaded);
    }
    
    Setster.gId('setstr_overlay').style.display = "none";
    Setster.gId('setstr_iframe').setAttribute("src", this.empty);
    Setster.gId('setstr_iframe').className = "loading";

    Setster.removeClassName(document.getElementsByTagName('html')[0], 'setster_tab_on');
  },
  
  loaded : function() {  	  
	setster_widget.set_position();
    Setster.gId('setstr_iframe').className = "loaded";
  }
}
