/**
 * @author Chigozie Nduanya
 * @copyright 2010
 */
$cat(function(){
        cat.root='';
        cat.start();
        Software.setCatGlobals();
        Software.meow();
});
function strip(value,mode){
        value=cat.strip({string:value,characters:cat.characters(mode)});
        if(mode=='numeric')value=(value=='')?0:parseFloat(value);
        
        return value;
};
var Software={
        cleanup:function(){
                if($cat('.write-signature').length>0)cat.signature();
                if($cat('.application-clock').length>0){
                        cat.elementNode='span';
                        cat.clock($cat('.application-clock'));
                        $cat('.application-clock')
                              .prepend('<span class="font-size-10">Today, </span>')
                              .find('.clock').css('font-size','10px');
                }
                if($cat('.news a').length>0)$cat('.news a').addClass('color-madre-blue');
                if($cat('.drivers-list').length>0)
                        cat.defaultTextToInputs($cat('.drivers-list'));
                if($cat('.return-to-home').length>0){
                        new Timer({processor:function(){
                                cat.folderTab='Home';
                                Software.meow();
                        }}).timeout(3000);
                }
                this.resetCatGlobals();
                
                var msg='<h1 class="text-center">Welcome to www.crxontario.com!</h1>';
                msg+='<h2 class="text-center">Website coming soon...</h2>';
                msg+='<h3 class="pad-10 text-center">'+
                '<a href="forum3/" '+
                'class="color-white back-blue line-1-white text-underline-off '+
                'pad-10 font-size-13">'+
                'Continue to Forum</a></h3>';
                var img=this.getImage('crx/car_2.jpg',600,'',400);
                msg=msg+'<p style="text-align:center;padding:30px;" '+
                'title="Continue to Forum">'+img+'</p>';
                $cat(document.body).html('<div class="canvas">'+msg+'</div>')
                    .find('a').hover(function(){
                    $cat(this).css('color','cyan');},
                    function(){$cat(this).css('color','white');});
        },
        getImage:function(iSrc,iWidth,iClass,iHeight){
                var attrs=' src="'+cat.root+'images/'+iSrc+'" width="'+iWidth+'"';
                attrs+=' class="'+iClass+'" height="'+iHeight+'" alt="..."';
                
                return '<img'+attrs+' />';
        },
        getPointsForCurrentWeek:function(id){
                cat.extraData='&current_week='+id;
                Software.meow();
        },
        hideObjAndDisplayLoadingThumb:function(obj){
                var iWidth=$cat(obj).find('img').attr('width');
                var iHeight=$cat(obj).find('img').attr('height');
                var img=this.getImage('thumbnails/loading.gif',iWidth,'',iHeight);
                $cat(obj).after(img);
                $cat(obj).hide();
        }, 
        meow:function(){
                var attrs=' style="padding:200px;" '+
                'class="waiting-message text-center"';
                var msg=(cat.task!='')?cat.task:'Generating content...';
                msg='<p'+attrs+'>'+cat.loading+'&nbsp;'+msg+'</p>';
                $cat(document.body).html(msg+
                '<div class="canvas font-size-14"></div>');
                
                cat.data='&folder-tab='+cat.folderTab+cat.extraData;
                if(cat.sortField!='')cat.data+='&sort_field='+cat.sortField;
                if(cat.task!=''){
                        cat.data+='&cat_task='+cat.task;
                        cat.task='';
                }
                cat.feedback=function(feedback){
                        new Timer({processor:function(){
                                $cat('.canvas').html(feedback).hide().fadeIn(3000);
                                $cat('.waiting-message').hide();
                                Software.cleanup();
                        }}).timeout(500);
                };
                cat.server();
        },
        onclickForButton:function(obj,text){
                function delay(){
                        Software.hideObjAndDisplayLoadingThumb(obj);
						new Timer({processor:function(){
							    $cat(obj).next().remove();
                                $cat(obj).show();
                                cat.delayFeedback();
						}}).timeout(1000);  
                };
                cat.obj=obj;
                var itsOkayToProceed=true;
                cat.delayFeedback=function(){
                        if(text=='submit entry form')Software.submitEntryForm();
                        else if(text=='reset')Software.meow();
                };
                if(itsOkayToProceed)delay();
        }, 
        resetCatGlobals:function(){
                cat.extraData='';
                cat.maximumSalary=($cat('.maximum-salary').length>0)?
                        $cat('.maximum-salary').val():0;
                cat.salaryRemaining=($cat('.salary-remaining').length>0)?
                        strip($cat('.salary-remaining').text(),'numeric'):0;
                cat.totalSalary=($cat('.total-salary').length>0)?
                        strip($cat('.total-salary').text(),'numeric'):0;
        }, 
        setCatGlobals:function(){
                cat.counter=0;
                cat.extraData='';
                cat.sortField='teamname';
                cat.folderTab=($cat('.current-folder-tab').length>0)?
                        $cat('.current-folder-tab').text():'Home';
                cat.loading=this.getImage('thumbnails/loading.gif',28,'loading-thumb',28);
                cat.server=function(){
                    	$cat.ajax({
                        		type:   'POST',
                        		url:    'processor.php',
                        		data:   'cat='+cat.root+cat.data,
                        		success:function(feedback){cat.feedback(feedback);}
                    	});
                };
                cat.spaces='<span class="cat-spaces">&nbsp;</span>&nbsp;';
                cat.task='';
        },
        submitEntryForm:function(){
                var itsOkayToProceed=true;
                cat.data='';
                $cat('.field').each(function(){
                        var obj=$cat(this).prev();
                        if(obj.val()==''){
                                var caption=$cat(this).parent().prev().text();
                                caption=caption.substring(0,caption.length-1);
                                alert('Sorry, '+caption+' required!');
                                obj.focus();
                                itsOkayToProceed=false;
                                
                                return false;
                        }
                        else cat.data+='&'+$cat(this).val()+'='+obj.val();
                });
                if(itsOkayToProceed){
                        if(strip($cat('.total-drivers').text(),'numeric')<8)
                                alert('Sorry, you MUST pick EXACTLY 8 drivers '+
                                'from the list of drivers provided!');
                        else{
                                var driversNames='';
                                $cat('.drivers-list input:checkbox')
                                .each(function(intIndex){
                                    if(this.checked){
                                        var row=$cat(this).parent().parent();
                                        var driverName=row.find('.driver-name').text();
                                        if(row.find('input:text').length>0){
                                            var inputText=row.find('input:text');
                                            driverName=inputText.val();
                                            if(driverName==inputText.attr('title')){
                                                alert('Sorry, driver name required!');
                                                inputText.focus();
                                                itsOkayToProceed=false;
                                            }
                                        }
                                        if(itsOkayToProceed)driversNames+='~'+driverName;
                                        else return false;
                                    }
                                });
                                if(itsOkayToProceed){
                                        cat.data+='&drivers_names='+driversNames;
                                        cat.extraData=cat.data+'&submit_entry_form=true'+
                                        '&total_salary='+$cat('.total-salary').text();
                                        Software.meow();
                                }
                        }
                }
        },
        updateSalaryCalculations:function(obj){
                var isChecked=(obj.checked)?true:false;
                var itsOkayToProceed=true;
                var row=$cat(obj).parent().parent();
                var value=strip(row.find('.driver-value').text(),'numeric');
                var totalDrivers=strip($cat('.total-drivers').text(),'numeric');
                
                if(totalDrivers==8 && isChecked){
                        alert('Sorry, maximum # of drivers selected has been reached!');
                        $cat(obj).attr('checked',false);
                        itsOkayToProceed=false;
                }         
                if(itsOkayToProceed){       
                        if(isChecked){
                                cat.totalSalary+=value;
                                if(cat.totalSalary>cat.maximumSalary){
                                        alert('Sorry, maximum salary of '+
                                                cat.currency(cat.maximumSalary)+
                                                ' has been exceeded!');
                                        $cat(obj).attr('checked',false);
                                        itsOkayToProceed=false;
                                        cat.totalSalary-=value;
                                }
                                else{
                                        cat.salaryRemaining-=value;
                                        totalDrivers+=1;
                                }
                        }
                        else{
                                cat.totalSalary-=value;
                                cat.salaryRemaining+=value;
                                totalDrivers-=1;
                        }
                        if(itsOkayToProceed){
                                $cat('.total-salary').html(cat.currency(cat.totalSalary));
                                $cat('.salary-remaining')
                                        .html(cat.currency(cat.salaryRemaining));
                                $cat('.total-drivers').html(totalDrivers);
                        }
                }
        } 
};
