document.onkeydown=keydown;

function keydown(e)
{
	var key;
	if (window.event)
	{
		key = window.event.keyCode;
		//window.status = event.srcElement.name;
	}
	else
	{
		if (e)
			key = e.which;
	}

	if(key == 13)	// enter key
	{
		var f = document.forms["f_search"];
		if(f != null)
		{
			if(f.sex[0].has_focus || f.sex[1].has_focus || f.sel_from_y.has_focus || f.sel_to_y.has_focus || f.sel_region.has_focus || f.sel_city.has_focus || f.keyword.has_focus || f.online.has_focus || f.picture.has_focus)
				check_search();
		}

		f = document.forms["f_login"];
		if(f != null)
		{
			if(f.username.has_focus || f.pass.has_focus)
				check_login();
		}

		f = document.forms["f_chat"];
		if(f != null)
		{
			if(f.msg.has_focus)
				check_chat_send();
		}

		f = document.forms["f_reply"];
		if(f != null)
		{
			return true;
		}

		f = document.forms["f_profile"];
		if(f != null)
		{
			return true;
		}

		return false;
	}
}

function in_array(v, arr)
{
	for(var i=0;i < arr.length;i++)
	{
		if(arr[i] == v)
			return true;
	}
	return false;
}

// XMLHttp
var objXMLHttp = getAjaxObj();

function getAjaxObj()
{
	// Mozilla
	if (window.XMLHttpRequest)
		return (new XMLHttpRequest());
	// IE
	if (window.ActiveXObject)
		return (new ActiveXObject("Microsoft.XMLHTTP"));

	return false;
}

var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isIE6 = (navigator.appVersion.indexOf("MSIE 6") != -1) ? true : false;

// DOM
function obj(objName)
{
	return document.getElementById(objName);
}

function trim(str)
{
	return str.replace(/^\s+|\s+$/g, "");
}

function bIsNumeric(sText)
{
	var bRet = true;

	for(var i=0; i < sText.length; i++)
	{
		if(sText.charAt(i) > "9" || sText.charAt(i) <"0")
		{
			bRet = false;
			break;
		}
	}

	return bRet;
}

function numbersonly(myfield, e, dec)
{
	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;
	keychar = String.fromCharCode(key);

	// control keys
	if ((key==null) || (key==0) || (key==8) ||
		(key==9) || (key==13) || (key==27) )
	   return true;

	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
	   return true;

	// decimal point jump
	else if (dec && (keychar == "."))
	   {
	   myfield.form.elements[dec].focus();
	   return false;
	   }
	else
	   return false;
}

function save_silent(sId, sField, sNewValue, sType)
{
	if(!objXMLHttp)
	{
		alert("Ajax is not allowed on your browser. IE or Mozilla / Firefox are recommended.");
		return;
	}

	params = "save_id=" + sId + "&save_field=" + sField + "&save_data=" + sNewValue + "&field_type=" + sType;

	submitToPage("save_silent.php", 1);
	//document.body.style.cursor = "wait";
	//f.style.cursor = "wait";

}

// chat
var chat_window = 0;
var chat_users = "";
var incoming_users = "";
var chat_user_details = "";
var chat_msg = "";
var chat_all_msg = "";

var params = "";
var response = "";

var oXMLHttp = null;

function submitToPageX(page, nType, async)
{
	response = "";
	if(async == null)
		async = true;

	oXMLHttp = $.ajax({
		url: page,
		data: params,
		cache: false,
		async: async,
		success: function(html){
			// safety
			if(typeof(oXMLHttp) == "undefined")
				return;

			response = html;
    	updateHTML(nType);
	  	},
	});

}

function submitToPage(page, nType, async)
{
	return true;
	response = "";
	objXMLHttp.open("GET", page + "?" + params, async);
	if(isIE6)
		objXMLHttp.send();
	else
		objXMLHttp.send(params);

	//objXMLHttp.open("POST", page, true);
	//objXMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	//objXMLHttp.setRequestHeader("Content-length", params.length);
	//objXMLHttp.setRequestHeader("Connection", "close");
	//objXMLHttp.send(params);

	if(async == null)
		async = true;

	if(async)
	{
		objXMLHttp.onreadystatechange = function()
		{
			// safety
			if(typeof(objXMLHttp) == "undefined")
				return;

			if (objXMLHttp.readyState == 4 && objXMLHttp.status == 200)
			{
				response = objXMLHttp.responseText;
			    	updateHTML(nType);
			}
		}
	}
	else
	{
		// safety
		if(typeof(objXMLHttp) == "undefined")
			return;

		response = objXMLHttp.responseText;
	    	updateHTML(nType);
	}

}

function updateHTML(nType)
{
	var res = response+"";

	if (nType == 1)
	{
		if(res != "OK_UNLOAD_CHAT")
		{
			//alert("Error on unloading chat: " + res);
		}
	}

	if (nType == 2)
	{
		if(res != "OK_LOAD_CHAT")
		{
			//alert("Error on loading chat: " + res);
		}
	}

	if (nType == 3)
	{
		if(res == "OK_CHECK_CHAT")
			chat_window = 1;
		else
			chat_window = 0;
	}

	if (nType == 4)
	{
		if(res != "OK_CALL_FOR_USER")
		{
			//alert("Error on calling for user: " + res);
		}
	}

	if (nType == 5)
	{
		if(res.substring(0, 16) != "OK_SESSION_USERS")
		{
			//alert("Error on loading chat list: " + res);
		}
		else
		{
			chat_users = res.substring(16);
			update_user_list();
		}
	}

	if (nType == 6)
	{
		if(res.substring(0, 18) != "OK_CHECK_FOR_CALLS")
		{
			//alert("Error on check for calls: " + res);
		}
		else
		{
			incoming_users = res.substring(18);
			update_incoming_list();
		}
	}

	if (nType == 7)
	{
		if(res.substring(0, 14) != "OK_REJECT_USER")
		{
			//alert("Error on rejecting user: " + res);
		}
	}

	if (nType == 8)
	{
		if(res.substring(0, 15) != "OK_USER_DETAILS")
		{
			//alert("Error on getting user details: " + res);
		}
		else
		{
			chat_user_details = res.substring(15);
			update_user_details();
		}
	}

	if (nType == 9)
	{
		if(res.substring(0, 11) != "OK_SEND_MSG")
		{
			//alert("Error on sending msg: " + res);
		}
	}

	if (nType == 10)
	{
		if(res.substring(0, 10) != "OK_GET_MSG")
		{
			//alert("Error on getting msg: " + res);
		}
		else
		{
			chat_msg = res.substring(10);
			update_chat_msg();
		}
	}

	if (nType == 11)
	{
		if(res.substring(0, 14) != "OK_GET_ALL_MSG")
		{
			//alert("Error on getting all msg: " + res);
		}
		else
		{
			chat_all_msg = res.substring(14);
			update_chat_all_msg();
		}
	}

	if (nType == 12)
	{
		if(res != "OK_CHAT_ACCEPT")
		{
			//alert("Error on accepting chat: " + res);
		}
	}

	if (nType == 13)
	{
		update_chat_call_for_user(res);
	}

	if (nType == 14)
	{
		if(res.substring(0, 14) != "OK_REMOVE_USER")
		{
			//alert("Error on removing user: " + res);
		}
	}
}

function sleep(nMilliseconds)
{
	var now = new Date();
	var exitTime = now.getTime() + nMilliseconds;
	while (true)
	{
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}

var sAlertColor = "#ffff00";
var sNormalColor = "#ffffff";

function check_field(oField, sText)
{
	var sValue = oField.value;
	if (trim(sValue) == "")
	{
		alert(sText);
		oField.style.backgroundColor = sAlertColor;
		oField.focus();
		return false;
	}
	else
	{
		oField.style.backgroundColor = sNormalColor;
		return true;
	}
}

function check_email(oField, sText)
{
	var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
	var sValue = oField.value;
	if (!emailFilter.test(sValue))
	{
		oField.style.backgroundColor = sAlertColor;
		oField.focus();
		alert(sText);
		return false;
	}
	else
	{
		oField.style.backgroundColor = sNormalColor;
		return true;
	}

}

function check_select(oSelect, sText)
{
	if (oSelect.selectedIndex == 0)
	{
		alert(sText);
		oSelect.style.backgroundColor = sAlertColor;
		oSelect.focus();
		return false;
	}
	else
	{
		oSelect.style.backgroundColor = sNormalColor;
		return true;
	}
}

function check_box(oCheckBox, sText)
{
	if (!oCheckBox.checked)
	{
		alert(sText);
		oCheckBox.style.backgroundColor = sAlertColor;
		oCheckBox.focus();
		return false;
	}
	else
	{
		oCheckBox.style.backgroundColor = sNormalColor;
		return true;
	}
}

function check_radio(oRadio, sText)
{
	if (!oRadio[0].checked && !oRadio[1].checked)
	{
		alert(sText);
		oRadio[0].focus();
		return false;
	}
	else
	{
		return true;
	}
}

function check_number(oField, sText)
{
	var sValue = oField.value;
	if (!bIsNumeric(sValue))
	{
		alert(sText);
		oField.style.backgroundColor = sAlertColor;
		oField.focus();
		return false;
	}
	else
	{
		oField.style.backgroundColor = sNormalColor;
		return true;
	}
}

// dd/mm/yyyy
function bIsValidDate(p_sText)
{
	var bRet = true;

	var i;
	var val = p_sText+"";
	var dateparts;
	var intYear, intMonth, intDay;

	var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var nDays;

	dateparts = val.split("/");

	if(dateparts.length != 3)
		bRet = false;
	else
	{
		intDay = dateparts[0];
		intMonth = dateparts[1];
		intYear = dateparts[2];

		if(intYear.length != 4 || intMonth.length != 2 || intDay.length != 2)
			bRet = false;
		else if(!bIsNumeric(intYear) || !bIsNumeric(intMonth) || !bIsNumeric(intDay))
			bRet = false;
		else
		{
			intDay = parseInt(intDay, 10);
			intMonth = parseInt(intMonth, 10);
			intYear = parseInt(intYear, 10);

			if(intMonth < 1 || intMonth > 12 || intDay < 1 || intDay > 31)
				bRet = false;
			else
			{
				if (intMonth==2) //february
					nDays = ((intYear%4==0) && (!(intYear%100==0) || (intYear%400==0)))?29:28;
				else
					nDays = daysInMonth[intMonth-1];

				if(intDay > nDays)
					bRet = false;
			}
		}
	}

	return bRet;
}

function check_date(oD, oM, oY, sText)
{
	var sDate = oD.options[oD.selectedIndex].value + "/" + oM.options[oM.selectedIndex].value + "/" + oY.options[oY.selectedIndex].value;

	if(!bIsValidDate(sDate))
	{
		alert(sText);
		return false;
	}
	return true;
}

function check_length(oField, sText, nMin, nMax)
{
	var nLength = (oField.value + "").length;
	if(nLength < nMin || nLength > nMax)
	{
		alert(sText);
		oField.style.backgroundColor = sAlertColor;
		oField.focus();
		return false;
	}
	else
	{
		oField.style.backgroundColor = sNormalColor;
		return true;
	}
}

function check_both_pass(oField1, oField2, sText)
{
	var sValue1 = oField1.value + "";
	var sValue2 = oField2.value + "";
	if(sValue1 != sValue2)
	{
		alert(sText);
		oField1.style.backgroundColor = sAlertColor;
		oField1.focus();
		return false;
	}
	else
	{
		oField1.style.backgroundColor = sNormalColor;
		return true;
	}
}

function check_content(oField, sText)
{
	var bRet = true;
	var valid_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

	var sValue = oField.value+"";
	for(var i=0; i < sValue.length; i++)
	{
		var ch = sValue.charAt(i);
		if(valid_chars.indexOf(ch) < 0)
		{
			bRet = false;
			break;
		}
	}

	if(!bRet)
	{
		alert(sText);
		oField.style.backgroundColor = sAlertColor;
		oField.focus();
		return false;
	}
	else
	{
		oField.style.backgroundColor = sNormalColor;
		return true;
	}
}

function change_region()
{
	var f = document.forms["f_search"];
	// hard coded here, point to change
	if(f.sel_region.selectedIndex != 3)
	{
		f.sel_city.selectedIndex = 0;
		f.sel_city.disabled = true;
	}
	else
		f.sel_city.disabled = false;
}

function change_region_profile()
{
	var f = document.forms["f_profile"];
	// hard coded here, point to change
	if(f.sel_region.selectedIndex != 3)
	{
		f.sel_county.selectedIndex = 0;
		f.sel_county.disabled = true;
		f.sel_city.selectedIndex = 0;
		f.sel_city.disabled = true;
	}
	else
	{
		f.sel_county.disabled = false;
		f.sel_city.disabled = false;
	}
}

function check_search(p)
{
	var f = document.forms["f_search"];

	if(typeof(p) != "undefined")
		f.p.value = p;
	else
		f.p.value = 1;

	f.submit();
}



