

UK4Print = function() {

    function isAllowedFileType(type) {
        //don't forget to change this in php class too
        var allowedFileTypes = "7z,ace,arc,ari,arj,gz,gzi,gzip,lzh,rar,sit,sitx,tar,tg,tgz,zip,ai,bmp,cpt,cr2,drw,dxf,emf,eps,exif,gif,indd,inx,jpeg,jpg,jpx,pct,pdf,png,ppm,ps,psd,psp,qxd,svg,svgz,tga,tif,xcf";
        if (allowedFileTypes.match("(^|,)"+type+"(,|$)")) {
            return true;
        } else {
            return false;
        }
    }

    function getFilename(id, cb) {
        var file;
        new Ajax.Request('../shop/xhr_cart.php', {
            method:     'POST',
            parameters: 'id='+id+'&mode=filename',
            onSuccess: function(t) {
                file = t.responseText;
                //console.log('in cb: '+file);
                if(typeof cb == "function") {
                    cb(file)
                }
            //return file;
            }
        });

    }

    function deleteImage(e) {
        
        var target = e.element();

        var id = target.id.replace(/file-(?:icon-)?delete-/, '');

        var parts = id.split('_'),
            params = {
                mode: 'deleteImage',
                product_id:parts[0],
                set:parts[1],
                side: parts[2]
            
            };

        var icon     = $('file-icon-'+id),
            delIcon  = $('file-delete-'+id),
            status   = $('file-status-'+id),
            frm      = $("form-"+id);

//        console.log(parts);
//
//        return;
//
//        var fileParts = file.split("_");
//        var item = fileParts[2];
//        var suffix = fileParts[3].replace(/file/,"");
//        var status = "status"+suffix+"_"+item;
        if(confirm("Are you sure you want to delete this file")) {
            new Ajax.Request( '../shop/xhr_cart.php', {
                method:     'post',
                parameters: params,
                onSuccess: function(t) {
                    var json = t.responseJSON;
                    if(json.success) {
                        if(delIcon && delIcon.visible()) delIcon.fade();
                        if(status) {
                            status.update("");
                            status.title = "";
                        }
                        if(icon) {
                            icon.src = "/images/icon_file.png";
                            icon.title = "";
                        }
                    }
                }
            });
        }
    }

    function fileUpload(e) {

        var iframeName,
            input    = e.element(),
            filename = input.value,
            ext      = filename.replace(/^(.*\.)(.*)$/,"$2");

       var id = input.id.replace(/file-input-/, '');

        var parts = id.split('_'),
            product_id = parts[0],
            set = parts[1],
            side  = parts[2];

        var icon     = $('file-icon-'+id),
            delIcon  = $('file-delete-'+id),
            status   = $('file-status-'+id),
            frm      = $("form-"+id);


//       console.log(id);

//        console.log(el.id);
//        console.log(suffix);
//        console.log(icon);


        if(isAllowedFileType(ext)) {

            if(icon) {
                icon.src = "/images/upload.gif";
            }
            if(status) {
                status.update('Uploading...');
            }
            //input.setStyle({display:'none'});


//
//            //if(1 == 1) {
//
            var iframeContainerId = "iframeHolder-"+id;
            iframeName = "iframe-"+id;
            //var formBackName = "formBack_"+num;
            //var statusBackName = "statusBack_"+num;

            if(!$(iframeName)) {

                var iframeContainer = new Element('DIV', {
                    id:     iframeContainerId,
                    style:  'display:none'//;position:absolute;top:0;left:0;width:300px;height:200px;background:#ffffff'
                });

                document.body.appendChild(iframeContainer);

                var iframe = new Element('IFRAME', {
                    name: iframeName,
                    id:   iframeName,
                    src:  'about:blank'
                    //,style:'border:2px solid blue; width:275px; height: 150px;'
                });

                $(iframeContainer).appendChild(iframe);

                iframe.observe('load', function() {

                    //getFilename(num, function(file) {

                        var output = parent.frames[iframeName].document.body.innerHTML;

//                        console.log(parent.frames['iframe'+suffix+'_'+num]);
//                        console.log(output);
//                        alert(output);
                        var resp = output.evalJSON();

//                        console.log(resp);
                        if(!resp.success) {
                            if(delIcon && delIcon.visible()) delIcon.fade();
                            if(icon) {
                                icon.title = '';
                                icon.src = "/images/icon_upload.png";
                            }
                            if(status) {
                                status.title = '';
                                status.update('<span style="color:#aa0000">'+resp.message+'</span>');
                            }
                        }
                        else {
                            if(delIcon && !delIcon.visible()) delIcon.appear();
                            if(status) {
                                status.title = resp.message;
                                status.update('File Uploaded');
                            }
                            if(icon) {
                                icon.title = resp.message;
                                icon.src = "/images/icon_success.png";
                            }
                        }
//                        $("status"+suffix+"_"+num).update(output);
//                        $($("status"+suffix+"_"+num).firstDescendant().next().id).observe("click", deleteImage);
//
//                        if(output.match("File Uploaded")) {
//                            //iframe.id = iframe.id+'XXXX';
//                            //iframe.stopObserving();
//                            //iframe.remove();
//                            //iframeHolder.remove();
//                            //							var iframeHolder = new Element('INPUT', { 'type':'file','id':iFrameHolderName, 'style':'display:none'});
//                            //							document.body.appendChild(iframeHolder);
//                            $(formBackName).show();
//                            $(statusBackName).show();
//                        }
                    //});

                });

            }

            frm.method = 'post';
            //frm.setAttribute('enctype','multipart/form-data');
            frm.action = '../shop/iframe_upload.php';
            frm.target = iframeName;
            frm.submit();
//
        }
        else {
            if(status) {
                status.update('<span style="color:#aa0000">sorry, .'+ext+' is not a supported file type</span>');
            }
        }


            //iframe = $(iframe);



            //$("form"+suffix+"_"+num).submit();
           // $("status"+suffix+"_"+num).update("Uploading <img src=\"../images/upload.gif\" alt=\"Uploading image\" style=\"vertical-align:-3px\" />");
//        }
//        else {
           // $("status"+suffix+"_"+num).update("Sorry '"+ext+"' is an invalid file type");
//        }

    }

    function adjustVAT() {
        //console.log("vat");
        new Ajax.Request('../shop/xhr_cart.php', {
            method:     'POST',
            parameters: 'mode=vat',
            onSuccess: function(t) {

                var vat = t.responseText;
                $("myVAT").update(parseFloat(vat).numberFormat(2));
            }
        });
    }
    function adjustDeliveries() {
        new Ajax.Request('../shop/xhr_cart.php', {
            method:     'POST',
            parameters: 'mode=adjustDeliveries',
            onSuccess: function(t) {

                var details = t.responseText.evalJSON();
                $("deliveryOption").options[ 0 ].value = details.id;
                $("deliveryOption").options[ 0 ].innerHTML = details.text;

                new Ajax.Request('../shop/xhr_cart.php', {
                    method: 'post',
                    parameters: 'mode=total&delivery=' + $("deliveryOption").value,
                    onSuccess: function(t) {
                        $('myCartGrandTotal').update(parseFloat(t.responseJSON.grandtotalcost).numberFormat(2));
                    }
                });

            }
        });
    }

    function setGrandTotal(deliveryCost) {
        new Ajax.Request('../shop/xhr_cart.php', {
            method: 'post',
            parameters: 'mode=total&delivery=' + deliveryCost,
            onSuccess: function(t) {
                $('myCartGrandTotal').update(parseFloat(t.responseJSON.grandtotalcost).numberFormat(2));
                $("myDelivery").update(parseFloat(t.responseJSON.deliverycost).numberFormat(2));
            }
        });
        adjustVAT();

    }

    function copyDetails() {
        if($('same_add').checked == true) {
            name = $('user_first_name').value;
            name = name +" "+$('user_surname').value;
            $('user_ship_name').value = name;
            $('user_ship_ship1').value = $('user_ship1').value;
            $('user_ship_ship2').value = $('user_ship2').value;
            $('user_ship_ship3').value = $('user_ship3').value;
            $('user_ship_zip').value = $('user_zip').value;
            $('user_ship_city').value = $('user_city').value;
            $('user_ship_state').value = $('user_state').value;
            usc = $('user_ship_country')
            uc = $('user_country')
            usc.options[uc.selectedIndex].selected = true;
        } else {
            $('user_ship_name').value = "";
            $('user_ship_ship1').value = "";
            $('user_ship_ship2').value = "";
            $('user_ship_ship3').value = "";
            $('user_ship_zip').value = "";
            $('user_ship_city').value = "";
            $('user_ship_state').value = "";
            $('user_ship_country').options[0].selected = true;
        }
    }

    var init = function() {
        
        $$(".fileUpload").invoke("observe", "change", fileUpload);
        
        $$(".file-delete").invoke("observe", "click", deleteImage);

    }

    return {
        init: init,
        setGrandTotal: setGrandTotal,
        copyDetails: copyDetails
    }
}();


document.observe('dom:loaded', UK4Print.init.bindAsEventListener(UK4Print));
