function enlargeImageFromURL(){
    if(application.hasEnlargedImageFromURL){
        return; //exit we only show ourselves once
    }
    var loc = new String(top.location);
    var enlarged = loc.getQueryValue("enlarged");
    if(enlarged && enlarged.containImageCode()){
        application.hasEnlargedImageFromURL = true;
        fetchFeatureImageByImageCode(enlarged);
    }
}

//EM-1499
function showModalFromURL(){
    if(application.hasSeenModalFromURL){
        return; //exit we only show ourselves once
    }
    var loc = new String(top.location);
    var content = loc.getQueryValue("basicmodal");
    var alwaysShow = false;
    if(content){
        var ignPref = loc.getQueryValue("ignorepref");
        if(ignPref && parseInt(ignPref) == 1){
            alwaysShow = true;
        }
        application.hasSeenModalFromURL = true;  //save the fact we displayed ourself we should only be called once
        showModalInfomercial(content,alwaysShow);
    }
}

function clearSnaps(lockObj){
    lockObj.unset("WAS_SNAP_RIGHT");
    lockObj.unset("WAS_SNAP_LEFT");
}

function stopSlider(loopStore){
    loopStore.reset();
}

function startSlider(loopStore){
    loopStore.reset();
    var new_id = loopStore.getNew();
    runSlider(loopStore,new_id);
}

function stopAll(rightLoop,leftLoop,eLock){
    if ($("direction").value == "-1"){
			//snapToGrid("right");
            //DISPATCHER.fire("SNAP_TO_GRID_RIGHT");
    } else {
			//snapToGrid("left");
            //DISPATCHER.fire("SNAP_TO_GRID_LEFT");
    }
	debug("[SCROLL] All stop.");
    leftLoop.reset();
    rightLoop.reset();
    stopThrottle();
    return false;
}

function pageRightScroll(loopStore,eLock){
    stopAutoBrowseTimeout();
    if(eLock.get("UI_IS_BUSY")){
        debug("pageRightScroll ignored UI is busy");
        return;
    }

    var new_id = loopStore.getNew();
    pageRight(loopStore,new_id,false);
}

function pageLeftScroll(loopStore,eLock){
    stopAutoBrowseTimeout();
    if(eLock.get("UI_IS_BUSY")){
        debug("pageLeftScroll ignored UI is busy");
        return;
    }
    var new_id = loopStore.getNew();
    pageLeft(loopStore,new_id,false);
}

function pageRightManual(loopStore,eLock){
        eLock.onCompletePush("MANUAL_RIGHT_FINISH");
        DISPATCHER.fire("STOPALL");
		/*if (moveResultsOverA.manualBrowse){ TODO find out what this is
            return;
        } */
        //DISPATCHER.fire("SNAP_TO_GRID_RESET");
        $("stop").className = "tooltippable";
		$("manual_page_right").className = "selected tooltippable";

		$("pageRightToggle").value = "true";
        var new_id = loopStore.getNew();
        pageRight(loopStore,new_id,true);
        //DISPATCHER.fire("STOPALL");
        //debug("PAGE_RIGHT_END");
        return false;
}

function pageRightManualFinish(eLock){
    $("stop").className = "selected tooltippable";
    $("pageRightToggle").value = "false";
    $("manual_page_right").className = "tooltippable";
}

function pageLeftManual(loopStore,eLock){

    eLock.onCompletePush("MANUAL_LEFT_FINISH");
    DISPATCHER.fire("STOPALL");
    //DISPATCHER.fire("SNAP_TO_GRID_RESET");
	/*if (moveResultsOverA.manualBrowse){
			return;
    }*/
    //DISPATCHER.fire("SNAP_TO_GRID_RESET");
	$("stop").className = "";
	$("manual_page_left").className = "selected tooltippable";
	$("pageLeftToggle").value = "true";
    var new_id = loopStore.getNew();
    pageLeft(loopStore,new_id,true);
    //DISPATCHER.fire("STOPALL");
    return false;
}

function pageLeftManualFinish(eLock){
    $("stop").className = "selected tooltippable";
    $("pageLeftToggle").value = "false";
    $("manual_page_left").className = "tooltippable";
}


function pageSSLeftManualFinish(eLock){
    $("ss_pageLeftToggle").value = "false";
    $("ss_page_left").className = "tooltippable";
}

function pageSSLeftManual(eLock){
    eLock.onCompletePush("MANUAL_SS_LEFT_FINISH");

    stopSimsThrottle();
    $("ss_page_left").className = "selected tooltippable";

    $("ss_pageLeftToggle").value = "true";

    ss_pageLeft(true);
    stopSimsThrottle();
    return false;
}


function pageSSRightManualFinish(eLock){
    $("ss_pageRightToggle").value = "false";
    $("ss_page_right").className = "tooltippable";
}

function NewSearch(eBuffer){
    var searchParams = eBuffer.getParam();
    createNewSearch(searchParams);
}

function pageSSRightManual(eLock){
    eLock.onCompletePush("MANUAL_SS_RIGHT_FINISH");

    stopSimsThrottle()
	$("ss_page_right").className = "selected tooltippable";

    $("ss_pageRightToggle").value = "true";

	ss_pageRight(true);
	stopSimsThrottle();
	return false;
}

var SLIDER_LOOP = new mfLoopStorage();
var PAGE_RIGHT_LOOP = new mfLoopStorage();
var PAGE_LEFT_LOOP = new mfLoopStorage();
LOGGER = new Logger();

DISPATCHER.subscribe("SNAP_TO_GRID_RIGHT",curry(snapToGrid,null,ELOCKS,"right"));
DISPATCHER.subscribe("SNAP_TO_GRID_LEFT",curry(snapToGrid,null,ELOCKS,"left"));
DISPATCHER.subscribe("SNAP_TO_GRID_RESET",curry(clearSnaps,null,ELOCKS));
DISPATCHER.subscribe("STOP_SLIDER",curry(stopSlider,null,SLIDER_LOOP));
DISPATCHER.subscribe("START_SLIDER",curry(startSlider,null,SLIDER_LOOP));
DISPATCHER.subscribe("STOPALL",curry(stopAll,null,PAGE_RIGHT_LOOP,PAGE_LEFT_LOOP,ELOCKS));
DISPATCHER.subscribe("PAGE_RIGHT",curry(pageRightScroll,null,PAGE_RIGHT_LOOP,ELOCKS));
DISPATCHER.subscribe("PAGE_LEFT",curry(pageLeftScroll,null,PAGE_LEFT_LOOP,ELOCKS));
DISPATCHER.subscribe("MANUAL_RIGHT",curry(pageRightManual,null,PAGE_RIGHT_LOOP,ELOCKS));
DISPATCHER.subscribe("MANUAL_RIGHT_FINISH",curry(pageRightManualFinish,null,ELOCKS));
DISPATCHER.subscribe("MANUAL_LEFT",curry(pageLeftManual,null,PAGE_LEFT_LOOP,ELOCKS));
DISPATCHER.subscribe("MANUAL_LEFT_FINISH",curry(pageLeftManualFinish,null,ELOCKS));
DISPATCHER.subscribe("MANUAL_SS_LEFT",curry(pageSSLeftManual,null,ELOCKS));
DISPATCHER.subscribe("MANUAL_SS_LEFT_FINISH",curry(pageSSLeftManualFinish,null,ELOCKS));
DISPATCHER.subscribe("MANUAL_SS_RIGHT",curry(pageSSRightManual,null,ELOCKS));
DISPATCHER.subscribe("MANUAL_SS_RIGHT_FINISH",curry(pageSSRightManualFinish,null,ELOCKS));
DISPATCHER.subscribe("NEW_SEARCH",curry(NewSearch,null,EBUFFER));
//EM-1499 display a modal window based on parameters
DISPATCHER.subscribe("IMAGE_ENLARGED",showModalFromURL);
//EM-1485 do a modal simsearch features display upon image enlargement  but only if there is no the re-think game cookie
DISPATCHER.subscribe("IMAGE_ENLARGED",function(){if (areWeInRegularSearch() && getCookie("play_speed_challenge") == null){showModalInfomercial("SIMSEARCH_FEATURE")}});
//EM-1499
DISPATCHER.subscribe("SEARCH_RESULTS_PROCESSED",enlargeImageFromURL);

