function getXMLHTTPRequest(){

    var request = false;

    if(window.XMLHttpRequest){
       request = new XMLHttpRequest();
    }else{
        if(window.ActiveXObject){
            try{
                request = new ActiveXObject("Msml2.XMLHTTP");
            }catch(error1){
               try{
                   request = new ActiveXObject("Microsoft.XMLHTTP");
               }catch(error2){
                   request = false;
                   alert('Your Browser doesn\'t suport Ajax. It\'s time to update you browser!!!');
               }
            }
        }
    }
    return request;
}
var ajaxRequest = getXMLHTTPRequest();
var originalText = null;

function executeAjax(element, route){

    //alert(element.value);
    if(document.getElementById('MediaPlayer1'))
        document.getElementById('MediaPlayer1').style.display = 'none';

    if(element.value == '' && originalText != null){
        restoreOriginalText();
        return false;
    }

    if(element.getAttribute('href') || element.value){
        var url = 'http://www.avcom.ie/ajax';
        var params = '';

        if(element.value){
            if(element.type == 'submit')
                url += '-'+element.value;
            else
                url +='-search';
            var form = element;
            
            while(form.tagName != 'FORM'){
                form = form.parentNode;
            }

            var inputs = form.getElementsByTagName('input');
            var selects = form.getElementsByTagName('select');
            var textareas = form.getElementsByTagName('textarea');

            for(var i = 0; i < inputs.length; i++){
                if(inputs[i].getAttribute('type') == 'text' || inputs[i].getAttribute('type') == 'hidden'){
                    params += (i!=0?'&':'')+(inputs[i].name)+'='+(inputs[i].value);
                }
            }

            for(var j = 0; j < selects.length; j++){
                params += '&'+(selects[j].name)+'='+(selects[j].value);
            }

            for(var k = 0; k < textareas.length; k++){
                params += '&'+(textareas[k].name)+'='+(textareas[k].value);
            }

        }
        
        /*if(element.getAttribute('href')){
            url += '/'+element.getAttribute('href').replace(/http:\/\/.+\/.+\//i, '');
        }else{
            url += '/'+(form.getAttribute('id'));
        }*/
        url += '/'+route;
        url += '/'+(1 + Math.floor(Math.random() * 1000));

        ajaxRequest.open('POST', url, true);
        ajaxRequest.onreadystatechange = function(){
            switch(ajaxRequest.readyState){
                case 4:if(ajaxRequest.status == 200){
                            switch(route){
                                case 'search':  showSearcheResults(ajaxRequest.responseText);
                                                break;
                                default:        showResults(ajaxRequest.responseText, route);
                                                break;
                            }
                        }
                        break;
                case 3:break;
                case 2:break;
                case 1:break;
            }

        };
        ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        ajaxRequest.setRequestHeader("Content-length", params.length);
        ajaxRequest.setRequestHeader("Connection", "close");
        ajaxRequest.send(params);
    }

    return false;
}

function showResults(response, route){

    var mainDiv = document.createElement('div');
    var mainDivId;
    var innerDiv = document.createElement('div');
    var closeButton = document.createElement('span');

    if(document.getElementById('subscribersWrapper'))
        document.getElementsByTagName('body')[0].removeChild(document.getElementById('subscribersWrapper'));
    if(document.getElementById('contactUsWrapper'))
        document.getElementsByTagName('body')[0].removeChild(document.getElementById('contactUsWrapper'));
    if(document.getElementById('unsubscribeWrapper'))
        document.getElementsByTagName('body')[0].removeChild(document.getElementById('unsubscribeWrapper'));

    switch(route){
        case 'subscribers': mainDiv.setAttribute('id', 'subscribersWrapper');
                            mainDivId = 'subscribersWrapper';
                            innerDiv.setAttribute('id', 'innerSusbcribersWrapper');
                            break;
        case 'contact_us':   mainDiv.setAttribute('id', 'contactUsWrapper');
                            mainDivId = 'contactUsWrapper';
                            innerDiv.setAttribute('id', 'innerContactUsWrapper');
                            break;
        default:            break;
    }

    closeButton.setAttribute('id', 'closeButton');
    closeButton.innerHTML = 'X';

    innerDiv.appendChild(closeButton);

    innerDiv.innerHTML += response;

    mainDiv.appendChild(innerDiv);

    document.getElementsByTagName('body')[0].appendChild(mainDiv);

    closeButton = document.getElementById('closeButton');
    closeButton.onclick = function(){
        $('#'+mainDivId).fadeOut('slow', function(){
           var divToClose = closeButton.parentNode.parentNode;
            document.getElementsByTagName('body')[0].removeChild(divToClose);
            if(document.getElementById('MediaPlayer1'))
                document.getElementById('MediaPlayer1').style.display = 'block';
        });
    };
    
    mainDiv = document.getElementById(mainDivId);
    var height = parseInt(mainDiv.offsetHeight);

    mainDiv.style.display = 'none';
    mainDiv.style.marginTop = '-'+(height/2)+'px';

    $('#'+mainDivId).fadeIn('slow');

}

function showSearcheResults(response){



    if(document.getElementById('leftCol')){
        if(originalText == null)
            originalText = document.getElementById('leftCol').innerHTML;
        document.getElementById('leftCol').innerHTML = response;
    }else if(document.getElementById('doubleColSearchResults')){
        if(originalText == null)
            originalText = document.getElementById('doubleColSearchResults').innerHTML;
        document.getElementById('doubleColSearchResults').innerHTML= response;
    }
}

function restoreOriginalText(){

    var responseDestinationElement;

    if(document.getElementById('leftCol'))
        responseDestinationElement = document.getElementById('leftCol');
    else if(document.getElementById('doubleColSearchResults'))
        responseDestinationElement = document.getElementById('doubleColSearchResults');

    responseDestinationElement.innerHTML = originalText;
    
}

function tidyInput(input){
    
    if(input.value == ''){
        if(input.name == 'searchCriteria'){
            input.value = 'Search';
        }
        if(input.name == 'email'){
            input.value = 'Subscribe to Newsletter';
        }
    }else{
        if(input.value == 'Search' || input.value == 'Subscribe to Newsletter'){
            input.value = '';
        }
    }
}

function clearInput(input){
    if(input.name == 'searchCriteria'){
        input.value = 'Search';
    }
}
