var SearchResultPage = new Class({
	Implements: [Options, Events],
    options: { },
    initialize: function(options) {
        this.setOptions(options);
        
        // setup uiComponents
        this.uiComponent.filter_public=$('filter_public');
        this.uiComponent.filter_private=$('filter_private');
        this.uiComponent.filter_charter=$('filter_charter');
        this.uiComponent.allSchools=$('allSchools');
        this.uiComponent.SF_SearchCriteria=$('SF_SearchCriteria');
        this.uiComponent.elementary=$('elementary');
        this.uiComponent.middleschool=$('middleschool');
        this.uiComponent.highschool=$('highschool');
        this.uiComponent.schoolProfileTableRows=$('schoolProfileTableRows');
        this.uiComponent.schoolProfilePagination=$('schoolProfilePagination');
        this.uiComponent.str_filter_under15=$('str_filter_under15');
        this.uiComponent.str_filter_under20=$('str_filter_under20');
        this.uiComponent.str_filter_under25=$('str_filter_under25');
        this.uiComponent.str_filter_under30=$('str_filter_under30');
        this.uiComponent.str_filter_underAny=$('str_filter_underAny');
        
        this.uiComponent.ss_filter_under200=$('ss_filter_under200');
        this.uiComponent.ss_filter_under500=$('ss_filter_under500');
        this.uiComponent.ss_filter_under1000=$('ss_filter_under1000');
        this.uiComponent.ss_filter_underAny=$('ss_filter_underAny');
        
        this.uiComponent.ayp_filter=$('ayp_filter');
        this.uiComponent.ayp_filter_none=$('ayp_filter_none');
        
        this.uiComponent.compareschools=$('compareschools');
        this.uiComponent.compareOrSave=$('compareOrSave');
        this.uiComponent.compareInput = $$('.compare-input');
        this.uiComponent.chkSelectAll=$('chkSelectAll');
        this.uiComponent.saveschoollist=$('saveschoollist');
        this.uiComponent.compareButton=$('compareButton');    
        this.uiComponent.saveList=$('saveList');
        this.uiComponent.schoolSaveMsg=$('schoolSaveMsg'); 
        this.uiComponent.alsoTry=$('alsoTry'); 
        this.uiComponent.moreCitiesLink = $('moreCitiesLink');
        this.uiComponent.moreDistrictsLink = $('moreDistrictsLink');
        this.uiComponent.morecities_container=$('morecities-container');
        this.uiComponent.moreschooldistricts_container=$('moreschooldistricts-container');
		
		this.uiComponent.lessCitiesLink = $('lessCitiesLink');
        this.uiComponent.lessDistrictsLink = $('lessDistrictsLink');
		this.uiComponent.lessCitiesLinkContainer=$('lessCitiesLinkContainer');
        this.uiComponent.lessDistrictsLinkContainer=$('lessDistrictsLinkContainer');

		//message box
        this.uiComponent.messageBox = $('messageBox');
		
		//search-heading
        this.uiComponent.searchHeading=$('search-heading');
        
        //refine left column
        this.uiComponent.refineSchoolSize = $('refineSchoolSize');
        this.uiComponent.refineStudentTeacherRatio = $('refineStudentTeacherRatio');
        this.uiComponent.refineSchoolType = $('refineSchoolType');
        this.uiComponent.refineSchoolAYP = $('refineSchoolAYP');
        
        this.uiComponent.school_type_anchor = $('school_type_anchor');
        this.uiComponent.student_teacher_ratio_anchor = $('student_teacher_ratio_anchor');
        this.uiComponent.school_size_anchor = $('school_size_anchor');
        this.uiComponent.school_ayp_anchor = $('school_ayp_anchor');
        
        this.uiComponent.paginationDescription=$('paginationDescription');
		this.uiComponent.paginationDescriptionBottom=$('paginationDescriptionBottom');
						
        this.map = new GoogleMap();
        
        // attach ui component events to functions
        this.setupEventHandlers();

        this.xhr = new Request( {
            method: 'post',
            url: '/schoolfinder/searchresult/?__ajax=SchoolFinderSearchResult',
            onSuccess: function(obj) { this.handleSearchResults(obj); }.bind(this),
            onRequest: function() { }.bind(this),
            onStateChange: function(obj) { ; }.bind(this),
            onFailure: function(obj) { this.handleSearchFailure(obj); }.bind(this)
        });
        
        this.xhrSaveSchoolList = new Request({
            method: 'post',
            url: '/',
            onSuccess: function(response) {this.resetAllButtonsAndCheckboxes(response); }.bind(this),
            onRequest: function() { },
            onStateChange: function(obj) { ; }.bind(this),
            onFailure: function(obj) { this.resetAllButtonsAndCheckboxes(false);}.bind(this)
        });
		        
        this.xhrCompareSchools = new Request({
            method: 'post',
            url: '/',
            onSuccess: function(response) {this.setCompareSchoolResponse(response); }.bind(this),
            onRequest: function() { },
            onStateChange: function(obj) { ; }.bind(this),
            onFailure: function(obj) { this.resetAllButtonsAndCheckboxes(false);}.bind(this)
        });
    },
    xhr: null,
    xhrSaveSchoolList: null,
    xhrCompareSchools: null,
    map: null,
    compareSchools: null,
    totalSchools: 0,
    navigationTab: null,
    uiComponent: {
            filter_public: null,
            filter_private: null,
            search_results: null,
            map: null,
            filter_charter: null,
            allSchools: null,
            elementary: null,
            middleschool: null,
            highschool: null,
            compareschools: null,
            schoolIdArray : null,
            compareOrSave: null,
            chkSelectAll: null,
            schoolSaveMsg: null,
            alsoTry: null,
            moreCitiesLink: null,
            moreDistrictsLink: null,
            lessCitiesLink: null,
            lessDistrictsLink: null,
            searchHeading: null,
            refineSchoolSize: null,
            refineStudentTeacherRatio: null,
            refineSchoolType: null,
            refineSchoolAYP: null,
            school_type_anchor: null,
        	student_teacher_ratio_anchor: null,
        	school_size_anchor: null,
        	school_ayp_anchor: null,
			messageBox: null,
			paginationDescriptionBottom: null
    },
    searchCriteria: {
        "searchTerms":null,
        "schoolid":null,
        "street":null,
        "city":null,
        "districtname":null,
        "state":null,
        "zip":null,
        "stateid":null,
        "districtid":null,
        "schoollevel":null,
        "schoolname":null,
        "radius":null,
        "searchType":"simple",
        "GradeLevelFilter":{
                "elementary":false,
                "highschool":false,
                "middleschool":false
        },
        "SchoolTypeFilter":{
                "public":false,
                "charter":false,
                "private":false
        },
        "StudentTeacherRatioFilter":{
                "under15":null,
                "under20":null,
                "under25":null,
                "under30":null
        },
        "SchoolSizeFilter":{
                "under200":null,
                "under500":null,
                "under1000":null
        },
        "AYPFilter":false,
        "limit":0,
        "offset":null,
        "getcount":false,
        "page":null,
        "orderBy":null,
        "orderDir":null,
        "maintainOrder":null
    },
    googleMapAd: {
    	"publisherId":null,
    	"maxAdsOnMap":null,
    	"style":null,
    	"channel":null
    },
    currentNavigation:null,
    setPage: function(page){
        this.searchCriteria.page = page;
        this.executeSearch(this.searchCriteria);
    },
    saveMySchoolList: function(){
        var arrSchoolIds = this.getCheckedSchoolIds();
        if(arrSchoolIds.length>0){
            var strSchoolIds = arrSchoolIds.join(",");
            var tempSearchCriteria = JSON.decode(this.searchCriteria)
            var temp ='{"ver":"0.1","meta":{},"data":{"requests":{"0":{"id":0,"type":"getForm","data":{"url":"","schoolList":"'+strSchoolIds+'","searchCriteria":"'+tempSearchCriteria+'","currentNavigation":"'+this.currentNavigation+'"}}}}}';
            this.xhrSaveSchoolList.options.url = '/schoolfinder/mysavedlist/?__popup=SchoolFinderSaveList&data='+temp; //change the url
            this.xhrSaveSchoolList.send(); //send
        }else{
             this.showMessage('Please select a school before adding to your School List.');
        }
    },
    executeSearch: function (searchCriteria){
        if(this.xhr.xhr.readyState==0 || this.xhr.xhr.readyState==4){
        	this.setLoadingEffects();
        	this.disableControls(true);
            this.xhr.send(JSON.encode(searchCriteria));
        }
    },
    disableControls: function(hide)
    {
    	this.uiComponent.filter_public.disabled = hide;
		this.uiComponent.filter_private.disabled = hide;
		this.uiComponent.filter_charter.disabled = hide;
		this.uiComponent.str_filter_under15.disabled = hide;
		this.uiComponent.str_filter_under20.disabled = hide;
		this.uiComponent.str_filter_under25.disabled = hide;
		this.uiComponent.str_filter_under30.disabled = hide;
		this.uiComponent.str_filter_underAny.disabled = hide;
		this.uiComponent.ss_filter_under200.disabled = hide;
		this.uiComponent.ss_filter_under500.disabled = hide;
		this.uiComponent.ss_filter_under1000.disabled = hide;
		this.uiComponent.ss_filter_underAny.disabled = hide;
		this.uiComponent.ayp_filter.disabled = hide;
		this.uiComponent.ayp_filter_none.disabled = hide;
    },
	checkSchoolsComparable: function(schoolIds){
    	var strSchoolIds = schoolIds.join(",");
    	if(this.xhrCompareSchools.xhr.readyState==0 || this.xhrCompareSchools.xhr.readyState==4){
    		this.xhrCompareSchools.options.url = '/schoolfinder/Compareschools/?__ajax=Compareschools&action=compare&strSchoolIds='+strSchoolIds;
            this.xhrCompareSchools.send();
        }
    },
    setupEventHandlers: function(){
        if(this.uiComponent.filter_public != null){
        	this.uiComponent.filter_public.addEvent('click',function() {
                this.searchCriteria.SchoolTypeFilter.public = this.uiComponent.filter_public.checked;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
           }.bind(this));
        }
    	
        if(this.uiComponent.filter_private != null){
        	this.uiComponent.filter_private.addEvent('click',function() {  
                this.searchCriteria.SchoolTypeFilter.private = this.uiComponent.filter_private.checked;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.filter_charter != null){
        	this.uiComponent.filter_charter.addEvent('click',function() {
                this.searchCriteria.SchoolTypeFilter.charter = this.uiComponent.filter_charter.checked;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        //AYP Filter
        if(this.uiComponent.ayp_filter != null){
	    	this.uiComponent.ayp_filter.addEvent('click',function(){
	            this.searchCriteria.AYPFilter = this.uiComponent.ayp_filter.value;
	            this.resetSearchCriteria();
	            this.executeSearch(this.searchCriteria);
	        }.bind(this));
        }
        
        if(this.uiComponent.ayp_filter_none != null){
        	this.uiComponent.ayp_filter_none.addEvent('click',function(){
                this.searchCriteria.AYPFilter = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        //School Size
        if(this.uiComponent.ss_filter_under200 !=null){
        	this.uiComponent.ss_filter_under200.addEvent('click',function(){
                this.searchCriteria.SchoolSizeFilter.under200 = this.uiComponent.ss_filter_under200.checked;
                this.searchCriteria.SchoolSizeFilter.under500=false;
                this.searchCriteria.SchoolSizeFilter.under1000=false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.ss_filter_under500 != null){
        	this.uiComponent.ss_filter_under500.addEvent('click',function(){
                this.searchCriteria.SchoolSizeFilter.under500 = this.uiComponent.ss_filter_under500.checked;
                this.searchCriteria.SchoolSizeFilter.under200=false;
                this.searchCriteria.SchoolSizeFilter.under1000=false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.ss_filter_under1000 != null){
        	this.uiComponent.ss_filter_under1000.addEvent('click',function(){
                this.searchCriteria.SchoolSizeFilter.under1000 = this.uiComponent.ss_filter_under1000.checked;
                this.searchCriteria.SchoolSizeFilter.under200=false;
                this.searchCriteria.SchoolSizeFilter.under500=false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.ss_filter_underAny != null){
        	this.uiComponent.ss_filter_underAny.addEvent('click',function(){
                this.searchCriteria.SchoolSizeFilter.under200=false;
                this.searchCriteria.SchoolSizeFilter.under500=false;
                this.searchCriteria.SchoolSizeFilter.under1000=false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        //Student Teacher Ratio
        if(this.uiComponent.str_filter_under15 != null){
        	this.uiComponent.str_filter_under15.addEvent('click',function(){
                this.searchCriteria.StudentTeacherRatioFilter.under15 = this.uiComponent.str_filter_under15.checked;
                this.searchCriteria.StudentTeacherRatioFilter.under20 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under25 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under30 = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.str_filter_under20 != null){
        	this.uiComponent.str_filter_under20.addEvent('click',function(){
                this.searchCriteria.StudentTeacherRatioFilter.under20 = this.uiComponent.str_filter_under20.checked;
                this.searchCriteria.StudentTeacherRatioFilter.under15 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under25 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under30 = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.str_filter_under25 != null){
        	this.uiComponent.str_filter_under25.addEvent('click',function(){
                this.searchCriteria.StudentTeacherRatioFilter.under25 = this.uiComponent.str_filter_under25.checked;
                this.searchCriteria.StudentTeacherRatioFilter.under15 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under20 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under30 = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.str_filter_under25 != null){
        	this.uiComponent.str_filter_under25.addEvent('click',function(){
                this.searchCriteria.StudentTeacherRatioFilter.under25 = this.uiComponent.str_filter_under25.checked;
                this.searchCriteria.StudentTeacherRatioFilter.under15 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under20 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under30 = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.str_filter_under30 != null){
        	this.uiComponent.str_filter_under30.addEvent('click',function(){
                this.searchCriteria.StudentTeacherRatioFilter.under30 = this.uiComponent.str_filter_under30.checked;
                this.searchCriteria.StudentTeacherRatioFilter.under15 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under20 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under25 = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.str_filter_underAny != null){
        	this.uiComponent.str_filter_underAny.addEvent('click',function(){
                this.searchCriteria.StudentTeacherRatioFilter.under15 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under20 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under25 = false;
                this.searchCriteria.StudentTeacherRatioFilter.under30 = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        
        // grade level filter
        if(this.uiComponent.allSchools != null){
        	this.uiComponent.allSchools.addEvent('click',function(e) {
        		e.stop();
                this.uiComponent.allSchools.className='active';
                this.uiComponent.highschool.className='';
                this.uiComponent.middleschool.className='';
                this.uiComponent.elementary.className='';
                                
                this.searchCriteria.GradeLevelFilter.elementary = false;
                this.searchCriteria.GradeLevelFilter.middleschool = false;
                this.searchCriteria.GradeLevelFilter.highschool = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.elementary != null){
        	this.uiComponent.elementary.addEvent('click',function(e) {
        		e.stop();
                this.uiComponent.allSchools.className='';
                this.uiComponent.highschool.className='';
                this.uiComponent.middleschool.className='';
                this.uiComponent.elementary.className='active';
                                
                this.searchCriteria.GradeLevelFilter.elementary = true;
                this.searchCriteria.GradeLevelFilter.middleschool = false;
                this.searchCriteria.GradeLevelFilter.highschool = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.middleschool != null){
        	this.uiComponent.middleschool.addEvent('click',function(e) {
        		e.stop();
                this.uiComponent.allSchools.className='';
                this.uiComponent.highschool.className='';
                this.uiComponent.middleschool.className='active';
                this.uiComponent.elementary.className='';
                                
                this.searchCriteria.GradeLevelFilter.elementary = false;
                this.searchCriteria.GradeLevelFilter.middleschool = true;
                this.searchCriteria.GradeLevelFilter.highschool = false;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.highschool != null){
        	this.uiComponent.highschool.addEvent('click',function(e) {
        		e.stop();
                this.uiComponent.allSchools.className='';
                this.uiComponent.highschool.className='active';
                this.uiComponent.middleschool.className='';
                this.uiComponent.elementary.className='';
                                
                this.searchCriteria.GradeLevelFilter.elementary = false;
                this.searchCriteria.GradeLevelFilter.middleschool = false;
                this.searchCriteria.GradeLevelFilter.highschool = true;
                this.resetSearchCriteria();
                this.executeSearch(this.searchCriteria);
            }.bind(this));
        }
        
        if(this.uiComponent.compareschools != null){
        	this.uiComponent.compareschools.addEvent('click',function() {
                this.submitCompareSchools()
            }.bind(this));
        }
        
        if(this.uiComponent.saveschoollist != null){
        	this.uiComponent.saveschoollist.addEvent('click',function() {
                this.saveMySchoolList();
            }.bind(this));
        }
        
        if(this.uiComponent.moreCitiesLink != null) {
            this.uiComponent.moreCitiesLink.addEvent('click',function(){
                this.uiComponent.moreCitiesLink.className='hideContent';
                this.uiComponent.morecities_container.className='doNothing';
				this.uiComponent.lessCitiesLinkContainer.className='doNothing';
            }.bind(this));
        }
        if(this.uiComponent.moreDistrictsLink != null) {
            this.uiComponent.moreDistrictsLink.addEvent('click',function(){
                this.uiComponent.moreDistrictsLink.className='hideContent';
                this.uiComponent.moreschooldistricts_container.className='doNothing';
				this.uiComponent.lessDistrictsLinkContainer.className='doNothing';
			}.bind(this));
        }
		if(this.uiComponent.lessCitiesLink != null) {
            this.uiComponent.lessCitiesLink.addEvent('click',function(){
                this.uiComponent.moreCitiesLink.className='doNothing';
                this.uiComponent.morecities_container.className='hideContent';
                this.uiComponent.lessCitiesLinkContainer.className='hideContent';
            }.bind(this));
        }
        if(this.uiComponent.lessDistrictsLink != null) {
            this.uiComponent.lessDistrictsLink.addEvent('click',function(){
                this.uiComponent.moreDistrictsLink.className='doNothing';
                this.uiComponent.moreschooldistricts_container.className='hideContent';
                this.uiComponent.lessDistrictsLinkContainer.className='hideContent';
            }.bind(this));
        }
                
		if(this.uiComponent.school_ayp_anchor != null){
			this.uiComponent.school_ayp_anchor.addEvent("click",function(){
	        	if(this.uiComponent.refineSchoolAYP.className == 'hideContent'){
	        		this.uiComponent.refineSchoolAYP.className = 'showContent';
	        		this.uiComponent.school_ayp_anchor.className='roll';
	        	}else{
	        		this.uiComponent.refineSchoolAYP.className = 'hideContent';
	        		this.uiComponent.school_ayp_anchor.className='rollup';
	        	}
	        }.bind(this));
		}
        
        if(this.uiComponent.school_size_anchor != null){
        	this.uiComponent.school_size_anchor.addEvent("click",function(){
            	if(this.uiComponent.refineSchoolSize.className == 'hideContent'){
            		this.uiComponent.refineSchoolSize.className = 'showContent';
            		this.uiComponent.school_size_anchor.className='roll';
            	}else{
            		this.uiComponent.refineSchoolSize.className = 'hideContent';
            		this.uiComponent.school_size_anchor.className='rollup';
            	}
            }.bind(this));
        }
        
        if(this.uiComponent.student_teacher_ratio_anchor != null){
        	this.uiComponent.student_teacher_ratio_anchor.addEvent("click",function(){
            	if(this.uiComponent.refineStudentTeacherRatio.className == 'hideContent'){
            		this.uiComponent.refineStudentTeacherRatio.className = 'showContent';
            		this.uiComponent.student_teacher_ratio_anchor.className='roll';
            	}else{
            		this.uiComponent.refineStudentTeacherRatio.className = 'hideContent';
            		this.uiComponent.student_teacher_ratio_anchor.className='rollup';
            	}
            }.bind(this));
        }
        
        if(this.uiComponent.school_type_anchor != null){
        	this.uiComponent.school_type_anchor.addEvent("click",function(){
            	if(this.uiComponent.refineSchoolType.className == 'hideContent'){
            		this.uiComponent.refineSchoolType.className = 'showContent';
            		this.uiComponent.school_type_anchor.className='roll';
            	}else{
            		this.uiComponent.refineSchoolType.className = 'hideContent';
            		this.uiComponent.school_type_anchor.className='rollup';
            	}
            }.bind(this));
        }
        
     },
    
    handleSearchResults: function(response){
        this.disableControls(false);
        try{
            var obj = JSON.decode(response);
            if (obj.faultCode) {
                this.handleSearchFailure(obj);
                return;
            }
        }catch(e){
            this.handleSearchFailure(response);
            return;
        }
        this.totalSchools = obj.total;
        this.searchCriteria=obj.searchCriteria;
        this.updateSearchResultAlsoTry(obj.SearchResultAlsoTry);
        this.updateSchoolProfileTable(obj.SchoolProfileModel,obj.sponsoredSchoolProfiles);
        
        this.updateSchoolProfilePaginationTable(obj.SchoolProfilePagination);
        
        this.uiComponent.searchHeading.innerHTML=obj.searchResultHeading;
    },
    handleSearchFailure: function(obj){
        this.showMessage('An error occurred while processing your request. Please try again');
    },
    updatePaginationDescription: function(){
    	if(this.totalSchools > 0){
    		var x=(this.searchCriteria.page-1) * Number(this.searchCriteria.limit)+1;
    		var y=(((this.searchCriteria.page-1) * Number(this.searchCriteria.limit)) + Number(this.searchCriteria.limit));
    		if(y>this.totalSchools){
    			y=this.totalSchools;
    		}
    		if(this.uiComponent.paginationDescription != null){
    			this.uiComponent.paginationDescription.innerHTML='Showing '+x+' through ' +y+' of '+this.totalSchools+' schools';
    		}
    		if(this.uiComponent.paginationDescriptionBottom != null){
    			this.uiComponent.paginationDescriptionBottom.innerHTML = 'Showing '+x+' through ' +y+' of '+this.totalSchools+' schools';
    		}
    		
    	}else{
    		if(this.uiComponent.paginationDescription != null){
    			this.uiComponent.paginationDescription.innerHTML='';
    		}
    		if(this.uiComponent.paginationDescriptionBottom != null){
    			this.uiComponent.paginationDescriptionBottom.innerHTML = '';
    		}
    	}
    },
    updateMap: function(schoolProfileModels){
    
        this.map.clear();
        
        $each(schoolProfileModels,function(school) {
            var address = "<div class='googlemap-infowrap'><p class='googlemap-schoolname'><a href='"+school.schoolprofileurl+"'>"+school.schoolname+"</a></p><p class='googlemap-schooladdress1'>"+school.address+"</p><p class='googlemap-schooladdress2'>"+school.city+', '+school.state+' '+school.postalcode+"</p>";
            
            if(school.gradespan != null && school.gradespan != ""){
            	address+="<p class='googlemap-grade'>Grades: "+school.gradespan+"</p>";
            }
            address+="</div><br />";
            
            var element = $('row'+school.schoolid);
            var marker = this.map.addInfoMarker(parseFloat(school.latitude),parseFloat(school.longitude));
            this.map.addInfoMarkerHtmlWindow( marker, address, element, 'click',this.changeCssClass );
           	$each(this.map.markerEvents, function(event){
            	this.map.addInfoMarkerEvent( marker, element, event, this.changeCssClass );
            },this);
        },this);
        this.showGoogleAds();
        this.map.refreshMap();
    },
    showGoogleAds: function(){
		var adsManagerOptions = {
	        maxAdsOnMap : 2,
	        style : 'adunit',
	        channel : this.googleMapAd.channel
	    };
		adsManager = new GAdsManager(this.map.gMap, this.googleMapAd.publisherId, adsManagerOptions);
		adsManager.enable();
	},
    changeCssClass: function(element){
		if(element.className == 'checked'){
			element.className = '';
		}else{
			element.className = 'checked';
		}
	},
	
    updateSchoolProfilePaginationTable:function(html){
        this.uiComponent.schoolProfilePagination.innerHTML='';
        this.uiComponent.schoolProfilePagination.innerHTML=html;
    },
    
    updateSearchResultAlsoTry:function(html){
        this.uiComponent.alsoTry.innerHTML='';
        this.uiComponent.alsoTry.innerHTML=html;
        this.uiComponent.moreDistrictsLink = $('moreDistrictsLink');
        this.uiComponent.moreschooldistricts_container = $('moreschooldistricts-container');
        this.uiComponent.moreCitiesLink = $('moreCitiesLink');
        this.uiComponent.morecities_container=$('morecities-container');
        
        this.uiComponent.lessCitiesLink = $('lessCitiesLink');
        this.uiComponent.lessDistrictsLink = $('lessDistrictsLink');
		this.uiComponent.lessCitiesLinkContainer=$('lessCitiesLinkContainer');
        this.uiComponent.lessDistrictsLinkContainer=$('lessDistrictsLinkContainer');
        
        if(this.uiComponent.moreCitiesLink != null) {
            this.uiComponent.moreCitiesLink.addEvent('click',function(){
                this.uiComponent.moreCitiesLink.className='hideContent';
                this.uiComponent.morecities_container.className='doNothing';
				this.uiComponent.lessCitiesLinkContainer.className='doNothing';
            }.bind(this));
        }
        
        if(this.uiComponent.moreDistrictsLink != null) {
            this.uiComponent.moreDistrictsLink.addEvent('click',function(){
                this.uiComponent.moreDistrictsLink.className='hideContent';
                this.uiComponent.moreschooldistricts_container.className='doNothing';
                this.uiComponent.lessDistrictsLinkContainer.className='doNothing';
			}.bind(this));
        }
		
        if(this.uiComponent.lessCitiesLink != null) {
            this.uiComponent.lessCitiesLink.addEvent('click',function(){
                this.uiComponent.moreCitiesLink.className='doNothing';
                this.uiComponent.morecities_container.className='hideContent';
                this.uiComponent.lessCitiesLinkContainer.className='hideContent';
            }.bind(this));
        }
        
        if(this.uiComponent.lessDistrictsLink != null) {
            this.uiComponent.lessDistrictsLink.addEvent('click',function(){
                this.uiComponent.moreDistrictsLink.className='doNothing';
                this.uiComponent.moreschooldistricts_container.className='hideContent';
                this.uiComponent.lessDistrictsLinkContainer.className='hideContent';
            }.bind(this));
        }
    },
    
    updateSchoolProfileTable: function(schoolProfileModels,sponsoredSchoolProfiles){
        
        this.uiComponent.schoolProfileTableRows.innerHTML='';
        html='<ul id="table">';
            html+='<li class="title">';
            html+='<div class="bg">';
                html+='<div class="bot-b">';
                    html+='<div class="checkbox"><input id="chkSelectAll" type="checkbox" name="chkSelectAll" /></div>';
                    html+='<div class="name"><p>Name</p></div>';
                    html+='<div class="type"><p>Type</p></div>';
                    html+='<div class="grade"><p>Grade Level</p></div>';
                    html+='<div class="enrollment"><p>Enrollment</p></div>';
                    html+='<div class="stud-per-t"><p>Student-<br />Teacher Ratio</p></div>';
                    html+='<div class="district-head"><p>School District</p></div>';
                    html+='</div>';
                html+='</div>';
            html+='</li>';
            if(sponsoredSchoolProfiles.length > 0){
            	$each(sponsoredSchoolProfiles,function(school) {                   	        
                    html+='<li class="sponsored-row"><div class="bg"><div class="bot-b">';
                    html+='<div class="sponsored-name"><a href="'+school.schoolprofileurl+'" title="'+school.schoolname+'">'+school.schoolname+'</a></div>';
                    html+='<div class="type">'+ school.type +'</div>';
                    html+='<div class="sponsored-grade">'+school.gradespan +'</div>';
                    html+='<div class="sponsored-label">Sponsored Link</div>';
                    html+='</div></div></li>';
                },this);
            	html+='<li class="blank-row"></li>';
            }
            if(schoolProfileModels.length > 0){
            	$each(schoolProfileModels,function(school) {
                	var studentTeacherRatio = (Math.round(school.studentteacherratio) > 0) ? Math.round(school.studentteacherratio)  : '-';
                   	var enrollment = (school.enrollment > 0) ? school.enrollment : '-';
                   	        
                    html+='<li id="row'+school.schoolid+'"><div class="bg"><div class="bot-b">';
                    html+='<div class="checkbox"><input type="checkbox" class="compare-input" name="chkSchoolId[]" value="'+school.schoolid+'" /></div>';
                    html+='<div class="name"><a href="'+school.schoolprofileurl+'" title="'+school.schoolname+'">'+school.schoolname+'</a>';
                    html+='<p>'+school.address+'<br />'+school.city+', '+school.state+' '+school.postalcode+'</p></div>';
                    html+='<div class="type"><p>'+school.type +'</p></div>';
                    html+='<div class="grade"><p>'+school.gradespan +'</p></div>';
                    html+='<div class="enrollment"><p>'+enrollment +'</p></div>';
                    html+='<div class="stud-per-t"><p>'+studentTeacherRatio+'</p></div>';
                    html+='<div class="district"><p>'+school.districtname +'</p></div>';
                    html+='</div></div></li>';
                },this);
            }else{
            	var schoolGradeName = 'elementary';
        		if(this.uiComponent.highschool.className == 'active'){
        			schoolGradeName = 'high';
        		}
        		if(this.uiComponent.middleschool.className == 'active'){
        			schoolGradeName = 'middle';
        		}
               	html+='<li><div class="bg"><div class="bot-b">';
                html+='<div class="no-search-results-msg">There are no schools.</div>';
                html+='</div></div></li>';
            }
        html+="</ul>";
        this.uiComponent.schoolProfileTableRows.innerHTML=html;
        this.uiComponent.chkSelectAll=$('chkSelectAll');
        this.uiComponent.chkSelectAll.addEvent('click',function() {
            this.checkAllSchoolProfile(this.uiComponent.chkSelectAll);
        }.bind(this));
        
        this.uiComponent.compareInput=$$('.compare-input');    
        $each(this.uiComponent.compareInput,function(checkbox) {
            checkbox.addEvent('click',function() { 
                this.checkButtons();                                        
            }.bind(this));
        },this);
        this.updatePaginationDescription();
        this.updateMap(schoolProfileModels);  
    },
    submitCompareSchools: function(){
        var counter = 0;
        var schoolIds = new Array();
        this.uiComponent.compareInput.each(
                function(schoolProfile) {
                    if(schoolProfile.checked == true){
                            schoolIds[counter] = schoolProfile.value;
                            counter++;
                    }
                });
        if(counter >= 2){
              this.compareSchoolsResponse(schoolIds);
        }else{
        	this.showMessage('Please select at least two schools that serve the same grade levels to compare.');
        }
    },
    submitSaveSchools: function(){
        var counter = 0;
        this.uiComponent.compareInput.each(
                function(schoolProfile) {
                    if(schoolProfile.checked == true){
                            counter++;
                    }
                });
    },
    checkAllSchoolProfile: function(chkSelectAll){
        var total = this.uiComponent.compareInput.length;
        for(i=0;i<total;i++){
            if(chkSelectAll.checked == true){
                     this.uiComponent.compareInput[i].checked = true;
             }else{
                     this.uiComponent.compareInput[i].checked = false;
            }
        }
        this.checkButtons();
    },
    checkButtons: function(){
        var total = this.uiComponent.compareInput.length;
        var CountTrue =0;
        var CountFalse =0;
        for(i=0;i<total;i++){
            var row = 'row'+this.uiComponent.compareInput[i].value;
            if(this.uiComponent.compareInput[i].checked == true){
                $(row).className='checked';
                 CountTrue++;
             }else{
                 $(row).className='';
             }
        }
    },
    getCheckedSchoolIds: function(){
        var total = this.uiComponent.compareInput.length;
        var arrSchoolIds = new Array();
        for(i=0;i<total;i++){
            if(this.uiComponent.compareInput[i].checked == true){
                arrSchoolIds[arrSchoolIds.length]=this.uiComponent.compareInput[i].value;
             }
        }
        return arrSchoolIds;
    },
    uncheckAllSchoolIds: function(){
        var total = this.uiComponent.compareInput.length;
        for(i=0;i<total;i++){
            this.uiComponent.compareInput[i].checked=false;
        }
    },
    resetAllButtonsAndCheckboxes:function(response){
        if(response!=false){
            this.uncheckAllSchoolIds();
            this.checkButtons();
            this.updateSchoolSaveMessage(response);
        }else{
            window.location='/register/';
        }
    },
    updateSchoolSaveMessage:function(response){
        if(response){
            var message = 'Successfully saved School to your school list';
            this.showMessage(message);
        }
    },
    showMessage:function(message){
        if(message){
            this.uiComponent.schoolSaveMsg.innerHTML = message;
            this.uiComponent.messageBox.className='message-box showContent';
            this.clearMsgDiv.delay(10000);
            this.clearMsgDiv.bind(this);
        }
    },
    clearMsgDiv: function(){
        $('schoolSaveMsg').innerHTML = '';
        $('messageBox').className='hideContent borderNone';
    },
    compareSchoolsResponse: function (schoolIds){
    	this.checkSchoolsComparable(schoolIds);
    },
    setCompareSchoolResponse: function (response){
    	if(response == 'canCompare'){
       		this.uiComponent.compareOrSave.submit();
       }else{
       		this.showMessage('Please select at least two schools that serve the same grade levels to compare.');
       }
    },
    createEventForSchoolList: function(){
    	this.uiComponent.chkSelectAll=$('chkSelectAll');
        this.uiComponent.chkSelectAll.addEvent('click',function() {
            this.checkAllSchoolProfile(this.uiComponent.chkSelectAll);
        }.bind(this));
        
        this.uiComponent.compareInput=$$('.compare-input');    
        $each(this.uiComponent.compareInput,function(checkbox) {
            checkbox.addEvent('click',function() { 
                this.checkButtons();                                        
            }.bind(this));
        },this);
    },
    setLoadingEffects: function(){
    	this.uiComponent.schoolProfileTableRows.innerHTML='<center class="loader-container"><div class="loading-effect"></div></center>';
    	if(this.uiComponent.paginationDescription != null){
			this.uiComponent.paginationDescription.innerHTML='';
		}
		if(this.uiComponent.paginationDescriptionBottom != null){
			this.uiComponent.paginationDescriptionBottom.innerHTML = '';
		}
		if(this.uiComponent.schoolProfilePagination != null){
			this.uiComponent.schoolProfilePagination.innerHTML = '';
		}
    },
    resetSearchCriteria: function(){
    	this.searchCriteria.limit=0;
        this.searchCriteria.page=1;
    }
});