
function send(cmd, params, callback, hideResponse, retry_once) {
	if (hideResponse)
		$('#response').hide();
	else
		$('#response').show().html("<div id='loading'><img src='../images/wait.gif'>  "+Labels.Sending+"</div>");
	var servlet;
	if (cmd === "StatusPost")
		servlet = "CmdPostW";
	else if (cmd === "StatusList")
		servlet = "CmdListW";
	else
		servlet = "CmdW";
	
	var cb = function(obj) { 
		if (obj && obj.Code == 401 && obj.Error) 
			forcelogin(); 
		else 
			callback(obj); 
	}
	var cb_retry = function(obj) { 
		if (obj && obj.Code == 401 && obj.Error) 
			forcelogin(); 
		else if (!obj || obj.Error)
			$.post("../"+servlet+"?cmd="+cmd, params, cb, "json"); 
		else
			callback(obj); 
	}
	return $.post("../"+servlet+"?cmd="+cmd, params, retry_once ? cb_retry : cb, "json");
}
function sendWithWaitMsg(cmd, params, callback, msg, retry_once) {
	var servlet;
	if (cmd === "StatusPost")
		servlet = "CmdPostW";
	else if (cmd === "StatusList")
		servlet = "CmdListW";
	else
		servlet = "CmdW";
	$('#response').show().html("<div id='loading'><img src='../images/wait.gif'>  "+msg+"</div>");
	
	var cb = function(obj) { 
		if (obj && obj.Code == 401 && obj.Error) 
			forcelogin(); 
		else 
			callback(obj); 
	}
	var cb_retry = function(obj) { 
		if (obj && obj.Code == 401 && obj.Error) 
			forcelogin(); 
		else if (!obj || obj.Error)
			$.post("../"+servlet+"?cmd="+cmd, params, cb, "json"); 
		else
			callback(obj); 
	}
	return $.post("../"+servlet+"?cmd="+cmd, params, retry_once ? cb_retry : cb, "json");
}
function forcelogin() {
	document.location="/forcelogin?redirect="+encodeURIComponent(document.location)+"&errorMsg="+encodeURIComponent(Labels.ErrSession);
}
function error(msg) {
	if (!msg)
		msg = Labels.ErrDefaultMsg.replace("%1", mySiteName());
	$('#content').html("<div class='alerterror'><img src='/images/cryingbaby.gif' /><br><p><b>"+Labels.ErrDefaultMsg2+"</b></p><p>"+msg+"</p></div>")
}
function show_response(data) {
	if (data.Error)
		$('#response').show('fast').html("<div class='err'>"+data.Error+"</div>");
	else if (data.Msg) {
		$('#response').show('fast').html("<div class='msg'>"+data.Msg+"</div>");
		setTimeout(function() { $('#response').hide('slow') }, 5000);
	}
}
Date.prototype.sameDay= function(dt) { return dt.getDate() == this.getDate() && dt.getMonth() == this.getMonth() && dt.getFullYear() == this.getFullYear(); }

format_time = function(hour, mn, is24) {
	var h = hour;
	if (!is24) {
		h = hour % 12;
		if (h==0)  // 0am is 12am
			h = 12;
	}
	var txt = "" + h;
	txt += ":" + ((mn >= 10) ? mn : "0"+mn)
	if (!is24) {
		txt += hour >=12 ? "PM" : "AM";
	}
	return txt;
}

function format_date(time_ms) {
	var dt = new Date(time_ms);
	var today = new Date();

	if (dt.sameDay(today)) 
		return Labels.Today;
	today.setDate(today.getDate() - 1);
	if (dt.sameDay(today)) 
		return Labels.Yesterday;
	return ''+(1+dt.getMonth())+'/'+dt.getDate()+'/'+(1900+dt.getYear());
	
}

function getTimeStampForDate(dt) {
	return dt.getHours()*100 + dt.getMinutes();
}
function getTSForNow() {
	var dt = new Date();
	return dt.getHours()*100 + dt.getMinutes();
}
function getTSForDay(dt) {
	return (dt.getFullYear() - 2000)*10000 + (1+dt.getMonth())*100 + dt.getDate();
}
function getDayFromTS(ts) {
	var dt = new Date();
	var day = ts % 100;
	var month = Math.floor(ts / 100) % 100;
	var year = Math.floor(ts / 10000) % 100;
	dt.setFullYear(year+2000);
	dt.setMonth(month-1);
	dt.setDate(day);

	return dt;
}
function getDateFromTS(dts, tts) {
	var dt = getDayFromTS(dts);
	dt.setHours(Math.floor(tts / 100) % 100);
	dt.setMinutes(tts % 100);
	return dt;
}
function escapeHtml(str) {
    return str.replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&/g,"&amp;");
}
function escapeJs(str) {
    return str.replace(/"/g,"\\\"").replace(/'/g,"\\\'");
}

initTooltip = function(){	
	xOffset = 10;
	yOffset = 20;		
	$("a.tooltip").hover(function(e){											  
		this.t = this.title;
		this.title = "";									  
		$("body").append("<p id='tooltip'>"+ this.t +"</p>");
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px")
			.fadeIn("fast");		
    },
	function(){
		this.title = this.t;		
		$("#tooltip").remove();
    });	
	$("a.tooltip").mousemove(function(e){
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px");
	});			
};
function myAlert(msg) {
	$('#content').append('<div id="alert" title="'+Labels.Error+'"<p>'+msg+'</p></div>');
	$("#alert").dialog({ modal: true, buttons: { Ok: function() { $(this).dialog('destroy');$('#alert').remove(); } } });
}
function myConfirm(msg, fcn) {
	$('#content').append('<div id="alert" title="'+Labels.PleaseConfirm+'"<p>'+msg+'</p></div>');
	$("#alert").dialog({ modal: true, buttons: { 
		Ok: function() { $(this).dialog('destroy'); $('#alert').remove();fcn(); }, 
		Cancel: function() { $(this).dialog('destroy');$('#alert').remove();  } 
	} });
	$('.ui-dialog .ui-dialog-buttonpane > button:first').addClass('defaultDlgButton');
}
function mySiteName() {
	if (document.location.hostname.search(/dailyconnect.com/i) >= 0)
		return "Daily Connect";
	return "Baby Connect";
}
function mySiteUrl() {
	if (document.location.hostname.search(/dailyconnect.com/i) >= 0)
		return "dailyconnect.com";
	
	return "baby-connect.com";
}

