// search.com js object

// adds modal fading in and out for dialogs
Element.extend({
    
    showDialog: function() {
    
        document.body.style.overflow = 'hidden';
        $('modal').effect('opacity', {duration: 100}).start(0,0.7);
        this.effect('opacity', {duration: 100}).start(0,1);
    },
     
    cancelDialog: function() {
 
        $('modal').effect('opacity', {duration: 100}).start(0.7,0);
        this.effect('opacity', {duration: 100}).start(1,0);
        document.body.style.overflow = '';
    }
});

var search = {
    
    init: function() {
        
        // loop through all option links and set dialogs to those with 'name' property
  
        $$('#options a').each(function(option, i) {
        
            if (option.name) {

                option.removeAttribute('href');
//                option.onclick = function() { $(option.name).showDialog() };  // not in IE?
                option.onclick = function() { $$('.dialog')[i].showDialog() };  // prev. line more elegant. sad hack.
            }
        });
        $$('.dialog .cancel').each(function(button, i) {

            button.removeAttribute('href');
//          button.onclick = function() { $(button.name).cancelDialog() };  // not in IE?
            button.onclick = function() { $$('.dialog')[i].cancelDialog() };   // prev. line more elegant. sad hack.
            
        });
        
        // set prefs from cookies
        search.engines = new Hash.Cookie('engines', {duration: 3600});
        search.filters = new Hash.Cookie('filters', {duration: 3600});
        
        // loop through inputs set their state
        $$('input.engine').each(function(engine) {
                
            if (search.engines.get(engine.name) != null) {
                
                engine.checked = search.engines.get(engine.name) ? 1 : 0;
                
            } else {
                
                engine.checked = engine.getProperty('default') || 1;
            }
    
            engine.onchange = function() {

                this.state = this.checked == true ? 1 : 0;
                search.engines.set(this.name, this.state);
            };
            
            engine.state = engine.checked == true ? 1 : 0;
            search.engines.set(engine.name, engine.state);

        });
        
        $$('input.filter').each(function(filter) {

             if (search.filters.get(filter.name) != null) {

                 filter.checked = search.filters.get(filter.name) ? 1 : 0;

             } else {

                 filter.checked = filter.getProperty('default') || 1;
             }

             filter.onchange = function() {

                 this.state = this.checked == true ? 1 : 0;
                 search.filters.set(this.name, this.state);
             };

             filter.state = filter.checked == true ? 1 : 0;
             search.filters.set(filter.name, filter.state);

         });
    },
    
    savePrefs: function() {
        
        search.engines.save();
        search.filters.save();        

        window.location.reload(true);
    },
    
    debug: function() {
       
        if (!bwpMeta) return;

        var meta = bwpMeta;

        $$('.savvyad_unit').each(function(unit, i) {
            
            var id = unit.id.match(/\d/)[0];
            var unitId = document.createElement('div');
            unitId.className = 'unitid';
            var offset = 0;
            for (j = 0; j < meta.unit.order[id-1]; j++) {
                if (meta.unit.slots[j] == 0) offset++;
            }
            unitId.innerHTML = 'unit '+id+'<p>results '+(meta.unit.order[id-1]-offset)+'</p>';
            unit.appendChild(unitId);
        });

        // build response data section
        var responseDiv = document.createElement('div');
        responseDiv.id = 'response';
        var responseHTML = '<p><b>server id:</b> '+meta.server+'</p>';
        responseHTML += '<p><b>unit order:</b> '+meta.unit.order.toString()+'</p>';
        responseHTML += '<p><b>unit slots:</b> '+meta.unit.slots.toString()+'</p>';
                
        for (i = 0; i < meta.sources.length; i++) {
           
            responseHTML += '<p><b><a href="'+meta.sources[i].request;
            responseHTML += '">'+meta.sources[i].name+'</a></b>';
            var plural = meta.sources[i].results == 1 ? '' : 's';
            var fetchtime = '<b>'+meta.sources[i].fetchTime+'</b> sec';
            responseHTML += ' (<b>'+meta.sources[i].results
            responseHTML += ' result'+plural+'</b> in '+fetchtime+')';
            
            if (meta.sources[i].name.match(/google/i)) {
                
                var details = '<li><b>client:</b> '+meta.sources[i].clientId+'</li>';
                details += '<li><b>channel:</b> '+meta.sources[i].channelId+'</li>';
                
                if (meta.sources[i].browseKey != null) {
                    
                    details += '<li><b>keyword:</b> '+meta.sources[i].browseKey+'</li>';
                }
                responseHTML += '<ul>'+details+'</ul>';              
            }
            responseHTML += '</p>';      
        }

        responseDiv.innerHTML = responseHTML;
        $('bwp_meta_data').appendChild(responseDiv);
    }
};

search.init();

// old image tracking code for ad units
function img_track(url) {
    var i = new Image(1,1);
    i.src = url;
}

