jQuery(function($){
    if (jQuery.browser.msie && jQuery.browser.version == '6.0'){
        return;
    }    
        
    //Added by MTW - unique ID for this upload session
    var imagesid = Math.floor(Math.random()*99999);
    var uploadHanderUrl = '/assets/templates/intercanvas/js/upload-handler.php?id=' + imagesid;
    var deleteHandlerUrl = '/assets/templates/intercanvas/js/upload-delete-handler.php';
    
    $('input[name="imagesid"]').val(imagesid);	
    var maxImages = 15;
    var buttonElement, button, handler;
    var uploadcount = 0;
    $('input[name="uploadcount"]').val(uploadcount);	    
    
    function updateAttachedFiles(){
        $form.find('input[name=attachedFiles[]]').remove();
        
        $.each(attachedFiles, function(i,val){            
            $("<input />").attr({
                type: 'hidden',
                name: 'attachedFiles[]',
                value: val                
            }).appendTo($form);
        });        
    }
        
    function createButtonElement(){
        $('#files p:first-child').prepend('<div id="upload">Click here to choose an image to upload</div>');
        $('input[type=file]').parent().remove();

        return $('#upload')[0];
    }    
    	
    function createUploadHandler(){
        if( qq.UploadHandlerXhr.isSupported()){           
            handlerClass = 'UploadHandlerXhr';                        
        } else {
            handlerClass = 'UploadHandlerForm';
        }
    
        var handler = new qq[handlerClass]({
            action: uploadHanderUrl,            
            onProgress: function(id, fileName, loaded, total){  
                updateProgress(loaded / total);                    
            },
            onComplete: onComplete
        });
        return handler;
    }		          
    
    function isValidType(fileName){
        var ext = (-1 !== fileName.indexOf('.')) ? fileName.replace(/.*[.]/, '').toLowerCase() : '';
        return ext && /^(jpg|png|jpeg|gif|bmp|pdf)$/i.test(ext);
    }
    
    function onComplete(id, fileName, result){
        if (result.success){
            uploadcount++;				
            $('input[name="uploadcount"]').val(uploadcount);
                    
            var fileName = fileName.replace(/.*(\/|\\)/, "");
            var shortName = (fileName.length > 16) ? fileName.substr(0, 13) + '...' : fileName;            
            
            var $preview = $('<span>' +
                '<img src="' + result.previewfilename + '" /><em>' + shortName  + '</em>' +
                '<a href="#" class="removeimage">Remove</a></span>');
            
            $preview.data('filename', result.filename)
                .insertBefore(buttonElement);
			
                              
        } else {
            if (result.error){
                alert(result.error);    
            } else {
                alert('Server error, please contact support.');
            }
            
        }   
        
        $(buttonElement).text("Click here to choose another image");
        button.reset();      
    }
    
    function createLoader(parent){
        if (qq.UploadHandlerXhr.isSupported()){            
            $(parent).append('<div class="loading-wrapper"><div class="loading-moving"></div></div>');
            $('.loading-wrapper').css({
                width: '136px',
                height: '8px',
                background: '#F7F7F7',
                borderRadius: '2px',
                MozBorderRadius: '2px',
                border: '2px solid #666'
            });            
            $('.loading-moving').css({
                width: '0',
                height: '8px',
                background: '#F9B90A'
            });              
            
        } else {
            $(parent).append('<img src="assets/templates/intercanvas/images/interface/ajax-loader-sml.gif" />');
        }               
    }
        
    function updateProgress(value){
        var $moving = $('.loading-moving');
        $moving.css('width', Math.floor(value * $moving.parent().width()) + 'px'); 
    }    
    
    handler = createUploadHandler();           
    buttonElement = createButtonElement(); 
        
    button = new qq.UploadButton({
        element: buttonElement,
        //multiple: qq.UploadHandlerXhr.isSupported(),
        multiple: false,
        name: 'qqFileUploadFile',
        onChange: function(input){
            var name = input.value.replace(/.*(\/|\\)/, "");
            
            if (!isValidType(name)){
                $(buttonElement).html('<strong>Sorry, this is the wrong type of file.</strong><strong>Please click here to choose again.</strong>');                
                button.reset();
                return; 
            }
            
            if($('#files img').length >= maxImages) {
                $(buttonElement).html('<strong>Sorry, the maximum number of images allowed is ' + maxImages + '.</strong>');
                button.reset();
                return; 
            }                   
            
            if (handler instanceof qq.UploadHandlerXhr){
                var id = handler.add(input.files[0]);
            } else {
                var id = handler.add(input);
            }
                        
            handler.upload(id);
            
            
            $(buttonElement).html('<em>Uploading image</em>');
            createLoader(buttonElement);           
        },        
        hoverClass: 'hover',
        focusClass: 'focus'
    });
    
            
    // removing images
    $('.removeimage').live("click", function(e){
        e.preventDefault();        
        var answer = confirm("Are you sure you would like to remove this image from the quote?")
        
        if (answer){ 
            var $preview = $(this).parent();
            var filename = $preview.data('filename');          
            $preview.remove();

            uploadcount--;				
            $('input[name="uploadcount"]').val(uploadcount);            
                    
            $.ajax({
                url: deleteHandlerUrl,
                type: 'POST',
                data: {
                    id:imagesid,
                    filename:filename
                },
                cache: false,
                success: function(response){
                    //console.log(response);
                }
            }); 
                                          
        }       
                
    });       
});
