MerchantList = function(host, type, styles)
{	this.host = host;
	this.type = type;
	this.styles = styles;

    //default urls	this.url = host + "/save_money/external_listing?request=" + escape(type) + "&callback=?";
	this.image_url = host + "/-imgs/avatars/";
	this.chamber_url = host + "/-images/ico-star.gif";

    //loads css
	this.Load();

	if(typeof(merchants_container)=="undefined") merchants_container = "merchants_container";
    this.container = $("#" + merchants_container);
}

MerchantList.prototype =
{	Init: function ()
    	{    		//caches itself            var me = this;

            //creates divs
            var block = $(document.createElement('div')).attr("class", "business-listing").appendTo(this.container);
            block = $(document.createElement('div')).attr("class", "inner").appendTo(block);
            //adds copyright
            block.html("<div class=\"copyright clearfix\"><span><a href=\"" + me.host + "\">Empowered by WinCentral, Winchester MA at your fingertips</span></div>")

            //creates search box
            if(this.type=='member_search' || this.type=='search')
            {                $("<div class=\"searchBox clearfix\"><dl><dt><label for=\"searchWord\">Search Member Businesses</label></dt><dd><input type=\"text\" name=\"searchWord\" id=\"searchWord\" alt=\"Press Enter to Search\"/></dd></dl></div>").appendTo(block);

                this.container.find("#searchWord").keyup(function(e) {                    	if(e.keyCode == 13) {    	                    $.getJSON(me.url + "&query=" + $(this).val(), function(data){ me.BuildList(data); });
                    	}
                    });
            }
            //creates alphabet
            if(this.type=='member_list' || this.type=='list')
            {                var lst = $(document.createElement('ul'));                block.append($(document.createElement('div')).attr("class", "searchBox clearfix").append(lst));
                //ALL
                var li = $(document.createElement('li'));
                var l = $(document.createElement('a'));
                l.click(function(){   	                me.HighLightLetter(this);
   	                $.getJSON(me.url, function(data){ me.BuildList(data); });
                    return false;
                });
                l.attr('href', '#');
                l.attr("class", "selected");
                l.text("ALL").appendTo(li);
                li.appendTo(lst);
                //Alphabet
                for(i=0; i<26;i++)
                {                    var li = $(document.createElement('li'));
                    var l = $(document.createElement('a'));
                    l.click(function(){	               	me.HighLightLetter(this);                        $.getJSON(me.url + '&letter=' + escape($(this).text()), function(data){ me.BuildList(data); });
                        return false;                    });
                    l.attr('href', '#');
                    l.text(String.fromCharCode(i+65).toUpperCase()).appendTo(li);
                    li.appendTo(lst);                }
                //ALL
                var li = $(document.createElement('li'));
                var l = $(document.createElement('a'));
                l.click(function(){                	me.HighLightLetter(this);                    $.getJSON(me.url, function(data){ me.BuildList(data); });
                    return false;
                });
                l.attr('href', '#');
                l.text("ALL").appendTo(li);
                li.appendTo(lst);
            }
            //creates search result container
            var search_results = $(document.createElement('div')).attr("class", "searchResults clearfix").appendTo(block);
            //adjusts height
            $(document).ready(function(){
                                                        //paddings
                var totalHeight = me.container.height() - 12;
                var copyrightBoxHeight = me.container.find('.copyright').height() + 10;
                var searchBoxHeight = me.container.find('.searchBox').height() + 10;
                me.container.find('.searchResults').height(totalHeight - copyrightBoxHeight - searchBoxHeight);
            });
            //var search_results = $(".searchResults");
            search_results = $(document.createElement('div')).attr("class", "searchResultsInner").appendTo(search_results);

            this.search_results = search_results;
            //loads default data
            if(this.type=='member_list' || this.type=='list')
                $.getJSON(me.url, function(data){ me.BuildList(data); });
    	},

    BuildList: function(data){    	    //build the table    	    this.search_results.find('table').remove();
    	    var list = $(document.createElement('table')).appendTo(this.search_results);
    	    var tbody = list.append('<tbody></tbody>');
    	    var i = 1;

    	    var me = this;

        	$(data).each(function(){
                    var item = "<tr";
                    if(i%2) item+=" class=\"odd\"";
                    i++;
                    item += ">";
                    if(me.type=="list" || me.type=="search")
                    {
                    	if(this.chamber=="yes")
                        	item += "<td><img title=\"member Chamber of Commerce\" src=\"" + me.chamber_url + "\"></td>";
                        else
                            item += "<td></td>";
                    }
                    if(this.image)
                        item += "<td><img width=\"75\" src=\"" + me.image_url + this.image + "\"/></td>";
                    else
                        item += "<td></td>";
                    item += "<td>"
                    if(this.link!="")
                        item += "<a href=\"" + this.link + "\">";
                    //cuts title
        		    if(this.title.length>30)
	                    item += this.title.substr(0, 30) + "...";
		            else
		                item += this.title;
                    if(this.link!="") item += "</a>";
                    item += "</td>";
                    //cuts title
        		    if(this.street.length>15)
	                    this.street = this.street.substr(0, 15) + "...";
                    item += "<td>" + this.street + "</td>";
                    item += "<td>" + this.phone + "</td>";
                    item += "<td>";
                    if(this.site!="")
                        item += "<a href=\"http://" + this.site + "\">Website</a>";
                    item += "</td>";

                    item += "</tr>";
            	    tbody.append(item);
        	    });
        },

    HighLightLetter: function(alink) {            this.container.find("a.selected").attr("class", "");
            $(alink).attr("class", "selected");
        },

    Load: function(){            var me = this;
            if(this.styles!="")
            {            	//loaded css files                if(typeof window.business_listing_styles == "undefined")
                    window.business_listing_styles = new Array();                var loaded = false;
                //checks if css already loaded
           		$("head").find("link").each(function(){                        if($(this).css("href")==me.styles) loaded = true;           		    });
           	    //checks if the cript loaded some css
                for(i=0;i<window.business_listing_styles.length;i++)
                    if(window.business_listing_styles[i]==me.styles) loaded = true;
                //loads css
            	if(!loaded)
            	{            		$("head").append("<link>");
                    css = $("head").children(":last");
                    css.attr({
                      rel:  "stylesheet",
                      type: "text/css",
                      href: this.styles
                    });
                    window.business_listing_styles.push(this.styles);
                }
            }    	}
}