
// Search form

jQuery(document).ready(function() {
    jQuery("#txtSearchSupport").autocomplete("autosearch.jsp", {
        width: 324,
        selectFirst: false
    });

    jQuery("#txtSearchSupport").result(function(event, data, formatted) {
        if (data){
            jQuery("#btnSearchSupport").click();
        }
    });

    jQuery("#frmSearchSupport").bind("submit", function(event) {
        if (jQuery.trim(jQuery("#txtSearchSupport").val()) == "") {
            event.preventDefault();
        }
    });
    jQuery("#btnSearchSupport_original").bind("click", function(event) {
        if (jQuery.trim(jQuery("#txtSearchSupport").val()) == "") {
            event.preventDefault();
        }
    });

    jQuery("#article_type input[type='checkbox']").bind("click", function(event) {
        if (typeof Analytics.Search != 'undefined') {
            if (this.checked) {
                Analytics.Search.trackSearchShowRemove(this.value);
            } else {
                Analytics.Search.trackSearchShowAdd(this.value);
            }
        }
        window.location.search = '?ui_mode=subnavigate&facet=' + this.value;
    });

});


// Process Wizard Support

var completedSteps = new Array();

function addAnswer(currStep, newStep) {
    completedSteps.push([currStep,newStep]);
    renderQuestionStack();
}

function getRatingClass( rating ){
    var ratingClass = "";
    switch(rating){
        case 1:     return "ratingOneStar";
        case 2:     return "ratingTwoStars";
        case 3:     return "ratingThreeStars";
        case 4:     return "ratingFourStars";
        case 5:     return "ratingFiveStars";
        default:     return "";
    }
}

function updateSearchResults( searchString ){

    //break if this element doesnt exist
    if( jQuery("#pageUpdateServiceURL").length < 1 ){    return false; }

    //grab the service URL and append params
    var serviceURL = jQuery("#pageUpdateServiceURL").html();
    var currUrl = window.location.href;
    var urlParams = currUrl.split('?');
    var queryParams;
    if(urlParams.length > 1){
        queryParams = urlParams[1].split('&');
        var len=queryParams.length;
        for(var i=0; i<len; i++) {
            var value = queryParams[i];
            if(i == 0){
                serviceURL += "?";
            } else {
                serviceURL += "&";
            }

            if(value.indexOf('question_box') > -1){
                serviceURL += "question_box=" + encodeURI(searchString);
            } else {
                serviceURL += value;
            }
        }
    }

    // TODO: Add the current facets

    //make the ajax call
    jQuery.getJSON( serviceURL, {} , function(json){

        var numArticles = 0;

        //update the articles
        var newGroupList = "";
        for( var i in json.response.groupings ){

            var groupInfo = json.response.groupings[i];
            var group = "<div class=\"headerWrapperPrimary\">"+
                        "    <h3 class=\"corporate\">"+groupInfo.title+"</h3>"+
                        "</div>"+
                        "<p>"+groupInfo.description+"</p>";

            group += "<ul class=\"groupListing\">";

            var newArticleList = "";
            var classCounter = 0;
            for( var j in groupInfo.articles ){
                classCounter++;
                var articleClasses = "";
                //this is the case for the row separator
                if( classCounter % 3 == 0 ){
                    articleClasses = "rowSeparator";
                    var article =     "<li class='"+articleClasses+"'></li>";
                    newArticleList += article;
                    classCounter = 0;
                    articleClasses = "topicListing rowStart";
                    numArticles++;
                //this is the case for non-row-starting articles
                } else if( classCounter % 2 == 0 ) {
                    articleClasses = "topicListing";
                    numArticles++;
                //ths is the case for row starting articles
                } else {
                    articleClasses = "topicListing rowStart";
                    numArticles++;
                }

                var articleInfo = groupInfo.articles[j];

                var article =     "<li class='"+articleClasses+"'>"+
                                  "    <div class=\"icon\">"+articleInfo.icon+"</div>"+
                                "    <div class=\"content\">"+
                                "        <h3><a href=\""+articleInfo.link+"\">"+articleInfo.title+"</a></h3>"+
                                "        <p class=\"last\">"+articleInfo.description+"</p>"+
                                "        <div class=\"tutorialDetails\">"+
                                "            <span class=\"tertiary\">Created on</span> "+
                                "            <span class=\"date\">"+articleInfo.date+"</span> "+
                                // "            <br/><span class=\"tertiary\">Average user rating: </span>"+
                                // "            <div class=\"rating "+getRatingClass(articleInfo.rating)+"\"><em>"+articleInfo.rating+" stars</em></div>"+
                                "        </div>"+
                                "    </div>"+
                                "</li>";


                newArticleList += article;

            }

            group += newArticleList;
            group += "</ul>";
            newGroupList += group;
        }
        jQuery("#searchPageArticles").html(newGroupList);
        jQuery(".resultHeader").html("Results for &quot;"+ searchString + "&quot;");
        jQuery('.resultMessage').html('<p><h3>Displaying results for: ' + searchString + '</h3></p>');

    });
}

function selectWizardAnswer(currNode, stepId, selectId){
    addAnswer(stepId,selectId);
    var stepIdClass = '#step'+stepId;
    jQuery(stepIdClass).addClass('hideMe');

    var stepCurrNodeClass = jQuery(currNode).val();
    if (stepCurrNodeClass == '') {
        stepCurrNodeClass = currNode.id.slice(4);
    }
    stepCurrNodeClass = '#step' + stepCurrNodeClass;

    //Should we perform an auto-search?
    if(jQuery(stepCurrNodeClass).text().indexOf('|||') > -1){
        var fullStringVal = jQuery(stepCurrNodeClass).text();
        var searchStringArr = fullStringVal.split('|||');
        if(searchStringArr.length > 1){
            var searchString = searchStringArr[1];
        }
        jQuery('.resultMessage').html('<p><h3>Automatically searching for: ' + searchString + '</h3></p>');
        updateSearchResults(searchString);

    } else {
        var newNode = jQuery(stepCurrNodeClass);
        if (newNode.size() > 0) {
            newNode.removeClass('hideMe');
        } else {
            jQuery(currNode).parents('.disclosureContent').find('.resultMessage').hide();
        }
    }

}

function wizardShowNextStep(currNode, nextStepVal){
    jQuery(currNode).parent().next().removeClass('hideMe');
    var stepValName = '#step' + nextStepVal;
    var nextStep = jQuery(currNode).parent().next().find(stepValName);
    if (nextStep.size() > 0) {
        nextStep.removeClass('hideMe');
    } else {
        jQuery(currNode).parents('.disclosureContent').find('.resultMessage').hide();
    }
    jQuery(currNode).parent().addClass('hideMe');
}


function renderQuestionStack() {
    jQuery('#questionStack').html('');
    for (var i = 0; i < completedSteps.length; i++) {
        var html = '<p class="wizStepComplete">'
                 + '<a href="javascript:;"'
                 + ' onclick="popQuestionStack(' + i + ', \'' + completedSteps[i][0] + '\');"'
                 + ' class="wizStepEdit">Edit</a>'
                 + '<img src="/tools/search/_images/icons/ico_check.gif" />';
        if (jQuery('#step' + completedSteps[i][0] + ' select').size() > 0) {
            html += 'You answered "'
                  + jQuery('#step' + completedSteps[i][0] + ' option:selected').text()
                  + '" to the question: "'
                  + jQuery('#step' + completedSteps[i][0] + ' div').contents().get(0).nodeValue + '"';
        } else if (jQuery('#step' + completedSteps[i][0] + ' input[type=\'radio\']').size() > 0) {
            var selectedID = jQuery('#step' + completedSteps[i][0] + ' input:checked').get(0).id;
            html += 'You answered "'
                  + jQuery('#step' + completedSteps[i][0] + ' label[for=\'' + selectedID + '\']').text()
                  + '" to the question: "'
                  + jQuery('#step' + completedSteps[i][0] + ' div').contents().get(0).nodeValue + '"';
        } else {
            var firstTextNode = jQuery('#step' + completedSteps[i][0] + ' div').contents().get(0);
            if (firstTextNode) {
                if (firstTextNode.nodeType == 3) {
                    html += firstTextNode.nodeValue;
                } else {
                    html += jQuery(firstTextNode).text();
                }
            } else {
                html += jQuery('#step' + completedSteps[i][0] + ' p:first').text();
            }
        }
        html += '</p>';
        jQuery('#questionStack').append(html);
    }
}

function popQuestionStack(position, stepId) {
    while (completedSteps.length > position) {
        var step = completedSteps.pop();
        jQuery('#step' + step[0] + ' input:checked').removeAttr('checked');
        jQuery('#step' + step[0] + ' option:selected').removeAttr('selected');
        jQuery('#step' + step[0] + ' input[type=\'text\']').val('');
    }
    renderQuestionStack();
    jQuery('.wizardStep').addClass('hideMe');
    jQuery('#step' + stepId).removeClass('hideMe');
}

function serializeCompletedSteps(){
    return JSON.stringify(completedSteps);
}

function getQuestionAsKey(){
    return encodeURI(jQuery('#txtSearchSupport').attr('value'));
}


// Search Ratings

jQuery(document).ready(function() {
    jQuery('.radRateArticle').click(function() {
        jQuery("fieldset.ratingUserComments").hide();
        jQuery(jQuery(this).prev()).attr('checked',true);
        submitFeedback();
    });
});

function submitFeedback(){
    var checkedRadioBtn = jQuery("input:checked[type='radio'][name='radRateArticle']");
    var ratingValue = checkedRadioBtn.attr('value');
    var commentVal = document.getElementById("textAreaUserComments").value;
    jQuery.post("acceptFeedback.jsp", { rating: ratingValue, comment: commentVal } );

    if (typeof Analytics.Search != 'undefined') {
        Analytics.Search.trackSearchLookFor(ratingValue);
    }

    jQuery('#rateSearch').html('<h5>Thank you for submitting feedback on your search.</h5>');

    return false;

//    document.getElementById("saved").value = "Pin"
//    setTimeout("document.doSubmit()", 50);
}
