var CookieCheck = (function() { //singleton;

  var sCookie;

  var isCookieSupportEnabled = function () {
	setCookie(sCookie, 'enabled', '1', '/', '', '');
	return getCookie(sCookie) != null;
  };
  
  var setCookie = function(name, value, expires, path, domain, secure) {
	  // Set Time, it's in milliseconds
	  var today = new Date();
	  today.setTime(today.getTime());
	  
	  /*
	   * If the expires variable is set, make the correct
	   * expires time, the current script below will set
	   * it for x number of days, to make it for hours,
	   * delete * 24, for minutes, delete * 60 * 24
	   */
	  if (expires) {
		  expires = expires * 1000 * 60 * 60 * 24;
	  }
	  
	  var expires_date = new Date(today.getTime() + (expires));
	  
	  document.cookie = name + "=" + escape(value) +
	  	( (expires) ? ";expires=" + expires_date.toGMTString() : "") +
	  	( (path) ? ";path=" + path : "") +
	  	( (domain) ? ";domain=" + domain : "") +
	  	( (secure) ? ";secure" : "");
  };
  
  var getCookie = function(check_name) {
	  // split the cookie up into name/value pairs
	  // note: document.cookie only returns name=value, not other components
	  var a_all_cookies = document.cookie.split(';');
	  var a_temp_cookie = '';
	  var cookie_name = '';
	  var cookie_value = '';
	  var b_cookie_found = false; // set boolean t/f default f
	  
	  for(i=0; i < a_all_cookies.length; i++) {
		  a_temp_cookie = a_all_cookies[i].split('=');
		  cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
		  // if the extract name matches passed check_name
		  if (cookie_name == check_name) {
			  b_cookie_found = true;
			  // Handle case where cookie has no value but exists
			  if (a_temp_cookie.length > 1) {
				  cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
			  } else {
				  cookie_value = '';
			  }
			  // note that in cases where cookie is initialized but no value, empty string is returned
			  return cookie_value;
			  break;
		  }
		  a_temp_cookie = null;
		  cookie_name = '';
	  }
	  if (!b_cookie_found) {
		  return null;
	  }
  };
  
  return {
	init: function (o) {
	  if (!o || !o.elem) return; //fail gracefully if no parameter is passed;
	  sCookie = o.cookie;
	  o.elem.style.display = isCookieSupportEnabled() ? "none" : "block";
    }
  };
  
})();

$(function () {
  CookieCheck.init({elem: $(".cookie-check")[0], cookie: "cookieCheck"}); //use jquery to target the element;
});
