/*
 * Copyright 2011 1fb.net Financial Services. This document may not be reproduced, distributed or used in any manner
 * whatsoever without the expressed written permission of 1st Financial Bank USA.
 */

/**
 * @fileOverview Define college search input box feature in home page.
 * 
 * @author Kevin Shen, Rokgy Luo
 * @version 1.2, 2011-09-13
 * @since 7.00
 */

var CollegeAjaxSearchBoxOfHome = CollegeAjaxSearchBox.extend({
	valideText : function(text) {
		var retval = true;
		if (text.trim() == ""
				|| text.trim().toLowerCase() == "enter college name") {
			$j("#college_search_error").text("You must enter a college name.");
			retval = false;
		}
		return retval;
	}
});

/**
 * Initializes the college search suggestion feature.
 */
initialCollegeSearchBox = function() {
    $$('.searchbox').each(function(ele) {
        var collegeAjaxSearchBoxOfHome = new CollegeAjaxSearchBoxOfHome(ele, {
            enterSubmit : true,
            selectSubmit : true
        });
        collegeAjaxSearchBoxOfHome.setFormElement($$('.searchsubmit')[0]);
        collegeAjaxSearchBoxOfHome.errorPrefix = "";
        collegeAjaxSearchBoxOfHome.emptyErrorMsg = "You must enter a college name.";
        collegeAjaxSearchBoxOfHome.start();
    });
};

/**
 * Handles prompt message in college search input box.
 */
handleCollegeSearchPrompt = function() {
    var collegeName = $j("#ipt_colname");
    if (collegeName.val().trim() == ''
        || collegeName.val().trim().toLowerCase() == "enter college name") {
        collegeName.val("Enter College Name");
    }

    collegeName.bind("focus", function() {
        if (collegeName.val().trim().toLowerCase() == "enter college name") {
            collegeName.val('');
        }
    });
};

/**
 * Handles form submit or display error message.
 * 
 * @param (Json) data 	e.g. {collegeCount: 1, errorMsg: "errorMessage"}
 */
handleForm = function(data) {
    if (data.collegeCount == 0) {
        $j("#college_search_error").text(data.errorMsg);
    } else {
        $j("#collegeSearchForm").submit();
    }
};

/**
 * Sends ajax call.
 * 
 * @param (String) collegeNameVal
 */
callAjax = function(collegeNameVal) {
    $j.ajax({
        type : "get",
        url : $j("#collegeSearchAjaxURL").val() + "?collegeName=" + escape(collegeNameVal),
        dataType : 'json',
        success : function(data) {
            handleForm(data);
        },
        error : function() {

        }
    });

};

/**
 * Handles image click event.
 */
handleImageClick = function() {
    $j("#goImg").click(function(event) {
        //If this method is called, the default action of the event will not be triggered.
        event.preventDefault();

        var collegeNameVal = $j("#ipt_colname").val().trim();
        if (collegeNameVal == ''
            || collegeNameVal.trim().toLowerCase() == "enter college name") {
            $j("#college_search_error").text("You must enter a college name.");
        } else {
            callAjax(collegeNameVal);
        }
    });
};

/**
 * Handles image hover event.
 */
handleImageHover = function() {
	$j("#goImg").hover(
			function() {
				$j("#goImg").attr("src", "/page/images_new/modules/search_go_hover.gif");
				return false;
			},
			function() {
				$j("#goImg").attr("src", "/page/images_new/modules/search_go.gif");
				return false;
			}
	);
};

/**
 * Initializes page.
 */
initialPage = function() {
    initialCollegeSearchBox();
    handleCollegeSearchPrompt();
    handleImageHover();
    handleImageClick();
};

window.addEvent('domready', initialPage);

