/**
 *create AJAX object for the auto-suggest GSA call
 */
function createXMLHttp() {
        // IE7+, Firefox, Chrome, Safari, Opera
        if ( typeof XMLHttpRequest != "undefined" ) {
                return new XMLHttpRequest();
        }
        // IE6, IE5
        else if ( window.ActiveXObject ) {
                var ieVersions = [
                        "MSXML2.XMLHttp.5.0",
                        "MSXML2.XMLHttp.4.0",
                        "MSXML2.XMLHttp.3.0",
                        "MSXML2.XMLHttp",
                        "Microsoft.XMLHttp"
                ];

                for ( var i = 0; i < ieVersions.length; i++ ) {
                        try {
                                 var xmlHttp = new ActiveXObject( ieVersions[ i ] );
                                 return xmlHttp;
                        }
                        catch( err ) {
                                // ignore
                        }
                }
        }

        throw new Error( "XMLHttp object could not be created." );
}

/**
 *AJAX call for the auto-suggect of Google search
 *proxy sitting on web server: search.php -> GSA server
 */
function search(schKeyword) {
    var query_res = document.getElementById( 'query_res' );
    schKeyword = schKeyword.replace(/\"/g,'');
    schKeyword = schKeyword.replace(/\\/g,'');
    if(schKeyword.trim() != ''){
        var xhr = createXMLHttp();
        xhr.onreadystatechange = function() {
            if ( xhr.readyState === 4 && xhr.status === 200 ) {
                var resp = eval( '(' + xhr.responseText + ')' );
                if(resp.results.length > 0){
                    query_res.options.length = 0;
                    if(typeof resp.results != 'undefined'){
                        if ( resp.results.length > 0 ) {
                            for ( var i = 0; i < resp.results.length; i++ ) {
                                    query_res.options[ i ] = new Option( resp.results[ i ].name, resp.results[ i ].name );
                            }
                            query_res.size = query_res.options.length + 1;
                            query_res.style.display = 'block';
                        }
                        else {
                            query_res.style.display = 'none';
                        }
                    }
                    else {
                        query_res.style.display = 'none';
                    }
                }
                else {
                    query_res.style.display = 'none';
                }
            }
        };

//        if ( document.getElementById( 'q' ).value && document.getElementById( 'q' ).value != '' ) {
//            alert(schKeyword+':'+document.getElementById( 'q' ).value);
//                xhr.open( 'GET', '/sitesearch/web/search.php?q=' + document.getElementById( 'q' ).value, true );
                xhr.open( 'GET', '/sitesearch/web/search.php?q=' + schKeyword, true );
                xhr.send();
//        }
    }
    else{
        query_res.style.display = 'none';
    }
}

/**
 *Switch the div tag between location search and site search
 */
function switchDiv(select_rd) {
	var search = document.getElementById('site_search');
	var location = document.getElementById('location_search');
    var searchbox = document.getElementById('searchbox');
    var locationbox = document.getElementById('q');
    switch (select_rd){    
        case 'L':        	
            if (locationbox.value != '' && locationbox.value != "Search content with keywords"){            	
            	searchbox.value = locationbox.value;
            }
            search.style.display = 'none';
            location.style.display = 'block';
            break;
        case 'S':
        	if (searchbox.value != '' && searchbox.value != "Search for location"){        		
            	locationbox.value = searchbox.value;
            }else{
            	if(lang == 'fr'){
                    locationbox.value = 'Rechercher le contenu avec des mots clés';
                }
                else{
                    locationbox.value = 'Search content with keywords';
                }
            }
        	location.style.display = 'none';
            search.style.display = 'block';
            break;
    }
}

/**
 * @description
 * set the selected suggested value to the input box.
 */
function set_search_keyword(keyWordValue)
{
    if(document.getElementById( 'q' ) && keyWordValue.trim() != ''){
        document.getElementById('q').value = keyWordValue.trim();
    }
}

/**
 * @description
 * empty the value in the input box.
 */
function clearMe(formfield)
{
    formfield.value = '';
    if(document.getElementById( 'query_res' )){
        document.getElementById( 'query_res' ).style.display = 'none';
    }
}

function urlencode(str) {
    return escape(str).replace('+', '%2B').replace('%20', '+').replace('*', '%2A').replace('/', '%2F').replace('@', '%40');
}

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

function submitform(frmName)
{
    var searchKeyWord = document[frmName].elements['q'].value;
    if(document[frmName].onsubmit()){//this check triggers the validations
        if((searchKeyWord).trim() != '' && (searchKeyWord).trim() != 'Search content with keywords'){
            document[frmName].submit();
        }
    }
}

function suggest_word_search(frmName,schKeyword)
{
    if(schKeyword.trim() != '' && schKeyword.trim() != 'Search content with keywords'){
        document[frmName].elements['q'].value = schKeyword;
        if(document.getElementById( 'query_res' )){
            document.getElementById( 'query_res' ).style.display = 'none';
        }
        if(document[frmName].onsubmit())
        {//this check triggers the validations
                document[frmName].submit();
        }
    }
}

/**
 * Handles key stroke events for the search box.
 */
function handleKey(schKeyWord,e) {
    var GSAkeyid;
    if(e.which){
        GSAkeyid = e.which;
    }
    else if(window.event){
        GSAkeyid = window.event.keyCode;
    }
  var autoSelectBox = document.getElementById( 'query_res' )?document.getElementById( 'query_res' ):'';
  switch (GSAkeyid) {
    case 40:  // "key down".
        if(autoSelectBox != '' && autoSelectBox.options.length > 0){
            autoSelectBox.focus();
            document['suggestion_form'].elements['q'].value = document.getElementById( 'query_res' ).options[0].value;
            autoSelectBox.options.selectedIndex = 0;
        }
      break;
    case 38:  // "key up".
        if(autoSelectBox != '' && autoSelectBox.options.length > 0){
            autoSelectBox.focus();
            document['suggestion_form'].elements['q'].value = document.getElementById( 'query_res' ).options[document.getElementById( 'query_res' ).options.length - 1].value;
            autoSelectBox.options.selectedIndex = autoSelectBox.options.length - 1;
        }
      break;
    case 13:  // "enter".
        if(autoSelectBox != '' && autoSelectBox.options.length > 0){
            autoSelectBox.style.display = 'none';
        }
        submitform('suggestion_form');
      break;
    case 27:  // "escape".
        if(autoSelectBox != '' && autoSelectBox.options.length > 0){
            autoSelectBox.style.display = 'none';
        }
      break;
    case 37:  // "key left".
    case 39:  // "key right".
      break;
    case 9:  // "tab".
        if(autoSelectBox != '' && autoSelectBox.options.length > 0){
            autoSelectBox.focus();
            document['suggestion_form'].elements['q'].value = document.getElementById( 'query_res' ).options[0].value;
            autoSelectBox.options.selectedIndex = 0;
        }
      break;
    case 16:  // "shift-tab".
      break;
    default:
        search(schKeyWord);
      break;
  }
}

/**
 * Handles enter key stroke events for the auto-suggest box.
 */
function onEnter(e) {
    var GSAkeyid;
    if(e.which){
        GSAkeyid = e.which;
    }
    else if(window.event){
        GSAkeyid = window.event.keyCode;
    }
  var autoSelectBoxOnenter = document.getElementById( 'query_res' )?document.getElementById( 'query_res' ):'';
  switch (GSAkeyid) {
    case 13:  // "enter".
        if(autoSelectBoxOnenter != '' && autoSelectBoxOnenter.options.length > 0){
            autoSelectBoxOnenter.style.display = 'none';
        }
        submitform('suggestion_form');
      break;
    default:
      break;
  }
}
