
var zim= {
    searchInfo : {},
    baseUrl : location.href.replace(/[^:]\/\/+/g,'/').replace(/(^\/+)|(\/\s*$)/g,''),

    init : function(){
       dojo.connect(document.body,'onclick', zim.onClickDispatcher) 
       if(navigator.appVersion.match(/\bMSIE\b/)){
           zim.hideBrokenImages()
       }

       var base='', els = document.getElementsByTagName('script')
       for(i=0;i<els.length;i++){
           if(els[i].src.match(/js\/zim.js$/)){
            base = els[i].src.replace(/js\/zim.js/,'')
           }
       }
       var re = new RegExp('^'+base)
       var params = location.href.replace(re,'').replace(/[^:]\/\/+/g,'/').replace(/(^\/+)|(\/\s*$)/g,'').split('/')
       if(params.length==0 || (params.length==1 && params[0]=='')){
           zim.baseUrl += '/index/index'      
       }else if(params.length==1){
           zim.baseUrl += '/index'      
       }

       zim.registerSearchButtons();
       setTimeout(zim.findSubmitButton,5);
    },

    hideBrokenImages : function(){
        var i, img;
        for(i=0; i<document.images.length;i++)
        {
            img = document.images[i];
            if(!img.complete)
            {
                img.style.display='none';
            }
        }
    },

    setSearchButtonValues : function(){
        var el, m = document.location.href.match(/([^\/]+)_search(64)?\/([^\/(]+)/)
        if(m){
            el = dojo.byId(m[1])
            if(el){
                if(m[2]=='64'){
                    dojo.require("dojox.xmpp.util");
                    el.value= dojox.xmpp.util.Base64.decode(m[3]).match(/[^(]*/)[0]
                }else{
                    el.value= m[3];
                }
            }
        }
    },

    info : function(obj){
        var e,s = '';
        for(e in obj) {
            s = s+ "\n" + e + ': ' + obj[s];
        }
        return s;
    },

    registerSearchButtons : function() {
        zim.setSearchButtonValues();
        var searchEl, i, id;
        for(s in zim.searchInfo)
        {
            searchEl = dojo.byId(s)
            dojo.connect(searchEl,'onkeypress',function(evt){ evt.keyCode==13 && zim.doSearch(s) })
            dojo.connect(dojo.byId('b_'+s),'onclick',function(evt){ zim.doSearch(s) })
        }
    },

    doSearch : function(id){
        dojo.require("dojox.xmpp.util");
        var searchEl = document.getElementById(s)
        var model = zim.searchInfo[id].model
        var cols = zim.searchInfo[id].cols.join(',')
        var value = searchEl.value.replace(/^\s|\s$/g,'');
        var query= dojox.xmpp.util.Base64.encode(value + '(' + cols + ')')
        var searchString = value.length ? id + '_search64/' + query : '';

        //recreate with global option to remove all occurences
        var r = new RegExp('/'+id+'_search64/([^/]*)/?','ig');
        var url = zim.baseUrl.replace(r,'/').replace(/[^:]\/\//,'/').replace(/\/$/,'') + '/'+searchString;
        location.href = url;
    },

    findSubmitButton : function(){
        if(!document.forms.length){return;}
        var i,els = document.forms[0].elements;
        for(i=0;i<els.length;i++)
        {
            if(els[i].type!='file'){continue;}
            
            var container = els[i].parentNode;
            var containerCoords = dojo.coords(container,true);

            dojo._setOpacity(els[i], 0)
            dojo.style(els[i],'zIndex',2)
            dojo.style(els[i],'position','relative')
            dojo.style(els[i],'width','280px')
            dojo.style(els[i],'left','130px')
            var elContainer = dojo.coords(els[i],true);
            elContainer.x = elContainer.x -170 ;

            var input= document.createElement('INPUT');
            input.type='text'
            dojo.style(input,'zIndex',1)
            dojo.style(input, 'width', (400 - 100)  + 'px')
            dojo.style(input,'position', 'absolute')
            dojo.style(input,'left', containerCoords.x+330  +'px')
            dojo.style(input,'top', elContainer.y+'px')
            els[i].form.appendChild(input);

            var inpCoords = dojo.coords(input, true);

            var img = document.createElement('IMG');
            img.src=dojo.baseUrl+'../../../images/menu/browse.png';
            dojo.style(img,'marginLeft','5px')
            dojo.style(img,'zIndex',1)
            dojo.style(img,'position', 'absolute')
            dojo.style(img,'left', inpCoords.x+inpCoords.w  +'px')
            dojo.style(img,'top', inpCoords.y+'px')
            els[i].form.appendChild(img);

            dojo.connect(els[i],'onchange', input, function(evt){this.value = evt.target.value}) 
            dojo.connect(els[i],'onmouseout', input , function(evt){this.value = evt.target.value}) 
        }
    },

    onClickDispatcher : function(event){
       zim.isSortable(event.target) && zim.sortList(event.target)
    },

    isSortable : function(element){
        if(element.id && element.className.match(/sortable/i)){
            return true;
        }else{
            return false;
        }
        return 
    },

    getSortableHeaders : function(){
        var sortables=[], r,i,ths = document.getElementsByTagName('th');

        r=new RegExp('\bsortable\b');
        for(i=0; i++; i<ths.lenght){
            if(ths[i].id && ths[i].className.match(r)){
                sortables += ths[i];
            }
        }
        return sortables;
    },

    registerSortables : function(){
        var i,th, sortables = this.getSortableHeaders();
        for( i=0; i++; i<sortables.lenght){
            //sortables[i].onClick = function(){} 
        }
    },

    sortList : function(element) {
        match=element.id.match(/([^.]*)\.(.*)$/)
        module = match[1] 
        field= match[2] 
        
        var r,m,dir,url;
        r = new RegExp('/'+module+'_(desc|asc)/([^/]*)/','i');

        //get the direction and swap
        m=location.href.match(r)
        dir = (m && m[1] && m[1].toLowerCase()=='desc')?'asc':'desc';

        //recreate with global option to remove all occurences
        desc = new RegExp('/?'+module+'_(desc|asc)/([^/]*)/?','ig');
        var url = zim.baseUrl.replace(desc,'/').replace(/[^:]\/\//,'/').replace(/\/$/,'') + '/'+module+'_'+dir+'/'+field+'/';
        location.href = url;
    },

    sendMailPdf : function(url){
        var email = dojo.byId('mailPDFAddress').value;
        self.location.href = url + '/mail/' + escape(email);
    },

    toggleMailPDFAddress : function(onOff){
        var el = dojo.byId('mailPDFContainer')
        var cn = el.className.replace(/\s*showTools\s*/, '') + (onOff=='on'?' showTools':'');
        el.className = cn;
    }
}

dojo.addOnLoad(zim.init)

