
var dslog_req;

// From http://www.w3schools.com/JS/js_cookies.asp
function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : "; expires="+exdate.toGMTString()+"; path=/");
}


function displayResult(text)
{
// Sets the value of the reusult area
statuszone = document.getElementById('ajaxResultDiv');
if (text=='')
	{
	statuszone.innerHTML = '';
	}
else
	{	
	statuszone.innerHTML = statuszone.innerHTML + '<br />' + text;
	}
}


function loadXMLDoc(url) 
{
	// branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) 
	{
	//displayResult('XMLHttpRequest');
        dslog_req = new XMLHttpRequest();
		dslog_req.onreadystatechange = processReqChange;
        dslog_req.open("GET", url, true);
        dslog_req.send(null);
	}
    // branch for IE/Windows ActiveX version
     else if (window.ActiveXObject) 
	{
        dslog_req = new ActiveXObject("Microsoft.XMLHTTP");
	//displayResult('XMLHTTP');
        if (dslog_req) 
		{
            dslog_req.onreadystatechange = processReqChange;
           	dslog_req.open("GET", url, true);
			dslog_req.send();
		}
    }

}



function getQsos(input, response)
	{
	if (response != '')
		{ 
  			// Response mode
    		if (isArray(response))
			{
			arraylength = response[0].length;
			displayResult('');
 			displayResult('<p>The following results were returned:</p>');
			var resultTable = '<table><thead><tr><th>Details</th><th>Date</th><th>Call</th><th>Freq.</th><th>Mode</th></tr></thead><tbody>';
			if (arraylength == 1) {var totalQsosText = '1 QSO was found.';}
			else if (arraylength > 50) {var totalQsosText = response[1] + ' QSOs were found. Only the first 50 are shown here.';}
			else {var totalQsosText = arraylength + ' QSOs were found.';}
			var qslRequest = '<p>' + totalQsosText + ' <a href=\"http://www.domsmith.co.uk/amateur-radio/qsl-cards/request?qsos=';
			for ($i=0; $i<arraylength; $i++)
				{
				qsodate = result[0][$i][0];
				qsocall = document.getElementById('callsign').value.toUpperCase();
				qsocall = qsocall.replace("-","/");
				qsofreq = result[0][$i][1];
				qsomode = result[0][$i][2];
				qsourl = result[0][$i][3];
				resultTable += '<tr><td><a href=\"' + qsourl + '\">[Details]</a></td><td>' + qsodate + '</td><td>' + qsocall + '</td><td>' + qsofreq + '</td><td>' + qsomode + '</td></tr>';
				qslRequest += qsourl.substring((qsourl.length)-14) + ';';
				}
			qslRequest = qslRequest.substring(0,(qslRequest.length)-1) + '\">Request Bureau QSL Cards for these QSOs.</a></p>';
			resultTable += '</tbody></table>' + qslRequest;
			displayResult(resultTable);
			}
		else
			{
 			displayResult('');
 			displayResult('<p style=\'color:red\' id=\'qsoNIL\'>Sorry, Not In Log.</p>');
    		} 
  		}
	else
		{
  			displayResult('');
    		//displayResult('Requesting ' + input + ' ');
    		// Input mode
			//setCookie('logSearchCall',input,365);
    		input = input.toLowerCase()
    		input = input.replace("/","-");
    		if (input.length<1) {displayResult('<p>Nothing to search for!</p>'); die;}
    		searchLog = document.getElementById('logToSearch').value.toLowerCase();
    		url = 'http://www.domsmith.co.uk/amateur-radio/qsos/' + (searchLog) + '/' + (input);
   			if (document.getElementById('yearToSearch'))
   			{
	   			searchYear = document.getElementById('yearToSearch').value;
	   			url = url + '/' + (searchYear);
   			}
    		if (document.getElementById('eventToSearch'))
   			{
	   			if (!document.getElementById('yearToSearch'))
	   			{
		   			url = url + '/*';
	   			}
	   			searchEvent = document.getElementById('eventToSearch').value;
	   			url = url + '/*/*/' + (searchEvent);
   			}
    		
    		displayResult('Loading ' + url);
    		document.getElementById('stableUrl').innerHTML = '<br />You can bookmark this search by using the following URL:<br />' + url + '<br /><a href=\'http://www.domsmith.co.uk/amateur-radio/qsl-cards/' + searchLog + '\'>(QSL Information)</a>';
    		loadXMLDoc(url + '?ajax=1');
  		}
	}



function processReqChange() 
{
    	// only if req shows "complete"
		if (dslog_req.readyState == 4)
		{
			//displayResult("Ready " + dslog_req.readyState + " ... " + dslog_req.responseText);
			// only if "OK"
        	if ((dslog_req.status == 200) | (dslog_req.status == 300))
			{
   				displayResult("Received");
            	// ...processing statements go here...
      			response  = dslog_req.responseXML.documentElement;
				if (dslog_req.status == 300) {
					totalqsos = response.getElementsByTagName('totalQsos')[0].firstChild.data;}
				else {totalqsos=1;}
     			result    = response.getElementsByTagName('qsos')[0];
				//displayResult("Got result");
				resultnum = result.getElementsByTagName('qso').length;
				displayResult(resultnum + ' results found');	
				if (resultnum == 0)
					{
					displayResult('');
					displayResult('Not in log');
					}
				else
					{
					resultArray = new Array();
					//displayResult("Set array");
				
					for ($i=0; $i<(resultnum); $i++)
						{
					   	//displayResult("Result " + $i);
						thisqso    = result.getElementsByTagName('qso')[$i];
						qsodate    = thisqso.getElementsByTagName('begin')[0].firstChild.data;
			   			//displayResult('QSO Date' + qsodate);
						qsofreq    = thisqso.getElementsByTagName('freq')[0].firstChild.data;
				   		qsomode    = thisqso.getElementsByTagName('mode')[0].firstChild.data;
						qsourl    = thisqso.getElementsByTagName('url')[0].firstChild.data;
						thisresultarray = new Array(qsodate,qsofreq,qsomode,qsourl);
						resultArray[$i] = thisresultarray;
						}
					result = new Array(resultArray,totalqsos);
					getQsos('', result);
	        		}
			}
		else if (dslog_req.status == 404)
		{
			displayResult('');
 			displayResult('<p style=\'color:red\'>Sorry, Not In Log.</p>');
		}	
		else 
		{
			displayResult("Ooops... there was a problem retrieving the XML data:\n" + dslog_req.statusText);
        }
    }
}



function isArray() 
	{
	// Hack for Safari
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("safari") != -1)
	{
		return true;
	}
	else
	{
		
	// Thanks to http://www.planetpdf.com/developer/article.asp?ContentID=6383
	if (typeof arguments[0] == 'object') 
		{
		var criterion = arguments[0].constructor.toString().match(/array/i); 
 		return (criterion != null);  
		}
	return false;
	}
	
	// Ends Safari hack
	}

