// JavaScript Document
var mycity = 1;
var Cookies = Class.create({
    initialize: function(path, domain) {
        this.path = path || '/';
        this.domain = domain || null;
    },
    // Sets a cookie
    set: function(key, value, days) {
        if (typeof key != 'string') {
            throw "Invalid key";
        }
        if (typeof value != 'string' && typeof value != 'number') {
            throw "Invalid value";
        }
        if (days && typeof days != 'number') {
            throw "Invalid expiration time";
        }
        var setValue = key+'='+escape(new String(value));
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var setExpiration = "; expires="+date.toGMTString();
        } else var setExpiration = "";
        var setPath = '; path='+escape(this.path);
        var setDomain = (this.domain) ? '; domain='+escape(this.domain) : '';
        var cookieString = setValue+setExpiration+setPath+setDomain;
        document.cookie = cookieString;
    },
    // Returns a cookie value or false
    get: function(key) {
        var keyEquals = key+"=";
        var value = false;
        document.cookie.split(';').invoke('strip').each(function(s){
            if (s.startsWith(keyEquals)) {
                value = unescape(s.substring(keyEquals.length, s.length));
                throw $break;
            }
        });
        return value;
    },
    // Clears a cookie
    clear: function(key) {
        this.set(key,'',-1);
    },
    // Clears all cookies
    clearAll: function() {
        document.cookie.split(';').collect(function(s){
            return s.split('=').first().strip();
        }).each(function(key){
            this.clear(key);
        }.bind(this));
    }
});

var JsonCookies = Class.create(Cookies, {});
JsonCookies.addMethods({
    // Overridden set method to JSON-encode value
    set: function($super, key, value, days) {
        switch (typeof value) {
            case 'undefined':
            case 'function':
            case 'unknown':
                throw "Invalid value type";
                break;
            case 'boolean':
            case 'string':
            case 'number':
                value = String(value.toString());
            break;
        }
        $super(key, Object.toJSON(value), days);
    },
    // Overriden get method to JSON-decode the value
    get: function($super, key) {
        var value = $super(key);
        return (value) ? value.evalJSON() : false;
    }
});

var isCookie = Class.create({
    initialize: function(cookie){
		//alert('in');
		this.cookie = cookie;
		this.mykey = false;
		this.docheck();
		return this.mykey;
		
    },

    docheck: function(c){
        
        var url = "/admin/login/isloggedin";
		
		//var success = false;
		this.clearsession();
		myCookies = new Cookies();
		this.mykey = myCookies.get(c);
		//alert(mykey);

    },
	
	clearsession: function() {
		/*var url = "/admin/login/clearsession";
		new Ajax.Request(url, {method: 'get', 
			  onSuccess: function(transport) {
				//alert("here" + transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{
					//$('t-1').value = "";
					return true;

				}
				
			}});*/

	}
});

var setCity = Class.create({
    initialize: function(cookie){
		//alert('in');
		this.docheck(cookie);
		
    },

    docheck: function(c){
        
		myCookies = new Cookies('/');
		var cookie = "userCity";
		myCookies.clear(cookie);
		myCookies.set(cookie,c, 365 );
		
		//alert(mykey);
		//alert('in');
		//return false;

    }
});

var barsNav = Class.create( {

    initialize: function(id) {
		this.id = id;
		this.id.invoke('observe', 'click', this.doaction.bindAsEventListener(this.id));
    },

    doaction: function(e) {
		
		var pday = $F('prevday');
		var tday = $F('today');
		var cday = $F('curday');
		var city = $F('city');
		var nday = $F('nextday');

		var currentTime = new Date()
		var month = currentTime.getMonth() + 1
		var day = currentTime.getDate()
		var year = currentTime.getFullYear()
		
		if (day < 10)
		{
			day = "0" + day;
		}

		if (month < 10)
		{
			month = "0" + month;
		}

		//alert(month + "/" + day + "/" + year);
		//alert(curdate);
		var rightnow = year + "-" + month + "-" + day
		
		//alert (rightnow + " = " + pday)

		if (e.target.id == "dprev" && pday =="")
		{
			//alert(month + "/" + day + "/" + year);
			return false;
		}else if (e.target.id == "dprev" && cday == curdate)
		{
			//alert(month + "/" + day + "/" + year);
			//alert("previous date equal today can't go back");
			return false;
		}
		

		/*if (pday == "-" && e.target.id == "dprev")
		{
			return false;
		}

		if (nday == "-" && e.target.id == "dnext")
		{
			return false;
		}*/
		
		//alert(e.target.id);

		var data = new Object;
			data = {
				tday: tday,
				pday: pday,
				action: e.target.id,
				city: city,
				cday: cday
			};
			var url = "../bars/morebars";
			var formdata = Object.toJSON(data);	
			//alert(formdata);

			new Ajax.Request(url, {method: 'get', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here" + transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{	//alert(json.tdate);
					$('dtext').innerHTML = json.tdate;
					$('curday').value = json.current;
					$('prevday').value = json.prevday;
					$('content-left').innerHTML =json.bars;

				}else{
					
					return false;
					
				}
				
			}});

    }

});


var sbarsNav = Class.create( {

    initialize: function(id) {
		this.id = id;
		this.id.invoke('observe', 'click', this.doaction.bindAsEventListener(this.id));
    },

    doaction: function(e) {
		
		var pday = $F('prevday');
		var tday = $F('today');
		var cday = $F('curday');
		var city = $F('city');
		var nday = $F('nextday');

		var currentTime = new Date()
		var month = currentTime.getMonth() + 1
		var day = currentTime.getDate()
		var year = currentTime.getFullYear()
		
		if (day < 10)
		{
			day = "0" + day;
		}

		if (month < 10)
		{
			month = "0" + month;
		}

		//alert(month + "/" + day + "/" + year);
		//alert(curdate);
		var rightnow = year + "-" + month + "-" + day
		
		//alert (rightnow + " = " + pday)

		if (e.target.id == "dprev" && pday =="")
		{
			//alert(month + "/" + day + "/" + year);
			return false;
		}else if (e.target.id == "dprev" && cday == curdate)
		{
			//alert(month + "/" + day + "/" + year);
			//alert("previous date equal today can't go back");
			return false;
		}
		

		/*if (pday == "-" && e.target.id == "dprev")
		{
			return false;
		}

		if (nday == "-" && e.target.id == "dnext")
		{
			return false;
		}*/
		
		//alert(e.target.id);

		var data = new Object;
			data = {
				tday: tday,
				pday: pday,
				action: e.target.id,
				city: city,
				cday: cday
			};
			var url = "../home/morespecials";
			var formdata = Object.toJSON(data);	
			//alert(formdata);

			new Ajax.Request(url, {method: 'get', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here" + transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{	//alert(json.tdate);
					$('dtext').innerHTML = json.tdate;
					$('curday').value = json.current;
					$('prevday').value = json.prevday;
					$('content-left').innerHTML =json.bars;

				}else{
					
					return false;
					
				}
				
			}});

    }

});

var imthere= Class.create( {

    initialize: function(id) {
		this.id = id;
		this.doaction(this.id);
    },

    doaction: function(e) {
		
		//alert(e);
		var bar = 'imthere' + e;
		var citybar = 'citybar' + e;
		//alert(citybar);
		//var curday = $("curday").value;

		var data = new Object;
			data = {
				bar: e,
				day: $F('curday')
			};
			var url = "../index/addimthere";
			var formdata = Object.toJSON(data);	
			//alert(formdata);
			//curday 
			//alert(e + " " + mycity)
			new Ajax.Request(url, {method: 'get', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here" + transport.responseText);
			   var json = transport.responseJSON;
			   var ids = transport.responseText;
			  
			  // alert(ids.updates.id);
			   var bar = eval('(' + ids + ')')
				//alert(bar.updates[0].id) ;
			   //alert(bar.updates.length)
				if (200 == transport.status && 1 == json.success)
				{
					var setbar = "";
					for (var i=0;i<bar.updates.length;i++)
					{
						//alert(bar.updates[i].id);
						setbar = "imthere"+bar.updates[i].bar+"["+bar.updates[i].id+"]";
						//alert(setbar);
						$(setbar).innerHTML = "<div class=\"barpromo_imthere_selected\"><div style=\"padding: 16px 2px 2px 38px;\">" + json.count + "</div></div>";
					}	//setbar = "";
					//alert('here');
					//$(bar).innerHTML = "<div class=\"barpromo_imthere_selected\">" + json.count + "</div>";
					//$$('citybar2').innerHTML = "<div class=\"barpromo_imthere_selected\">" + json.count + "</div>";

				}else{
					
					return false;
					
				}
				
			}});

    }

});

var openvote = Class.create(isCookie, {

    initialize: function($super,id) {
		this.id = id;
		this.doaction(id,$super);
    },

    doaction: function(e,$super) {
		//alert(e);
		//$('rvote').show();
		var cookie = "rvote_" + e;
		var getcookie =  $super(cookie);
		//alert(loggedin);
		if(getcookie){
			return false;
		}else{
			Effect.toggle('rvote', 'blind', {duration: 0.1});
		}
    }

});

var openrate = Class.create( isCookie, {

    initialize: function($super,id) {
		this.id = id;
		this.doaction(id,$super);
    },

    doaction: function(e,$super) {
		var rid = "rate" + e;
		
		//var getcookie =  $super();
		//alert(loggedin);
		//if(getcookie){
			//return false;
		//}else{
			Effect.toggle(rid, 'blind', {duration: 0.1});
		//}
    }

});

var vote= Class.create( {

    initialize: function(id, rating, current) {
		this.id = id;
		this.rating = rating;
		this.current = current;
		this.doaction(this.id,this.rating, this.current);
    },

    doaction: function(e,f,g) {
		
		//alert(e + " - " + f + " - " + g);
		//return false;
		var bar = 'imthere' + e;
		//$('ovote').target.onclick = "";
		
		var current = g;

		var data = new Object;
			data = {
				rating: f,
				bar: e
			};
			var url = "http://" + myhome + "/index/addvote";
			var formdata = Object.toJSON(data);	
			//alert(formdata);

			new Ajax.Request(url, {method: 'get', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here" + transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{
					//alert(json.vote);
					var currentRating = "<li class='current-ratingb' style='width:" + (json.rating * 16) + "px;'></li>";
					var total = "<li>Rating: " + json.votes + "/5 (vote(s) cast)</li>";
					//alert(currentRating);
					//alert(transport.responseText);
					$("pfile").innerHTML=currentRating;

					//$('vote').disabled = true;

				}else{
					
					return false;
					
				}
				
			}});

    }

});

var voteB= Class.create( {

    initialize: function(id,bar) {
		this.id = id;
		this.bar = bar
		this.doaction(this.id,bar);
    },

    doaction: function(e,f) {
		
		//alert(f);
		//$('ovote').target.onclick = "";
		var data = new Object;
			data = {
				rating: e.value,
				bar: f
			};
			var url = "/index/addvote";
			var formdata = Object.toJSON(data);	
			//alert(formdata);

			new Ajax.Request(url, {method: 'post', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here" + transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{
	
					e.disabled = true;

				}else{
					
					return false;
					
				}
				
			}});

    }

});


var addReview= Class.create( {

    initialize: function(id) {
		this.id = id;
		this.bar = bar
		this.doaction(this.id);
    },

    doaction: function(e,f) {
		
		//alert(f);
		//$('ovote').target.onclick = "";
		var data = new Object;
			data = {
				rating: e.value,
				bar: f
			};
			var url = "/index/addreview";
			var formdata = Object.toJSON(data);	
			//alert(formdata);

			new Ajax.Request(url, {method: 'get', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here" + transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{
	
					e.disabled = true;

				}else{
					
					return false;
					
				}
				
			}});

    }

});

var gettwitter = Class.create( {

    initialize: function() {

		this.doaction();
    },

    doaction: function() {
		
		//alert('in');
		//$('ovote').target.onclick = "";
		
			var url = "../blog/twitter";
			
			//alert(url);

			

    }

});


var sendMessage = Class.create( {

    initialize: function() {

		this.doaction();
    },

    doaction: function() {
		
		var data = $("contactform").serialize(true);
		var formdata = Object.toJSON(data);
		

		
		//Effect.toggle('loadform', 'Appear', {duration: 0.1});
		var url = "../../index/sendmessagetous";
		//alert(e);
		//return false;
		//alert(formdata);
		new Ajax.Request(url, {method: 'post', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here " + url + " " +transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{

					Form.reset('contactform');
					alert(json.message);
					
					
					
					
				}else{
					//alert("error");
					
					//error.innerHTML = json.message ;
					//new Effect.ScrollTo(error);
					//showOnLoad.show();
					alert(json.message);
				}
				
			}});

    }

});


var sendReview = Class.create( {

    initialize: function() {

		this.doaction();
    },

    doaction: function() {
		
		var data = $("confcontent").serialize(true);
		var formdata = Object.toJSON(data);
		

		
		//Effect.toggle('loadform', 'Appear', {duration: 0.1});
		var url = "../../index/addreview";
		//alert(e);
		//return false;
		//alert(formdata);
		new Ajax.Request(url, {method: 'post', parameters: "formData=" + encodeURIComponent(formdata),
			  onSuccess: function(transport) {
				//alert("here " + url + " " +transport.responseText);
			   var json = transport.responseJSON;
				if (200 == transport.status && 1 == json.success)
				{
					//showOnLoad.innerHTML = json.message;
					//showOnLoad.show();
					//Effect.BlindUp('loadform', { duration: 0.4 });
					//new Effect.ScrollTo('message');
					//$('cpen').hide();
					alert(json.message);
					
					//Form.reset('accountinfo');
					
					
					
					
				}else{
					//alert("error");
					
					//error.innerHTML = json.message ;
					//new Effect.ScrollTo(error);
					//showOnLoad.show();
					alert(json.message);
				}
				
			}});

    }

});

var showProfile = Class.create( {

	initialize: function(element) {
		var options = Object.extend({
		  default_css: false,
		  margin: "0px",
		  padding: "0px",
		  display: "inline",
		  backgroundColor: "#d6d6fc",
		  delta_x: 5,
		  delta_y: 15,
		  zindex: 1000
		}, arguments[1] || {});
		
		//alert(element.href);

		
		this.element      = $(element);
		this.tool_tip     = $("tooltip");
		this.content      = "";
		
		this.options      = options;
		
		// hide the tool-tip by default
		this.tool_tip.hide();
		
		//this.showTooltip(this);
		this.eventMouseOver = this.showTooltip.bindAsEventListener(this);
    	this.eventMouseOut   = this.hideTooltip.bindAsEventListener(this);

    	this.registerEvents();
  	},

	destroy: function() {
		Event.stopObserving(this.element, "mouseover", this.eventMouseOver.bindAsEventListener(this.element));
		Event.stopObserving(this.element, "mouseout", this.eventMouseOut.bindAsEventListener(this.element));
	},

	registerEvents: function() {
	//alert(this.element);
	this.element.invoke('observe', 'mouseover', this.eventMouseOver.bindAsEventListener(this.element));
	this.element.invoke('observe', 'mouseout', this.eventMouseOut.bindAsEventListener(this.element));
	},
	
	showTooltip: function(event){
	
	
	//alert(event.target.id);

	 Event.stop(event);
		// get Mouse position
		var mouse_x = Event.pointerX(event);
		var mouse_y = Event.pointerY(event);
		
		//alert(event.target.id);
		
		// decide if wee need to switch sides for the tooltip
		var dimensions = Element.getDimensions( this.tool_tip );
		var element_width = dimensions.width;
		var element_height = dimensions.height;
		
		if ( (element_width + mouse_x) >= ( this.getWindowWidth() - this.options.delta_x) ){ // too big for X
			mouse_x = mouse_x - element_width;
			// apply delta to make sure that the mouse is not on the tool-tip
			mouse_x = mouse_x - this.options.delta_x;
		} else {
			mouse_x = mouse_x + this.options.delta_x;
		}
		
		if ( (element_height + mouse_y) >= ( this.getWindowHeight() - this.options.delta_y) ){ // too big for Y
			mouse_y = mouse_y - element_height;
			// apply delta to make sure that the mouse is not on the tool-tip
			mouse_y = mouse_y - this.options.delta_y;
		} else {
			mouse_y = mouse_y + this.options.delta_y;
		} 
		
		// now set the right styles
		this.setStyles(mouse_x, mouse_y);
			
		// finally show the Tooltip
		//new Effect.Appear(this.tool_tip);
		//alert(this.tool_tip);
		$('info').innerHTML = "";
		new Element.show(this.tool_tip);
		//alert("working");
		this.getinfo(event.target);
	},
		
	setStyles: function(x, y){
		// set the right styles to position the tool tip
		Element.setStyle(this.tool_tip, { position:'absolute',
										  top:y + "px",
										  left:x + "px",
										  display:this.options.display,
										  zindex:this.options.zindex
										});
		
		// apply default theme if wanted
		if (this.options.default_css){
			Element.setStyle(this.tool_tip, { margin:this.options.margin,
											  padding:this.options.padding,
											  backgroundColor:this.options.backgroundColor,
											  zindex:this.options.zindex
											});	
		}	
	},
	
	hideTooltip: function(event){
		//new Effect.Fade(this.tool_tip);
		new Element.hide(this.tool_tip);
    },
	
	getWindowHeight: function(){
		var innerHeight;
		if (navigator.appVersion.indexOf('MSIE')>0) {
			innerHeight = document.body.clientHeight;
		} else {
			innerHeight = window.innerHeight;
		}
		return innerHeight;	
	},
	
	getWindowWidth: function(){
		var innerWidth;
		if (navigator.appVersion.indexOf('MSIE')>0) {
			innerWidth = document.body.clientWidth;
		} else {
			innerWidth = window.innerWidth;
		}
		return innerWidth;	
	},
	
	getinfo: function(e){
		
		$('info').innerHTML = e.name;
	}

});

var commentbox = Class.create( {

    initialize: function() {

		this.doaction();
    },

    doaction: function() {
		//alert("here");
		$("userreviews").show();
		 //new Effect.Scroll("userreviews");
		 Position.prepare();
		 container_y = Position.cumulativeOffset($("maincontainer"))[1]
		 element_y = Position.cumulativeOffset($("userreviews"))[1]
		 new Effect.Scroll("maincontainer", {x:0, y:(element_y-container_y)});
		
    }

});


var showPic = Class.create( {

	initialize: function(element) {
		var options = Object.extend({
		  default_css: false,
		  margin: "0px",
		  padding: "0px",
		  display: "inline",
		  backgroundColor: "#d6d6fc",
		  delta_x: 5,
		  delta_y: 30,
		  zindex: 1000
		}, arguments[1] || {});
		
		//alert(element.href);

		
		this.element      = $(element);
		this.tool_tip     = $("largeImg");
		this.content      = "";
		
		this.options      = options;
		
		// hide the tool-tip by default
		this.tool_tip.hide();
		
		//this.showTooltip(this);
		this.eventMouseOver = this.showTooltip.bindAsEventListener(this);
    	this.eventMouseOut   = this.hideTooltip.bindAsEventListener(this);

    	this.registerEvents();
  	},

	destroy: function() {
		Event.stopObserving(this.element, "mouseover", this.eventMouseOver.bindAsEventListener(this.element));
		Event.stopObserving(this.element, "mouseout", this.eventMouseOut.bindAsEventListener(this.element));
	},

	registerEvents: function() {
	//alert(this.element);
	this.element.invoke('observe', 'mouseover', this.eventMouseOver.bindAsEventListener(this.element));
	this.element.invoke('observe', 'mouseout', this.eventMouseOut.bindAsEventListener(this.element));
	},
	
	showTooltip: function(event){
	
	
	//alert(event.target.id);

	 Event.stop(event);
		// get Mouse position
		var mouse_x = Event.pointerX(event);
		var mouse_y = Event.pointerY(event);
		
		//alert(event.target.id);
		
		// decide if wee need to switch sides for the tooltip
		var dimensions = Element.getDimensions( this.tool_tip );
		var element_width = dimensions.width;
		var element_height = dimensions.height;
		
		if ( (element_width + mouse_x) >= ( this.getWindowWidth() - this.options.delta_x) ){ // too big for X
			mouse_x = mouse_x - element_width;
			// apply delta to make sure that the mouse is not on the tool-tip
			mouse_x = mouse_x - this.options.delta_x;
		} else {
			mouse_x = mouse_x + this.options.delta_x;
		}
		
		if ( (element_height + mouse_y) >= ( this.getWindowHeight() - this.options.delta_y) ){ // too big for Y
			mouse_y = mouse_y - element_height;
			// apply delta to make sure that the mouse is not on the tool-tip
			mouse_y = mouse_y - this.options.delta_y;
		} else {
			mouse_y = mouse_y + this.options.delta_y;
		} 
		
		// now set the right styles
		this.setStyles(mouse_x, mouse_y);
			
		// finally show the Tooltip
		//new Effect.Appear(this.tool_tip);
		//alert(this.tool_tip);
		$('largeImg').innerHTML = "";
		new Element.show(this.tool_tip);
		//alert("working");
		this.getinfo(event.target);
	},
		
	setStyles: function(x, y){
		// set the right styles to position the tool tip
		Element.setStyle(this.tool_tip, { position:'absolute',
										  top:0 + "px",
										  marginTop:250 + "px",
										  left:400 + "px",
										  display:this.options.display,
										  zindex:this.options.zindex
										});
		
		// apply default theme if wanted
		if (this.options.default_css){
			Element.setStyle(this.tool_tip, { margin:this.options.margin,
											  padding:this.options.padding,
											  backgroundColor:this.options.backgroundColor,
											  zindex:this.options.zindex
											});	
		}	
	},
	
	hideTooltip: function(event){
		//new Effect.Fade(this.tool_tip);
		new Element.hide(this.tool_tip);
    },
	
	getWindowHeight: function(){
		var innerHeight;
		if (navigator.appVersion.indexOf('MSIE')>0) {
			innerHeight = document.body.clientHeight;
		} else {
			innerHeight = window.innerHeight;
		}
		return innerHeight;	
	},
	
	getWindowWidth: function(){
		var innerWidth;
		if (navigator.appVersion.indexOf('MSIE')>0) {
			innerWidth = document.body.clientWidth;
		} else {
			innerWidth = window.innerWidth;
		}
		return innerWidth;	
	},
	
	getinfo: function(e){
		
		$('largeImg').innerHTML = "<img src='"+e.src+"' alt='' />";
	}

});
