var _isAjax = false;
var _errorColor = "#FFFF7F";
var _uniqueUserName = false;
var _loadImg = "<img src='/img/ajax.gif' style='display:block;width:25px;margin:0 auto;'/>"
var _login = false;
var _Block_Window = null

/*
function alert(message){
	var m = message.replace(/\n/g,"<br\>")	
	blockWin({
		width:500,
		height:200,
		content:"<div id=\"popup_header\">&nbsp"+		
		"<span id=\"block_close\" onclick=\"$.unblockUI()\">"+
		"<img src=\"/img/close.png\"/></span></div>"+
		"<div style=\"position:relative;margin:auto 20px;text-align:left;\">"+m+"</div>"	
	})
}*/

var csrf_token
$(document).ajaxSend(function(event, xhr, settings) {
	try{
		csrf_token = $.cookie('csrftoken')
	    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
	        xhr.setRequestHeader("X-CSRFToken", csrf_token);
	    }
	}catch(e){
		console.error('couldnt include csrf token : '+settings.url)
	}
});

$(document).ajaxError(function(event,r,options,e){
	//alert("Error:"+e)
	if(r.status==404){
	alert('Requested URL not found.');
	}else if(r.status==500){
	alert('Internal Server Error.');
	}else if(e=='parsererror'){
	alert('Error.\nParsing JSON Request failed.');
	}else if(e=='timeout'){
	alert('Request Time out.');
	}
})

function noSunday(date){
      var day = date.getDay();
      return [(day > 0), ''];
  }; 
if($.datepicker){
	$.datepicker.setDefaults({
		dateFormat:'M dd, yy',
		minDate:0,
		maxDate:'+31d',		
		buttonImage:'/img/calendar.png',
		buttonImageOnly:true,
		showOn:'both',
		constrainInput:'true',
		beforeShowDay: noSunday
	})
}
// enables blockui in linux
if(!und($.blockUI)){
	$.blockUI.defaults.applyPlatformOpacityRules = false;
	$.blockUI.defaults = $.extend(
		$.blockUI.defaults,{
			overlayCSS:{
				backgroundColor: "#00535E",
				opacity:0.5
			},
			css:$.extend($.blockUI.defaults.css,{
				border: 'none', 
			    padding: '5px', 
			    color:'#ffffff',
			    fontWeight:'bold',
			    fontSize:"10pt",
			    background:"transparent",
			    cursor:'default'
			}),
			message:"<img src='/img/ajax.gif' style='display:block;width:25px;margin:0 auto;'/>"
		}
	);
}
if(!und($.fn.qtip)){
	$.fn.qtip.defaults = $.extend(true,{},$.fn.qtip.defaults,{
		style:{
			classes:'ui-tooltip-4food ui-tooltip-rounded ui-tooltip-shadow'
		},
		position:{
			my:'top center',
			at:'bottom center'
		}	
	})
}
function showMessage(msg){
	if(msg.length > 0){
		$("#message_banner").slideDown("fast").children("span").eq(1).html(msg)
	}
}
function clear_messages(){
	$.get("/clear_messages/",function(data){
		$("#message_banner:visible").slideUp("fast")
	},'json')
}
function setLeftNav(url){	
	if(url.indexOf("group")>=0){
		setActiveNav('groups')	
	}else if(url.lastIndexOf("buildaburger")>0){
		setActiveNav('step1')		
	}else if(url.lastIndexOf("products/menu")>0){
		setActiveNav('menu')			
	}else{
		setActiveNav('')
	}
}
function setActiveNav(page){
	
	if(page.length > 0 && !page.charAt(0) == '?'){
		$('#left_nav li.active').removeClass('active');
		$('#left_nav li.'+page).addClass('active');
	}else{
		try{
			page = $("#page_name").val()
			$('#left_nav li.active').removeClass('active');
			$('#left_nav li.'+page).addClass('active');
		}catch(e){}
	}
}	



$(document).ready(function(){	
	try{		
		// loads for pages that arent initialy ajax hash aware, like the home page
		var initialHash = $.history.getCurrent();					
		var ajaxpage = _url;		
		if(initialHash != '') {	
			ajaxpage = initialHash	
			loadURL(ajaxpage)
		}

		$("body").history(function(e, hash) {
			if(hash){
				_url = hash		
				loadURL(hash)	
			}else{
				window.location = window.location
			}
		});
	}catch(e){}
	
})
// validates form based on json data returned by on the view HttpJsonFormError
function validateForm(form,data){
	form.find(".error").removeClass("error")
	if(!data.success){
		var message = data.message+"\n\r"
		var fields = []

		for(o in data){
			if(o!='message' && o!= 'success'){
				fields.push(o);
				message +="\n\r"+o+": ";
				for(m in data[o]){
					message+= data[o][m]+" "
				}
			}
		}
		for(f in fields){
			try{
				var f = form.find("[name='"+fields[f]+"']").addClass("error")
				
				if(f[0].type.toLowerCase() == "checkbox" ||
					f[0].type.toLowerCase() == "radio"){
					f.parent().addClass("error")
				}
			}catch(e){
				console.debug(e)
			}
		}
		alert(message)
		return false
	}else{	
		return true
	}
}

function loadURL(url,ret,data){
	if(typeof(ret) == "object"){
		data = ret
		ret = false
	}
	if(url){
		
		var c = $("#center_pane");
		if(c.length == 1){
			// catch home redirects when not authenticated
			if((url =='/' || url == 'http://'+_hostName+'/')  && !is_authenticated){
				return window.location = url;
			}
			$("#extras_placeholder").hide()
			c.block({
				message:"<img src='/img/ajax.gif'></img>",
				overlayCSS:{
					height:"105%",
					top:"-15px",
					left:"-5px",
					'-webkit-border-radius': '10px', 
            		'-moz-border-radius': '10px'
            	}
			})

			$.history.add(url);
		
			setTimeout(function(){
				document.getElementById("buildaburger_calc").style.display = "none";
			    if(url.lastIndexOf('staticpage') >=0){
			    	url = url.replace("staticpage","static/html")
			    }else{
			    	var appendChar = "?";
			    	if(url.lastIndexOf(appendChar)>0){
			    		appendChar = "&"
			    	}
			    	url = url+appendChar+"frame=true"
			    }
				//hide any tooltips still on the page
		    	$('.qtip.ui-tooltip').qtip('hide');
			    
				c.load(url,data,function(txt,st,xhr){
					setLeftNav(url)
					
					resetEverything();	
					

					if(ret){
						ret()
					}
					if(!und(_gat)){
						var pageTracker = _gat._getTracker("UA-11611382-1");
						pageTracker._trackPageview(url.split("?")[0]);
					}		
				});
			},50);					
			
		}else{
			window.location = url;
		}
		
	}else{	
		
		fullRefresh("/")
	}
}

function fullRefresh(url){
	if(url){
		window.location = url;
	}else{
		
		var hist = $.history.getCurrent();
		if(hist){
			window.location = $.history.getCurrent();
		}else{
			window.location = window.location
		}
	}
	
}

$.fn.toolTip = function(){
	this.each(function(){
		var t = $(this);
		var msg = t.html()
		t.html("(?)").css({
			cursor:"pointer",
			color:"#E8941A",
			fontWeight:"bold",
			fontSize:"10pt"
		}).qtip({content:msg}).show()
	})
	return this;
}

$.fn.round_corners = function(opts){
	
	var version = parseInt($.browser.version)

	if($.browser.msie && version <9 ){
		var o = $.extend({top:false,bottom:false},opts)
		var tl=0,tr=0,bl=0,br=0;
		if(o.top){
			tl=10,tr=10
		}
		if(o.bottom){
			bl=10,br=10
		}
		this.curvy_corner({
		  tl: { radius: tl },
		  tr: { radius: tr },
		  bl: { radius: bl },
		  br: { radius: br } 
		 });
	}
}

function resetEverything(){

	start_ticker()
	
	$("span.help").toolTip()
	
	$(".vscroll").verticalScroll();	
	
	$("div.round2").round_corners({top:true,bottom:true})
	$("div.round_top").round_corners({top:true})
	$("div.round_bottom").round_corners({bottom:true})
	$(".round").corner();
	
	$("div.orangeButton").customButton();

	$("div.blueButton").customButton();
	$("div.brownButton").customButton();
	$("div.greyButton").customButton();
	$(".vscroll_img").scrollHandle();
	$(".hscroll_img").scrollHandle({dir:"horizontal",scroll_by:50});
	//$("img.dissabled").dissableImage()
}
/*
$.fn.dissableImage = function(){
	this.each(function(){
		var img = $(this)
		var block = $("<div class='dissabled_images'>X</div>")
		var w,h,avg
		w = img.width()
		h = img.height()
		avg = w+h/2
		alert(w+" "+h+" "+avg)
		block.css({
			'width':w,
			'height':h,
			'marginRight':-w,
			//'marginBottom':-(h*2),
			//'marginTop':-h,
			'fontSize':(avg-4)+"px",
			//'lineHeight':h+"px"
				
		})
		img.before(block).attr({'title':'Sold Out'})
		
	})
	return this
}*/


$.fn.tableStripes = function(){
	this.each(function(){
		var table = $(this);
		var c = 0;
		table.find("tbody tr").each(function(){
			if(c++%2==0){
				$(this).addClass('even');
			}else{
				$(this).addClass('odd');
			}
		})
	});
}


function setCancel(obj){
	if(obj){
		obj.find("#btn_cancel").click(function(){
			$.unblockUI()
		})
	}else{
		$("#btn_cancel").click(function(){
			$.unblockUI()
		})
	}
}

function checkUserAvailability(btn,func) {
	var n = $(btn).prev().val()
	if(n!= null && n.length > 0){
		$.get("/userregistration/checkname/" + n,null,function(data){
			if(func != null){
				func(data);
			}else{
				if(data.success){
					_uniqueUserName = true;
					alert("Ok");
					$("#username").removeClass('error')
				}else{
					_uniqueUserName = false;
					alert("This name is already in use.");
					$("#username").addClass('error')
				}
			}
		},'json');
	}else{
		alert("Your username must be longer then zero characters.");
		return false; 
	}
}
function takeProfileQuiz(summary){
	/*
	_login = false;
	var t = this;
	var win = blockWin({
		width:670,
		height:600,
		returnFunc:function(){
			t.tpq_getQuiz(win,summary);
		}
	})*/
	url = "/survey/"
	if(summary) url+="summary"
	loadURL(url,function(){
		//$("#quiz_frame").attr("src","/survey/1/")	
	})
}

function tpq_getQuiz(obj,summary){
        url2 = "/survey/1/";
        if(summary){
        	url2 = "/survey/finished/1/";      
        }
        this.finish = function(){
        	window.location="/buildaburger" 	
        }
        var TPQ = this;
        obj.load("/survey/",function(){
        	$("#quiz_frame").attr("src",url2)	
        })
}

function updateProfile(){

	loadURL("/userprofile/update/")
}

function registerNewUser(redirect){
	var step1 = "/userregistration/new/";
	var save_url = "/userregistration/save/";

	var masterwin = blockWin({
		width:670,
		height:450,		
		loadURL:step1,
		returnFunc:function(html){	
			resetEverything()
			function submitNewUser(){
				var bs = masterwin.find("#btn_submit");
				$(".blockUI.blockMsg.blockPage").block();
				var p = getJsonValues($("#registration_div"));	
				if(p.password == p.verify_password){
					$.post(save_url,p,function(data){

						if(validateForm(masterwin,data)){
							loadURL($(bs).attr('redirect'))	
						}else{
	
							$(".blockUI.blockMsg.blockPage").unblock();
						}	
					},'json')
				}else{
					alert("Password and Confirm Password do not match.")
					masterwin.find("#password").addClass('error')
					masterwin.find("#verify_password").addClass('error')
					$(".blockUI.blockMsg.blockPage").unblock();
				}
			}
			masterwin.find("input").onEnter(submitNewUser)
			masterwin.find("#btn_submit").click(submitNewUser)
			
		}
	})
		
}

/*
function registerNewUser_old(data){
	var _first_name;
	var _last_name;
	var _email;
	var loaded2 = false;
	var step1 = "/userregistration/add/";
	var step2 = "/userregistration/add2/";

	var masterwin = blockWin({
		width:670,
		height:440,		
		loadURL:step1,
		returnFunc:function(){	
			
			masterwin.find(".customButton").customButton();
			masterwin.find(".round").corner();
			this.validateNext = function(){
				var valid = true;
				this.setValid = function(node,cond){
					if(!cond){
						node.style.backgroundColor = _errorColor;
						valid = false;
					}else{
						node.style.backgroundColor = "";
					}
				}
				var p = getInputs(gid("registration_form"));
				var fn = p.get("first_name");
				var ln = p.get("last_name");
				var email = p.get("email");
				var conf_email = p.get("confirm_email");			
				
				this.setValid(fn.node,fn.value.length > 0)
				this.setValid(ln.node,ln.value.length > 0)
				
				this.setValid(email.node,_emailPattern.test(email.value));
				this.setValid(conf_email.node,conf_email.value == email.value)
				if(valid){
			//========================================================== GOTO step 2==========
			//================================================================================
					_first_name = fn.value;
					_last_name = ln.value;
					_email = email.value;
					step_2 = $("#registration_step2");
					$("#registration_step1").hide();
					
					if(loaded2){
						step_2.show()
					}else{						
						step_2.show().load(step2,function(){
							try{
								if(set_hawker_data){
									set_hawker_data(_email)
								}
							}catch(e){}
							loaded2 = true;
							step_2.find(".customButton").customButton();
							step_2.find(".round").corner();
							$("#btn_back2").click(function(){
								step_2.hide();
								$("#registration_step1").show();
							})
							$("#btn_submit").click(function(){
								var bs = this;
								this.submitUser = function(){			
									var p = getJsonValues($("#form_div2"));	
								
									var dob = new Date();
									dob.setYear(p.year);
									dob.setMonth(p.month -1);
									dob.setDate(p.day);					
									var p2 = {first_name:_first_name,
										last_name:_last_name,
										email:_email,
										date_of_birth:dob.format('isoDate')}
									p = _json.add(p,p2);
									if(p.password == p.verify_password){
							//================================================================== submit new user===============
							//=================================================================================================
										$(".blockUI.blockMsg.blockPage").block();
										
										$.post(step1,p,function(data){
											//if(data.success){
											if(validateForm(step_2,data)){
												_login = true;
												step_2.hide()
												$(".blockUI.blockMsg.blockPage").unblock();
												step_3 = $("#registration_step3");
												
												step_3.show().load($(bs).attr('redirect'),function(){
													step_3.find("#btn_now").click(function(){
														masterwin.resize(670,600)
														tpq_getQuiz(masterwin);
													});		
												})

											}else{

												$(".blockUI.blockMsg.blockPage").unblock();
											}	
										},'json')
									}else{
										alert("Password and Confirm Password do not match.");
									}
								}		
								if(_uniqueUserName){
									this.submitUser();
								}else{
									checkUserAvailability(function(data){
										if(data.success){
											bs.submitUser()
										}else{
											alert("The Username you have selected is already in user. Please enter another name.");
										}
									})
								}
							})
						});
					}
				}else{
					alert("Some fields are not valid");
				}		
			}
			setCancel(masterwin);
			masterwin.find("input").onEnter(this.validateNext)
			$("#btn_next").click(this.validateNext)
		}
	})
}
*/
function logout(){	
	window.location = "/userregistration/logout"
	/*
	$.get("/userregistration/logout",function(data){
		alert(examine(data))
		if(!data.success){
			alert('failed to log you out')
		}else{	
			fullRefresh();
		}
	},'json');
	*/
}

function loginRequired(redirect){
	if(is_authenticated){
		window.location = redirect
	}else{
		loadURL("/userregistration/login_required?redirect="+encodeURIComponent(redirect))
	}
}
function login(msg){
	var url = "/userregistration/login";
	if(msg && msg.length > 0){
		url += "?message="+encodeURI(msg)
	}
	var win = blockWin({
		width:420,
		height:200,
		img:'/img/bgBlockcontent_wide.png',
		loadURL:url
	})
}

function redeem_code(msg){
	var url = "/coupon_code/";
	var win = blockWin({
		width:420,
		height:200,
		img:'/img/bgBlockcontent_wide.png',
		loadURL:url
	})
}

function getInt(str){
	return  isNaN(parseFloat(str))?0: parseInt(parseFloat(str))
}

function totalNutrition(strObj){
	var table = $("#"+strObj);
	var vals = new Array()	
	var rows = table.find("tr")
	rows.each(function(){
		var row = $(this)
		if(!row.hasClass('exclude')){
			var cols = row.find("td")
			cols.each(function(){
				var col = $(this);
				var v = parseInt(col.html());
				if(vals[cols.index(col)]){
					vals[cols.index(col)] += (!isNaN(v)?v:"");
				}else{
					vals[cols.index(col)] = (!isNaN(v)?v:"");
				}
			})
		}
		
	})
	var row = $("<tr class='total'></tr>").css({borderTop:"1px solid black"})
	for(v in vals){
		row.append("<td>"+vals[v]+"</td>");
	}
	row.children("td").eq(0).html("Total: ").addClass('total_data')
	table.append(row)
}
_blockWin = null;

function makeGroupOrder(){

	loginRequired("/feast/start_get")

}

function timerList(t1,t2,formatBack,fixed){
	var sets = [0,15,30,45];
	var now = t1;
	if(!fixed){
		now.setMinutes(now.getMinutes()+30)
	
		var min = now.getMinutes();
		var hour = 0
		if(min > 45){
			min = 0;
			hour = 1;
		}else{
			for(var i = 0;i<sets.length;i++){
				if(min >= sets[i] && min < sets[i+1]){
					min = sets[i+1];
					break;
				}
			}
		}
		now.setMinutes(min);
		now.setHours(now.getHours()+hour);
	}
	if(formatBack == null){
		//formatBack = "mmm dd yyyy HH:MM:ss TT"
		formatBack = "yyyy-mm-dd HH:MM:ss";
	}
	var times = [];
	
	while(now <= t2){
		var strTime = now.format("shortTime")		
		times.push({date:new Date(now),time:strTime,parse_date:now.format(formatBack),js_date_string:now.format("mmm dd yyyy hh:MM:ss TT")})
		now.setMinutes(now.getMinutes()+15);
	}
	return times;
}
function exitGroupOrder(order_id){
	var orderid = order_id?order_id:_groupOrder;
	if(orderid > 0){
		var p = {group_order_id:orderid,exit:true}
		$.post("/feast/exit",p,function(data){
			if(data.success){
				fullRefresh()
			}else{
				alert("could not exit feast cart. Reason:\n\r"+data.message)	
			}
		},'json')
	}
}

function setShoppingCart(action){
	var cart = $("#cart_loader")
	if(cart.size()>0){
		islocked = "false";
		var p = {}
		var page = $.history.getCurrent().length>0?$.history.getCurrent():_url		
		if(page == "/checkout/upsell"){
			p.isUpsel = true;
		}
		$("#cart_outer").block({message:_loadImg})

		cart.load("/shoppingcart/list2",p,function(){
			var totals = $("#cart_outer");
			totals.find("#total_items").html(cart.find("#cart_size").attr("value"));
			totals.find(".cart_total").html(cart.find("#cart_subtotal").attr("value"));
			totals.find("#checkout_buttons").find(".customButton").customButton()		
			$("#cart_outer").unblock()
		});

	}else{
		if(action && action == 'remove'){
			alert('Item successfully removed from your cart')
		}else if(action != 'edit'){
			alert('Item successfully added to your cart.')
		}
		window.location = window.location
	}
}

function addToCart3(prodid,url,options){
	options = $.extend({doBundle:false},options)
	var returnFunc = null
	if(options.doBundle){
		returnFunc = function(){
			loadURL('/shoppingcart/bundle/'+prodid+'/burger_complex')
		}
	}	
	return addToCartFinal(url,{product_id:prodid,quantity:1,ret:returnFunc})
}

function bundle(isbrand,prodid,options){
	o = $.extend({burger_type:'burger'},options)
	loadURL('/shoppingcart/bundle/'+prodid+"/"+(isbrand?'brand':o.burger_type))
}

function addToCart2(prodid,isbrand,isbundle){
	ret = null
	if(isbundle){
		ret = function(){
			loadURL('/shoppingcart/bundle/'+prodid+"/"+(isbrand?'brand':'burger'))
		}
	}	
	if(isbrand){
		return addToCartFinal("/shoppingcart/add_branding",{branding_id:prodid,quantity:1,ret:ret})
		
	}else{
		return addToCartFinal("/shoppingcart/add",{product_id:prodid,quantity:1,ret:ret})
	}
}

function addToCartFinal(url,options){
	this.isDone = function(data){
		if(data.success){
			setShoppingCart();			
		try{
				$("#total_items").html(data.size);
			}catch(e){}
			if(options.ret && typeof options.ret == 'function'){
				options.ret(data)
			}
		}else{
			alert(data.message);
		}
	}
	$.post(url,options,this.isDone,'json')
}

function editBurger(id,brand){	
	$.post("/shoppingcart/remove_burger_from_cart_and_edit",{item_id:id,is_brand:brand},function(data){
		if(data.success){
			setShoppingCart('edit')
			if(data.is_complex){
				loadURL("/builder/buildaburger_complex/"+data.burger)
			}else{
				loadURL("/buildaburger/home/"+id+"/")
			}
		}else{
			alert(data.message);
		}
	},'json')
}
function editCompositeItem(id,type){
	$.post("/shoppingcart/remove",{cartitem_id:id,quantity:1},function(data){
		if(data.success){
			setShoppingCart('edit')
			loadURL('/builder/home/'+type+'/'+data.product_id)
		}else{
			alert(data.message);
		}
	},'json')
}

function removeCartItem(btn,prodID){
	$(btn).attr('onclick','')	
	$.post("/shoppingcart/remove",{cartitem_id:prodID,quantity:1},function(data){
		if(data.success){
			setShoppingCart('remove')
		}else{
			alert(data.message);
			$(btn).click(function(){
				removeCartItem(btn,prodID)	
			})
		}
	},'json')
}
function removeBrandItem(brandID){
	$.post("/shoppingcart/removebrand",{cartitem_id:brandID,quantity:1},function(data){
		if(data.success){
			setShoppingCart('remove')
		}else{
			alert(data.message);
		}
	},'json')
}
function datediff(d1,d2,options){
	var o = $.extend({
		values:"wdhms"	
	},options)
	var diff = new Date();
	diff.setTime(Math.abs(d1.getTime() - d2.getTime()));
	
	var timediff = diff.getTime();
	this.diff = timediff;
	this.weeks = false;
	if(o.values.lastIndexOf('w')>=0){
		this.weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
		timediff -= weeks * (1000 * 60 * 60 * 24 * 7);
	}
	this.days = false;
	if(o.values.lastIndexOf('d')>=0){
		this.days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
		timediff -= days * (1000 * 60 * 60 * 24);
	}
	this.hours = false;
	if(o.values.lastIndexOf('h')>=0){
		this.hours = Math.floor(timediff / (1000 * 60 * 60)); 
		timediff -= this.hours * (1000 * 60 * 60);
	}
	this.minutes = false;
	if(o.values.lastIndexOf('m')>=0){
		this.minutes = Math.floor(timediff / (1000 * 60)); 
		timediff -= this.minutes * (1000 * 60);
	}
	this.seconds = Math.floor(timediff / 1000);
	 
	//timediff -= secs * 1000;
	//var str = ((hours>0)?hours+" Hours ":"") + mins+" Minutes"
	return  this;
}

function blockWin(data){
	
	var BW = this;
	this.d = $.extend({
		width:200,
		height:200,
		img:'/img/bgBlockcontent.png',
		content:'',
		loadURL:null,
		loadData:null,
		returnFunc:null,
		blockCSS:{},
		id:'block_content_inner'
	},data);

	var blockCSS = $.extend({
			width:BW.d.width - 40,
			padding:"20px",
			height:BW.d.height - 40,
			textAlign:"center",
			cursor:"default",
			fontWeight:"normal",
			overflow:'hidden'
			
		},BW.d.blockCSS)
	var win = $(window)
	var scrollTop = win.scrollTop()
	var pos_y = !isNaN(d.height)?(((win.height()/2)+win.scrollTop()) - (d.height/2) - 30):win.height()/2-200;
	//var pos_y = !isNaN(d.height)?((win.height()/2) - (d.height/2) - 30):win.height()/2-200;
	
	if(pos_y<0)pos_y=0;
	
	var pos_x = (win.width()/2) - (d.width/2);

	var content_div = $("<div id=\""+BW.d.id+"\"></div>").css(blockCSS)
	var canvas
	if(BW.d.img != null){
		canvas = $("<img src='"+BW.d.img+"'/>")
	}else{
		canvas = $(document.createElement("div"))
	}
	
	content_div.bg_img = canvas.css({
		width:BW.d.width,
		height:BW.d.height,
		position:"absolute",
		zIndex:-1
	})
	
	$.blockUI({
        message: content_div.bg_img,  
        css: { 
        	top:pos_y,
        	left:pos_x,
            width:BW.d.width,
            height:BW.d.height, 
            border: 'none',         
            background:"transparent",
            textAlign:"left",
            zIndex:"1021",
            position:'absolute',
            fontWeight:"normal"
        },
        overlayCSS:{
        	zIndex:"1020"
        } 
	})
	
	content_div.bg_img.after(content_div)
	content_div.append(BW.d.content);
	
	this.doneload = function(html){
		if(data.returnFunc != null){
			setTimeout(function(){
				data.returnFunc(html)
			},50);
		}
		
		//if(und(d.height)){
			//content_div.bg_img.attr('height',content_div.outerHeight())
			//content_div.bg_img.parent().css({top:(win.height()/2) - (content_div.outerHeight()/2) - 30})
		//}
	}
	
	if(data.loadURL){
		content_div.load(data.loadURL,data.loadData,function(html){
			BW.doneload(html)
		})
	}else{
		BW.doneload()
	}
	content_div.resize = function(newx,newy){		
		x2 = parseCssString(newx?newx:BW.d.width);
		y2 = parseCssString(newy?newy:BW.d.height);
		
		var win = $(window)	
		var pos_y = (win.height()/2) - (y2/2);
		if(pos_y<0)pos_y=0;
		var pos_x = (win.width()/2) - (x2/2);
		
		var newDim = {
			height:y2,
			width:x2
		}
		var duration = 200
		content_div.bg_img.parent().animate($.extend({	
			top:pos_y,
			left:pos_x
		},newDim),duration)
		content_div.bg_img.animate(newDim,duration)
		content_div.animate({
			height:y2-40,
			width:x2-40
		},duration)
		
	}
	_Block_Window = content_div
	return content_div;
}

function parseCssString(val){
	if(typeof(val) == "string")val = parseInt(parseFloat(val.split("px")[0]))
	return val;
			
}
function NoCash(){
	return new Date().getTime()
}
function marketToGroup(bid){
	var MTG = this;
	this.win = blockWin({
		width:650,
		height:400,
		loadURL:"/community/share_with_group",
		returnFunc:function(){
			setShareBrand(bid)
		}
		
	})
	
}

function tweetThis(event,pid,bid){
	var tweet = this;
	var brandid = bid;
	tweet.popup = window.open("/twitter/stage_tweet/?brand="+bid,"twitter","width=800,height=400");
	tweet.popup.focus()
		
}
function tweetThis2(event,pid,bid){
	var tweet = this;
	var brandid = bid;
	
	blockWin({
		content:"<img src='/img/ajax.gif' style='margin-top:50px;'/>",
		width:400,
		height:230,
		loadURL:"/community/tweet?brand="+bid
		
	})
		
}
function emailThis(e,pid,bid){
	var Email = this;
	var url = "/fourmail/email_brand_form";
	
	if(pid){
		url+="?product_id="+pid;
	}else if(bid){
		url+="?brand_id="+bid;
	}
	var ET = this;
	this.win = blockWin({
		width:600,
		height:400,
		content:"<img src='/img/ajax.gif' style='margin-top:50px;'/>",
		loadURL:url,
		returnFunc:function(){
			
				ET.win.find(".orangeButton").customButton();
				ET.win.find(".greyButton").customButton();

				var message = ET.win.find("#personal_message");
				message.emptyText();
				
		
				ET.win.find("#email_btn").click(function(){
					var statusmsg = $(document.createElement("div")).append("Sending email..");
					ET.win.parent().block({message:statusmsg});
					var msg = message.hasClass("valid")?message.val():"";
					

					var f = {
						item_id:ET.win.find("input:hidden[name='item_id']").val(),
						type:ET.win.find("input:hidden[name='type']").val(),
						message:msg,
						first_name:ET.win.find("#first_name").val(),
						to_email:ET.win.find("#to_email").val()
					}
					
						
					$.post("/fourmail/email_marketing",f,function(data){
						if(!validateForm(ET.win,data)){
							ET.win.parent().unblock();
						}else{
							$.unblockUI();
						}
						
					},'json')
					
				})
				
				
		}
	})
}

function fbs_click(e,p) { 
	var x = new myevent(e);
	x.cancelBubble();
	if(p){
		u = "http://"+_hostName+"/products/share/"+p;
	}else{
		u="http://"+_hostName+"/products/share/"+_fbBurgerID;
	}
	if(!isNaN(parseInt(_userid))){
		u += "/"+_userid;
	}

	t="4Food share"; 
	//alert(u+'&t='+t)
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t), 'sharer', 'toolbar=0, status=0, width=626, height=436'); 
	return false; 
}
$.fn.verticalScroll = function(){
	var t = this;
	t.mousewheel(function(event,intdelta){
		t[0].scrollTop -= intdelta *6;
		event.preventDefault();
	});	
	return this;
}
$.fn.horizontalScroll = function(){
	var t = this;
	t.mousewheel(function(event,intdelta){
		t[0].scrollLeft -= intdelta *6;
		event.preventDefault();
	});	
	return this;
}
function toNumber(x){
	if(x){
		return parseInt(x);
	}else{
		return 0;
	}
}

$.fn.bgImage = function(options){
	var data = $.extend({
		img:'/img/bgBlockcontent.png',
		css:$.extend((options?options.css:null),{marginTop:10,marginLeft:15,marginRight:15})
	},options)
	var obj = this;
	var objWidth = this.outerWidth();
	var objHeight = this.outerHeight();
	obj.css({textAlign:"left"})
	
	if(data.css.margin){
		data.css.marginRight = data.css.margin;
		data.css.marginLeft = data.css.margin;
		data.css.marginTop = data.css.margin;
		data.css.marginBottom = data.css.marginBottom;
	}
	
	var win = $(window);
	this.img = $("<img src='"+data.img+"' class='bg_image'/>").css({
		width:objWidth,
		height:objHeight, 
		marginBottom:-objHeight,
		marginRight:-objWidth,
		position:"relative",
		zIndex:1
	})
	
	this.content = $("<div class=\"content_inner\"></div>").css($.extend({
		width:(objWidth -(toNumber(data.css.marginRight) + toNumber(data.css.marginLeft))),
		height:objHeight - (toNumber(data.css.marginTop)+toNumber(data.css.marginBottom)),
		cursor:"default",
		background:"transparent",
		position:"relative",
		zIndex:2
	},data.css))

	this.content.append(obj.html());
	obj.html(this.img)
	this.img.after(this.content)	
	
	return this;
}

function declineGroupOrder(goid){
	if(confirm("Are you sure you would like to remove yourself from this feast?")){
		var p = {group_order_id:goid,status:4}
		$.post("/checkout/group/participant_set_status",p,function(data){
			if(data.success){
				loadURL("/");
			}else{
				alert(data.message)
			}
		},'json')
	}
}
function cancelFeast(){
	if(confirm("Once canceled there is no coming back are you sure?")){
		$.post("/feast/cancel",{},function(data){
			if(!data.success){
				alert(data.message)
			}
			fullRefresh()
		},"json")
	}
}
function addGuestToFeast(fname,fid){
	var w = blockWin({
		width:340,
		height:210,
		content:"<div id='popup_header'><span>Invite to "+fname+"</span></div><hr/><br/>"+
			"<input type='hidden' value='"+fid+"' name='id'/>"+
			"<table><tr><td>Name&nbsp</td><td style='padding-bottom:5px;'><input type='text' name='name'></td></tr>"+	
			"<tr><td>Email&nbsp;</td><td><input type='text' name='email'></td></tr>"+
			"</table><br/><div class='orangeButton' style='width:120px;float:right;'>Send fVite</div>"+
			"<div id='cancelbtn' class='greyButton' style='cursor:pointer;width:120px;float:left;'>Cancel</div></center>",
		returnFunc: function(){
			w.find(".orangeButton").customButton().click(send_invite)
			
			w.find("input[name='name']").focus()
			w.find("#cancelbtn").customButton().click(function(){
				$.unblockUI();	
			})
		}
	})
	function send_invite(){
		w.block()
		var p = getJsonValues(w)
		$.post("/feast/add_guest",p,function(data){
			if(!data.success){
				alert(data.message)
				w.unblock()
			}
			fullRefresh()
		},'json')
	}
}
function removeGroupUser(attid,uname,remove_status){
	if(!uname){
		uname = "this user";
	}
	if(confirm("Are you sure you would like to remove "+uname+" from this feast?")){
		var p = {id:attid}
		$.post("/feast/remove_guest",p,function(data){
			if(!data.success){
				alert(data.message)
			}
			fullRefresh()
		},'json')

	}
}
function checkout(isFinal){
	if(isFinal){
		window.location = "/checkout/confirm/";	
	}else{
		window.location = "/checkout/check_upsell";
	}
}
$.fn.emptyText = function(options){
	var placeholderSupport = ("placeholder" in document.createElement("input"))
	var opt = $.extend({color:"#ccc"},options)
	
	this.each(function(){		
		var i = $(this);
		var text = i.attr("placeholder")
		
		if(!placeholderSupport){
			i.css({color:opt.color}).val(text);			
		}
		i.bind("focus",function(){		
			if(!i.hasClass("valid")){
				if(!placeholderSupport){
					i.css({color:"#000000"}).val("");
				}
				i.addClass("valid");
			}
		}).blur(function(){			
			if(i.val().trim().length <=0){
				i.reset();
			}
		})
		i.reset = function(){	
			if(!placeholderSupport)i.css({color:opt.color}).val(text);
			i.removeClass("valid");
		}	
	})
	
	return this;
}
function openVideo(ytid){
	blockWin({
		width:500,
		height:450,
		blockCSS:{paddingTop:10},
		loadURL:"/youtube/watch_video?id="+ytid,
		returnFunc:this.doneLoad
	})
}
function deleteVideo(btn,burger_id,brand_id,ytid){
	var b = $(btn).parents("div.brand_item")
	b.block({message:_loadImg})
	console.log("brand_id="+brand_id);
    console.log("burger_id="+burger_id);
	$.post("/youtube/delete_video",{video_id:ytid,brand_id:brand_id},function(data){
		if(!data.success){
			alert(_json.serialize(data));
		}
        $.unblockUI();
        uploadVideo(burger_id)

	},"json")

}
function circle(p,r,startXY,off){
	var C = this;
	this.radius = r;
	this.numpoints = p;
	this.origX = startXY.x;
	this.origY = startXY.y;
	this.alpha = Math.PI *2 / p;
	
	this.points = new Array(p);
	for(x=0;x<p;x++){
		var theta = (this.alpha * x);
		var np = {x:((Math.cos(theta)*this.radius)+this.origX) - (off*x),y:(Math.sin(theta)*this.radius)+this.origY};
		this.points[x] = np
	}
	this.draw = function(targ,vals){
		
		for(var p=0;p<C.points.length;p++){
		
			var d = $("<div class='dot val_"+vals[p]+"'></div>");
			d.css({
				top:C.points[p].y,
				left:C.points[p].x
			})
			targ.append(d)
		}
	}
	return this
}

$.fn.attention = function(opts){
	var ATT = this;
	var options = $.extend({colors:['#F79720','#00535E']},opts)

	this.animateChar = function(obj,x){
		try{
			if(x<0 || x>= options.colors.length){
				x=0;
			}
		
			obj.animate({color:options.colors[x]},"slow","swing",function(){
				x++;
				ATT.animateChar(obj,x)	
			})
			
		}catch(e){}
	}
	
	this.interval = 0
	
	this.each(function(){
		ATT.animateChar($(this),0)
	})

	return this	
}
function updateBurgerBrandingImage(img_url){
    console.log(img_url);
    $("#brand_image").attr("src",img_url);
}

function uploadVideo(burger_id){
    console.log("uploadVideo burger_id="+burger_id);
    var win = blockWin({
        width: 670,
        height:520, 
        loadURL:"/burgermarketing/upload_video/"+burger_id,
        returnFunc:function(){
            win.find(".customButton").customButton()
            win.find(".round").corner();
            $("#btn_submit").click(function(){
                socialShareBurger(burger_id)
            })

        }
    })
}

function nameYourBurger(bid,brand,options){
	var options = $.extend(
		{ret:null,nameOnly:false}
	,options)
	var win = blockWin({
		width: 770,
        height:560, 
        loadURL:"/burgermarketing/view_branding?burger_id="+bid+(brand?"&brand_id="+brand:""),
        returnFunc:function(){
        	if(options.nameOnly){

        		win.find("#btn_cancel").html("Not now")
        	}
 			var formdata = win.find("#burgerBrandForm")
        	win.find(".customButton").customButton()
        	win.find(".round").corner()
			totalNutrition("burger2_"+bid);
			win.find("#btn_cancel").click(function(){
				$.unblockUI()
				if(typeof options.ret == 'function'){
					options.ret()
				}
			})
			win.find("#btn_submit").click(function(){	
				win.block();
				win.find("#brand_target").unbind('load').bind('load',function(){
					var d = this.contentWindow.document.body.innerHTML
					try{
						var j = JSON.parse(d);
						
						if(validateForm(formdata,j)){
							if(typeof options.ret == 'function'){
								options.ret()
							}else{
								loadURL("/")
							}
							$.unblockUI();
						}else{
							win.unblock();
						}
					}catch(e){
						alert("Something went wrong!"+e)
						$("#brand_target").css({width:200,height:200})
						
					}	
					
				})
				formdata.attr({
					target:"brand_target",
					action:"/burgermarketing/set_branding/"+(options.nameOnly?"True":"False")+"/"	
				}).submit();		
			})
		}
	})

}
function socialShareBurger(burger_id){
    console.log("share burger")
    var win = blockWin({
        width: 225,
        height:250, 
        loadURL:"/burgermarketing/share/"+burger_id,
        returnFunc:function(){
            win.find(".customButton").customButton();
        	win.find(".round").corner();
            console.log("we got social");

        }
    })

}

function openStory(){
	_popupContent = blockWin({
		width:689,
		height:489,
		loadURL:"/html/story.html"			
	})
}
function openCalculator(){
	_popupContent = blockWin({
		width:689,
		height:489,
		loadURL:"/html/calculator.html"			
	})
}
function joinSocialGroup(gid,gname){
	var group_name = gname !=null?gname:'{{group.name}}';
	var url = "/community/group/join";
	var p = {group_id:gid}
	$.post(url,p,function(data){
		if(data.success){
			alert("You're now a member of the "+group_name+" 4Food group");
			window.location.reload()
		}else{
			alert("Error: "+data.error);
		}
	},'json');
}

function leaveSocialGroup(gid){
	var url = "/community/group/leave";
	var p = {group_id:gid}
	$.post(url,p,function(data){
		if(data.success){
			window.location.reload()
		}else{
			alert("Error: "+data.error);
		}
	},'json');
}
function setExtraPanel(obj){
	var pl = $("#extras_placeholder")
	if(pl.size()>0){
		$("#extras_placeholder").html(obj.show()).show()
	}
}
function commentToggle(img){
	var b = $("#right_comment_div")
	b.slideToggle("normal",function(){
		if(!b.is(":visible")){
			$(img).removeClass("up").addClass('down');
		}else{
			$(img).removeClass("down").addClass('up');
		}
	});
}
function sendCommentPanel(){
	var c = $("#id_comment")
	var form = $("#comment_form")
	if(c.hasClass('valid')){
		form.hide();
		form.next().show();
		form.submit()
	}else{
		alert("You must enter a comment")
	}
}
function postCommentDone(){
	var form = $("#comment_form")
	form.next().hide();		
	form.show();
	$("#id_comment").val("").blur()
	
	loadPage(1)
}	
function toggleFeastDescription(btn){
	var b = $(btn)
	b.next().slideToggle("fast",function(){
			if(b.next().is(":visible")){
				b.attr('src','/img/info_btn2.png')	
			}else{	
				b.attr('src','/img/info_btn.png')	
			}
	})
}
function exitHawker(){
	$.post('/hawker/exit',function(data){
		
		fullRefresh("/hawker")
	},'json')	
}
$.fn.customSelect = function(retFunc){
	this.css({
		position: 'relative',
		opacity: 0,
		filter: 'alpha(opacity=0)',
		zIndex:5,
		zIndex: 5
	})
	this.each(function(){
		var span = $(document.createElement("div"));	
		var t = $(this);
		option = t.find("option");
		var active = "Select"
		if(option.length > 0){
			active = option[0].childNodes[0].nodeValue;
		}
		textnode = document.createTextNode(active);
		for(b = 0; b < option.length; b++) {
			if(option[b].selected == true) {
				textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
			}
		}
		span.addClass("selectButton");
		span[0].id = "select" + t[0].name;
		span.append(textnode);
		var w = t.width();
		if(w<=0){w = parseInt(t.css("width").split("px")[0])};
		span.css({
			marginBottom:'-23px',
			width:w+2,
			marginRight:-w+2
		})					
		t.before(span);		
		span.customButton({rightWidth:20,height:20});
		
		if(!t.attr("disabled")) {
			t.change(function(){
				span.html(t.find("option:selected").html())			
			}).keyup(function(){
				span.html(t.find("option:selected").html())
			})
			
		} else {
			span.addClass(" disabled");
		}
			
	})	
	if(retFunc){
		retFunc();
	}	
	return this;
}
function sendEmailConfirmation(uid,ret){
	$("#mainPane").block()
	$.get("/userregistration/send_confirm_email/",function(data){
		if(!data.success){
			alert(data.message)	
		}else{
			if(ret && typeof(ret)=="function"){
				ret()
				return true
			}
		}
		$.unblockUI()
	})
	
}

function clearCookies(){	
	var op = {path:'/checkout/preview'}
	$.cookie('comments',null,op)
	$.cookie('delivery_time',null,op)
	$.cookie('pickup_time',null,op)
	$.cookie("inf_amount",null,op)

}
$.fn.allImagesLoaded = function(func){
	var images = $(this).find("img")
	var count = images.size()
	var c = 0
	var dofunc = function(){
		c++
		//alert(c)
		if(c == count && typeof(func) == 'function'){
			//alert('dofunc')			
			func()
		}
	}
	images.each(function() {
        if( this.complete ) {
            dofunc();
        } else {
 
            $(this).bind('load', dofunc); 
            $(this).error(function(e){
            	dofunc()
            })
        }
        
    });   
}

$.fn.dateFill = function(){
	var months,date
	months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	
	date = new Date();
	this.each(function(){
		var t = $(this)
		if(this.tagName.toUpperCase() == "SELECT"){
			if(t.hasClass('month')){
				for (m = 0; m < months.length; m++) {
   					var opt = $("<option value="+(m+1)+">"+months[m]+"</option>")
   					t.append(opt)
			    }
			}else if(t.hasClass("year")){
				var y = date.getFullYear();
				listItems = "";
				for (i = y; i <= (y + 50); i++) {
					var opt = $("<option value="+i+">"+i+"</option>")
   					t.append(opt)
				}
			}
		}	
	})
	return this	
}
function deletePayment(payment_id,url){
	if(!url){
		url = '/usreprofile/update/'
	}
	$.blockUI()
	$.post("/payment/delete/"+payment_id+"/",function(data){
		if(data.success){
			alert('Success')
			loadURL(url)
		}else{
			alert(data.message)
			
		}
		$.unblockUI()
	})	
}

$.fn.validate = function(){
	$("label.error").remove()
	var ok = true
	this.each(function(){
		var t = $(this)
		var inputs = t.find("input.required,select.required")
		inputs.each(function(){
			var input = $(this)
			var val = input.val()
			if(und(val)||val.length<=0){
			ok = false
			input.addClass("error")
			var lbl = $("<label class=\"error\" for=\""+input[0].id+"\">*</label>")
			input.before(lbl)
			input.unbind().bind('keypress change',function(){
				if(input.val().length<=0){
					input.addClass('error')
					input.before(lbl)	
				}else{
					input.removeClass('error')
					lbl.remove()	
				}
			})		
		}
		})
	})
	return ok
}

