Tophness / openinspectionfinder

// ==UserScript==
// @name        openinspectionfinder
// @namespace   openinspectionfinder
// @include     http://www.domain.com.au/search/rent/*/?*
// @version     1
// @grant       none
// ==/UserScript==

var total = 0;
var vurls = [];
var vdata = [];
var urls = [];
var ListingsRows = [];

function FindAllRows() {
	var litem = document.getElementsByTagName('li');
	for (var i = 0; i < litem.length; ++i) {
		if (litem[i].className.indexOf('strap new-listing') != -1) {
			ListingsRows.push(litem[i]);
		}
	}

	total = ListingsRows.length;
	if (ListingsRows.length > 0) {
		for (var i = 0; i < ListingsRows.length; ++i) {
			WorkOnRow(ListingsRows[i]);
		}
	}
}

function WorkOnRow(RowElement){
	var allElements = RowElement.getElementsByTagName('a');
	for (var i = 0; i < allElements.length; ++i) {
		if (allElements[i].href.indexOf("/for-rent/") != -1) {
			ajaxsubmit(allElements[i].href);
		}
	}
}

function checkloaded(url){
	urls.push(url);
	if(urls.length == total){
		checkurls();
	}
}


function checkurls(){
	var dlitem = document.getElementsByTagName('li');
	for (var i = 0; i < dlitem.length; ++i) {
		if(dlitem[i].innerHTML != ""){
			var dlElements = dlitem[i].getElementsByTagName('a');
			for (var i2 = 0; i2 < dlElements.length; ++i2) {
				if (dlElements[i2].href.indexOf("/for-rent/") != -1) {
					for (var i3 = 0; i3 < vurls.length; ++i3) {
						if(dlElements[i2].href == vurls[i3]){
							var datael = document.createElement('li');
							datael.appendChild(document.createTextNode('^ OPEN INSPECTION '));
							datael.innerHTML = datael.innerHTML + vdata[i3];
							dlitem[i].appendChild(datael);
						}
					}
				}
			}
		}
	}
}

function ajaxsubmit(url)
{
	var mygetrequest=new ajaxRequest();
	mygetrequest.onreadystatechange=function(){
		if (mygetrequest.readyState==4){
			if (mygetrequest.status==200){
				var rdata = mygetrequest.responseText;
				var varipoint = rdata.indexOf('Open for inspection times');
				if(varipoint != -1){
					varistr = rdata.substring(varipoint);
					varistr = varistr.substring(varistr.indexOf('js-first-inspection') + 21);
					vurls.push(url);
					vdata.push(varistr.substring(0, varistr.indexOf('</li>')));
				}
				checkloaded(url);
			}
		}
	}
	mygetrequest.open("GET", url, true);
	mygetrequest.send(null);
}

function ajaxRequest(){
 var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
 if (window.ActiveXObject){
  for (var i=0; i<activexmodes.length; i++){
   try{
    return new ActiveXObject(activexmodes[i]);
   }
   catch(e){
   }
  }
 }
 else if (window.XMLHttpRequest)
  return new XMLHttpRequest();
 else
  return false;
}

FindAllRows();