
var intTotalItems = 0;
var intLastNumber = 0;
var objDiv, objContentDiv;

function startTicker() {
	objDiv = document.getElementById("contentscroller");
	objContentDiv = document.getElementById("displayedcontent");

	if (objDiv && objContentDiv) {
		/* Loop through the contentscroller UL, give each LI 
	       an ID and save the list in an array */
		for (var i = 0; i < objDiv.childNodes.length; i++) {
			var item = objDiv.childNodes[i];
			if (item.nodeName.toLowerCase() == "li" && item.id == "") {
				item.setAttribute("id", intTotalItems);
				intTotalItems++;
			}
		}
		
		// Add first load of content
		objCurrentContent = document.getElementById(intLastNumber);
		if (objCurrentContent)
			objContentDiv.innerHTML = objCurrentContent.innerHTML;
		intLastNumber++;
		
		// And change it in ten seconds
		setTimeout("changeContent()", 3000);
	}
}

// Display the next content snippet in the list
function changeContent() {
	objCurrentContent = document.getElementById(intLastNumber);
	startOpacityChange('displayedcontent', 100, 0, 1000);
	
	setTimeout("startOpacityChange('displayedcontent', 0, 100, 1000)", 1000);
	setTimeout("document.getElementById('displayedcontent').innerHTML = objCurrentContent.innerHTML;", 1005);

	if (intLastNumber == (intTotalItems - 1))
		intLastNumber = 0;		
	else
		intLastNumber++;

	// Now do it all again (in ten seconds time)!
	setTimeout("changeContent();", 5000);
}

function startOpacityChange(strId, intOpacStart, intOpacEnd, intMillisec) {
    var intSpeed = Math.round(intMillisec / 100);
    var intTimer = 0;

    if(intOpacStart > intOpacEnd) {
        for(i = intOpacStart; i >= intOpacEnd; i--) {
            setTimeout("changeOpacity(" + i + ",'" + strId + "')",(intTimer * intSpeed));
            intTimer++;
        }
    }
    else if(intOpacStart < intOpacEnd) {
        for(i = intOpacStart; i <= intOpacEnd; i++) {
            setTimeout("changeOpacity(" + i + ",'" + strId + "')",(intTimer * intSpeed));
            intTimer++;
        }
    } 
}

/* Change the opacity of a div (allowing for different browsers) */
function changeOpacity(intOpacity, id) {
	var objLI = document.getElementById(id).style;
	
	objLI.opacity = (intOpacity / 100);
	objLI.MozOpacity = (intOpacity / 100);
	objLI.KhtmlOpacity = (intOpacity / 100);
	objLI.filter = "alpha(opacity=" + intOpacity + ")";
}


/* Ajax goodness */

function rpcall(fragment_url, element_id) {
    var element = false;

    if(element_id != "" && element_id != "JS_alert") element = document.getElementById(element_id);
	    
	var xmlhttp;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	  try {
	  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
	 } catch (e) {
	  try {
	    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
	  } catch (E) {
	   xmlhttp=false
	  }
	 }
	@else
	if (!xmlhttp && document.createElement) {
	 try {
	  xmlhttp = new XMLHttpRequest();
	 } catch (e) {
	  xmlhttp=false
	 }
	}
	@end @*/
	if (!xmlhttp && document.createElement) {
	 xmlhttp = new XMLHttpRequest(); 
	}

    	
    xmlhttp.open("GET", fragment_url);
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            if(element) element.innerHTML = xmlhttp.responseText;
            	else if(element_id == "JS_alert") alert(xmlhttp.responseText);
        }
    }
    xmlhttp.send(null);

}


function rpc(action, values, target){
	if(values != "") values = "&" + values
	url = '/rpc.php?action='+action+values+'&rnd=';
	rpcall(url, target);
}

function update_area(country, select_id) {
	target = select_id + "-outer";
	rpc('update-areas', 'id='+select_id+'&country='+country+'&name='+select_id, target);
}

function update_towns_old(area, select_id) {
	target = select_id + "-outer";
	rpc('update-towns', 'id='+select_id+'&area='+area+'&name='+select_id, target);
}

function update_towns(area_id, target) {
	new Ajax.Request('/rpc.php?action=get_towns&area_id='+area_id,
  {
    method:'get',
    onSuccess: function(transport){
      var response = transport.responseText || "No towns";
      var towns_postcodes = response.split("\n", 3);
      var town_ids = towns_postcodes[0].split(",");
      var towns = towns_postcodes[1].split(",");
      var postcodes = towns_postcodes[2].split(",");
      fill_select($(target),town_ids, towns);
	    //alert(response);
    }
  });
}

function clear_select(oSelect){
 for (var i = oSelect.options.length; i >= 0; i--){
  oSelect.options[i] = null;
 }
 oSelect.selectedIndex = -1;
}

function fill_select(oSelect, arrIds, arrNames) {
	clear_select(oSelect);
  for(var i = 0; i < arrNames.length; i=i+1) {
	  oSelect.options[oSelect.options.length] = new Option(arrNames[i], arrIds[i]);
	}
}

