
var typeOfMessagePost = 'postMessage';
var newChatContractorId = 0;
isShift = 0;
isReceiverOnline = 0;
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
var newMessageOn = 0;
var blinkingState = 0;
var titleAtStartOfBlinking = "";
var newMsgNotificationHandle = 0;
var haveFocus = true;

function onBlur() {
	haveFocus = false;
	
};
function onFocus(){
	haveFocus = true;
	if (newMessageOn == true)
	{
		newMessageOn = false;
		clearInterval(newMsgNotificationHandle);
		document.title = titleAtStartOfBlinking;
	}
						
};

if (/*@cc_on!@*/false) { // check for Internet Explorer
	document.onfocusin = onFocus;
	document.onfocusout = onBlur;
} else {
	window.onfocus = onFocus;
	window.onblur = onBlur;
}


function shift(event){
	key = (isNN) ? event.which : event.keyCode;
	if (key==16)isShift=1;
}
function shiftUp(event){
	key = (isNN) ? event.which : event.keyCode;
	if (key==16)isShift=0;
}
function postMessagePress(evt)
 {
	try{
		var charCode = (evt.which) ? evt.which : window.event.keyCode; 	
		btnElement = document.getElementById("btnPostMessage");	
		if (!btnElement || btnElement.disabled == false) {
				if (isShift == 0 && charCode == 13 && !isGray()) 
				{ 
					postMessage();
					return false;
				} 
		}
	}
	catch(err)
	{
	}
 }
 
 function postReview(userIdReviewed)
 {
	var text = $$("review_text");
	var stars = $$("review_stars");
	var state  = $$("review_state");
	var city = $$("review_city");
	var firstName = $$("review_firstName");
	
	if (text == '')
	{
		alert('You must enter a review for this pro!');
		return;
	}
	if (stars == '')
	{
		alert('You must rate this pro.');
		return;
	}
	if (city == '')
	{
		alert('You must enter your city.');
		return;
	}
	if (firstName == '')
	{
		alert('You must enter your first name.');
		return;
	}
	
	postReviewToServer(text,stars,firstName,city,state, userIdReviewed)
 }
 function postMessage()
 {
	if ($$("newMessage") == ''){
		if (typeOfMessagePost == 'startHelpChat')
			alert('Please type a question for the help desk!');
		else
			alert('Please type a message to this contractor!');
			
		//dont update, nothing entered
		return
	}
	else if (objectExists("newEmail") && $$("newEmail") == '' && (document.getElementById("newEmail").style.display != "none" || typeOfMessagePost == 'startNewChatProPage')){
		if (typeOfMessagePost == 'startHelpChat')
			alert('Please enter your email address. You will need to verify your email before the help chat can begin.');
		else if (typeOfMessagePost == 'startNewChatProPage' && document.getElementById('popup').style.display == "none" )
		{
			var newMessage = $$("newMessage");
			if (newMessage == defaultText)
			{
				alert("Please type a message to this pro!!!"); 
				return;
			}
			grayOut(true);
			popup_show('popup', 'popup_drag', 'popup_exit', 'screen-center',  10, 30, 200, '24em', "", hidePopup )

		}		
		else
			alert('Please enter your email address. Contractors will not be able to email you. Your email is used so we can send you a link to resume your chat later.');
		//dont update, nothing entered
		return
	}
	else
	{
		
		if (typeOfMessagePost == 'postMessage')
		{
			document.getElementById("btnPostMessage").disabled = true;
			submitNewChatMessage($$("newMessage"));
		}
		else if (typeOfMessagePost == 'startNewChat')
		{
			//email = prompt("Please enter your email address so that a link to your chat can be sent to you. This way, you will be able to return later on if some contractors don't respond right away. Contractors will NOT be able to see your email.","");
			stateId = $$("state");
			regionId = $$("region" + stateId);
			jobTypeId = $$("jobType");
	
			 var re_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;    
			if (!re_mail.test($$("newEmail")))
			{
				alert("Please enter a valid email address. Contractors will not be able to email you. Your email is used so we can send you a link to resume your chat later. Since some contractors do not respond right away, this is very important that you enter a valid email address."); 
				return;
			}			
			if (newChatContractorId == "")
			{
				alert("You must select at least 1 contractor to chat with!");
				return;
			}
	
			document.getElementById("btnPostMessage").disabled = true;
			document.getElementById("btnPostMessage").value = 'Sending...';
			hideMessageBox();
			grayOut(true);
			startNewChat($$("newMessage"),$$("newEmail"), stateId,regionId,jobTypeId,newChatContractorId ); //$$('contractor')
		}
		else if (typeOfMessagePost == 'startNewChatProPage')
		{
			//stateId = $$("state");
			//regionId = $$("region" + stateId);
			//jobTypeId = $$("jobType");
			
			if (viewerIsContractor == 1)
			{
				alert("Oops! You tried to chat with yourself!"); 
				return;
			}
			
			var newMessage = $$("newMessage");
			if (newMessage == defaultText)
			{
				alert("Please type a message to this pro!"); 
				return;
			}
	
			 var re_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;    
			if (!re_mail.test($$("newEmail")))
			{
				alert("Please enter a valid email address. Contractors will not be able to email you. Your email is used so we can send you a link to resume your chat later. Since some contractors do not respond right away, this is very important that you enter a valid email address."); 
				return;
			}			
			if (newChatContractorId == "")
			{
				alert("You must select at least 1 contractor to chat with!");
				return;
			}
	
			document.getElementById("btnPostMessage").disabled = true;
			document.getElementById("btnPostMessage").value = 'Sending...';		
			grayOut(true);
			startNewChat($$("newMessage"),$$("newEmail"), stateId,regionId,jobTypeId,newChatContractorId ); //$$('contractor')
		}
		else if (typeOfMessagePost == 'startHelpChat')
		{
			 var re_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;    
			if (!re_mail.test($$("newEmail")))
			{
				alert("Please enter your valid email address. You will need to verify your email before the help chat can begin."); 
				return;
			}			
			document.getElementById("btnPostMessage").disabled = true;
			grayOut(true);
			startNewHelpChat($$("newMessage"),$$("newEmail"), document.getElementById("topic").value);
		}
	}
	document.getElementById("newMessage").value = '';
 }
  function $$(idName)
 {
 
 	return document.getElementById(idName).value;
 }
 function showNewChat(chatId, projectsId)
 {
	//hideProjectsInChat(projectsId);
	grayOut(true);
	 window.location = '/chats/?id=' + chatId;
	
 }

function refreshMessages()
 {
	 if (thisChatId != 0 && isLoggedIn){
	 updateChatMessages(thisChatId);
	//updateChatDetails(thisChatId);
	//checkForNewMessageAlerts(thisChatId);
	 }
	
 }
 function refreshOtherInfo()
 {
	if (thisChatId != 0 && isLoggedIn){
		updateChatDetails(thisChatId);
		checkForNewMessageAlerts(thisChatId);
	}
 }
 function newMessageNotification()
 {
	if (newMessageOn)
	{
		if (blinkingState)
		{
			document.title = "!!!!!!!New Message!!!!!!!";
		}
		else
		{
			document.title = titleAtStartOfBlinking;		
		}
		blinkingState = !blinkingState;
	}
 
 }
 function pingAsAliveToAjax()
 {
	 pingAsAlive();
 }
 if (isLoggedIn)
 {
	setInterval ( "refreshMessages()", refreshMessagesInterval ); //refresh messages every 4 seconds.
	setInterval ( "refreshOtherInfo()", refreshMessagesOtherInterval ); //refresh messages every 4 seconds.
	setInterval ( "pingAsAliveToAjax()", 20000); //every 1 minute
}
titleAtStartOfBlinking = document.title;


