//Global XMLHTTP Request object
var XmlHttp;

var DisplayAll;

//Creating and setting the instance of appropriate XMLHTTP Request object to a “XmlHttp” variable  
function CreateXmlHttp()
{
	//Creating object of XMLHTTP in IE
	try
	{
		XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(oc)
		{
			XmlHttp = null;
		}
	}
	//Creating object of XMLHTTP in Mozilla and Safari 
	if(!XmlHttp && typeof XMLHttpRequest != "undefined") 
	{
		XmlHttp = new XMLHttpRequest();
	}
}

//Gets called when country combo box selection changes
function CountryListOnChange() 
{
	var countryList = document.getElementById("lstCountry");

	//Getting the selected country from country combo box.
	var selectedCountry = countryList.options[countryList.selectedIndex].value;
	
	// URL to get states for a given country
	var requestUrl = "../AjaxServer.aspx?SelectedCountry=" + encodeURIComponent(selectedCountry);
	CreateXmlHttp();
	
	// If browser supports XMLHTTPRequest object
	if(XmlHttp)
	{
		//Setting the event handler for the response
		XmlHttp.onreadystatechange = HandleResponse;
		
		//Initializes the request object with GET (METHOD of posting), 
		//Request URL and sets the request as asynchronous.
		XmlHttp.open("GET", requestUrl,  true);
		
		//Sends the request to server
		XmlHttp.send(null);		
	}
}


//Called when response comes back from server
function HandleResponse()
{
	// To make sure receiving response data from server is completed
	if(XmlHttp.readyState == 4)
	{
		// To make sure valid response is received from the server, 200 means response received is OK
		if(XmlHttp.status == 200)
		{			
			ClearAndSetStateListItems(XmlHttp.responseXML.documentElement);
		}
		else
		{
			alert("There was a problem retrieving data from the server." );
		}
	}
}

//Clears the contents of state combo box and adds the states of currently selected country
function ClearAndSetStateListItems(countryNode)
{
    var stateList = document.getElementById("lstState");
	//Clears the state combo box contents.
	for (var count = stateList.options.length-1; count >-1; count--)
	{
		stateList.options[count] = null;
	}

	var stateNodes = countryNode.getElementsByTagName('state');
	var textValue; 
	var optionItem;
	//Add new states list to the state combo box.
	for (var count = 0; count < stateNodes.length; count++)
	{
   		textValue = GetInnerText(stateNodes[count]);
		optionItem = new Option( textValue, textValue,  false, false);
		stateList.options[stateList.length] = optionItem;
	}
}

// gets called when navigating page in dropdownlistbox
function ddlPage_OnChange()
{
	var objStart = document.getElementById('hdPageNo');
	var objPageSize = document.getElementById('ddlRows');
	var nPageSize;
	var objPage = document.getElementById('ddlPage');
	
	if (objPageSize.selectedIndex != 0)
	{
		nPageSize = objPageSize.value;
	}
	else
	{
		nPageSize = 10;
	}
	objStart.value = (parseInt(nPageSize, 10) * (parseInt(objPage.value, 10) - 1)) + 1;
	
	btnDisplay_OnClick();
}

// gets called when navigating page with prev, next
function aPrevNext_OnClick(PrevNext)
{
	var objStart = document.getElementById('hdPageNo');
	var objPageSize = document.getElementById('ddlRows');
	var nPageSize;
	var objPage = document.getElementById('ddlPage');
	
	if (objPageSize.selectedIndex != 0)
	{
		nPageSize = objPageSize.value;
	}
	else
	{
		nPageSize = 10;
	}
	
	if (PrevNext == 'N')
	{
		objPage.options[objPage.selectedIndex + 1].selected = true;
	}
	else
	{
		objPage.options[objPage.selectedIndex - 1].selected = true;
	}
	
	objStart.value = (parseInt(nPageSize, 10) * (parseInt(objPage.value, 10) - 1)) + 1;
	
	if (DisplayAll)
	{
		btnDisplayAll_OnClick();
	}
	else
	{
		btnDisplay_OnClick();
	}
}

//Gets called when the value in text box gets changed
function btnDisplay_OnClick()
{
	DisplayAll = false;
	
	var oJT = document.getElementById('txtJobTitle');
	var oJC = document.getElementById('ccLstJobCategory');
	var oChkAll = document.getElementById('chkAll');
	var oC = document.getElementById('lstCountry');
	var oS = document.getElementById('lstState');
	var oJTy = document.getElementById('ddReqtype');
	var oKW = document.getElementById('txtKeyWords');
	var oBR = document.getElementById('ccDdl_Branch');

	var n;
	var strJC = '';
	var strS = '';
	
	for (n = 0; n < oJC.options.length; n++)
	{
		if (oJC.options[n].selected)
		{
			strJC += oJC.options[n].value + ',';
		}
	}
	
	if (strJC.length > 0)
	{
		strJC = strJC.substr(0, strJC.length - 1);
	}
	
	for (n = 0; n < oS.options.length; n++)
	{
		if (oS.options[n].selected)
		{
			strS += oS.options[n].value + ',';
		}
	}
	
	if (strS.length > 0)
	{
		strS = strS.substr(0, strS.length - 1);
	}

	var objPageSize = document.getElementById('ddlRows');
	var nPageSize; 
	//document.getElementById('hdPageNo').value = '1';
	var objStart = document.getElementById('hdPageNo');
	var nStart = objStart.value;
	
	if (objPageSize.selectedIndex != 0)
	{
		nPageSize = objPageSize.value;
	}
	else
	{
		nPageSize = 10;
	}
	if (objPageSize.selectedIndex == '0')
	{
		if (document.getElementById('hdAdminPageNo').value != '')
		{
			nPageSize = document.getElementById('hdAdminPageNo').value
		}
	}
	
	// URL to get states for a given country
	var requestUrl;
	
	if (oChkAll.checked)
	{
		requestUrl = "frmJobSearch_AJAX.aspx?JT=" + oJT.value + "&JC=" + strJC + "&BR=" + oBR.value + "&JTy=" + oJTy.value + "&KW=" + oKW.value + "&nIndex=" + encodeURIComponent(nStart) + "&nCount=" + encodeURIComponent(nPageSize) + "&OrderBy=&OrderMode=";
	}
	else
	{
		requestUrl = "frmJobSearch_AJAX.aspx?JT=" + oJT.value + "&JC=" + strJC + "&C=" + oC.value + "&S=" + strS + "&BR=" + oBR.value + "&JTy=" + oJTy.value + "&KW=" + oKW.value + "&nIndex=" + encodeURIComponent(nStart) + "&nCount=" + encodeURIComponent(nPageSize) + "&OrderBy=&OrderMode=";
	}
	//alert(requestUrl);
	CreateXmlHttp();
	
	if(XmlHttp)
	{
		//Setting the event handler for the response
		XmlHttp.onreadystatechange = fnHandleResponse_SearchGrid;
		
		//Initializes the request object with GET (METHOD of posting), 
		//Request URL and sets the request as asynchronous.
		XmlHttp.open("GET", requestUrl,  true);
		
		//Sends the request to server
		XmlHttp.send(null);
	}
	
	return false;
}

function btnDisplayAll_OnClick()
{
	DisplayAll = true;
	
	/*
	var oJT = document.getElementById('txtJobTitle');
	var oJC = document.getElementById('ccLstJobCategory');
	var oC = document.getElementById('lstCountry');
	var oS = document.getElementById('lstState');
	var oJTy = document.getElementById('ddReqtype');
	var oKW = document.getElementById('txtKeyWords');
	var n;
	var strJC = '';
	var strS = '';
	
	for (n = 0; n < oJC.options.length; n++)
	{
		if (oJC.options[n].selected)
		{
			strJC += oJC.options[n].value + ',';
		}
	}
	
	if (strJC.length > 0)
	{
		strJC = strJC.substr(0, strJC.length - 1);
	}
	
	for (n = 0; n < oS.options.length; n++)
	{
		if (oS.options[n].selected)
		{
			strS += oS.options[n].value + ',';
		}
	}
	
	if (strS.length > 0)
	{
		strS = strS.substr(0, strS.length - 1);
	}
	*/
	
	var objPageSize = document.getElementById('ddlRows');
	var nPageSize;
	var objStart = document.getElementById('hdPageNo');
	var nStart = objStart.value;
	
	if (objPageSize.selectedIndex != 0)
	{
		nPageSize = objPageSize.value;
	}
	else
	{
		nPageSize = 10;
	}
	
	// URL to get states for a given country
	var requestUrl = "frmJobSearch_AJAX.aspx?JT=&JC=&C=&S=&JTy=&KW=&nIndex=" + encodeURIComponent(nStart) + "&nCount=" + encodeURIComponent(nPageSize) + "&OrderBy=&OrderMode=";
	
	CreateXmlHttp();
	
	if(XmlHttp)
	{
		//Setting the event handler for the response
		XmlHttp.onreadystatechange = fnHandleResponse_SearchGrid;
		
		//Initializes the request object with GET (METHOD of posting), 
		//Request URL and sets the request as asynchronous.
		XmlHttp.open("GET", requestUrl,  true);
		
		//Sends the request to server
		XmlHttp.send(null);
	}
	
	return false;
}

//Called when response comes back from server
function fnHandleResponse_SearchGrid()
{
	// To make sure receiving response data from server is completed
	if(XmlHttp.readyState == 4)
	{
		// To make sure valid response is received from the server, 200 means response received is OK
		if(XmlHttp.status == 200)
		{
			BuildGrid(XmlHttp.responseXML.documentElement);
		}
		else
		{
			alert("There was a problem retrieving data from the server." );
		}
	}
}

var win=null;
			
function PopUpWindow(mypage)
{
	var myname = '';
	var w = 700;
	var h = 500;
	var scroll = 'yes';
	var pos = 'center';
	
	if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
	if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
	else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
	settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
	win=window.open(mypage,myname,settings);
	win.focus();
}

function aViewJob(JID)
{
	PopUpWindow('frmViewJob.aspx?JobReqID=' + JID);
}

function aAddJob(JID)
{
	
}

function BuildGrid(xmlResult)
{
	var DataGrid;
	var aDataGridHeaderSort;
	var Table;
	var Elements;
	var TableAppliedJobs;
	var TableExistsJobs;
	var ElementsAppliedJobs;
	var ElementsExistsJobs;
	
	DataGrid = document.getElementById('tblResults');
	
	for (var k = DataGrid.rows.length-1; k > 0; k--) 
	{
		DataGrid.deleteRow(k);
	}
	
	Table = xmlResult.getElementsByTagName('Table');
	TableAppliedJobs = xmlResult.getElementsByTagName('Table2');
	TableExistsJobs = xmlResult.getElementsByTagName('Table3');
	
	for (var i = 0; i < Table.length; i++)
	{
		Elements = Table[i].childNodes;
		
		var tblRow = DataGrid.insertRow(DataGrid.rows.length);
		
		var bAlreadyApplied;
		var bAlreadyExists;
		
		var flagCSS;
		
		var x;
		
		bAlreadyApplied = false;
		bAlreadyExists = false;
		
		flagCSS = false;
		
		if (TableAppliedJobs != null)
		{
			for (var m = 0; m < TableAppliedJobs.length; m++)
			{	
				if (!bAlreadyApplied)
				{
					if (TableAppliedJobs[m].childNodes.length > 0)
					{
						ElementsAppliedJobs = TableAppliedJobs[m].childNodes;
						
						for (x = 0; x < 2; x++)
						{
							if (ElementsAppliedJobs[x].nodeType == 1 && Elements[x].nodeType == 1)
							{
								if (ElementsAppliedJobs[x] != null)
								{
									if (GetInnerText(ElementsAppliedJobs[x]) == GetInnerText(Elements[x]))
									{
										bAlreadyApplied = true;
									}
								}
								
							x++;
							}
						}
					}
				}
			}
			
			if (bAlreadyApplied)
			{
				//tblRow.className = 'AlreadyApplied';
				if (i % 2 == 1)
				{
					tblRow.className = 'AlreadyAppliedAlternate';
					flagCSS = true;
				}
				else
				{
					tblRow.className = 'AlreadyApplied';
					flagCSS = true;
				}
			}
			else
			{
				if (i % 2 == 1)
				{
					tblRow.className = 'MyAlternate';
					flagCSS = true;
				}
			}
		}
		
		if (TableExistsJobs != null)
		{
			for (var n = 0; n < TableExistsJobs.length; n++)
			{
				if (!bAlreadyExists)
				{
					if (TableExistsJobs[n].childNodes.length > 0)
					{
						ElementsExistsJobs = TableExistsJobs[n].childNodes;
						
						for (x = 0; x < 2; x++)
						{
							if (ElementsExistsJobs[x].nodeType == 1 && Elements[x].nodeType == 1)
							{
								if (ElementsExistsJobs[x] != null)
								{
									if (GetInnerText(ElementsExistsJobs[x]) == GetInnerText(Elements[x]))
									{
										bAlreadyExists = true;
									}
								}
								
							x++;
							}
						}
					}
				}
			}
			
			if (bAlreadyExists)
			{
				//tblRow.className = 'AlreadyExists';
				if (i % 2 == 1)
				{
					tblRow.className = 'AlreadyExistsAlternate';
				}
				else
				{
					tblRow.className = 'AlreadyExists';
				}
			}
			else
			{
				if (i % 2 == 1)
				{
					if (!flagCSS)
					{
					tblRow.className = 'MyAlternate';
					}
				}
			}
		}
		
		var tblCell;
		var firstCell;
		var tblInputAnchor;
		
		firstCell = true;
		
		for (var j = 0; j < Elements.length; j++)
		{
			// nodeType = 3 are element nodes.
			if(Elements[j].nodeType == 1)
			{
				if (firstCell)
				{
					tblCell = tblRow.insertCell(tblRow.cells.length);
					
					tblInputAnchor = document.createElement('a');
   					tblInputAnchor.href = "Javascript:aViewJob('" + GetInnerText(Elements[j]) + "')";
   					tblInputAnchor.innerHTML = "<img src='../../../images/icons/iconView.gif' border='0' alt='View job description'>";
	   				
   					tblCell.appendChild(tblInputAnchor);
   					
   					firstCell = false;
   				}
   				else
   				{   		
					tblCell = tblRow.insertCell(tblRow.cells.length);
					
					if (GetInnerText(Elements[j]) == '&nbsp;' || GetInnerText(Elements[j]) == ' ' || GetInnerText(Elements[j]) == '&amp;nbsp;')
					{
						tblCell.innerHTML = '&nbsp;';
					}
					else
					{
						tblCell.innerHTML = GetInnerText(Elements[j]);
					}
				}
			}
		}
	}
	
	Table = xmlResult.getElementsByTagName('Table1');
	Elements = Table[0].childNodes;
	
	var nRowCount;

	if (Elements[0].nodeType == 1)
		nRowCount = parseInt(GetInnerText(Elements[0]), 10);
	else
		nRowCount = parseInt(GetInnerText(Elements[1]), 10);
		
	var objPageSize = document.getElementById('ddlRows');
	var objPageNo = document.getElementById('ddlPage');
	var objTotalPages = document.getElementById('lblPageCount');

	var nPageSize;
	var nPageSelected;
	var nPageLength;
	
	nPageSelected = objPageNo.selectedIndex;
	nPageLength = objPageNo.options.length;
	
	for (var count = nPageLength-1; count >-1; count--)
	{
		objPageNo.options[count] = null;
	}
	
	if (objPageSize.selectedIndex != 0)
	{
		nPageSize = parseInt(objPageSize.value, 10);
	}
	else
	{
		nPageSize = 10;
	}

	if (objPageSize.selectedIndex == '0')
	{
		if (document.getElementById('hdAdminPageNo').value != '')
		{
			nPageSize = document.getElementById('hdAdminPageNo').value
		}
	}	
		
	var textValue; 
	var optionItem;
	var arrQuotient;
	var quotient;
	
	arrQuotient = (nRowCount/nPageSize).toFixed(2).split('.');
	quotient = arrQuotient[0];
	
	if ((nRowCount % nPageSize) > 0)
	{
		for (i = 1; i <= parseInt(quotient, 10) + 1; i++)
		{
			optionItem = new Option(i, i, false, false);
			objPageNo.options[objPageNo.length] = optionItem;
		}
		
		objTotalPages.innerText = parseInt(quotient, 10) + 1;
	}
	else
	{
		for (i = 1; i <= parseInt(quotient, 10); i++)
		{
			optionItem = new Option(i, i, false, false);
			objPageNo.options[objPageNo.length] = optionItem;
		}
		
		objTotalPages.innerText = parseInt(quotient, 10);
	}
	
	if (objPageNo.options.length == nPageLength && nPageLength > 0)
	{
		objPageNo.options[nPageSelected].selected = true;
	}
	
	var Prev = document.getElementById('aPrev');
	var Next = document.getElementById('aNext');
	
	if (objPageNo.options.length <= 1)
	{
		Prev.style.display = 'none';
		Next.style.display = 'none';
	}
	else if (objPageNo.selectedIndex > 0 && objPageNo.selectedIndex < objPageNo.options.length - 1)
	{
		Prev.style.display = 'inline';
		Next.style.display = 'inline';
		Prev.href = "Javascript:aPrevNext_OnClick('P')";
		Next.href = "Javascript:aPrevNext_OnClick('N')";
	}
	else if (objPageNo.selectedIndex == 0)
	{
		Prev.style.display = 'none';
		Next.style.display = 'inline';
		Next.href = "Javascript:aPrevNext_OnClick('N')";
	}
	else if (objPageNo.selectedIndex == objPageNo.options.length - 1)
	{
		Prev.style.display = 'inline';
		Next.style.display = 'none';
		Prev.href = "Javascript:aPrevNext_OnClick('P')";
	}
}
///////////////////////////////////////

function fnSorting(colHeader)
{
	var oJT = document.getElementById('txtJobTitle');
	var oJC = document.getElementById('ccLstJobCategory');
	var oC = document.getElementById('lstCountry');
	var oS = document.getElementById('lstState');
	var oJTy = document.getElementById('ddReqtype');
	var oKW = document.getElementById('txtKeyWords');
	
	var n;
	var strJC = '';
	var strS = '';
	
	for (n = 0; n < oJC.options.length; n++)
	{
		if (oJC.options[n].selected)
		{
			strJC += oJC.options[n].value + ',';
		}
	}
	
	if (strJC.length > 0)
	{
		strJC = strJC.substr(0, strJC.length - 1);
	}
	
	for (n = 0; n < oS.options.length; n++)
	{
		if (oS.options[n].selected)
		{
			strS += oS.options[n].value + ',';
		}
	}
	
	if (strS.length > 0)
	{
		strS = strS.substr(0, strS.length - 1);
	}
	
	var strOrderMode;
	var OrderStatus;
	OrderStatus = document.getElementById('hdSortStatus');
	
	if(OrderStatus.value == '0')
	{
		strOrderMode = '0';
		OrderStatus.value = '1';
	}
	else if(OrderStatus.value == '1')
	{
		strOrderMode = '1';
		OrderStatus.value = '0';
	}
	else
	{
		strOrderMode = '0';
		OrderStatus.value = '1';
	}
	
	var objPageSize = document.getElementById('ddlRows');
	var nPageSize; 
	var objStart = document.getElementById('hdPageNo');
	var nStart = objStart.value;
	
	if (objPageSize.selectedIndex != 0)
	{
		nPageSize = objPageSize.value;
	}
	else
	{
		nPageSize = 10;
	}
	if (DisplayAll)
	{
		// URL to get states for a given country
		var requestUrl = "frmJobSearch_AJAX.aspx?JT=&JC=&C=&S=&JTy=&KW=&nIndex=" + encodeURIComponent(nStart) + "&nCount=" + encodeURIComponent(nPageSize) + "&OrderBy=" + colHeader + "&OrderMode=" + strOrderMode;
	}
	else
	{
		// URL to get states for a given country
		var requestUrl = "frmJobSearch_AJAX.aspx?JT=" + oJT.value + "&JC=" + strJC + "&C=" + oC.value + "&S=" + strS + "&JTy=" + oJTy.value + "&KW=" + oKW.value + "&nIndex=" + encodeURIComponent(nStart) + "&nCount=" + encodeURIComponent(nPageSize) + "&OrderBy=" + colHeader + "&OrderMode=" + strOrderMode;
	}	
	CreateXmlHttp();
	
	if(XmlHttp)
	{
		//Setting the event handler for the response
		XmlHttp.onreadystatechange = fnHandleResponse_SearchGrid;
		
		//Initializes the request object with GET (METHOD of posting), 
		//Request URL and sets the request as asynchronous.
		XmlHttp.open("Post", requestUrl,  true);
		
		//Sends the request to server
		XmlHttp.send(null);
	}
}

function fnRows_OnChange()
{
	var oJT = document.getElementById('txtJobTitle');
	var oJC = document.getElementById('ccLstJobCategory');
	var oC = document.getElementById('lstCountry');
	var oS = document.getElementById('lstState');
	var oJTy = document.getElementById('ddReqtype');
	var oKW = document.getElementById('txtKeyWords');
	
	var n;
	var strJC = '';
	var strS = '';
	
	for (n = 0; n < oJC.options.length; n++)
	{
		if (oJC.options[n].selected)
		{
			strJC += oJC.options[n].value + ',';
		}
	}
	
	if (strJC.length > 0)
	{
		strJC = strJC.substr(0, strJC.length - 1);
	}
	
	for (n = 0; n < oS.options.length; n++)
	{
		if (oS.options[n].selected)
		{
			strS += oS.options[n].value + ',';
		}
	}
	
	if (strS.length > 0)
	{
		strS = strS.substr(0, strS.length - 1);
	}
	
	var objPageSize = document.getElementById('ddlRows');
	var nPageSize; 
	var objStart = document.getElementById('hdPageNo');
	var nStart = objStart.value;
	
	if (objPageSize.selectedIndex != 0)
	{
		nPageSize = objPageSize.value;
	}
	else
	{
		nPageSize = 10;
	}
	// URL to get states for a given country
	var requestUrl = "frmJobSearch_AJAX.aspx?JT=" + oJT.value + "&JC=" + strJC + "&C=" + oC.value + "&S=" + strS + "&JTy=" + oJTy.value + "&KW=" + oKW.value + "&nIndex=" + encodeURIComponent(nStart) + "&nCount=" + encodeURIComponent(nPageSize) + "&OrderBy=&OrderMode=";	
	CreateXmlHttp();
	
	if(XmlHttp)
	{
		//Setting the event handler for the response
		XmlHttp.onreadystatechange = fnHandleResponse_SearchGrid;
		
		//Initializes the request object with GET (METHOD of posting), 
		//Request URL and sets the request as asynchronous.
		XmlHttp.open("Post", requestUrl,  true);
		
		//Sends the request to server
		XmlHttp.send(null);
	}
}

function fnAddJobToCart()
{
	var oValues = document.getElementById('hdValues');
	
	// URL to get states for a given country
	var requestUrl = "frmJobCart_AJAX.aspx?Mode=Add&Values=" + escape(oValues.value);

	CreateXmlHttp();
	
	if(XmlHttp)
	{
		//Setting the event handler for the response
		XmlHttp.onreadystatechange = fnHandleAddJobToCart;
		
		//Initializes the request object with GET (METHOD of posting), 
		//Request URL and sets the request as asynchronous.
		XmlHttp.open("GET", requestUrl,  true);
		
		//Sends the request to server
		XmlHttp.send(null);
	}
}

function fnHandleAddJobToCart()
{
	// To make sure receiving response data from server is completed
	if(XmlHttp.readyState == 4)
	{
		// To make sure valid response is received from the server, 200 means response received is OK
		if(XmlHttp.status == 200)
		{
			alert('Job added to cart!');
			window.opener.btnDisplay_OnClick();
			window.close();
		}
		else
		{
			alert("There was a problem retrieving data from the server." );
		}
	}
}

//Returns the node text value 
function GetInnerText (node)
{
	 return (node.textContent || node.innerText || node.text) ;
}