var protocol = (("https:"==document.location.protocol) ? "https" : "http");

function checkZip(lang, zip, server, state, current_idx ) {

	// only validate the first 5
	zip = zip.substring(0, 5);

	// we have a 5 digit zip to try to find events for and populate the select box for events.
	if(zip.length == 5 || current_idx > 0)	{
		getChallengeEvents( 'event_idx', lang, zip, server, current_idx, state );
		getHearAbout( 'hear_idx', lang, zip, server, current_idx );
	}
}

function getHearAbout( id, lang, zip, server, current_idx) {
    dynamicElement = document.getElementById(id);
    dynamicElement.disabled = false;
    var selIndex = dynamicElement.selectedIndex;
    var val;
    if( selIndex >= 0 ) {
    	val = dynamicElement.options[dynamicElement.selectedIndex].value;
    } else {
    	val = '';
    }
    liveUpdaterUri( protocol + "://" + server + "/register/get_opo_hear.php?lang=" + lang + "&zip=" + zip + "&current=" + current_idx);
}

function getChallengeEvents( id, lang, zip, server, current_idx, state ) {
    dynamicElement = document.getElementById(id);
    dynamicElement.disabled = false;
    var selIndex = dynamicElement.selectedIndex;
    var val;
    if( selIndex >= 0 ) {
    	val = dynamicElement.options[dynamicElement.selectedIndex].value;
    } else {
    	val = '';
    }
    liveUpdaterUri( protocol + "://" + server + "/register/get_zip_events.php?lang=" + lang + "&zip=" + zip + "&current=" + current_idx + "&state=" + state );
}

function toggleEvents() {
	var sel = document.getElementById('event_idx');
	if( !sel )
		return;

	if( sel.options.length > 1 ) {
		document.getElementById('selectContainer').style.display = 'block';
		document.getElementById('selectTitle').style.display = 'block';
	} else {
		document.getElementById('selectContainer').style.display = 'none';
		document.getElementById('selectTitle').style.display = 'none';
	}
}

function liveUpdaterUri(uri)
{
    update = liveUpdater(function() { return uri; });
    return update();
}

function liveUpdater( uriFunc )
{
    var request = false;
    var regex = /<(\w+).*?id="(\w+)".*?>((.|\r\n|\n)*)<\/\1>/;

    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
    } else {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    function update()
    {
        if(request && request.readyState < 4)
            request.abort();

        request.onreadystatechange = processRequestChange;
        request.open("GET", uriFunc());
        request.send(null);
        return false;
    }

    function processRequestChange()
    {
        if(request.readyState == 4)
        {
            var results = regex.exec(request.responseText);
            if(results)
            	document.getElementById(results[2]).innerHTML = results[3];
            toggleEvents();

        }
    }

    return update;
}
