/* This function is called onload of all EM pages.
 */
// Function: PrepareSmarties  | florin's Friday; February 20, 2009
if (PrepareSmarties == null) var PrepareSmarties = {};
PrepareSmarties._path = '';
PrepareSmarties.execute = function(p0, callback) {
    dwr.engine._execute(PrepareSmarties._path, 'PrepareSmarties', 'execute', p0, callback);
};
DISPATCHER.subscribe("GET_USER_SEARCH_HISTORY",getUserSearchHistory);
function getUserSearchHistory( params ) {
    
    GetUserSearchHistory.execute(params, function(response) {
        var searchParams = [];
        dwr.util.removeAllOptions( params.div_list );
        dwr.util.setValue( params.div_header, response.userSearchHistoryMap.title);
        
        lastQueriesRef = response.userSearchHistoryMap.lastQueriesRef;
        lastQueriesAttributesMap = response.userSearchHistoryMap.lastnQueries; 

        for (i=0; lastQueriesRef && i < lastQueriesRef.length; i++) {
            queryString = lastQueriesRef[ i];    
            queryStringAttributes = lastQueriesAttributesMap[queryString];   
            position = queryStringAttributes[0];
            licenseType = queryStringAttributes[1];
            sortOrderName = queryStringAttributes[2];

            if (areWeInRegularSearch()) {
                qParams = "javascript:createNewSearchFromStruct('"+Url.encode(queryString)+"','"+position+"','"+licenseType+"','"+sortOrderName+"');";
                searchParams.push( "<a href=\"#\" onclick=\""+qParams+"\">"+dwr.util.escapeHtml( queryString)+"</a>");
            } else { // no ajax from LB
                searchParams.push( "<a href=\"/em/search/index.html?query="+Url.encode(queryString)+"&amp;searchType=images&amp;"+ position +"\">"+dwr.util.escapeHtml( queryString)+"</a>");
            }

        }

        dwr.util.addOptions( params.div_list, searchParams, { escapeHtml:false });
        if ( params.oncomplete ) {
            eval(params.oncomplete);
        }
    } );

}

miniEscapeHtml = function(original) {
  return original.replace(/\'/g,"\\'").replace(/\"/g,'\\"');
};

function createNewSearchFromStruct( query, position, licenseType, sortOrderName) {
	var searchParams = {};
    searchParams.query =  Url.decode(query);
    searchParams.position = position;
    searchParams.licType = licenseType;
    searchParams.sort = sortOrderName;
	createNewSearch(searchParams);
	return false;
}              

function initGeneral() {
    //init the userprefs
    if (areWeInRegularSearch()) {
        DISPATCHER.fire('GET_USER_PREFS');
    }

    if (window.DWREngine) {
		DWREngine.setErrorHandler(handleErrorsFromDWR);
    }

    // for the onfocus of the search text box - CRJB
	if ( $("querybox") ) {
            $("querybox").onfocus = function() {
                var params = {};
                params['div_header'] = "last_searches_header";
                params['div_list'] = "last_searches_list";

                if ( USER_PREF_MAP.get("show_search_panel") == 1 ) {
                   
                    params['oncomplete'] = "panel_slide_out ('search_params',450);";
                }
                DISPATCHER.fire("GET_USER_SEARCH_HISTORY", params);

                return false;
            }
    }

	if ($("search_form")) {
		/* Ajax search:  performing a new search without reloading the page.
		 */
		if (areWeInRegularSearch()) {
			$("search_form").onsubmit = function() {
                dwr.util.setValue("smarties", "");
				createNewSearch();
                $("querybox").blur();
                return false;
            }
		}
	}

	if (window.initImageFormatCheckboxes) {
		initImageFormatCheckboxes();
	}

	var tooltipTargets = getElementsByClassName("tooltippable");
	var ntt = tooltipTargets.length;
	
	for (i=0; i < ntt; i++) {
		tooltipTargets[i].onmouseover = globalTooltipShow;
		tooltipTargets[i].onmouseout = globalTooltipHide;		
	}

	// these are the static/always on tooltips, the preference toggle does *not* turn these off as per EM-462
	var staticTooltipTargets = getElementsByClassName("statictips");
	var stt = staticTooltipTargets.length;
	
	for (i=0; i < stt; i++) {
		staticTooltipTargets[i].onmouseover = staticTooltipShow;
		staticTooltipTargets[i].onmouseout = staticTooltipHide;		
	}

    //init history
    if( areWeInRegularSearch() && gUserHistorySelectValues.INITIALIZED == false ){  //when initializing and when in search
        FindHistoryDates.execute({actionName:"featureImageView"},function(response){
            createHistoryUI();
            //alert(JSON.stringify(response));
            var dates = eval(response.userHistoryDates);
            for (var i = 0; i < dates.length;i++){
                gUserHistorySelectValues.push(dates[i]);
            }
            gUserHistorySelectValues.INITIALIZED = true;
            fillUserHistorySelect();
            if(dates[0]){
                displayHistory(dates[0],true); //set init to true
            }
        });
    }

    var mfContext = getCookie("mfContext");
    if ( mfContext && typeof( application ) != 'undefined' && mfContext.getQueryValue("locale") ){
        application.locale = mfContext.getQueryValue("locale");
    }

    var emFirstTime = getCookie("em_first_time");
    if ( emFirstTime && ! ( BrowserDetect.browser=="Firefox" || BrowserDetect.browser=="Safari" || BrowserDetect.browser=="Chrome" || (BrowserDetect.browser=="Explorer"&&BrowserDetect.version>="7")) ){
        $("warning_panel").style.display = "block";
        delCookie ("em_first_time");
    }

    if (  $("search_results_a") ) {
        $("search_results_a").style.width = (application.squareSize*100) + "px";
    }
    if ( $("search_results_b") ) {
        $("search_results_b").style.left  = (application.squareSize*100) + "px";
        $("search_results_b").style.width = (application.squareSize*100) + "px";
    }

    // todo: catch DWR error 
    //dwr.engine.setErrorHandler( dwrErrorHandle );
    //

}

function dwrErrorHandle(message, exception) {


    var params = {};
    params["messageId"] =  "ERROR_PAGE";

    KeyBasedPassthrough.execute(params, {
			callback:function (response) {
                if (! response.error) {
                    jQuery("#basic-modal-content").html(response.data);
                    
                    jQuery("#basic-modal-content").modal(
                        { onOpen: function (dialog) {
                            jQuery(".modalCloseImg").hide();
                            dialog.data.show();
                            dialog.container.show();
                            dialog.overlay.show();
                          },
                          escClose: false,
                          maxHeight: 200,
                          maxWidth: 500

                        });
                }
            },
			errorHandler:function(errorString, exception) {
			   // alert (errorString + " "  + exception)
		    }
		});
}

