var g_req = null;

var QTCL_STATUS = 1;
var QTCL_FWD =5;

var QT_STATUS_USER_SET_TO_PRO_PENDING__DO_PAYPAL = 503;
var QT_STATUS_LOGIN_SUCCESS = 370;
var QT_STATUS_SEND_BETA_REQ_SUCCESS = 360;
var QT_STATUS_SEND_BETA_REQ_FAIL = -360;
var QT_STATUS_LOGIN_FAIL = -370;

var	AJAX_PARAM_GENERAL = 1;
var AJAX_PARAM_ACTIVE_TAGS = 70;
var AJAX_PARAM_ADDRESSES = 48;
var	AJAX_PARAM_ADDRESS_CITY = 44;
var	AJAX_PARAM_ADDRESS_COUNTRY = 47;
var	AJAX_PARAM_ADDRESS_STATE = 45;
var	AJAX_PARAM_ADDRESS_STREET1 = 42;
var	AJAX_PARAM_ADDRESS_STREET2 = 43;
var	AJAX_PARAM_ADDRESS_TYPE = 41;
var	AJAX_PARAM_ADDRESS_ZIP_CODE = 46;
var	AJAX_PARAM_ALMOST_NEW = 61;
var	AJAX_PARAM_APPLY = 2;
var	AJAX_PARAM_ASSIGNED_DAY = 11;
var	AJAX_PARAM_ASSIGNED_END_DAY = 13;
var	AJAX_PARAM_ASSIGNED_END_TIME = 14;
var	AJAX_PARAM_ASSIGNED_SPECIFIC_DAY = 20;
var	AJAX_PARAM_ASSIGNED_SPECIFIC_END_TIME = 25;
var	AJAX_PARAM_ASSIGNED_SPECIFIC_TIME = 10;
var	AJAX_PARAM_ASSIGNED_TIME = 12;
var AJAX_PARAM_BM_DATA_TYPE = 64;
var	AJAX_PARAM_CATID = 1;
var	AJAX_PARAM_CATEGORY_ID = 4;
var	AJAX_PARAM_COMMENT = 23;
var AJAX_PARAM_CONTACT_ID = 30;
var	AJAX_PARAM_DOC_ID = 27;
var	AJAX_PARAM_DC_ID = 28;
var AJAX_PARAM_DC_NAME = 49;
var	AJAX_PARAM_DESCRIPTION = 6;
var	AJAX_PARAM_DUE_DAY = 21;
var	AJAX_PARAM_DUE_SPECIFIC_DAY = 22;
var	AJAX_PARAM_DYNA_FIELDS = 40;
var	AJAX_PARAM_EMAIL = 37;
var	AJAX_PARAM_END_SPECIFIC_DAY = 18;
var	AJAX_PARAM_ENDING_ON = 19;
var AJAX_PARAM_ENTRY_ID = 50;
var AJAX_PARAM_FOR_DATE = 72;
var AJAX_PARAM_FRIEND_ID = 51;
var	AJAX_PARAM_HANDLE = 33;
var	AJAX_PARAM_IP_ADDRESS = 82;
var	AJAX_PARAM_LAST_UPDATED = 36;
var	AJAX_PARAM_LOCATION = 78;
var	AJAX_PARAM_MILESTONE_ID = 59;	
var	AJAX_PARAM_MONTH = 74;	
var	AJAX_PARAM_MUST_BE_NEW = 62;	
var	AJAX_PARAM_NAME = 35;
var	AJAX_PARAM_NOTES = 7;
var	AJAX_PARAM_OBJ2UPDATE = 31;
var AJAX_PARAM_ORDINAL = 24;
var	AJAX_PARAM_ORG_ID = 83;	
var	AJAX_PARAM_OWNER_ID = 66;
var	AJAX_PARAM_PAGE_NUM = 63;
var	AJAX_PARAM_PARENT_ITEM_ID = 5;
var	AJAX_PARAM_PASSWORD = 80;
var	AJAX_PARAM_PHONE = 38;
var	AJAX_PARAM_PHONE_TYPE = 39;
var	AJAX_PARAM_POST_ID = 58;
var AJAX_PARAM_PRIORITY = 73;
var AJAX_PARAM_PROJ_ID = 52;
var	AJAX_PARAM_GROUP_TAGS = 34;
var	AJAX_PARAM_REMEMBER_ME = 81;
var	AJAX_PARAM_REPEAT_EVERY = 15;
var	AJAX_PARAM_REPEAT_TYPE = 16;
var	AJAX_PARAM_REPEAT_WEEKLY_DAYS = 17;
var AJAX_PARAM_REQUIRE_HANDLE = 68;
var	AJAX_PARAM_RES_MEM_ID = 53;
var	AJAX_PARAM_RES_MEM_TYPE = 54;
var	AJAX_PARAM_SF = 76;
var	AJAX_PARAM_SF_PROJ = 77;
var	AJAX_PARAM_STARTING_ON = 26;
var AJAX_PARAM_STATE_FLAGS = 65;
var	AJAX_PARAM_STATUS = 8;
var	AJAX_PARAM_SUBJECT = 56;
var	AJAX_PARAM_TAG = 69;
var	AJAX_PARAM_TAG_ID = 71;
var	AJAX_PARAM_TASK_ID = 3;
var	AJAX_PARAM_TASK_TYPE = 9;
var	AJAX_PARAM_THE_DATE = 67;
var	AJAX_PARAM_THE_LINK = 60;
var	AJAX_PARAM_TITLE = 29;
var	AJAX_PARAM_TO = 55;
var	AJAX_PARAM_USER_ID = 32;
var	AJAX_PARAM_USERNAME = 79;
var	AJAX_PARAM_YEAR = 75;	
var AJAX_PARAM_TS = 84;
var AJAX_PARAM_TYPE = 85;
var AJAX_PARAM_POPUP_MODE = 86;
var AJAX_PARAM_PP_ID = 87;
var	AJAX_PARAM_TASK_CODE = 89;
var	AJAX_PARAM_TAGS = 90;
var	AJAX_PARAM_CREATOR_ID = 91;
var	AJAX_PARAM_CODE = 92;
var	AJAX_PARAM_APPLY2 = 93;
var	AJAX_PARAM_MSG_TYPE = 94;
var	AJAX_PARAM_PRODUCT = 95;
var	AJAX_PARAM_COMMENT_ID = 96;
var AJAX_PARAM_TABLE_OFFS = 100;

var AJAX_PARAM2_BM_DATA = 500;
var AJAX_PARAM2_PAGE_NUM = 501;
var AJAX_PARAM_SORT_DATA_INDEX = 502;
var AJAX_PARAM_SORT_STATE = 503;
var AJAX_PARAM_STATUS_FILTER = 504;
var AJAX_PARAM_SEND_EMAIL = 505;
var	AJAX_PARAM_BODY = 506;
var	AJAX_PARAM_REFRESH_VIEW = 507;
var AJAX_PARAM_FILTER_MODE = 508;
var AJAX_PARAM_W_ID = 509;
var AJAX_PARAM_REFRESH_QTCL =510;
var	AJAX_PARAM_JUST_STATUS_CHANGE =511;
var	AJAX_PARAM_CARDINAL =512;
var AJAX_PARAM_NEW =513;
var AJAX_PARAM_NOTIFY =514;
var	AJAX_PARAM_STAGE = 515;
var	AJAX_PARAM_EXTRA = 516;
var	AJAX_PARAM_EXTRA2 = 517;
var AJAX_PARAM_CLIENT_ID = 518;

var MSG_TYPE__INTERESTED_IN_QT_BUSINESS = 1;
var MSG_TYPE__SUPPORT_REQUEST = 2;


var QTCL_END = "ze";

var COLOR_FAIL = "#f02525";
var COLOR_FAIL_DK = "#af0000";
var COLOR_SUCCESS = "#008f00";

var g_status = 0;

<!-- Load the freeware XLibrary scripts (LGPL) -->

function fnAdjust_Box_Sizes()
{
	/*
	var client_width = xClientWidth();
	var client_height = xClientHeight();	
	var max_height = Math.max(400, xHeight("div_page"));
	max_height = Math.max(max_height, client_height);
	xHeight("div_page", max_height);
	*/
}

function fnGenHeader(page_id)
{
	// Status Msg
	document.writeln("<div id='div_main_status_msg' class='style_main_status_msg__success'></div>");
	fnSetInnerhtml('div_main_status_msg','');
	fnHide('div_main_status_msg');

	var str_out ="";
	str_out += "<div id='div_header_area'>";
	str_out += "<span style='position: absolute; left: 30px; top:10px; z-index:500;'><img src='../qt/qt_logo.gif'/></span>";
	str_out += "<span class='style_top_middle_hdr'>Make the most of your time</span>";

	str_out += "<div class='style_window_action_bar4' style='width:959px; left:20px; top:50px;'>";
	if (page_id=="i")
		str_out += "<span class='style_action_bar_item_left_active' style='width:120px; left:2px;' onclick='document.location=\"http://www.quasitime.com\"'>Home</span>";
	else
		str_out += "<span class='style_action_bar_item_left' style='width:120px; left:2px;' onclick='document.location=\"http://www.quasitime.com\"'>Home</span>";
	if (page_id=="p")
		str_out += "<span class='style_action_bar_item_active' style='width:120px; left:123px;' onclick='document.location=\"../qt/product_planner.htm\"'>Products</span>";
	else
		str_out += "<span class='style_action_bar_item' style='width:120px; left:123px;' onclick='document.location=\"../qt/product_planner.htm\"'>Products</span>";
	if (page_id=="b")
		str_out += "<span class='style_action_bar_item_active' style='width:120px; left:245px;' onclick='document.location=\"../qt/blog.htm\"'>Blog</span>";
	else
		str_out += "<span class='style_action_bar_item' style='width:120px; left:245px;' onclick='document.location=\"../qt/blog.htm\"'>Blog</span>";
	if (page_id=="s")
		str_out += "<span class='style_action_bar_item_active' style='width:120px; left:367px;' onclick='document.location=\"../qt/support_known_issues.htm\"'>Support</span>";
	else
		str_out += "<span class='style_action_bar_item' style='width:120px; left:367px;' onclick='document.location=\"../qt/support_known_issues.htm\"'>Support</span>";
	if (page_id=="a")
		str_out += "<span class='style_action_bar_item_active' style='width:120px; left:489px;' onclick='document.location=\"../qt/about_us.htm\"'>About us</span>";
	else
		str_out += "<span class='style_action_bar_item' style='width:120px; left:489px;' onclick='document.location=\"../qt/about_us.htm\"'>About us</span>";
	str_out += "<span class='style_action_bar_right_cap' style='left:611px;'></span>";
	str_out += "</div>";
	/*
	str_out += "<span style='position: absolute; right: 153px; top:10px; z-index:500;'>";
	str_out += 		"<span class='style_link_register' onclick='document.location=\"tdt/reg.jsp\"'></span>";
	str_out += 		"&nbsp; <img src='diamond.png' style='position:absolute; width:20px; height:20px; margin-left:55px;'/> &nbsp;";
	str_out += 		"<span class='style_link_signin' onclick='document.location=\"http://www.quasitime.com\"'></span>";
	str_out += "</span>";
	*/
	str_out += "<span style='position: absolute; right: 30px; top:11px; z-index:500;'>";
	str_out += 		"<span class='style_mini_box_title_clickable' style='color:#929000;' onclick='document.location=\"../tdt/reg.jsp\"'>register</span>";
	str_out += 		"&nbsp;&nbsp; <img src='../qt/diamond.png'/> &nbsp;&nbsp;";
	str_out += 		"<span class='style_mini_box_title_clickable' style='color:#929000;' onclick='document.location=\"http://www.quasitime.com/#a_sign_in\"'>sign in</span>";
	str_out += "</span>";
	str_out += "</div>";
	document.writeln(str_out);
}

function fnGenFooter()
{
	var str_out ="<div class='style_footer2'>";	
	str_out += 		"<img style='margin: 1px 2px 0px;' src='../qt/copyright.gif'/>2008-2010 Quasitime LLC.  All rights reserved.";
	str_out	+=		"<br><a href='../qt/terms_of_service.htm'>Terms of Service</a> &nbsp; <img src='bullet2.gif'/> &nbsp; <a href='../qt/privacy_policy.htm'>Privacy Policy</a>";
	str_out += "</div>";
	document.writeln(str_out);
}
	
function fnDoesStrHaveValue(str_in)
{
	if (typeof(str_in)=="undefined")
		return false;
	if (""==str_in)
		return false;
	return true;
}

function fnSetInnertext(str_elem, str_value)
{
	var str_value2 = "";
	if (document.getElementById(str_elem)!= null)
	{
		if (fnDoesStrHaveValue(str_value))
			str_value2 = str_value;

		if (browser.isIE)
			document.getElementById(str_elem).innerText = str_value2;
		else
			document.getElementById(str_elem).textContent = str_value2;
	}
}

function fnSetInnerhtml(str_elem, str_value)
{
	var str_value2 = "";
	if (document.getElementById(str_elem)!= null)
	{
		if (fnDoesStrHaveValue(str_value))
			str_value2 = str_value;
		document.getElementById(str_elem).innerHTML = str_value2;
	}
}

function fnGetInnerhtml(str_elem)
{
	if (document.getElementById(str_elem)!= null)
		return document.getElementById(str_elem).innerHTML;
	return "";
}

function fnParamToURL(n_ajax_param)
{	
	return (";" + n_ajax_param + "=");
}

function fnOnKeyPress_Password(evt)
{
	var keycode = (evt) ? evt.keyCode:((window.event)?event.which:null);
	if (13 == keycode)
		fnLogin();
}

function fnOnKeyPress_Email(evt)
{
	var keycode = (evt) ? evt.keyCode:((window.event)?event.which:null);
	if (13 == keycode)
		fnSendBetaRequest();
}

function fnShow(elem)
{
	if (null != elem)
	{
		if (document.getElementById(elem))
		{
			document.getElementById(elem).style.display = "";
			document.getElementById(elem).style.visibility = "visible";
		}
	}
}
function fnHide(elem)
{
	if (null != elem)
	{
		if (document.getElementById(elem))
		{
			document.getElementById(elem).style.display = "none";
			document.getElementById(elem).style.visibility = "hidden";
		}
	}
}
function fnSetColor(elem, str_color)
{
	if (null != elem)
	{
		if (document.getElementById(elem))
			document.getElementById(elem).style.color = str_color;
	}
}
function fnSetRel(elem)
{
	if (null != elem)
	{
		if (document.getElementById(elem))
			document.getElementById(elem).style.position = "relative";
	}
}


// Safely parse numbers, so that if the input string is invalid, we return the default given
function fnSafeParseInt(str_num, n_default)
{
	if (typeof(str_num)=="undefined")
		return n_default;

	if (str_num == "")
		return n_default;

	if (!str_num)
		return n_default;

	var n_out = n_default;

	try
	{
		n_out = parseInt(str_num,10);
	}
	catch (err)
	{
		n_out = n_default;
	}
	return n_out;
}

function fnShowLoginErr()
{
	alert("Incorrect username or password.");
}
function fnShowLoginErr_invalid()
{
	alert("Please enter a \"username\" and \"password\".");
}
function fnShowLoginErr_browser()
{
	alert("Quasitime currently only supports IE 7+ and Firefox 2+ browsers.<br><br> Visit www.microsoft.com/windows/downloads/ie/getitnow.mspx to get IE7 or www.mozilla.com/en-US/firefox to get Firefox.");
}
function fnShowLoginSuccess()
{
	fnShowStatus(QT_STATUS_MODE_SUCCESS,"Signing into Quasitime...");
}

function fnShowBetaReqErr()
{
	alert("Error sending request. Please try again later.");
}
function fnShowBetaReqErr_Invalid()
{
	alert("Please enter a \"username\" and \"password\".");
}
function fnShowBetaReqErr_Browser()
{
	alert("Quasitime currently only supports IE 7+ and Firefox 2+ browsers.<br><br> You can download IE 7 for free by clicking <a href=\"http://www.microsoft.com/windows/downloads/ie/getitnow.mspx\" target=\"_new\">here</a>.<br> You can download Firefox 2 for free by clicking <a href=\"http://www.mozilla.com/en-US/firefox/\" target=\"_new\">here</a>.");
}
function fnShowBetaReqSuccess()
{
	fnShowStatus(QT_STATUS_MODE_SUCCESS,"We have received your request. We will notify you if you are selected to join the Beta.");
}

function fnProcessQTCL(str_in)
{
	var str_data = ""+str_in;
	// Find end of QT segment to remove any extra characters like trailing "\r\n"
	var ze_index = str_data.lastIndexOf(QTCL_END);	
	if (-1!=ze_index)
	{
		str_data = str_data.slice(0,ze_index);
	}
	
	var array_sets = str_data.split("&");
	var array_setpairs = null;
	var i_sets=0;
	var datatype_code = 0;
	var str_temp ="";
	var bm_data_sent = 0;
	var array_values = null;

	for (i_sets=0; i_sets<array_sets.length; i_sets++)
	{
		array_setpairs = array_sets[i_sets].split("=");
		str_temp = array_setpairs[0];
		// if this is the first set, remove the "qt" prefix.
		if (0==i_sets)
			str_temp = str_temp.substring(2);
		datatype_code = fnSafeParseInt(str_temp,0);

		switch (datatype_code)
		{
			case QTCL_STATUS:
			{
				array_values = array_setpairs[1].split("^");
				str_temp = array_values[0];
				g_status = fnSafeParseInt(str_temp,0);
				switch (g_status)
				{
					case QT_STATUS_LOGIN_SUCCESS:		
						fnShowLoginSuccess();	
						break;
					case QT_STATUS_SEND_BETA_REQ_SUCCESS:
						fnShowBetaReqSuccess();
						break;
					case QT_STATUS_SEND_BETA_REQ_FAIL:
						fnShowBetaReqErr();
						break;
					case QT_STATUS_LOGIN_FAIL:
						if (fnGetElemValue("input_mode") == "1")
						{
							fnSetCookie("token", "", 0);
							//fnSetCookie("ua", "", 0);
							fnSetCookie("name", "", 0);
							document.location = "http://www.quasitime.com";
						}
						fnShowLoginErr();
						break;
				}
			}
			break;

			case QTCL_FWD:
			{
				if (fnDoesStrHaveValue(array_setpairs[1]))
				{
					str_temp =fnQTdecode(array_setpairs[1]);
					document.location =str_temp;
				}
			}
			break;
		}
	}
}

function processAJAXMsg(strIn)
{
	// first check the type of communication
	if ("qt" == strIn.substring(0,2))
	{
		fnProcessQTCL(strIn);
		return;
	}
	// If if it not one of the above types, then it is not a valid qt msg.
}

function processStateChange()
{
	if (g_req)
	{
		if (g_req.readyState == 4) // Complete
	    {
	    	if (g_req.status == 200) // OK response
	      	{
	      		var str_in = g_req.responseText;
	      		if ((str_in == null) || (str_in == ""))
	      			return;
      			processAJAXMsg(str_in);
		    } // end of request OK
		    g_req = null;
		} // end of request Complete
	}
} 

function fnNull()
{
}

function fnAJAXCall_Post_Sync(str_loc, str_params)
{
	if (window.XMLHttpRequest) // Non-IE browsers or IE7+
    {
    	g_req = new XMLHttpRequest();
	    g_req.onreadystatechange = fnNull;
      	try
      	{
      		// The last param means async when true
       		g_req.open("POST", str_loc, false);
			g_req.setRequestHeader("Content-Type", "text/xml");
			g_req.setRequestHeader("Accept-Encoding","gzip,deflate");
		}
      	catch (e)
      	{
        	//alert(e);
        	alert("Sorry, but we could nnot process that request.  Be sure you are using the latest versions of Firefox or Internet Explorer.");
      	}
      	g_req.send(str_params);
   		processStateChange();
    }
	else if (window.ActiveXObject) // Old IE
	{
		// Format the url
	  	var newurl = str_loc;
		var progIDs = ['MSXML2.XMLHTTP.6.0', 'Msxml2.XMLHTTP', 'MSXML2.XMLHTTP.3.0'];
		var b_done = 0;
		var i = 0;

        while ((i < progIDs.length) && (!b_done))
        {
 	    	try
 	       	{
				g_req = new window.ActiveXObject(progIDs[i]);
				if (g_req)
					b_done = 1;
          	}
          	catch (ex)
          	{
          		fnLogError(ex);
	      	}
	      	i++;
      	}
      	if (g_req != null)
      	{
	        g_req.onreadystatechange = processStateChange;
      		// The last param means async when true
        	g_req.open("POST", newurl, false);
			g_req.setRequestHeader("Content-Type", "text/xml");
			g_req.setRequestHeader("Accept-Encoding","gzip,deflate");
	        g_req.send(str_params);
      	}
	}
}

function fnGetElemValue(str_elem)
{
	if (document.getElementById(str_elem)!= null)
		return document.getElementById(str_elem).value;
	return "";
}

function fnSetElemValue(elem, str_value)
{
	if (document.getElementById(elem)!= null)
		document.getElementById(elem).value = str_value;
}

function fnAdjust_Box_Sizes()
{
	var elem = null;
	var client_width = xClientWidth();
	var client_height = xClientHeight();
	
	xWidth("div_content_area", client_width-120);
	xHeight("div_content_area", client_height-46);
}

function fnLogin()
{
	if (!( (browser.isIE && browser.versionMajor >= 7) || (browser.isGecko && browser.versionMajor >= 2) || (browser.isSafari)))
	{
		fnShowLoginErr_browser();
		return;
	}
	
	var str_username = fnGetElemValue("input_qt_username");
	var str_password = fnGetElemValue("input_qt_password");
	if (!str_username || str_username=="")
	{
		fnShowLoginErr_invalid();
		return;
	}
	if (!str_password || str_password=="")
	{
		fnShowLoginErr_invalid();
		return;
	}
	if (str_password.search("%")!=-1)
	{
		alert("The password cannot contain the percentage character %.");
		return;
	}
	
	var str_param = "" + AJAX_PARAM_USERNAME + "=" + encodeURIComponent(str_username);
	str_param += fnParamToURL(AJAX_PARAM_PASSWORD) + encodeURIComponent(str_password);
	
	var str_temp ="";
	fnAJAXCall_Post_Sync("/tdt/validateLogin.do", str_param);
	if (QT_STATUS_LOGIN_SUCCESS == g_status)
	{
		// if remember me is set, generate some cookie stuff
		if (fnGetChecked("checkbox_qt_remember_me"))
			str_temp="1";
		else
			str_temp="0";
		fnSetElemValue("input_remember_me", str_temp);
		document.getElementById("qt_login_form").submit();
		fnShowStatus(QT_STATUS_MODE_SUCCESS, "Signing in to Quasitime...")
	}
}


function fnSigninViaCookie()
{
	if (!( (browser.isIE && browser.versionMajor >= 7) || (browser.isGecko && browser.versionMajor >= 2) || (browser.isSafari)))
	{
		fnShowLoginErr_browser();
		return;
	}
		
	/*
	var str_param = "" + AJAX_PARAM_USERNAME + "=" + str_username;
	str_param += fnParamToURL(AJAX_PARAM_PASSWORD) + str_password;
	
	fnAJAXCall_Post_Sync("/tdt/validateLogin.do", str_param);
	if (QT_STATUS_LOGIN_SUCCESS == g_status)
	{
		document.getElementById("qt_login_form").submit();
		fnShowStatus(QT_STATUS_MODE_SUCCESS, "Signing in to Quasitime...")
	}
	*/
		
	var str_key = fnGetCookie("token");
	
	if (!str_key || str_key=="")
	{
		fnShowLoginErr_invalid();
		return;
	}

	fnSetElemValue("input_key", str_key);
	
	var str_param = "" + AJAX_PARAM_EXTRA + "=" + str_key;
	
	fnAJAXCall_Post_Sync("/tdt/validateLogin.do", str_param);
	if (QT_STATUS_LOGIN_SUCCESS == g_status)
	{
	/*
		// if remember me is set, generate some cookie stuff
		var ua =navigator.userAgent;
		var str_key1= hex_md5(ua + str_username);
		var str_key2= hex_md5(ua + str_password);
		fnSetCookie("key", str_key, 1209600);
	*/	
		document.getElementById("qt_login_form").submit();
		fnShowStatus(QT_STATUS_MODE_SUCCESS, "Signing in to Quasitime...");
	}	
}

function fnSendBetaRequest()
{
	if (!( (browser.isIE && browser.versionMajor >= 7) || (browser.isGecko && browser.versionMajor >= 2) ))
	{
		fnShowBetaReqErr_Browser();
		return;
	}

	var str_email = fnGetElemValue("input_qt_email");
	if (!str_email || str_email=="")
	{
		fnShowBetaReqErr_Invalid();
		return;
	}

	var str_name = fnGetElemValue("input_qt_name");	
	if (!str_name || str_name=="")
	{
		fnShowBetaReqErr_Invalid();
		return;
	}
	var str_param = "" + AJAX_PARAM_PROJ_ID + "=" + g_proj_id;
	str_param += fnParamToURL(AJAX_PARAM_DOC_ID) + g_doc_id;
	str_param += fnParamToURL(AJAX_PARAM_EMAIL) + encodeURIComponent(str_email);	
	str_param += fnParamToURL(AJAX_PARAM_NAME) + encodeURIComponent(str_name);	
	fnAJAXCall_Post_Sync("/tdt/req4Beta.do", str_param);
}

function fnChangeClass(str_elem, str_newclass)
{
	if (null != str_elem)
	{
		if (document.getElementById(str_elem))
			document.getElementById(str_elem).className = str_newclass;
	}
}
/*
function fnCenterElemW(str_elem, elem_width)
{
	if (!str_elem || (str_elem==""))
		return;
	var client_width = xClientWidth();
	var elem_x = (client_width/2) - (elem_width/2);
	xLeft(str_elem,elem_x);
}
*/
function fnShowStatus(n_status_mode, str_msg)
{
	var elem = document.getElementById("div_main_status_msg");
	if (null == elem)
		return;
		
	fnHide("div_main_status_msg");
	elem.innerHTML = "";
	switch (n_status_mode)
	{
		case QT_STATUS_MODE_ERROR:
			fnChangeClass("div_main_status_msg","style_main_status_msg__err")
			break;
		case QT_STATUS_MODE_WARNING:
			fnChangeClass("div_main_status_msg","style_main_status_msg__warn")
			break;
		case QT_STATUS_MODE_INFO:
			fnChangeClass("div_main_status_msg","style_main_status_msg__success")
			break;
		case QT_STATUS_MODE_SUCCESS:
			fnChangeClass("div_main_status_msg","style_main_status_msg__success")
			break;
	}
	//fnCenterElemW("div_main_status_msg", 467);

	fnShow("div_main_status_msg");
	elem.innerHTML = str_msg;
}

function fnQTFeedback(str_form_id,msg_type)
{
	// Require Email.
	var email = fnGetElemValue("input_feedback_email");
	if (!email || email=="")
	{
		alert("Email is required.");
		return;
	}
	
	
	// Post the msg
	document.getElementById(str_form_id).submit();
	
	// forward to new page
	switch (msg_type)
	{
		case MSG_TYPE__INTERESTED_IN_QT_BUSINESS:
			document.location="sent_qt_business_info_req.htm";
			break;
		case MSG_TYPE__SUPPORT_REQUEST:
			document.location="sent_support_req.htm";
			break;	
	}
}

function fnInit()
{
	fnHide("div_main_status_msg");
	fnSetInnerhtml("div_main_status_msg","");

	// Set hidden form field to identify this page to login action	
	fnSetElemValue("input_qt_proj_id", g_proj_id);
	fnSetElemValue("input_qt_doc_id", g_doc_id);

	fnSetElemValue("input_feedback_name","");
	fnSetElemValue("input_feedback_email","");
	fnSetElemValue("input_feedback_phone","");
	fnSetElemValue("textarea_feedback_msg","");
	
	fnShow("div_help_link");

	fnAdjust_Box_Sizes();
	xAddEventListener(window, "resize", fnAdjust_Box_Sizes, false);
	window.setTimeout("fnAdjust_Box_Sizes()", 1000);
	window.setTimeout("fnAdjust_Box_Sizes()", 5000);
}
fnInit();

