function $ (id){
    return document.getElementById(id);
}
function getHTTPObject() {
    if (typeof XMLHttpRequest != 'undefined') {
        return new XMLHttpRequest();
    }
    try {
        return new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            return new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }
    return false;
}
//lacks FIFO queue
function addLoadEvent(func) { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') { 
        window.onload = func; 
    } else { 
        window.onload = function() { 
        if (oldonload) { 
            oldonload(); 
        } 
        func(); 
        } 
    } 
} 
//http://www.netlobo.com/wom.html
var woms = new Array();
function womAdd(func){
    //alert('Add ' + func)
  woms[woms.length] = func;
}
function womGo(){
  for(var i=0;i<woms.length;i++)
    eval(woms[i]);
}
window.onload = womGo;

function get( url, params, div ) {
    var xmlHttp = getHTTPObject();
    if (xmlHttp) {
        xmlHttp.open('GET', url, true);
        xmlHttp.onreadystatechange = function(response) {
            if (xmlHttp.readyState === 4) {
                if (xmlHttp.status === 200) {
                    $(div).innerHTML = this.responseText;
                }
            }
        };
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlHttp.send(null);
    }
}
function replace( target, html ) {
    var container = document.createElement('div');
    container.innerHTML = html;
    var element = container.firstChild;
    target.parentNode.replaceChild(element, target);
    updateReplaceSelect(element);
    return true;
}
function post(url, params, target) {
    var xmlHttp = getHTTPObject();
    if (xmlHttp) {
        xmlHttp.open('POST', url, true);
        xmlHttp.onreadystatechange = function(response) {
            if (xmlHttp.readyState === 4) {
                if (xmlHttp.status === 200) {
                    replace( target, this.responseText );
                }
            }
        };
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlHttp.send(params);
    }
}
function refreshSelects( oSELECT ) {
    var oFORM     = oSELECT.form;
    var url       = '/ProductsAjax';
    var params;
    switch(oFORM.id) {
        case 'searchbox':
            var category  = $('s_vacationtype');
            var continent = $('s_continent');
            var country   = $('s_country');
            switch(oSELECT.name) {
                case 'requested_category':
                    params = 'request=continents';
                    params+= '&requested_category='+category.value;
                    params+= '&requested_continent=-1';//+continent.value;
                    params+= '&requested_country=-1';//+country.value;
                    
                    var elem = document.getElementById('s-s_continent');
                    var old = (elem.parentNode).removeChild(elem);
                    post(url, params, continent);
                    
                    params = 'request=countries';
                    params+= '&requested_category='+category.value;
                    params+= '&requested_continent=-1';//+continent.value;
                    params+= '&requested_country=-1';//+country.value;
                    
                    var elem = document.getElementById('s-s_country');
                    var old = (elem.parentNode).removeChild(elem);

                    post(url, params, country);
                break;
                case 'requested_continent':
                    params = 'request=categories';
                    params+= '&requested_category='+category.value;
                    params+= '&requested_continent='+continent.value;
                    params+= '&requested_country='+country.value;
                    //post(url, params, category);
                    params = 'request=countries';
                    params+= '&requested_category='+category.value;
                    params+= '&requested_continent='+continent.value;
                    params+= '&requested_country=-1';
                    
                    var elem = document.getElementById('s-s_country');
                    var old = (elem.parentNode).removeChild(elem);
                    
                    post(url, params, country);
                break;
                case 'requested_country':
                    params = 'request=categories';
                    params+= '&requested_category='+category.value;
                    params+= '&requested_continent='+continent.value;
                    params+= '&requested_country='+country.value;
                    //post(url, params, category);
                    params = 'request=continents';
                    params+= '&requested_category='+category.value;
                    params+= '&requested_continent='+continent.value;
                    params+= '&requested_country='+country.value;
                    //post(url, params, continent);
                  //  var elem = document.getElementById('s-s_country');
                  //  var old = (elem.parentNode).removeChild(elem);
                break;
            }
        break;
        case 'sortbox':
            var category = $('sb_vacationtype');
            var price    = $('sb_continent');
            var provider = $('sb_country');
            switch(oSELECT.name) {
                case 'requested_category':
                    oFORM.submit();
                break;
                case 'requested_price':
                    oFORM.submit();
                break;
                case 'requested_provider':
                    oFORM.submit();
                break;
            }
        break;
    }
}
