(function($) {
    $.dialog = {
	// Default Settings
	modal: function(title, options) {
	    var buttons = {};
	    buttons["Schliessen".t("schliessen")] = function() {$(this).dialog('close')};
	    return $.extend({
		closeOnEscape: true,
		modal: true,
		width: 500,
		title: title || "",
		buttons: buttons
	    }, options || {});
	},

	error: function(message) {
	  $("body").addClass("noscroll");
	    $('<div><p class="error">'+message+'</p></div>').dialog({
		title: "Fehler".t("fehler"),
		buttons: {"OK": function() {$(this).dialog('close'); $("body").removeClass("noscroll"); }}
	    });
	},
  message: function(message) {
    $("body").addClass("noscroll");
	    $('<div><p>'+message+'</p></div>').dialog({
		title: "Hinweis".t("hinweis"),
		buttons: {"OK": function() {$(this).dialog('close'); $("body").removeClass("noscroll"); }}
	    });
	},

  askTerms: function(caller, callback) {
    var dialog = $('<div class="dialog terms"></div>').appendTo("body");
    $("body").addClass("noscroll");
    $(dialog).load("templates/dialogues/terms_"+Server.lang+".html", function() {
      var error = $("<p class='error'></p>");
      error.appendTo(dialog);
      dialog.find(".check").each(function() {
        $(this).before($("<input type='checkbox' />"));
      });
      var buttons = {};
	    buttons["OK"] = function() {
	      var checked = true;
	      dialog.find("input").each(function() {
          if (!$(this).attr("checked")) checked = false;
        });
        if (!checked) {
          error.text("Um den SIA 451-Viewer nutzen zu können, müssen Sie die allgemeinen Geschäftsbedingungen akzeptieren".t("termserror"));
        } else {
          error.text("");
          $("body").removeClass("noscroll");
          Server.approveTerms(function() {
            callback.call(caller, true);
          });
        }
	    };
	    buttons["Abbrechen".t("abbrechen")] = function(){$(this).dialog('close'); $("body").removeClass("noscroll"); callback.call(caller, false);};
      
      $(dialog).dialog({
        title: "Rechtliche Bestimmungen".t("rechtliche_bestimmungen"),
        buttons: buttons,
        width: 600,
        modal: true,
        closeOnEscape: false
      });
      $(".ui-dialog").css("marginTop", "0");
    });
	},

  /* BROWSER HINWEIS
  
  <p>Der Viewer wurde mit den gängigen Browsern Internet Explorer, Mozilla Firefox und Google Chrome getestet. In einigen wenigen Fällen wurde festgestellt, dass der Viewer mit Internet Explorer sehr langsam reagiert. Verwenden Sie in diesem Fall einen der unten aufgeführten Browsern: <img class="ilImg" src="crb-theme/images/firefox.png" /><a href="http://www.mozilla-europe.org/de/firefox/" onclick="window.open(this.href); return false;">Mozilla Firefox</a>, <img class="ilImg" src="crb-theme/images/chrome.png" /><a href="http://www.google.ch/chrome" onclick="window.open(this.href); return false;">Google Chrome</a>, <img class="ilImg" src="crb-theme/images/safari.png" /><a href="http://www.apple.com/safari" onclick="window.open(this.href); return false;">Safari</a>.</p>
  */


  oldLogin: function() {
    $("body").addClass("noscroll");
	    var dia = $('<div lang="de-info_old_login"><p>Aktualisiert und leistungsfähiger steht der neue SIA 451-Viewer für Sie bereit. Die neue Version basiert auf den Erfahrungen, die aus einem Jahr Anwendung gewonnen werden konnten. Mit der Nutzung des SIA 451-Viewers und mit Ihrem Feedback haben Sie und viele weitere Anwender diese Aktualisierung geprägt und mit gestaltet.</p><p>Mit der neuen Version wird der SIA 451-Viewer breit anwendbar und wie bereits angekündigt lizenzpflichtig. Um den SIA 451-Viewer weiter nutzen zu können, müssen Sie ihn bis spätestens Ende November 2010 lizenzieren.</p><p>Nähere Informationen zum Umstieg auf die neue Version des SIA 451-Viewers erhalten Sie per Post zugestellt.  Auf der folgenden Webseite finden Sie eine kleine Dokumentation sowie wertvolle Tipps & Tricks, die Ihre Arbeit mit dem SIA 451-Viewer einfacher machen. <a href="http://www.beta.crb.ch/p/crbApps/de/SIA451-Viewer.html" onclick="window.open(this.href); return false;">Info-Webseite zum SIA 451-Viewer</a></p><p>Innerhalb des SIA 451-Viewers gelangen Sie über die Hilfe ebenfalls auf diese Webseite.</p></div>').dialog({
		title: "Hinweis".t("hinweis"),
		modal: true,
		width: 600,
		buttons: {"OK": function() {$(this).dialog('close'); $("body").removeClass("noscroll"); }}
	    });
	    
	    dia.getLocalization();
	},

	// File löschen
	deleteFile: function(caller, fileId, callback) {
	    var warningMessage = "Soll die Datei wirklich gelöscht werden?".t("loeschen_warnung_datei");
	    message.deleteObject(caller, warningMessage, fileId, callback);
	},

	// Ordner löschen
	deleteFolder: function(caller, folderId, callback) {
	    var warningMessage = "<strong>Vorsicht:</strong> Der Ordner und alle darin enthaltenen Dateien werden gelöscht!".t("loeschen_warnung_ordner");
	    message.deleteObject(caller, warningMessage, folderId, callback);
	},


  // Offerta CD Import
	offertaImport: function(callback) {
	  message.importOfferta(this, function(response) {
            if (response.status.success) {
                if (response.data) {
                    callback(response.data);
                }
                $.dialog.message("Ihr Preisarchiv wurde importiert.".t("import_offerta_success"));
            } else {
                $.dialog.error(response.status.message);
            }
          });
	},

	// Exportieren
	exportFile: function(fileId) {
	    if (fileId === undefined) {
    		var file = $("#filebrowser .files .file.active");
    		if (file.length > 0) {
    		    var fileId = file.attr("rev").replace(/file_/,'');
    		} else {
    		    message.noFileOpen();
    		    return false;
    		}
	    }
	    //message.downloadStarts();
	    message.chooseExportType(this, function(type, firma, bearbeiter, telefon, email) {
    		Server.exportFile(fileId, type, firma, bearbeiter, telefon, email);
	    });
	},

	shiftExportFile: function(fileId) {
	    if (fileId === undefined) {
    		var file = $("#filebrowser .files .file.active");
    		if (file.length > 0) {
    		    var fileId = file.attr("rev").replace(/file_/,'');
    		} else {
    		    message.noFileOpen();
    		    return false;
    		}
	    }
	    //message.downloadStarts();
	    message.chooseExportType(this, function(type, firma, bearbeiter, telefon, email) {
    		Server.exportFile(fileId, "shiftpdf", firma, bearbeiter, telefon, email);
	    });
	},


	// Alte Dateien importieren
	importOldFiles: function() {
	    message.askImportOldFiles(this, function(type) {
	      if (type) {
	        var loadparams = {token: Server.token, app_id: Server.appId, lang: Server.lang};
  	      delete loadparams.firstRun;
          window.location = "application.html?"+$.param(loadparams);
	      }
	    });
	},

	moveFile: function(caller, fileName, callback) {
	    var folders = foldersList();
	    message.moveFile(caller, fileName, folders, callback);
	},

	manageFolders: function(caller, callbacks) {
	    var folders = foldersList();
	    var dialog = $('<div></div>');
	    var select = $("<select></select>");
	    select.append('<option value="">--'+"Wählen Sie einen Ordner".t("ordner_waehlen")+'--</option>');
	    $.each(folders, function(id, name) {
		select.append('<option value="'+id+'">'+name+'</option>');
	    });
	    var edit = $('<div id="edit_folder"></div>');

	    select.change(function() {
		edit.empty();
		if (select.val() != "") {
		    edit.append('<p>'+"Wählen Sie eine Aktion:".t("aktion_waehlen")+'</p>');
		    var list = $("<ul></ul>");
		    var rename_folder = $("<li><a href=''>"+"Umbenennen".t("umbenennen")+"</a></li>").appendTo(list);
		    var delete_folder = $("<li><a href=''>"+"Löschen".t("delete")+"</a></li>").appendTo(list);
		    edit.append(list);
		    $(rename_folder).click(function() {
			$(dialog).dialog('close');
			callbacks['renameFolder'].call(caller, select.val());
			return false;
		    });
		    $(delete_folder).click(function() {
			$(dialog).dialog('close');
			callbacks['deleteFolder'].call(caller, select.val());
			return false;
		    });
		}
	    });

	    dialog.append(select);
	    $(select).wrap('<p></p>');
	    dialog.append(edit);

	    buttons = {};
	    buttons["Abbrechen".t("abbrechen")] = function(){$(this).dialog('close')};
	    dialog.dialog({
		title: "Ordner verwalten".t("ordner_verwalten"),
		buttons: buttons
	    });
	},

	newFolder: function(caller, callback) {
	    var options = {
		title: "Neuer Ordner".t("neuer_ordner"),
		message: "Neuen Ordner anlegen:".t("neuen_ordner_anlegen"),
		confirmButton: "Neuer Ordner".t("neuer_ordner"),
		errorMessage: "Geben Sie einen Namen ein.".t('name_eingeben_fehler')
	    };
	    message.askName(this, options, "", function(newName) {
		callback.call(caller, newName);
	    });
	},
	preiseBearbeiten: function(caller, callback) {
  		var file = $("#filebrowser .files .file.active");
  		if (file.length > 0) {
  		    var fileId = file.attr("rev").replace(/file_/,'');
  		} else {
  		    message.noFileOpen();
  		    return false;
  		}

	    var options = {
  	    message: "Preise mit folgendem Prozentsatz bearbeiten.".t("preise_bearbeiten_msg"),
  	    title: "Preise bearbeiten".t("preise_bearbeiten_title"),
  	    confirmButton: "OK".t("preise_bearbeiten_confirm"),
  	    errorMessage: "Bitte geben Sie einen Prozentwert ein.".t("preise_bearbeiten_error")
  	  };

	    message.askPercent(this, options, "", function(newName) {
		    callback.call(caller, newName);
	    });
	},
	preiseUebernehmen: function(caller, callback) {
  		var file = $("#filebrowser .files .file.active");
  		if (file.length > 0) {
  		    var fileId = file.attr("rev").replace(/file_/,'');
  		} else {
  		    message.noFileOpen();
  		    return false;
  		}

	    var options = {
  	    message: "Preise zu folgendem Prozentsatz in Preisarchiv übernehmen.".t("preise_unehmen_msg"),
  	    title: "Preise in Preisarchiv übernehmen".t("preise_unehmen_title"),
  	    confirmButton: "OK".t("preise_unehmen_confirm"),
  	    errorMessage: "Bitte geben Sie einen Prozentwert ein.".t("preise_unehmen_error")
  	  };

	    message.askPercent(this, options, "", function(newName) {
		    callback.call(caller, newName);
	    });
	},
	preiseEinfuegen: function(caller, callback) {
  		var file = $("#filebrowser .files .file.active");
  		if (file.length > 0) {
  		    var fileId = file.attr("rev").replace(/file_/,'');
  		} else {
  		    message.noFileOpen();
  		    return false;
  		}

	    var options = {
  	    message: "Preise zu folgendem Prozentsatz aus Preisarchiv einfügen.".t("preise_einfugen_msg"),
  	    title: "Preise aus Preisarchiv einfügen".t("preise_einfugen_title"),
  	    confirmButton: "OK".t("preise_einfugen_confirm"),
  	    errorMessage: "Bitte geben Sie einen Prozentwert ein.".t("preise_einfugen_error")
  	  };

	    message.askPercent(this, options, "", function(newName) {
		    callback.call(caller, newName);
	    });
	},

	// Drucken
	printFile: function(fileId) {
	    if (fileId === undefined) {
    		var file = $("#filebrowser .files .file.active");
    		if (file.length > 0) {
    		    var fileId = file.attr("rev").replace(/file_/,'')
    		} else {
    		    message.noFileOpen();
    		    return false;
    		}
	    }
      
      var fileform = $("#filebrowser .files .file.active");

      
      
      
	    var inputs = "<div><div class='metainputs'><p>"+"Geben Sie Ihre Kontaktdaten ein:".t("kontaktdaten")+"</p>" +
            "<label for='firma'>"+"Firma".t("firma")+"</label>" +
            "<input type='text' name='firma' id='firma' />" +
            "<label for='sachbearbeiter' lang='de-sachbearbeiter'>"+"Sachbearbeiter".t("sachbearbeiter")+"</label>" +
            "<input type='text' name='sachbearbeiter' id='sachbearbeiter' />" +
            "<label for='telefon' lang='de-telefon'>"+"Telefon".t("telefon")+"</label>" +
            "<input type='text' name='telefon' id='telefon' />" +
            "<label for='e-mail' lang='de-email'>"+"E-Mail".t("email")+"</label>" +
            "<input type='text' name='e-mail' id='e-mail' /></div></div>";
      var text = $(inputs);
      $("body").addClass("noscroll");
      var buttons = {};
      buttons["OK"] = function(){
        Server.exportFile(fileId, "pdf", $("input[name=firma]", text).val(), $("input[name=sachbearbeiter]", text).val(), $("input[name=telefon]", text).val(), $("input[name=e-mail]", text).val());
        $(this).dialog('close'); 
        $("body").removeClass("noscroll");
        
        message.downloadStarts();
      }
      buttons["Abbrechen".t("abbrechen")] = function(){$(this).dialog('close'); $("body").removeClass("noscroll");}

      text.dialog({
    		title: "Datei Drucken".t("drucke_datei"),
    		buttons: buttons,
    		modal: true
      });
	    
      // $("input[name=firma]", text).val($(".informationen label[for=firma]", fileform).next().text());
      //       $("input[name=sachbearbeiter]", text).val($(".informationen label[for=sachbearbeiter]", fileform).next().text());
      //       $("input[name=telefon]", text).val($(".informationen label[for=telefon]", fileform).next().text());
      //       $("input[name=e-mail]", text).val($(".informationen label[for=e-mail]", fileform).next().text());
      
	    
	},

	// Umbenennen
	renameFile: function(caller, fileName, callback) {
	    var options = {
		title: "Umbenennen …".t("rename"),
		message: "Geben Sie der Datei einen neuen Namen:".t("neuer_name"),
		confirmButton: "Umbenennen …".t("rename"),
		errorMessage: "Geben Sie einen Namen ein.".t('name_eingeben_fehler')
	    };
	    message.askName(this, options, fileName, function(newName) {
		callback.call(caller, newName);
	    });
	},

	renameFolder: function(caller, folderName, callback) {
	    var options = {
		title: "Umbenennen …".t("rename"),
		message: "Geben Sie dem Ordner einen neuen Namen:".t("neuer_name_ordner"),
		confirmButton: "Umbenennen …".t("rename"),
		errorMessage: "Geben Sie einen Namen ein.".t('name_eingeben_fehler')
	    };
	    message.askName(this, options, folderName, function(newName) {
		callback.call(caller, newName);
	    });
	}
};


var message = {
  importOfferta: function(caller, callback) {
	    var text = $("<div><p>"+"Wählen Sie eine Preisarchiv Datei der Offerta CD aus:".t("import_offerta_msg")+"</p></div>");
      var formBlock = $('<form method="post" enctype="multipart/form-data"></form>');
      var fileinput = $('<input id="offertafile" name="file" type="file" size="50" maxlength="100000" accept="text/*" />');
      var error = $('<p class="error"></p>');
      $(fileinput).bind("change", function() {
        var file = $(this).val();
        file = file.replace(/.*(\/|\\)/, "");
        var ext = (/[.]/.exec(file)) ? /[^.]+$/.exec(file.toLowerCase()) : '';
        if (ext && ext[0] && ext[0] != "db") {
          error.empty().text("Die gewählte Datei scheint keine Offerta Datei zu sein. Bitte stellen Sie sicher, dass die Datei die Endung .db trägt.".t("offerta_ext"));
        } else error.empty();
      });

	    formBlock.append(fileinput);
	    text.append(formBlock);
	    text.append(error);
      var buttons = {};
      var ref = $(this);
      $("body").addClass("noscroll");
	    buttons["Preisarchiv importieren".t("import_offerta_ok")] = function(){
	      if ($("#offertafile").val() != "") {
		$(this).dialog('close');
		Server.importOfferta(formBlock, callback);
	      } else {
		text.find(".error").empty().text("Bitte eine Datei auswählen.".t("datei_auswaehlen"));
	      }
	    }
	    buttons["Abbrechen".t("import_offerta_cancel")] = function(){
	      $(this).dialog('close');
	      $("body").removeClass("noscroll");
	    }

	    text.dialog({
    		title: "Offerta Preisarchiv importieren".t("import_offerta_welcome"),
    		buttons: buttons,
    		modal: true
	    });
	},

  askImportOldFiles: function(caller, callback) {
	    var text = $("<div class='importoldfiles'><p>"+"Geben Sie Ihren alten Login ein, um Ihre Dateien zu übertragen:".t("import_old_msg")+"</p></div>");
      var loginBlock = $('<form></form>');
      var login = $('<label for="login" lang="de-login">Login</label><input name="login" id="login" value="" size="35" maxlength="50" type="text" class="textInput">');
      var pass = $('<label for="password" lang="de-passwort">Passwort</label><input name="password" id="password" value="" size="35" maxlength="20" type="password" class="textInput">');
      var error = $('<p class="error"></p>');
	    loginBlock.append(login).append(pass);
	    text.append(loginBlock);
	    text.append(error);
      var buttons = {};
      var ref = $(this);
      $("body").addClass("noscroll");
	    buttons["Alte Dateien importieren".t("import_old_ok")] = function(){
	      Server.importFilesWithOldLogin(loginBlock, function(response) {
	        if (response.status.success) {
            text.dialog('close');
            $("body").removeClass("noscroll");
            callback.call(caller, true);
          } else {
            error.text(response.status.message);
          }
	      })
	    }
	    buttons["Abbrechen".t("import_old_cancel")] = function(){ 
        text.dialog('close'); 
        $("body").removeClass("noscroll"); 
        callback.call(caller, false);
	    }

	    text.dialog({
    		title: "Willkommen".t("import_old_welcome"),
    		buttons: buttons,
    		modal: true
	    });
	},
	chooseExportType: function(caller, callback) {
    var inputs = "<p>"+"Geben Sie Ihre Kontaktdaten ein:".t("kontaktdaten")+"</p>" +
          "<label for='firma'>"+"Firma".t("firma")+"</label>" +
          "<input type='text' name='firma' id='firma' />" +
          "<label for='sachbearbeiter' lang='de-sachbearbeiter'>"+"Sachbearbeiter".t("sachbearbeiter")+"</label>" +
          "<input type='text' name='sachbearbeiter' id='sachbearbeiter' />" +
          "<label for='telefon' lang='de-telefon'>"+"Telefon".t("telefon")+"</label>" +
          "<input type='text' name='telefon' id='telefon' />" +
          "<label for='e-mail' lang='de-email'>"+"E-Mail".t("email")+"</label>" +
          "<input type='text' name='e-mail' id='e-mail' />";
    
    // var text = $("<div>"+"<div class='metainputs'>"+inputs+"</div>"+"<p>"+"Wählen Sie das gewünschte Dateiformat:".t("waehle_dateiformat")+"</p></div>");
    
    var text = $("<div>"+"<div class='metainputs'>"+inputs+"</div>"+"</div>");
    
    // var list = $('<ul class="download_files"></ul>');
    // var li_sia = $('<li class="sia_file_big">SIA451</li>').addClass("selected");
    // var li_xml = $('<li class="xml_file_big">XML</li>');
    // list.append(li_sia).append(li_xml);
    // text.append(list);
    var buttons = {};
    $("body").addClass("noscroll");
    buttons["OK"] = function(){
      var t = "01s";
    //  if (li_xml.hasClass("selected")) t = "pdf";
      
      callback.call(caller, t, $("input[name=firma]", text).val(), $("input[name=sachbearbeiter]", text).val(), $("input[name=telefon]", text).val(), $("input[name=e-mail]", text).val());
      $(this).dialog('close'); 
      $("body").removeClass("noscroll");
    }
    buttons["Abbrechen".t("abbrechen")] = function(){$(this).dialog('close'); $("body").removeClass("noscroll");}
    
    text.dialog({
  		title: "Datei Exportieren".t("exportiere_datei"),
  		buttons: buttons,
  		modal: true
    });
    //     li_sia.click(function() {
    //       li_xml.removeClass("selected");
    //       $(this).addClass("selected");
    // });
    //     li_xml.click(function() {
    //       li_sia.removeClass("selected");
    //       $(this).addClass("selected");
    // });
	},
	askPercent: function(caller, options, value, callback) {
	  var dialog = $('<div><p>'+options.message+'</p></div>');
  	var input = $('<input type="text" value="100" />');

    // Submit on return
    input.keyup(function(e) {
		  if (e.keyCode == 13) submit();
	  });
	  var block = $('<div class="percentBlock" />');
	  block.append(input).append("<b>%</b>");
    $(dialog).append(block);
    buttons = {};
    buttons[options.confirmButton] = function() {
		  submit();
	  }
	  buttons["Abbrechen".t("abbrechen")] = function() { $(this).dialog('close'); $.hideLoader(); };
	  $("body").addClass("noscroll");
	  $(dialog).dialog({
		  title: options.title,
		  modal: true,
		  buttons: buttons
	  });
	  function submit() {
  		if (!isNaN(parseInt(input.val()))) {
  		  callback.call(caller, parseInt(input.val()));
  		  $(dialog).dialog('close');
  		  $("body").removeClass("noscroll");
  		} else {
  		  dialog.append('<p class="error">'+options.errorMessage+'</p>');
  		}
	  }
	},

	deleteObject: function(caller, message, objectId, callback) {
	    var dialog = $('<p>'+message+'</p>');
	    var buttons = {};
	    $("body").addClass("noscroll");
	    buttons["Löschen".t("delete")] = function() {
		$(dialog).dialog('close');
		$("body").removeClass("noscroll");
		callback.call(caller);
	    };
	    buttons["Abbrechen".t("abbrechen")] = function() {$(this).dialog('close'); $("body").removeClass("noscroll"); };
	    dialog.dialog({
		closeOnEscape: true,
		modal: true,
		width: 300,
		title: "Löschen".t("delete"),
		buttons: buttons
	    });
	},

	downloadStarts: function() {
	    $("<div>"+"Der Download startet in wenigen Augenblicken.".t("download_start")+"</div>")
            .dialog({
		title: "Datei Drucken".t("drucke_datei"),
		buttons: {"OK": function() {$(this).dialog('close')}}
	    });
	},

	noFileOpen: function() {
	    $("<div>"+"Es muss eine Datei geöffnet sein.".t("offene_datei")+"</div>")
	    .dialog({
		title: "Fehler".t("fehler"),
		modal: true,
		buttons: {"OK": function() {$(this).dialog('close')}}
	    });
	},

	moveFile: function(caller, fileName, folders, callback) {
	    var dialog = $("<div><p><code>"+fileName+"</code>"+" verschieben nach:".t("verschieben_nach")+"</p></div>");
	    var select = $("<select></select>");
	    $.each(folders, function(id, name) {
            select.append('<option value="'+id+'">'+name+'</option>');
	    });
	    dialog.append(select);
	    buttons = {};
	    buttons["Verschieben".t("verschieben")] = function() {
		callback.call(caller, $(select).val());
		$(this).dialog('close');
	    };
	    buttons["Abbrechen".t("abbrechen")] = function(){$(this).dialog('close')};
	    dialog.dialog({
		title: "Verschieben …".t("verschieben"),
		modal: true,
		buttons: buttons
	    });
	},

	askName: function(caller, options, value, callback) {
	    var dialog = $('<div><p>'+options.message+'</p></div>');
	    var input = $('<input type="text" value="'+value+'" />');

	    // Submit on return
	    input.keyup(function(e) {
		if (e.keyCode == 13) submit();
	    });
	    $(dialog).append(input);
	    buttons = {};
	    buttons[options.confirmButton] = function() {
		submit();
	    }
	    buttons["Abbrechen".t("abbrechen")] = function() {$(this).dialog('close')};
	    $(dialog).dialog({
		title: options.title,
		modal: true,
		buttons: buttons
	    });
	    function submit() {
		if (input.val() != "") {
		    callback.call(caller, input.val());
		    $(dialog).dialog('close');
		} else {
		    dialog.append('<p class="error">'+options.errorMessage+'</p>');
		}
	  }
	}
	
	
	
  
  
  
  };

    function foldersList() {
    	var folders = {};
    	$.each($("#file-list-data li[rel^=folder_]"), function(i, el) {
    	    var fid  = $(el).attr("rel").replace(/folder_/,'');
    	    var name = $(el).find(".folder_name").text();
    	    folders[fid] = name;
    	});
    	return folders;
    }

})(jQuery);


$(document).ready(function() {

  /*
   * Auto-Binding Dialogues
   */
  $("a[rel=dialog_terms]").click(function() {
    var dialog = $('<div class="dialog terms"></div>').appendTo("body");
    $("body").addClass("noscroll");
    $(dialog).load("templates/dialogues/terms_"+Server.lang+".html", function() {
      dialog.find(".check").remove();
      $(dialog).dialog($.dialog.modal("Rechtliche Bestimmungen".t("rechtliche_bestimmungen")));
      $(dialog).dialog({
         close: function(event, ui) { $("body").addClass("noscroll"); }
      });
    });
    return false;
  });
  
  $("a[rel=dialog_termsofuse]").click(function() {
    var dialog = $('<div class="dialog termsofuse"></div>').appendTo("body");
    $("body").addClass("noscroll");
    $(dialog).load("templates/dialogues/termsofuse_"+Server.lang+".html", function() {
      $(dialog).dialog($.dialog.modal("Nutzungsbedingungen".t("nutzungsbedingungen")));
      $(dialog).dialog({
         close: function(event, ui) { $("body").addClass("noscroll"); }
      });
    });
    return false;
  });

  $("a[rel=dialog_help]").click(function() {
    var dialog = $('<div class="dialog"></div>').appendTo("body");
    $("body").addClass("noscroll");
    $(dialog).load("templates/dialogues/help_"+Server.lang+".html", function() {
      $(dialog).dialog($.dialog.modal("Hilfe".t("hilfe")));
      $(dialog).dialog({
         close: function(event, ui) { $("body").addClass("noscroll"); }
      });
    });
    return false;
  });
  
  $("a.bpunehmen").live("click", function() {
    var file = $("#filebrowser .files .file.active");
    var field = $("input", $(this).parent());
    var id = field.attr("name");
    var val = field.val();
    $("body").addClass("noscroll");
    
    var buttons = {};
    buttons["OK"] = function(){
	    $(this).dialog('close'); 
	    $("body").removeClass("noscroll");
	    
	    Server.archiveFileElement({id: id, value: val}, function(response) {
        if (response.data) {
          if (response.data.length) {
            $.each(response.data, function(i, e) {
              $("#file-list li.archives tbody").append(fileTemplate(e, true));
            });
          } else {
            $("#file-list li.archives tbody").append(fileTemplate(response.data, true));
          }
        }
        
        
        if (response.status.success) {
          $.dialog.message("Ihr Preis wurde im Preisarchiv gespeichert.".t("preis_unehmen_success"));
	      } else {
	       $.dialog.error(response.status.message); 
	      }
      });
    };
    
    buttons["Abbrechen".t("abbrechen")] = function(){ 
      $(this).dialog('close');
      $("body").removeClass("noscroll");
      $.hideLoader();
    };
    
    
	  $('<div><p>'+"Preis für diese Position in Preisarchiv übernehmen? Falls diese Position im Preisarchiv bereits vorhanden ist, wird diese überschrieben.".t("preis_unehmen_msg")+'</p></div>').dialog({
		  title: "Preis in Preisarchiv übernehmen".t("preis_unehmen_title"),
		  buttons: buttons,
		  modal: true
	  });
    
    
    
    return false;
  });

  $("a[rel=file_punehmen]").live("click", function() {
    var file = $("#filebrowser .files .file.active");
    if (!file.hasClass("readonly")) {
      
      $.showLoader();
      $("body").addClass("noscroll");
    
      var buttons = {};
      buttons["OK"] = function(){
  	    $(this).dialog('close'); 
  	    $("body").removeClass("noscroll");
  	    $.dialog.preiseUebernehmen(file, function(val) {
          var fileform = $("form", this);
          var fileId = file.attr("rev").match(/file_(.*)/)[1];
          Server.pushToArchive(fileId, val, function(response) {
            $.hideLoader();
            if (response.data) {
              if (response.data.length) {
                $.each(response.data, function(i, e) {
                  $("#file-list li.archives tbody").append(fileTemplate(e, true));
                });
              } else {
                $("#file-list li.archives tbody").append(fileTemplate(response.data, true));
              }
            }


            if (response.status.success) {
              $.dialog.message("Ihre Preise wurden im Preisarchiv gespeichert.".t("pa_uebernehmen_success"));
            } else {
              $.dialog.error(response.status.message);
            }
          });
        });
      
      };
    
      buttons["Abbrechen".t("abbrechen")] = function(){ 
        $(this).dialog('close');
        $("body").removeClass("noscroll");
        $.hideLoader();
      };
    
  	  $('<div><p>'+"Bitte beachten Sie, dass alle Preise im Preisarchiv mit den Werten aus dieser Datei überschrieben werden.".t("pa_uebernehmen_warning")+'</p></div>').dialog({
  		  title: "Hinweis".t("hinweis"),
  		  buttons: buttons
  	  });
    }
    
    return false;
  });
  $("a[rel=file_peifugen]").live("click", function() {
    var file = $("#filebrowser .files .file.active");
    if (!file.hasClass("readonly")) $.dialog.preiseEinfuegen(file, function(val) {
      var fileform = $("form", this);
      var fileId = file.attr("rev").match(/file_(.*)/)[1];
      $.showLoader();
      Server.getArchiveForFile(fileId, val, function(response) {
        if (response.status.success) {
            if (response.data) {
              $.each(response.data, function(index, item) {
                file.find("input[name="+item.id+"]").val(parseFloat(item.text)).format({locale:"ch"}).trigger("recalc");
              });
              file.trigger('recalc');
            }
          $.dialog.message("Ihre Preise aus dem Preisarchiv wurden erfolgreich übernommen.".t("pa_einfugen_success"));
        } else {
          $.dialog.error(response.status.message);
        }
        Server.updateFile(fileform, function(response) {
          $.hideLoader();
          if (response.status.success) {
          } else {
            $.dialog.error(response.status.message);
          }
        });
      });
    });
    return false;
  });

  $("a[rel=file_pbearbeiten]").live("click", function() {
    var file = $("#filebrowser .files .file.active");
    if (!file.hasClass("readonly")) $.dialog.preiseBearbeiten(file, function(val) {
      var fileform = $("form", this);
      var fileId = file.attr("rev").match(/file_(.*)/)[1];
      $.showLoader();
      Server.multiplyPrices(fileId, val, function(response) {
        if (response.status.success) {
            if (response.data)  {
                $.each(response.data, function(index, item) {
                    file.find("input[name="+item.id+"]").val(parseFloat(item.text)).format({locale:"ch"}).trigger("recalc");
                });
                file.trigger('recalc');
            }
        } else {
          $.dialog.error(response.status.message);
        }
        Server.updateFile(fileform, function(response) {
          $.hideLoader();
          if (response.status.success) {
          } else {
            $.dialog.error(response.status.message);
          }
        });
      });
     });
    return false;
  });


  $("a[rel=file_close]").live("click", function() {
    var file = $("#filebrowser .files .file.active");
    var fileId = file.attr("rev").match(/file_(.*)/)[1];
    $(document).trigger("file.close", fileId);
    return false;
  });

  // File Export
  $("a[rel=file_export]").live("click", function() {
    $.dialog.exportFile();
    return false;
  });

  // File Print
  $("a[rel=file_print]").live("click", function() {
      $.dialog.printFile();
  });
  $("a[rel=file_shortprint]").live("click", function() {
      var file = $("#filebrowser .files .file.active");
  		if (file.length > 0) {
  		    var fileId = file.attr("rev").replace(/file_/,'');
  		    //$.dialog.exportFile(fileId);
  		    Server.exportFile(fileId, "shiftpdf");
  		} else {
  		    $("body").addClass("noscroll");
  		    $("<div>"+"Es muss eine Datei geöffnet sein.".t("offene_datei")+"</div>").dialog({
        		title: "Fehler".t("fehler"),
        		modal: true,
        		buttons: {"OK": function() {$(this).dialog('close');$("body").removeClass("noscroll");}}
    	    });
  		    return false;
  		}
  });
});
