SM = [];
Ext.onReady(function() {
	var SearchCont = Ext.query('.SearchCont');
	var SiteMapCont = Ext.query('.SiteMapCont');
	var PrintCont = Ext.query('.PrintCont');
	if (SearchCont.length>0) SM.Search(SearchCont);
	if (SiteMapCont.length>0) SM.SiteMap(SiteMapCont);
	if (PrintCont.length>0) SM.Print(PrintCont);
/*	
	if (SearchCont) alert("SearchCont")
	if (SiteMapCont) alert("SiteMapCont")
	if (PrintCont) alert("PrintCont")
*/
});

SM.OnPrint = function(Obj){
	if (!Obj.innerHTML) {
		alert("Siden kan ikke printes");
		return;
	}
	var css = '<link rel="stylesheet" href="' + share_css + 'document.css" type="text/css" media="print">'
	+ '<link rel="stylesheet" href="' + share_css + 'menu.css" type="text/css" media="print">'
	+ '<link rel="stylesheet" href="' + share_css + 'site.css" type="text/css" media="print">'
	+ '<link rel="stylesheet" href="' + cms_modul_http + 'FrontSite/css/frontsite.css" type="text/css">'
	+ '<link rel="stylesheet" href="' + share_css + 'print.css" type="text/css" media="print">';
    var win = window.open();
    self.focus();
    win.document.open();
    win.document.write('<html><head><title>Side_'  + SITE_ID+"_" + site_navn + '</title>');
    win.document.write('<html><head><title>Dansk Skak Union Printerside</title>');
    win.document.write(css);
    win.document.write('</head><'+'body'+'>');
    win.document.write(Obj.innerHTML);
    win.document.write('<'+'/'+'body'+'><'+'/'+'html'+'>');
    win.document.close();
    win.print();
    win.close();
};


SM.OnSearch = function(o){
	var returnLimit = 10;
	var searchValue = o.getValue();
	if (Ext.isEmpty(searchValue)) return false;
	if(SM.win) SM.win.close();
	var bodyContainer = Ext.get("bodyContainer");
	bodyContainer.dom.innerHTML = "";
	
    // create the Data Store
    var store = new Ext.data.JsonStore({
        root: 'topics',
        totalProperty: 'totalCount',
        remoteSort: true,
		baseParams: {value:searchValue},
        fields: [
            {name: 'headline'}
            ,{name: 'id'}
            ,{name: 'type'}
            ,{
            	name: 'date_created'	
            	,type: 'date'
				, dateFormat: 'Y-m-d'
        	}
            ,{name: 'description'}
            ,{name: 'url'}
        ],
        proxy: new Ext.data.HttpProxy({
            url: cms_modul_http + 'search/search.php'
        })
    });

    store.setDefaultSort('date_created', 'desc');

    function renderTopic(value, p, record){
        return String.format(
                '<b><a id="link_{1}" onclick="viewNews({1});" href="{2}">{0}</a></b>',
                value, record.data.id,record.data.url);
    }

	var showPreview = {
        pressed: false,
        enableToggle:true,
        text: 'Vis beskrivelser',
        cls: 'x-btn-text details',
        toggleHandler: function(btn, pressed){
            var view = grid.getView();
            view.showPreview = pressed;
            view.refresh();
        }
	};
	    
    var pagingBar = new Ext.PagingToolbar({
        pageSize: returnLimit,
        store: store,
        displayInfo: true,
        displayMsg: 'Resultat af søgning {0} - {1} af {2}',
        emptyMsg: "Der er ingen søge resultater af denne type.",
        
        items:[]
    });
	var searchTrigger = new Ext.form.TriggerField({
	    xtype: 'textfield'
    	,name: 'searchTrigger'
    	,triggerClass: "x-form-search-trigger"
    	,width: 200
    	,fieldLabel:''
    	,enableKeyEvents: false
    	,delay: 100
    	,value:  searchValue
	});

	searchTrigger.onTriggerClick = function(o){
		var searchValue = o.getValue();
		if (searchValue.length<1) return false;
		grid.store.baseParams = {
			value: searchValue
		};
		grid.store.reload();
	};
	searchTrigger.on("specialkey",function(o){
		var searchValue = o.getValue();
		if (searchValue.length<3) return false;
		grid.store.baseParams = {
			value: searchValue
		};
		grid.store.reload();
	});
	
	searchTrigger.on("keyUp",function(o){
		var searchValue = o.getValue();
		if (searchValue.length<3) return false;
		grid.store.baseParams = {
			value: searchValue
		};
		grid.store.reload();
	});

	tbar = [searchTrigger
	,'-'
	,showPreview]
	
    function renderDateCreated(value, p, record){
    	var d = value;
    	var d = Ext.util.Format.date(d,"d m Y");
        return String.format('{0}', d);
    }
	
    var grid = new Ext.grid.GridPanel({
        el:'bodyContainer'
        ,tbar: tbar
        ,width: "100%"
        ,autoHeight: true
        ,title: 'Søgeresultat for ' + site_navn
        ,store: store
        ,trackMouseOver:false
        ,disableSelection:true
        ,loadMask: true

        // grid columns
        ,columns:[{
            id: 'topic',
            header: "Overskrift",
            dataIndex: 'headline',
            width: 390,
            renderer: renderTopic,
            sortable: true
        },{
            header: "Artikel type",
            dataIndex: 'type',
            width: 200,
            hidden: false,
            sortable: true
        },{
            header: "Dato oprettet",
            dataIndex: 'date_created',
            renderer: renderDateCreated,
            width: 200,
            hidden: false,
            sortable: true
        }]
        ,viewConfig: {
            forceFit:true,
            enableRowBody:true,
            showPreview:false,
            getRowClass : function(record, rowIndex, p, store){
                if(this.showPreview){
                    p.body = '<div class="search_description">'+record.data.description+'</div>';
                    return 'x-grid3-row-expanded';
                }
                return 'x-grid3-row-collapsed';
            }
        }
        ,bbar: pagingBar
    });

    // render it
    grid.render();

    // trigger the data store load
    store.load({params:{
    	start:0
    	,limit: returnLimit
    	,value: searchValue
    }});
};

SM.Search = function(o){
	for (var n=0; n<o.length; n++){
//		var obj = Ext.get(o[n]);
		var searchTrigger = new Ext.form.TriggerField({
		    xtype: 'textfield'
	    	,name: 'searchTrigger'
	        ,hideLabel: true
	    	,triggerClass: "x-form-search-trigger"
	    	,width: 160
	    	,fieldLabel:''
	    	,enableKeyEvents: true
	    	,value:  ""
		});

		searchTrigger.onTriggerClick = function(){
			SM.OnSearch(searchTrigger);
		};
			
	
		searchTrigger.on("specialkey",SM.OnSearch);
		
//		searchTrigger.on("keyUp",SM.OnSearch);
		
	    var form = new Ext.form.FormPanel({
	        baseCls: 'x-plain'
	        ,autoWidth: true
	        ,defaultType: 'textfield'
	        ,items: [searchTrigger]
	        ,renderTo: o[n]
	    });
	}
};
	

SM.Search1 = function(o){
	for (var n=0; n<o.length; n++){
		var win;
		var obj = Ext.get(o[n]);
		obj.on(
			"mouseover"
			,function(){
		        if(!win){
		            win = new Ext.Window({
			            title    : 'Layout Window',
			            closable : true,
			            width    : 600,
			            height   : 350,
			            //border : false,
			            plain    : true
		            });
		        }
		        win.show(obj);
		        win.on("close",function(){
		        	win = null;
		        });
			}
			,this
		);
//		showObject(obj)
	}
};

SM.SiteMap = function(o){
	
	for (var n=0; n<o.length; n++){
		var win;
		var obj = Ext.get(o[n]);
		obj.on(
			"click"
			,function(){
				var url = window.location;
				location.href = SERVER_SELF + "?id=0&sitemap=1";
			}
			,this
		);
//		showObject(obj)
	}
};

SM.Print = function(o){
	for (var n=0; n<o.length; n++){
		var obj = Ext.get(o[n]);
		obj.on(
			"click"
			,function(){
				var p = Ext.get("bodyContainer");
				this.OnPrint(p.dom);
			}
			,this
		);
	}
};