﻿/*********************************************************************/
/*                                                                   */
/* Copyright (C) 2007 Adobe Systems, Inc. All rights reserved.       */
/*                                                                   */
/* Module Name: fireworks.jsx                                        */
/*                                                                   */
/* Description: Fireworks Cross-DOM implementation for the Bridge.   */
/*                                                                   */
/*                                                                   */
/* NOTICE:  All information contained herein or attendant            */
/* hereto is, and remains, the property of Adobe Systems, Inc.       */
/* Many of the intellectual and technical concepts contained         */
/* herein are proprietary to Adobe Systems, Inc. and may be          */
/* covered by U.S. and Foreign Patents or Patents Pending or         */
/* are protected as trade secrets.  Any dissemination of this        */
/* information or reproduction of this material are strictly         */
/* forbidden unless prior written permission is obtained from        */
/* Adobe Systems, Inc.                                               */
/*                                                                   */
/*********************************************************************/


/*
@@@START_XML@@@
<?xml version="1.0" encoding="UTF-8"?>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en_US">
     <dc:title>Adobe Fireworks CS6</dc:title>
     <dc:description>This script enables other applications to communicate with Adobe Fireworks CS6.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="cs_CZ">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Tento skript umožňuje jiným aplikacím komunikovat s programem Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="de_DE">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Dieses Skript ermöglicht es anderen Anwendungen, mit Adobe Fireworks CS6. zu kommunizieren.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="es_ES">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>El archivo de comandos permite a otras aplicaciones comunicarse con Adobe Fireworks CS6.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="es_LA">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>El archivo de comandos permite a otras aplicaciones comunicarse con Adobe Fireworks CS6.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="fr_FR">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Ce script permet à d'autres applications de communiquer avec Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="fr_CA">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Ce script permet à d'autres applications de communiquer avec Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="hu_HU">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Ez a parancsfájl lehetővé teszi más alkalmazások számára, hogy kommunikáljanak az Adobe Fireworks CS6. programmal.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="it_IT">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Questo script consente ad altre applicazioni di comunicare con Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ko_KR">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>이 스크립트는 다른 응용 프로그램이 Adobe Fireworks CS6.에 연결하도록 해줍니다.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="nl_NL">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Met dit script kunnen andere toepassingen communiceren met Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="pl_PL">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Ten skrypt umożliwia innym aplikacjom komunikację z programem Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="pt_BR">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Este script permite que outros aplicativos se comuniquem com o Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ru_RU">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Этот сценарий позволяет другим приложениям взаимодействовать с Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="tr_TR">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Bu komut dosyası, diğer uygulamaları Adobe Fireworks CS6. ile iletişim kurmaları için etkinleştirir.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="uk_UA">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Цей сценарій забезпечує обмін даними між Adobe Fireworks CS6. та іншими програмами.</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="zh_CN">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>该脚本使其他应用程序可以与 Adobe Fireworks CS6. 通信。</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="zh_TW">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>此指令可讓其他應用程式和 Adobe Fireworks CS6. 通訊。</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="da_DK">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Dette script gør det muligt for andre programmer at kommunikere med Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="sv_SE">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Det här skriptet gör att andra program kan kommunicera med Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja_JP">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>このスクリプトを使用して、他のアプリケーションと Adobe Fireworks CS6. を通信させることができます。</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ar_AE">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>هذا النص التنفيذي يتيح للتطبيقات الأخرى التواصل مع Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="el_GR">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>Αυτή η δέσμη ενεργειών δίνει τη δυνατότητα σε άλλες εφαρμογές να επικοινωνούν με το Adobe Fireworks CS6..</dc:description>
</ScriptInfo>
<ScriptInfo xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="he_IL">
     <dc:title>Adobe Fireworks CS6.</dc:title>
     <dc:description>סקריפט זה מאפשר ליישומים אחרים לתקשר עם Adobe Fireworks CS6.</dc:description>
</ScriptInfo>

@@@END_XML@@@
*/

/**
   Set debugging level: 0-2 (0:disable, 1:break on error, 2:break at beginning)
*/
$.level = 0;

/**
  Guard against loading of multiple revisions of the same startup script. The latest revision
  will take precedence.
*/

try
{ // overall try-catch

fireworks = new Object;
fireworks.revision = "CS6";			// in-sync: revision # of current startup script
fireworks.appName = "Adobe%20Fireworks";
fireworks.targetName = "Fireworks";
fireworks.highestInstalledTargetName = BridgeTalk.getSpecifier(fireworks.targetName);


alertMsg = {
	en_US: "Folders cannot be used for this command.",
	de_DE:"Mit diesem Befehl können keine Ordner verwendet werden.",
	fr_FR:"Les dossiers ne peuvent pas être utilisés pour cette commande.",
	fr_CA:"Les dossiers ne peuvent pas être utilisés pour cette commande.",
	ja_JP:"このコマンドでフォルダーは使用できません。",
	es_ES:"Las carpetas no se pueden utilizar para este comando.",
	es_LA:"Las carpetas no se pueden utilizar para este comando.",
	it_IT:"Impossibile utilizzare le cartelle per questo comando.",
	nl_NL:"Voor deze opdracht kunnen geen mappen worden gebruikt.",
	pt_BR:"As pastas não podem ser usadas para este comando.",
	sv_SE:"Det här kommandot kan inte användas på mappar.",
	ko_KR:"폴더를 이 명령에 사용할 수 없습니다.",
	zh_CN:"不能将文件夹用于此命令。",
	zh_TW:"資料夾無法用於此命令。",
	cs_CZ:"Složky nelze použít pro tento příkaz.",
	pl_PL:"Tego polecenia nie można zastosować z folderami.",
	ru_RU:"Для выполнения этой команды выбор папок невозможен.",
	tr_TR:"Bu komut için klasörler kullanılamaz.",
	ar_AE: "Folders cannot be used for this command.",
	he_IL: "Folders cannot be used for this command.",
	el_GR: "Folders cannot be used for this command."
};

 fireworksMenu= {
	en_US: "Fireworks",
	de_DE:"Fireworks",
	fr_FR:"Fireworks",
	fr_CA:"Fireworks",
	ja_JP:"Fireworks",
	es_ES:"Fireworks",
	es_LA:"Fireworks",
	it_IT:"Fireworks",
	nl_NL:"Fireworks",
	pt_BR:"Fireworks",
	sv_SE:"Fireworks",
	ko_KR:"Fireworks",
	zh_CN:"Fireworks",
	zh_TW:"Fireworks",
	cs_CZ:"Fireworks",
	pl_PL:"Fireworks",
	ru_RU:"Fireworks",
	tr_TR:"Fireworks",
	ar_AE: "Fireworks",
	he_IL: "Fireworks",
	el_GR: "Fireworks"
};

convertToSepia = {
	en_US: "Convert To Sepia",
	de_DE:"Sepia-Konvertierung",
	fr_FR:"Convertir en sépia",
	fr_CA:"Convertir en sépia",
	ja_JP:"セピア色に変換",
	es_ES:"Convertir a tonos sepia",
	es_LA:"Convertir a tonos sepia",
	it_IT:"Converti in seppia",
	nl_NL:"Omzetten in sepia",
	pt_BR:"Converter em tom sépia",
	sv_SE:"Konvertera till sepia",
	ko_KR:"세피아톤으로 변환",
	zh_CN:"转换为乌金色调",
	zh_TW:"轉換為深褐色調",
	cs_CZ:"Převést na sépiový",
	pl_PL:"Konwertuj na sepię",
	ru_RU:"Преобразовать в сепию",
	tr_TR:"Sepya Tonuna Dönüştür",
	ar_AE: "Convert To Sepia",
	he_IL: "Convert To Sepia",
	el_GR: "Convert To Sepia"
};

convertToGreyScale = {
	en_US: "Convert To Grayscale",
	de_DE:"In Graustufen konvertieren",
	fr_FR:"Convertir en niveaux de gris",
	fr_CA:"Convertir en niveaux de gris",
	ja_JP:"グレースケールに変換",
	es_ES:"Convertir en escala de grises",
	es_LA:"Convertir en escala de grises",
	it_IT:"Converti in scala di grigi",
	nl_NL:"Omzetten in grijswaarden",
	pt_BR:"Converter em escala de cinza",
	sv_SE:"Konvertera till gråskala",
	ko_KR:"회색 음영으로 변환",
	zh_CN:"转换为灰度",
	zh_TW:"轉換為灰階",
	cs_CZ:"Převést na stupně šedi",
	pl_PL:"Konwertuj na skalę szarości",
	ru_RU:"Преобразовать в градации серого",
	tr_TR:"Gri tonlamaya dönüştür",
	ar_AE: "Convert To Grayscale",
	he_IL: "Convert To Grayscale",
	el_GR: "Convert To Grayscale"
};

invertSelectionColor = {
	en_US: "Invert Selection Color",
	de_DE:"Auswahlfarbe umkehren",
	fr_FR:"Inverser la couleur de la sélection",
	fr_CA:"Inverser la couleur de la sélection",
	ja_JP:"選択範囲のカラーを反転",
	es_ES:"Invertir color de selección",
	es_LA:"Invertir color de selección",
	it_IT:"Inverti colore selezione",
	nl_NL:"Selectiekleur omkeren",
	pt_BR:"Inverter cor da seleção",
	sv_SE:"Invertera markerad färg",
	ko_KR:"선택물 색상 반전",
	zh_CN:"反转所选的颜色",
	zh_TW:"反轉選取範圍顏色",
	cs_CZ:"Invertovat barvy výběru",
	pl_PL:"Odwróć kolor zaznaczenia",
	ru_RU:"Инвертировать цвет выделения",
	tr_TR:"Seçim Rengini Ters Çevir",
	ar_AE: "Invert Selection Color",
	he_IL: "Invert Selection Color",
	el_GR: "Invert Selection Color"
};

batchProcess = {
	en_US: "Batch Process...",
	de_DE:"Batch-Verarbeitung...",
	fr_FR:"Traitement par lots...",
	fr_CA:"Traitement par lots...",
	ja_JP:"バッチ処理...",
	es_ES:"Procesar por lotes...",
	es_LA:"Procesar por lotes...",
	it_IT:"Elaborazione batch...",
	nl_NL:"Batchverwerking...",
	pt_BR:"Processo em lote...",
	sv_SE:"Gruppbearbeta...",
	ko_KR:"일괄 처리...",
	zh_CN:"批处理...",
	zh_TW:"批次處理...",
	cs_CZ:"Dávkově zpracovat...",
	pl_PL:"Przetwarzanie wsadowe...",
	ru_RU:"Пакетная обработка...",
	tr_TR:"Toplu İşleme",
	ar_AE: "Batch Process...",
	he_IL: "Batch Process...",
	el_GR: "Batch Process..."
};

ExportToFXG = {
	en_US: "Export To FXG",
	de_DE:"In FXG exportieren",
	fr_FR:"Exporter au format FXG",
	fr_CA:"Export To FXG",
	ja_JP:"FXG に書き出しを選択します",
	es_ES:"Exportar a FXG",
	es_LA:"Export To FXG",
	it_IT:"Esporta in FXG",
	nl_NL:"Exporteren naar FXG",
	pt_BR:"Exportar para FXG",
	sv_SE:"Exportera till FXG",
	ko_KR:"FXG로 내보내기",
	zh_CN:"导出至 FXG",
	zh_TW:"匯出至 FXG",
	cs_CZ:"Export do FXG",
	pl_PL:"Eksportuj do FXG",
	ru_RU:"Экспортировать в FXG",
	tr_TR:"FXG'ye Dışa Aktar",
	ar_AE: "Export To FXG",
	he_IL: "Export To FXG",
	el_GR: "Export To FXG"
};

//*******************************************************************************************************************************
//CROSS DOM API
fireworks.open = function ( files )
{
    if( BridgeTalk.appName == fireworks.targetName )
    {	
		BridgeTalk.bringToFront(fireworks.targetName);
		
		var filesString = fireworks.fileArrayToString ( files );
		
		var reply = true;
		for( var i = 0; i < filesString.length; i++ )
		{
			try
			{
				app.openDocument( filesString[i] );				
			}
			catch (err)
			{
				reply = false;
				rs = ("Error on open(): " + (err.number & 0xFFFF) + ", " + err.description + ", " + fileArray[i].toString() );
				alert(rs);
			}
		}
		return reply;
	}
	else
	{
		// create a BridgeTalk message for fireworks to invoke open
		var filesString = fireworks.fileArrayToString ( files );

        var btMessage = new BridgeTalk;
        btMessage.target = fireworks.targetName;
       	btMessage.body = "fw.openDocument (" + filesString + ");";
        btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
        btMessage.send();
    }
}

/**
  Create a new un-titled document. 
  @param  creationOptions not supported by FW
  @return true if new artwork is successfully created.
*/
fireworks.openAsNew = function ()
{
    if( BridgeTalk.appName == fireworks.targetName )
    {			
       	BridgeTalk.bringToFront(fireworks.targetName);		

		var doc = null;
		
		try
		{
				doc = app.openDocument( NULL, true);
		}
		catch (err)
		{
		}
        if (doc != null)
            return true;
        else
            return false;
	}
	else
	{
		// create a BridgeTalk message for Fireworks to invoke openAsNew
        var btMessage = new BridgeTalk;
        btMessage.target = fireworks.targetName;
        btMessage.body = "fireworks.openAsNew;";
        btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
        btMessage.send();
	}
}

/**
  Do the file print.  -- UNSUPPORTED 
  @param  files File or Array of File to be printed.
  @return true if all the files are successfully printed.
*/
fireworks.print = function ( files )
{
   // DO NOTHING
}

/**
  Shutdown fireworks.
  @param  none.
  @return none.
*/
fireworks.quit = function ()
{
	if( BridgeTalk.appName == fireworks.targetName )
    {			
		try
		{
			fw.quit();
		}
		catch (err)
		{
			//rs = ("Error on quit(): " + (err.number & 0xFFFF) + ", " + err.description);
			//alert(rs);
		}
	}
	else
	{
		// create a BridgeTalk message for Fireworks to invoke quit
        var btMessage = new BridgeTalk;
        btMessage.target = fireworks.targetName;
        btMessage.body = "fireworks.quit();";
        btMessage.send();
	}
}

/**
  Execute arbitrary fireworks JavaScript.
  @param  jsscript The script for the Fireworks to run.
  @return result from evaluating the script.
*/
fireworks.executeScript = function ( jsscript ) 
{
    if( BridgeTalk.appName == fireworks.targetName )
    {			
		BridgeTalk.bringToFront(fireworks.targetName);

		try
		{
			return fw.eval(jsscript);
		}
		catch (err)
		{
			rs = ("Error on executeScript(): " + (err.number & 0xFFFF) + ", " + err.description);
			alert(rs);
		}
	}
	else
	{
		// create a BridgeTalk message for Fireworks to invoke executeScript
        var btMessage = new BridgeTalk;
        btMessage.target = fireworks.targetName;
        btMessage.body = "fireworks.executeScript(" + jsscript + ");";
        btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
        btMessage.send();
	}
}
//*******************************************************************************************************************************
//FIREWORKS SPECIFIC COMMANDS
/**
  Convert selected images to gray scale.
  @param  none.
  @return none.
*/

fireworks.convertToGrayScale = function ()
{
	if (BridgeTalk.appName == "bridge")
	{
		var files = fireworks.getBridgeFileList ();
		if (files.length > 0)
		{
		var filesString = fireworks.fileArrayToString ( files );
		
        var btMessage = new BridgeTalk;
        btMessage.target = fireworks.targetName;
        btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
	/*	btMessage.launchTarget( btMessage.target, 
                          "mmoptimize", 
                          1 );
        btMessage.body = 'alert("hidden mode")';
        btMessage.send();
		*/
		//btMessage.body = '';
        if(files.length > 0)
        {
        	for( var i = 0; i < filesString.length; i++ )
        	{
        		btMessage.body = 'fw.openDocument (' + filesString[i] + ');';
        		btMessage.body += 'fw.runScript(fw.appJsCommandsDir+"/Creative/Convert%20to%20Grayscale.jsf")';
        		var ret = btMessage.send();
        	}
        }
        else
        {
        	btMessage.body += 'fw.openDocument (' + filesString + ');';
      		btMessage.body += 'fw.runScript(fw.appJsCommandsDir+"/Creative/Convert%20to%20Grayscale.jsf")';
      		btMessage.send();
      	}
      	BridgeTalk.bringToFront(fireworks.targetName);
        }
     }
}

fireworks.convertToSepia = function ()
{
	if (BridgeTalk.appName == "bridge")
	{
		var files = fireworks.getBridgeFileList ();
		//Window.alert(files);
		if (files.length > 0)
		{
		var filesString = fireworks.fileArrayToString ( files );
		
        var btMessage = new BridgeTalk;
        btMessage.target = fireworks.targetName;
        btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
		
        if(files.length > 0)
        {
        	for( var i = 0; i < filesString.length; i++ )
        	{
        		btMessage.body = 'fw.openDocument (' + filesString[i] + ');';
        		btMessage.body += 'fw.runScript(fw.appJsCommandsDir+"/Creative/Convert%20to%20Sepia%20Tone.jsf")';
        		btMessage.send()
        	}
        }
        else
        {
        	btMessage.body = 'fw.openDocument (' + filesString + ');';
      		btMessage.body += 'fw.runScript(fw.appJsCommandsDir+"/Creative/Convert%20to%20Sepia%20Tone.jsf")';
      		btMessage.send()
      	}
      	BridgeTalk.bringToFront(fireworks.targetName);
        }
     }
}

fireworks.ExportToFXG = function ()
{
	if (BridgeTalk.appName == "bridge")
	{
		var files = fireworks.getBridgeFileList ();		
		if (files.length == 1)
		{
			var filesString = fireworks.fileArrayToString ( files );
		     var btMessage = new BridgeTalk;
			btMessage.target = fireworks.targetName;
			btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
			if((filesString[0].search(".png") != -1) || (filesString[0].search(".PNG") != -1))
			{
				btMessage.body = 'fw.openDocument (' + filesString[0] + ');';
				btMessage.body += 'fw.fxgOutput = "fromBridge";';
				btMessage.body += 'fw.runScript(fw.appHtmlCodeDir+"/Export to FXG.jsf")';
				btMessage.send()
			}
			BridgeTalk.bringToFront(fireworks.targetName);
		}
	}
}


fireworks.commandBatchInvert = function ()
{
	if (BridgeTalk.appName == "bridge")
	{
		var files = fireworks.getBridgeFileList ();
		if (files.length > 0) 
		{
		var filesString = fireworks.fileArrayToString ( files );
		
        var btMessage = new BridgeTalk;
        btMessage.target = fireworks.targetName;
        btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
		
        if(files.length > 0)
        {
        	for( var i = 0; i < filesString.length; i++ )
        	{
        		btMessage.body = 'fw.openDocument (' + filesString[i] + ');';
        		btMessage.body += 'fw.runScript(fw.appJsCommandsDir+"/Batch%20Commands/Select%20All.jsf");fw.runScript(fw.appJsCommandsDir+"/Batch%20Commands/Invert%20Selection%20Color.jsf");';
        		btMessage.send()
        	}
        }
        else
        {
        	btMessage.body = 'fw.openDocument (' + filesString + ');';
      		btMessage.body += 'fw.runScript(fw.appJsCommandsDir+"/Batch%20Commands/Select%20All.jsf");fw.runScript(fw.appJsCommandsDir+"/Batch%20Commands/Invert%20Selection%20Color.jsf");';
        	btMessage.send()
      	}
      	BridgeTalk.bringToFront(fireworks.targetName);
        }
     }
}

fireworks.commandBatchProcess = function ()
{
	if (BridgeTalk.appName == "bridge")
	{
		var fl = new Array;
		fl = fireworks.getBridgeFileList ();
		if (fl.length > 0) 
		{
		//var filesString = fireworks.fileArrayToString ( files );
		var btMessage = new BridgeTalk;
		//btMessage.launchTarget( fireworks.targetName,"mmhidden");
        
        btMessage.target = fireworks.targetName;
        btMessage.onResult = function(bto) {BridgeTalk.bringToFront(bto.sender);}
        //Window.alert(fl.toSource().split(','));
        btMessage.body = 'fw.doBatchProcess('+fl.toSource().split(',')+');';
        btMessage.send();
        BridgeTalk.bringToFront(fireworks.targetName);
        }
     }
}

fireworks.fileArrayToString = function ( files )
{
	var fileArray = new Array;
	if (files instanceof File)
		fileArray.push(files);
	else 
		fileArray = files.concat(fileArray);
    
    var filesString = fileArray.toSource();
    //remove quotes, starting and ending brackets
	var str = filesString.split('[');
	str = str[1].split(']');
	str = str[0].split(',');
   	return str;
}


fireworks.thumbnailArrayToFileArray = function (thumbnails)
{
	var filesArray = new Array ();
	
	for (var index = 0; index < thumbnails.length; index++ )
	{
		// Filter out folders
		if (!thumbnails[index].container)
		{
			var fname = thumbnails[index].spec.getRelativeURI("/");
			//var fname = thumbnails[index].spec.absoluteURI;
			var c = fname.substr(0,2);
			fname = "file://"+fname.replace(c,c+"|");
			filesArray.push (fname);
		}
		else
		{
			//Window.alert (localize ("$$$/PSBI/Automate/FoldersNotAllowed=Folders cannot be used for this command.")
			Window.alert (localize (alertMsg));
			}
	}
		
	return filesArray;
}


fireworks.getBridgeFileList = function ()
{	
	var files = new Array;
	if (app.document.thumbnail != undefined)
	{
		if (app.document.selections.length > 0)
		{
			files = fireworks.thumbnailArrayToFileArray (app.document.selections);
			
		}
		else if (app.document.thumbnail.children.length > 0)
		{
			files = fireworks.thumbnailArrayToFileArray (app.document.thumbnail.children);
		}
	}
		
	return files;
}
/**
  This routine inserts the "Convert to gray scale, Convert To Sepia to Fireworks" menu item into the Bridge tools menu.
*/

if (BridgeTalk.appName == "bridge")
{
	var exportMenu = MenuElement.find ("fw");
	if (exportMenu == null)
	{
		newMenu = new MenuElement( "menu", localize (fireworksMenu), "-after Tools/Cache","fw");
		alertCommand = new MenuElement( "command", localize (convertToGreyScale), "at the end of fw");
   		alertCommand.onSelect = fireworks.convertToGrayScale;   
   		alertCommand1 = new MenuElement( "command", localize (convertToSepia), "at the end of fw");
   		alertCommand1.onSelect = fireworks.convertToSepia;   
   		alertCommand2 = new MenuElement( "command", localize (invertSelectionColor), "at the end of fw");
   		alertCommand2.onSelect = fireworks.commandBatchInvert;
   		alertCommand3 = new MenuElement( "command", localize (batchProcess), "at the end of fw");
   		alertCommand3.onSelect = fireworks.commandBatchProcess;
			alertCommand4 = new MenuElement( "command", localize (ExportToFXG), "at the end of fw");
			alertCommand4.onSelect = fireworks.ExportToFXG;
	}
	   
}

} // overall try-catch
catch(ex)
{
}
