
-
+











+ ※テスト用データの収集ができている日は、カレンダーが「緑」の背景になります。 +

diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..1cca31f --- /dev/null +++ b/ChangeLog @@ -0,0 +1,50 @@ + +2009-8-15 1.2.0 + * エージェントエディタを一新 + - 複数のエージェントや共有ライブラリをタブで同時に編集できるようになりました。 + - エージェントや共有ライブラリをディレクトリで分類できるようになりました。 + + * 標準ライブラリの追加 + 標準添付の共有ライブラリとして、以下を追加。 + - 移動平均などの各種シグナル算出クラス + - ロスカットやトレーリングストップを容易に実現するPositionManager + - クロスアップ、クロスダウンを判定するためのユーティリティ + + * バックテストの再実行機能を追加 + - バックテストを1クリックで再実行できるようになりました。 + + * グラフ出力の不具合修正 + - エージェントを削除するとそのグラフも表示できなくなる問題を改修しました。 + - この変更でリアルトレードでは古いグラフが蓄積されていくようになったため、 + 不要なグラフを破棄する機能も追加しました。 + +2009-8-8 1.1.4 + * クリック証券デモ取引Webサービスの提供終了にあわせて、デモ取引接続プラグインを + 無効化 + +2009-7-5 1.1.3 + * クリック証券のデモ取引に接続する場合に、設定でプロキシを空のまま確定すると + 接続エラーになる不具合を改修。 + +2009-6-29 1.1.2 + * クリック証券プラグインを標準添付 + +2009-6-20 1.1.1 + * uuidtools 2.0.0 との組み合わせで動作しなかった問題を改修 + * クリック証券デモトレードにアクセスする際に使用するプロキシを指定できるようにした。 + +2009-5-6 1.1.0 + * 証券会社へのアクセスロジックを、プラグインで後から追加できるように修正。 + +2009-4-19 1.0.3 + * グラフの色を変更してもリロードすると元に戻る不具合を修正。 + +2009-4-14 1.0.2 + * 以下の不具合を修正。 + - システムを再起動すると、動作中のエージェントが全て停止状態となる。 + - リアルトレードで建玉にエージェント名が設定されない場合がある。 + - リアルトレードで追加したエージェントのグラフ設定ができない。 + - 月の初めに、取引一覧の範囲絞込みの初期値が不正な値になる。 + +2009-3-29 1.0.0 + * 初版リリース \ No newline at end of file diff --git a/base/agents/moving_average_agent.rb b/base/agents/moving_average_agent.rb new file mode 100644 index 0000000..4f88fde --- /dev/null +++ b/base/agents/moving_average_agent.rb @@ -0,0 +1,78 @@ +# +# 移動平均を使うエージェント。 +# -ゴールデンクロスで買い。 +# -デッドクロスで売り。 +# +class MovingAverageAgent < JIJI::PeriodicallyAgent + + # エージェントの説明 + def description + <<-STR +移動平均を使うエージェントです。 + -ゴールデンクロスで買い&売り建て玉をコミット。 + -デッドクロスで売り&買い建て玉をコミット。 + STR + end + + # エージェントを初期化する。 + def init + # 移動平均の算出クラス + # 共有ライブラリのクラスを利用。(JIJI::Agent::Sharedモジュールに定義される。) + @mvs = [ + JIJI::Agent::Shared::MovingAverage.new(@short), + JIJI::Agent::Shared::MovingAverage.new(@long) + ] + @prev_state = nil + + # 移動平均をグラフで表示するためのOutput + @out = output.get( "移動平均線", :graph, { + :column_count=>2, # データ数は2 + :graph_type=>:rate, # レートにあわせる形式で表示 + :colors=>["#779999","#557777"] # デフォルトのグラフの色 + } ) + end + + # 次のレートを受け取る + def next_period_rates( rates ) + + # 移動平均を計算 + res = @mvs.map{|mv| mv.next_rate( rates[:EURJPY].bid ) } + + return if ( !res[0] || !res[1]) + + # グラフに出力 + @out.put( *res ) + + # ゴールデンクロス/デッドクロスを判定 + state = res[0] > res[1] ? :high : :low + if ( @prev_state && @prev_state != state ) + if state == :high + # ゴールデンクロス + # 売り建玉があれば全て決済 + operator.positions.each_pair {|k,p| + operator.commit(p) if p.sell_or_buy == JIJI::Position::SELL + } + # 新規に買い + operator.buy 1 + else + # デッドクロス + # 買い建玉があれば全て決済 + operator.positions.each_pair {|k,p| + operator.commit(p) if p.sell_or_buy == JIJI::Position::BUY + } + # 新規に売り + operator.sell 1 + end + end + @prev_state = state + end + + # UIから設定可能なプロパティの一覧を返す。 + def property_infos + super().concat [ + Property.new( "short", "短期移動平均線", 25, :number ), + Property.new( "long", "長期移動平均線", 75, :number ) + ] + end + +end \ No newline at end of file diff --git a/base/shared_lib/moving_average.rb b/base/shared_lib/moving_average.rb new file mode 100644 index 0000000..33cc265 --- /dev/null +++ b/base/shared_lib/moving_average.rb @@ -0,0 +1,35 @@ + +# 一定期間の移動平均を得る +class MovingAverage + def initialize( range=25 ) + @rates = [] # レートを記録するバッファ + @range = range + end + + def next_rate( rate ) + # バッファのデータを更新 + @rates.push rate + @rates.shift if @rates.length > @range + + # バッファサイズが十分でなければ、nilを返す。 + return nil if @rates.length != @range + + # 移動平均を算出 + return MovingAverage.get_moving_average(@rates) + end + + # 前の結果(引数で指定した件数だけ記録。) + attr :prev, true + +private + # 移動平均値を計算する。 + def self.get_moving_average( rates ) + total = 0 + rates.each {|s| + total += s.end + total += s.max + total += s.min + } + return total / ( rates.length * 3 ) + end +end \ No newline at end of file diff --git a/base/shared_lib/system/cross.rb b/base/shared_lib/system/cross.rb new file mode 100644 index 0000000..03e668c --- /dev/null +++ b/base/shared_lib/system/cross.rb @@ -0,0 +1,76 @@ + +#===交差状態を判定するユーティリティ +#先行指標と遅行指標を受け取って、クロスアップ/クロスダウンを判定するユーティリティです。 +# +# require 'cross' +# +# cross = Cross.new +# +# # 先行指標、遅行指標を受け取って状態を返す。 +# # :cross .. クロスアップ、クロスダウン状態かどうかを返す。 +# # - クロスアップ(:up) +# # - クロスダウン(:down) +# # - どちらでもない(:none) +# # :trend .. 現在の指標が上向きか下向きかを返す。 +# # 「先行指標 <=> 遅行指標」した値。 +# # trend >= 1なら上向き、trned <= -1なら下向き +# p cross.next_data( 100, 90 ) # {:trend=>1, :cross=>:none} +# p cross.next_data( 110, 100 ) # {:trend=>1, :cross=>:none} +# p cross.next_data( 100, 100 ) # {:trend=>0, :cross=>:none} +# p cross.next_data( 90, 100 ) # {:trend=>-1, :cross=>:down} +# p cross.next_data( 80, 90 ) # {:trend=>-1, :cross=>:none} +# p cross.next_data( 90, 90 ) # {:trend=>0, :cross=>:none} +# p cross.next_data( 100, 100 ) # {:trend=>0, :cross=>:none} +# p cross.next_data( 110, 100 ) # {:trend=>1, :cross=>:up} +# +class Cross + + #コンストラクタ + def initialize + @cross_prev = nil + @cross = :none + @trend = 0 + end + + #===次の値を渡し状態を更新します。 + #fast:: 先行指標 + #lazy:: 遅行指標 + def next_data( fast, lazy ) + return unless fast && lazy + # 交差状態を算出 + @trend = fast <=> lazy + if @cross_prev && @trend != @cross_prev && @trend != 0 + @cross = @trend > @cross_prev ? :up : :down + else + @cross = :none + end + @cross_prev = @trend + return {:cross=>@cross,:trend=>@trend} + end + + #===クロスアップ状態かどうか判定します。 + #戻り値:: 「先行指標 < 遅行指標」 から 「先行指標 > 遅行指標」 になったらtrue + def cross_up? + @cross == :up + end + #===クロスダウン状態かどうか判定します。 + #戻り値:: 「先行指標 > 遅行指標」 から 「先行指標 < 遅行指標」 になったらtrue + def cross_down? + @cross == :down + end + #===上昇トレンド中かどうか判定します。 + #戻り値:: 「先行指標 > 遅行指標」 ならtrue + def up? + @trend > 0 + end + #===下降トレンド中かどうか判定します。 + #戻り値:: 「先行指標 < 遅行指標」 ならtrue + def down? + @trend < 0 + end + + #交差状態( :up, :down, :none ) + attr_reader :cross + #トレンド ( 直近の falst <=> lazy 値。) + attr_reader :trend +end \ No newline at end of file diff --git a/base/shared_lib/system/position_manager.rb b/base/shared_lib/system/position_manager.rb new file mode 100644 index 0000000..927e429 --- /dev/null +++ b/base/shared_lib/system/position_manager.rb @@ -0,0 +1,160 @@ + +#===ポジションマネージャ +#以下の機能を提供するユーティリティクラスです。 +#- 条件にマッチするポジションを探す。 +#- すべてのor条件にマッチするポジションを決済する。 +#- 指定したポジションを損切りorトレーリングストップで決済する。 +class PositionManager + include Enumerable + + #====コンストラクタ + #operator:: オペレータ + def initialize( operator ) + raise "illegal argument." unless operator + @operator = operator + @marked = {} + end + + #====ポジションを列挙します。 + def each( &block ) + @operator.positions.each_pair {|k,v| + yield v + } + end + + #====条件にマッチするポジションを決済します。 + #&block:: 決済するポジションを判定するブロック。JIJI::Positionが引数として渡され、trueが返された場合決済されます。 + def commit_by + each {|p| + @operator.commit( p ) if yield p + } + end + + #====すべてのポジションを決済します。 + def commit_all + commit_by{|p| true } + end + + #====現在保有しているポジションの損益合計を取得します。 + #※決済済みポジションの損益は含まれません。 + #戻り値:: 現在保有しているポジションの損益合計 + def total_profit_or_loss + inject(0.0) {|t, p| + t += p.profit_or_loss + } + end + + #====ポジションに損切りロジックを登録します。 + #損切りロジックが登録されたポジションはcheckが実行される度に損益がチェックされ、 + #PositionManager::StopStrategy.close?がtrueになれば決済されます。 + #1つのポジションに対して複数のロジックを設定可能。いずれかのロジックがtrueを返せば損切りされます。 + #position_id:: ポジションID + #stop_strategy:: 損切りルール(PositionManager::StopStrategy) + def register( position_id, stop_strategy ) + @marked[position_id] ||= [] + @marked[position_id] << stop_strategy + end + + #====ポジションをロスカットの対象としてマークします。 + #マークされたポジションはcheckが実行される度に損益がチェックされ、 + #損失がdissipationで設定した値以下になっていれば決済されます。 + # + #position_id:: ポジションID + #dissipation:: 許容しうる損失 + def register_loss_cut( position_id, dissipation ) + register(position_id,LossCut.new( dissipation )) + end + + #====ポジションをトレーリングストップの対象としてマークします。 + #マークされたポジションはcheckが実行される度に損益がチェックされ、 + #「今までの最高損益-現在の損益」がdissipationで設定した値以下になっていれば決済されます。 + # + #position_id:: ポジションID + #dissipation:: 許容しうる損失 + def register_trailing_stop( position_id, dissipation ) + register(position_id,TrailingStop.new( dissipation )) + end + + #====ポジションに損切りロジックが登録されているかどうか評価します。 + #position_id:: ポジションID + #return:: 損切りの対象であればtrue + def registered?( position_id ) + @marked.key?(position_id) + end + + #====ポジションに登録されている損切りロジックの一覧を取得します。 + #position_id:: ポジションID + #return:: ポジションに登録されている損切りロジックの配列 + def get_registered_strategy( position_id ) + @marked[position_id] || [] + end + + #====ポジションに登録された損切りロジックを解除します。 + #position_id:: ポジションID + #strategy:: 削除する損切りロジック + def unregister(position_id, strategy) + list = get_registered_strategy(position_id) + list.delete(strategy) + end + + #====ポジションに登録された損切りロジックを全て解除します。 + #position_id:: ポジションID + def unregister_all(position_id) + @marked.delete( position_id ) + end + + + #====監視対象のポジションが閾値を越えていないかチェックし、必要があれば決済します。 + #定期的に実行してください。 + #戻り値:: 決済したポジションの配列 + def check + commited = [] + @marked.each_pair {|k,v| + p = @operator.positions[k] + if !p || p.state != JIJI::Position::STATE_START + @marked.delete p.position_id + else + v.each {|strategy| + next unless strategy.close?(p) + @operator.commit( p ) + commited << p + unregister_all( p.position_id ) + break + } + end + } + commited + end + + #===手じまい戦略 + module StopStrategy + #====決済すべきか評価する。 + #position:: ポジション(JIJI::Position) + def close?(position) + return false + end + end + #===トレーリングストップ + class TrailingStop + include StopStrategy + def initialize( dissipation ) + @dissipation=dissipation + end + def close?(position) + @max=0 if !@max + result = (@max - position.profit_or_loss)*-1 <= @dissipation + @max = [position.profit_or_loss, @max].max + return result + end + end + #===ロスカット + class LossCut + include StopStrategy + def initialize( dissipation ) + @dissipation=dissipation + end + def close?(position) + position.profit_or_loss <= @dissipation + end + end +end diff --git a/base/shared_lib/system/signal.rb b/base/shared_lib/system/signal.rb new file mode 100644 index 0000000..e96a8d9 --- /dev/null +++ b/base/shared_lib/system/signal.rb @@ -0,0 +1,347 @@ + +module Signal + + #===一定期間のレートデータを元に値を算出するシグナルの基底クラス + class RangeSignal + include Signal + #====コンストラクタ + #range:: 集計期間 + def initialize( range=25 ) + @datas = [] # レートを記録するバッファ + @range = range + end + #====次のデータを受け取って指標を返します。 + #data:: 次のデータ + #戻り値:: 指標。十分なデータが蓄積されていない場合nil + def next_data( data ) + # バッファのデータを更新 + @datas.push data + @datas.shift if @datas.length > @range + + # バッファサイズが十分でなければ、nilを返す。 + return nil if @datas.length != @range + + # 算出 + return calculate(@datas) + end + # + def calculate(datas); end #:nodoc: + #集計期間 + attr_reader :range + end + + #===移動平均 + class MovingAverage < RangeSignal + def calculate(datas) #:nodoc: + ma( datas ) + end + end + + #===加重移動平均 + class WeightedMovingAverage < RangeSignal + def calculate(datas) #:nodoc: + wma( datas ) + end + end + + #===指数移動平均 + class ExponentialMovingAverage < RangeSignal + #====コンストラクタ + #range:: 集計期間 + #smoothing_coefficient:: 平滑化係数 + def initialize( range=25, smoothing_coefficient=0.1 ) + super(range) + @sc = smoothing_coefficient + end + def calculate(datas) #:nodoc: + ema( datas, @sc ) + end + end + + #===ボリンジャーバンド + class BollingerBands < RangeSignal + #====コンストラクタ + #range:: 集計期間 + #pivot:: ピボット + def initialize( range=25, pivot=[0,1,2], &block ) + super(range) + @pivot = pivot + @block = block + end + def calculate(datas) #:nodoc: + bollinger_bands( datas, @pivot, &@block ) + end + end + + #===傾き + class Momentum < RangeSignal + def calculate(datas) #:nodoc: + momentum( datas ) + end + end + + #===傾き(最小二乗法を利用) + class Vector < RangeSignal + def calculate(datas) + vector( datas ) + end + end + + #===MACD + class MACD < RangeSignal + #====コンストラクタ + #short_range:: 短期EMAの集計期間 + #long_range:: 長期EMAの集計期間 + #signal_range:: シグナルの集計期間 + #smoothing_coefficient:: 平滑化係数 + def initialize( short_range=12, long_range=26, + signal_range=9, smoothing_coefficient=0.1 ) + raise "illegal arguments." if short_range > long_range + super(long_range) + @short_range = short_range + @smoothing_coefficient = smoothing_coefficient + @signal = ExponentialMovingAverage.new( + signal_range, smoothing_coefficient ) + end + def next_data( data ) #:nodoc: + macd = super + return nil unless macd + signal = @signal.next_data( macd ) + return nil unless signal + return { :macd=>macd, :signal=>signal } + end + def calculate(datas) #:nodoc: + macd( datas, @short_range, range, @smoothing_coefficient ) + end + end + + #===RSI + class RSI < RangeSignal + #====コンストラクタ + #range:: 集計期間 + def initialize( range=14 ) + super(range) + end + def calculate(datas) #:nodoc: + rsi( datas ) + end + end + + #===DMI + class DMI < RangeSignal + #====コンストラクタ + #range:: 集計期間 + def initialize( range=14 ) + super(range) + @dxs = [] + end + def calculate(datas) #:nodoc: + dmi = dmi( datas ) + return nil unless dmi + @dxs.push dmi[:dx] + @dxs.shift if @dxs.length > range + return nil if @dxs.length != range + dmi[:adx] = ma( @dxs ) + return dmi + end + end + + #===ROC + class ROC < RangeSignal + #====コンストラクタ + #range:: 集計期間 + def initialize( range=14 ) + super(range) + end + def calculate(datas) #:nodoc: + roc( datas ) + end + end + +module_function + + #===移動平均値を計算します。 + #datas:: 値の配列。 + #戻り値:: 移動平均値 + def ma( datas ) + total = datas.inject {|t,s| + t += s; t + } + return total / datas.length + end + + #===加重移動平均値を計算します。 + #datas:: 値の配列。 + #戻り値:: 加重移動平均値 + def wma( datas ) + weight = 1 + total = datas.inject(0.0) {|t,s| + t += s * weight + weight += 1 + t + } + return total / ( datas.length * (datas.length+1) /2 ) + end + + #===指数移動平均値を計算します。 + #datas:: 値の配列。 + #smoothing_coefficient:: 平滑化係数 + #戻り値:: 加重移動平均値 + def ema( datas, smoothing_coefficient=0.1 ) + datas[1..-1].inject( datas[0] ) {|t,s| + t + smoothing_coefficient * (s - t) + } + end + + # + #===ボリンジャーバンドを計算します。 + # + # +2σ=移動平均+標準偏差×2 + # +σ=移動平均+標準偏差 + # -σ=移動平均-標準偏差 + # -2σ=移動平均-標準偏差×2 + # 標準偏差=√((各値-値の期間中平均値)の2乗を期間分全部加えたもの)/ 期間 + # (√は式全体にかかる) + # + #datas:: 値の配列 + #pivot:: 標準偏差の倍数。初期値[0,1,2] + #block:: 移動平均を算出するロジック。指定がなければ移動平均を使う。 + #戻り値:: ボリンジャーバンドの各値の配列。例) [+2σ, +1σ, TP, -1σ, -2σ] + # + def bollinger_bands( datas, pivot=[0,1,2], &block ) + ma = block_given? ? yield( datas ) : ma( datas ) + total = datas.inject(0.0) {|t,s| + t+= ( s - ma ) ** 2 + t + } + sd = Math.sqrt(total / datas.length) + res = [] + pivot.each { |r| + res.unshift( ma + sd * r ) + res.push( ma + sd * r * -1 ) if r != 0 + } + return res + end + + #===一定期間の値の傾きを計算します。 + #datas:: 値の配列 + #戻り値:: 傾き。0より大きければ上向き。小さければ下向き。 + def momentum( datas ) + (datas.last - datas.first) / datas.length + end + + #===最小二乗法で、一定期間の値の傾きを計算します。 + #datas:: 値の配列 + #戻り値:: 傾き。0より大きければ上向き。小さければ下向き。 + def vector( datas ) + # 最小二乗法を使う。 + total = {:x=>0.0,:y=>0.0,:xx=>0.0,:xy=>0.0,:yy=>0.0} + datas.each_index {|i| + total[:x] += i + total[:y] += datas[i] + total[:xx] += i*i + total[:xy] += i*datas[i] + total[:yy] += datas[i] * datas[i] + } + n = datas.length + d = total[:xy] + c = total[:y] + e = total[:x] + b = total[:xx] + return (n*d - c*e) / (n*b - e*e) + end + + #===MACDを計算します。 + #MACD = 短期(short_range日)の指数移動平均 - 長期(long_range日)の指数移動平均 + #datas:: 値の配列 + #smoothing_coefficient:: 平滑化係数 + #戻り値:: macd値 + def macd( datas, short_range, long_range, smoothing_coefficient ) + ema( datas[ short_range*-1 .. -1], smoothing_coefficient ) \ + - ema( datas[ long_range*-1 .. -1], smoothing_coefficient ) + end + + #===RSIを計算します。 + #RSI = n日間の値上がり幅合計 / (n日間の値上がり幅合計 + n日間の値下がり幅合計) * 100 + #nとして、14や9を使うのが、一般的。30以下では売られすぎ70以上では買われすぎの水準。 + # + #datas:: 値の配列 + #戻り値:: RSI値 + def rsi( datas ) + prev = nil + tmp = datas.inject( [0.0,0.0] ) {|r,i| + r[ i > prev ? 0 : 1 ] += (i - prev).abs if prev + prev = i + r + } + (tmp[0] + tmp[1] ) == 0 ? 0.0 : tmp[0] / (tmp[0] + tmp[1]) * 100 + end + + #===DMIを計算します。 + # + # 高値更新 ... 前日高値より当日高値が高かった時その差 + # 安値更新 ... 前日安値より当日安値が安かった時その差 + # DM ... 高値更新が安値更新より大きかった時高値更新の値。逆の場合は0 + # DM ... 安値更新が高値更新より大きかった時安値更新の値。逆の場合は0 + # TR ... 次の3つの中で一番大きいもの + # 当日高値-当日安値 + # 当日高値-前日終値 + # 前日終値-当日安値 + # AV(+DM) ... +DMのn日間移動平均値 + # AV(-DM) ... -DMのn日間移動平均値 + # AV(TR) ... TRのn日間移動平均値 + # +DI ... AV(+DM)/AV(TR) + # -DI ... AV(-DM)/AV(TR) + # DX ... (+DIと-DIの差額) / (+DIと-DIの合計) + # ADX ... DXのn日平均値 + # + #datas:: 値の配列(4本値を指定すること!) + #戻り値:: {:pdi=pdi, :mdi=mdi, :dx=dx } + def dmi( datas ) + prev = nil + tmp = datas.inject( [[],[],[]] ) {|r,i| + if prev + dm = _dmi( i, prev ) + r[0] << dm[0] # TR + r[1] << dm[1] # +DM + r[2] << dm[2] # -DM + end + prev = i + r + } + atr = ma( tmp[0] ) + pdi = ma( tmp[1] ) / atr * 100 + mdi = ma( tmp[2] ) / atr * 100 + dx = ( pdi-mdi ).abs / ( pdi+mdi ) * 100 + return {:pdi=>pdi, :mdi=>mdi, :dx=>dx } + end + + #TR,+DM,-DMを計算します。 + #戻り値:: [ tr, +DM, -DM ] + def _dmi( rate, rate_prev ) #:nodoc: + pdm = rate.max > rate_prev.max ? rate.max - rate_prev.max : 0 + mdm = rate.min < rate_prev.min ? rate_prev.min - rate.min : 0 + + if ( pdm > mdm ) + mdm = 0 + elsif ( pdm < mdm ) + pdm = 0 + end + + a = rate.max - rate.min + b = rate.max - rate_prev.end + c = rate_prev.end - rate.min + tr = [a,b,c].max + + return [tr, pdm, mdm] + end + + #===ROCを計算します。 + #Rate of Change。変化率。正なら上げトレンド、負なら下げトレンド。 + # + #datas:: 値の配列 + #戻り値:: 値 + def roc( datas ) + (datas.first - datas.last) / datas.last * 100 + end +end \ No newline at end of file diff --git a/bin/jiji b/bin/jiji new file mode 100644 index 0000000..4183916 --- /dev/null +++ b/bin/jiji @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'jiji/command' +JIJI::Command.new.run( ARGV ) \ No newline at end of file diff --git a/html/css/calendar.css b/html/css/calendar.css new file mode 100644 index 0000000..9b06c6d --- /dev/null +++ b/html/css/calendar.css @@ -0,0 +1,432 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.6.0 +*/ +.yui-calcontainer { + position: relative; + float: left; + _overflow: hidden; +} + +.yui-calcontainer iframe { + position: absolute; + border: none; + margin: 0; + padding: 0; + z-index: 0; + width: 100%; + height: 100%; + left: 0px; + top: 0px; +} + +.yui-calcontainer iframe.fixedsize { + width: 50em; + height: 50em; + top: -1px; + left: -1px; +} + +.yui-calcontainer.multi .groupcal { + z-index: 1; + float: left; + position: relative; +} + +.yui-calcontainer .title { + position: relative; + z-index: 1; +} + +.yui-calcontainer .close-icon { + position: absolute; + z-index: 1; + text-indent: -10000em; + overflow: hidden; +} + +.yui-calendar { + position: relative; +} + +.yui-calendar .calnavleft { + position: absolute; + z-index: 1; + text-indent: -10000em; + overflow: hidden; +} + +.yui-calendar .calnavright { + position: absolute; + z-index: 1; + text-indent: -10000em; + overflow: hidden; +} + +.yui-calendar .calheader { + position: relative; + width: 100%; + text-align: center; +} + +.yui-calcontainer .yui-cal-nav-mask { + position: absolute; + z-index: 2; + margin: 0; + padding: 0; + width: 100%; + height: 100%; + _width: 0; + _height: 0; + left: 0; + top: 0; + display: none; +} + +.yui-calcontainer .yui-cal-nav { + position: absolute; + z-index: 3; + top: 0; + display: none; +} + +.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn { + display: -moz-inline-box; + display: inline-block; +} + +.yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button { + display: block; * + display: inline-block; * + overflow: visible; + border: none; + background-color: transparent; + cursor: pointer; +} + +.yui-calendar .calbody a:hover { + background: inherit; +} + +p#clear { + clear: left; + padding-top: 10px; +} + +.yui-skin-sam .yui-calcontainer { + background-color: #E8E8E8; + border: 1px solid #BBBBBB; + padding: 10px; +} + +.yui-skin-sam .yui-calcontainer.multi { + padding: 0 5px 0 5px; +} + +.yui-skin-sam .yui-calcontainer.multi .groupcal { + background-color: transparent; + border: none; + padding: 10px 5px 10px 5px; + margin: 0; +} + +.yui-skin-sam .yui-calcontainer .title { + background: url(../img/sprite.png) repeat-x 0 0; + border-bottom: 1px solid #cccccc; + font: 100% sans-serif; + color: #333; + font-weight: bold; + height: auto; + padding: .4em; + margin: 0 -10px 10px -10px; + top: 0; + left: 0; + text-align: left; +} + +.yui-skin-sam .yui-calcontainer.multi .title { + margin: 0 -5px 0 -5px; +} + +.yui-skin-sam .yui-calcontainer.withtitle { + padding-top: 0; +} + +.yui-skin-sam .yui-calcontainer .calclose { + background: url(../img/sprite.png) no-repeat 0 -300px; + width: 25px; + height: 15px; + top: .4em; + right: .4em; + cursor: pointer; +} + +.yui-skin-sam .yui-calendar { + border-spacing: 0; + border-collapse: collapse; + font: 100% sans-serif; + text-align: center; + margin: 0; +} + +.yui-skin-sam .yui-calendar .calhead { + background: transparent; + border: none; + vertical-align: middle; + padding: 0; +} + +.yui-skin-sam .yui-calendar .calheader { + background: transparent; + font-weight: bold; + padding: 0 0 .6em 0; + text-align: center; +} + +.yui-skin-sam .yui-calendar .calheader img { + border: none; +} + +.yui-skin-sam .yui-calendar .calnavleft { + background: url(../img/sprite.png) no-repeat 0 -450px; + width: 25px; + height: 15px; + top: 0; + bottom: 0; + left: -10px; + margin-left: .4em; + cursor: pointer; +} + +.yui-skin-sam .yui-calendar .calnavright { + background: url(../img/sprite.png) no-repeat 0 -500px; + width: 25px; + height: 15px; + top: 0; + bottom: 0; + right: -10px; + margin-right: .4em; + cursor: pointer; +} + +.yui-skin-sam .yui-calendar .calweekdayrow { + height: 2em; +} + +.yui-skin-sam .yui-calendar .calweekdayrow th { + padding: 0; + border: none; +} + +.yui-skin-sam .yui-calendar .calweekdaycell { + color: #333; + font-weight: bold; + text-align: center; + width: 2em; +} + +.yui-skin-sam .yui-calendar .calfoot { + background-color: #E8E8E8; +} + +.yui-skin-sam .yui-calendar .calrowhead,.yui-skin-sam .yui-calendar .calrowfoot + { + color: #a6a6a6; + font-size: 85%; + font-style: normal; + font-weight: normal; + border: none; +} + +.yui-skin-sam .yui-calendar .calrowhead { + text-align: right; + padding: 0 2px 0 0; +} + +.yui-skin-sam .yui-calendar .calrowfoot { + text-align: left; + padding: 0 0 0 2px; +} + +.yui-skin-sam .yui-calendar td.calcell { + /*border: 1px solid #BBBBBB;*/ + background: #f2f2f2; + padding: 1px; + height: 1.6em; + line-height: 1.6em; + text-align: center; + white-space: nowrap; +} + +.yui-skin-sam .yui-calendar td.calcell a { + color: #0066cc; + display: block; + height: 100%; + text-decoration: none; +} + +.yui-skin-sam .yui-calendar td.calcell.today { + background-color: #000; +} + +.yui-skin-sam .yui-calendar td.calcell.today a { + background-color: #fff; + border: 1px solid #cccccc; +} + +.yui-skin-sam .yui-calendar td.calcell.oom { + background-color: #cccccc; + color: #a6a6a6; + cursor: default; +} + +.yui-skin-sam .yui-calendar td.calcell.selected { + background-color: #fff; + color: #000; +} + +.yui-skin-sam .yui-calendar td.calcell.selected a { + background-color: #b3d4ff; + color: #000; +} + +.yui-skin-sam .yui-calendar td.calcell.calcellhover { + background-color: #426fd9; + color: #fff; + cursor: pointer; +} + +.yui-skin-sam .yui-calendar td.calcell.calcellhover a { + background-color: #426fd9; + color: #fff; +} + +.yui-skin-sam .yui-calendar td.calcell.previous { + color: #e0e0e0; +} + +.yui-skin-sam .yui-calendar td.calcell.restricted { + text-decoration: line-through; +} + +.yui-skin-sam .yui-calendar td.calcell.highlight1 { + background-color: #ccff99; +} + +.yui-skin-sam .yui-calendar td.calcell.highlight2 { + background-color: #99ccff; +} + +.yui-skin-sam .yui-calendar td.calcell.highlight3 { + background-color: #ffcccc; +} + +.yui-skin-sam .yui-calendar td.calcell.highlight4 { + background-color: #ccff99; +} + +.yui-skin-sam .yui-calendar a.calnav { + border: 1px solid #f2f2f2; + padding: 0 4px; + text-decoration: none; + color: #000; + zoom: 1; +} + +.yui-skin-sam .yui-calendar a.calnav:hover { + background: url(../img/sprite.png) repeat-x 0 0; + border-color: #A0A0A0; + cursor: pointer; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav-mask { + background-color: #000; + opacity: 0.25; * + filter: alpha(opacity = 25); +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav { + font-family: arial, helvetica, clean, sans-serif; + font-size: 93%; + border: 1px solid #808080; + left: 50%; + margin-left: -7em; + width: 14em; + padding: 0; + top: 2.5em; + background-color: #f2f2f2; +} + +.yui-skin-sam .yui-calcontainer.withtitle .yui-cal-nav { + top: 4.5em; +} + +.yui-skin-sam .yui-calcontainer.multi .yui-cal-nav { + width: 16em; + margin-left: -8em; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav-y,.yui-skin-sam .yui-calcontainer .yui-cal-nav-m,.yui-skin-sam .yui-calcontainer .yui-cal-nav-b + { + padding: 5px 10px 5px 10px; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav-b { + text-align: center; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav-e { + margin-top: 5px; + padding: 5px; + background-color: #EDF5FF; + border-top: 1px solid black; + display: none; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav label { + display: block; + font-weight: bold; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav-mc { + width: 100%; + _width: auto; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav-y input.yui-invalid { + background-color: #FFEE69; + border: 1px solid #000; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav-yc { + width: 4em; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn { + border: 1px solid #808080; + background: url(../img/sprite.png) repeat-x 0 0; + background-color: #ccc; + margin: auto .15em; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn button { + padding: 0 8px; + font-size: 93%; + line-height: 2; * + line-height: 1.7; + min-height: 2em; * + min-height: auto; + color: #000; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default { + border: 1px solid #304369; + background-color: #426fd9; + background: url(../img/sprite.png) repeat-x 0 -1400px; +} + +.yui-skin-sam .yui-calcontainer .yui-cal-nav .yui-cal-nav-btn.yui-default button { + color: #fff; +} \ No newline at end of file diff --git a/html/css/datatable.css b/html/css/datatable.css new file mode 100644 index 0000000..76af7dd --- /dev/null +++ b/html/css/datatable.css @@ -0,0 +1,299 @@ +/* +Copyright (c) 2008, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.5.2 +*/ +/* basic skin styles */ +.yui-dt table { line-height:120%; margin:0;padding:0;font-family:arial;font-size:inherit;border-collapse:separate;*border-collapse:collapse;border-spacing:0;} +.yui-dt thead {border-spacing:0;} /* for safari bug */ +.yui-dt caption {padding-bottom:1em;text-align:left;} + +/*outer border */ +.yui-dt-hd table { + border-left:1px solid #7F7F7F; + border-top:1px solid #7F7F7F; + border-right:1px solid #7F7F7F; + border-bottom:1px solid #FFFFFF; +} +.yui-dt-bd table { + border-left:1px solid #FFFFFF; + border-top:1px solid #FFFFFF; + border-bottom:1px solid #FFFFFF; +} + +.yui-dt th { + background:#D8D8DA url(../img/thead.gif) repeat-x 0 0; /* header gradient */ +} +.yui-dt th, +.yui-dt th a { + font-weight:bold;text-decoration:none;color:#333; /* header text */ + vertical-align:bottom; +} +.yui-dt th { + margin:0;padding:0; + border:none; + border-right:1px solid #FFFFFF;/* inner column border */ + border-bottom:1px solid #FFFFFF; +} +.yui-dt th .yui-dt-liner{ + white-space:nowrap; +} +.yui-dt-liner { + margin:0;padding:0; + padding:2px 5px 2px 5px; /* cell padding */ +} +.yui-dt-coltarget { + width: 5px; + background-color: red; +} +.yui-dt td { + margin:0;padding:0; + border:none; + border-right:1px solid #FFFFFF; /* inner column border */ + text-align:left; +} +.yui-dt-list td { + border-right:none; /* disable inner column border in list mode */ +} +.yui-dt-resizer { + width:6px; +} + +/* messaging */ +tbody.yui-dt-msg td { + border:none; +} + +.yui-dt-loading { + background-color:#FFF; +} +.yui-dt-empty { + background-color:#FFF; +} +.yui-dt-error { + background-color:#FFF; +} + +/* scrolling */ +.yui-dt-scrollable .yui-dt-hd table {border:0px;} +.yui-dt-scrollable .yui-dt-bd table {border:0px;} +.yui-dt-scrollable .yui-dt-hd { + /*border-left:1px solid #7F7F7F;border-top:1px solid #7F7F7F;border-right:1px solid #7F7F7F;*/ +} +.yui-dt-scrollable .yui-dt-bd { + /*border-left:1px solid #7F7F7F;border-bottom:1px solid #7F7F7F;border-right:1px solid #7F7F7F;background-color:#FFF;*/ +} + +/* sortable columns */ +thead .yui-dt-sortable { + cursor:pointer; +} +th.yui-dt-asc, +th.yui-dt-desc { + background:#D8D8DA url(../img/thead.gif) repeat-x 0 0px; /* sorted header gradient */ +} +th.yui-dt-sortable .yui-dt-label { + margin-right:10px; +} +th.yui-dt-asc .yui-dt-liner { + background:url(../img/dt-arrow-up.png) no-repeat right; /* sorted header gradient */ +} +th.yui-dt-desc .yui-dt-liner { + background:url(../img/dt-arrow-dn.png) no-repeat right; /* sorted header gradient */ +} + +/* editing */ +.yui-dt-editable { + cursor:pointer; +} +.yui-dt-editor { + text-align:left; + background-color:#E8E8E8; + border:1px solid #808080; + padding:6px; +} +.yui-dt-editor label { + padding-left:4px;padding-right:6px; +} +.yui-dt-editor .yui-dt-button { + padding-top:6px;text-align:right; +} +.yui-dt-editor .yui-dt-button button { + background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0; + border:1px solid #999; + width:4em;height:1.8em; + margin-left:6px; +} +.yui-dt-editor .yui-dt-button button.yui-dt-default { + background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1400px; + background-color: #5584E0; + border:1px solid #304369; + color:#FFF +} +.yui-dt-editor .yui-dt-button button:hover { + background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1300px; + color:#000; +} +.yui-dt-editor .yui-dt-button button:active { + background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1700px; + color:#000; +} + +/* striping */ +tr.yui-dt-even { background-color:#E8E8E8; } /* white */ +tr.yui-dt-odd { background-color:#d2d2d0; } /* light blue */ +tr.yui-dt-even td.yui-dt-asc, +tr.yui-dt-even td.yui-dt-desc { background-color:#E8E8E8; } /* light blue sorted */ +tr.yui-dt-odd td.yui-dt-asc, +tr.yui-dt-odd td.yui-dt-desc { background-color:#d2d2d0; } /* dark blue sorted */ + +/* disable striping in list mode */ +.yui-dt-list tr.yui-dt-even { background-color:#E8E8E8; } /* white */ +.yui-dt-list tr.yui-dt-odd { background-color:#E8E8E8; } /* white */ +.yui-dt-list tr.yui-dt-even td.yui-dt-asc, +.yui-dt-list tr.yui-dt-even td.yui-dt-desc { background-color:#d2d2d0; } /* light blue sorted */ +.yui-dt-list tr.yui-dt-odd td.yui-dt-asc, +.yui-dt-list tr.yui-dt-odd td.yui-dt-desc { background-color:#d2d2d0;} /* light blue sorted */ + +/* highlighting */ +th.yui-dt-highlighted, +th.yui-dt-highlighted a { + background: #E8E8E8 url(../img/td_over.gif) repeat-y 0 0px; +} +tr.yui-dt-highlighted, +tr.yui-dt-highlighted td.yui-dt-asc, +tr.yui-dt-highlighted td.yui-dt-desc, +tr.yui-dt-even td.yui-dt-highlighted, +tr.yui-dt-odd td.yui-dt-highlighted { + cursor:pointer; +} +tr.yui-dt-even td.yui-dt-highlighted { + background: #E8E8E8 url(../img/td_over.gif) repeat-y 0 0px; +} +tr.yui-dt-odd td.yui-dt-highlighted { + background: #d2d2d0 url(../img/td_over_d.gif) repeat-y 0 0px; +} + +/* enable highlighting in list mode */ +.yui-dt-list th.yui-dt-highlighted, +.yui-dt-list th.yui-dt-highlighted a { +} +.yui-dt-list tr.yui-dt-highlighted, +.yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc, +.yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc, +.yui-dt-list tr.yui-dt-even td.yui-dt-highlighted, +.yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted { + cursor:pointer; +} +.yui-dt-list tr.yui-dt-even td.yui-dt-highlighted { + background: #E8E8E8 url(../img/td_over.gif) repeat-y 0 0px; +} +.yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted { + background: #d2d2d0 url(../img/td_over_d.gif) repeat-y 0 0px; +} +/* selection */ +th.yui-dt-selected, +th.yui-dt-selected a { + background-color: #FFFFFF; + background-image: none; + /*background: #E8E8E8 url(../img/td_selected.gif) repeat-y 0 0px;*/ +} +tr.yui-dt-selected td, +tr.yui-dt-selected td.yui-dt-asc, +tr.yui-dt-selected td.yui-dt-desc { + background-color: #FFFFFF; + background-image: none; + /*background: #E8E8E8 url(../img/td_selected.gif) repeat-y 0 0px;*/ + color:#11116F; +} +tr.yui-dt-even td.yui-dt-selected, +tr.yui-dt-odd td.yui-dt-selected { + background-color: #FFFFFF; + background-image: none; + /*background: #E8E8E8 url(../img/td_selected.gif) repeat-y 0 0px;*/ + color:#11116F; +} + +/* enable selection in list mode */ +.yui-dt-list th.yui-dt-selected, +.yui-dt-list th.yui-dt-selected a { + background-color: #FFFFFF; + background-image: none; + /*background: #E8E8E8 url(../img/td_selected.gif) repeat-y 0 0px;*/ +} +.yui-dt-list tr.yui-dt-selected td, +.yui-dt-list tr.yui-dt-selected td.yui-dt-asc, +.yui-dt-list tr.yui-dt-selected td.yui-dt-desc { + background-color: #FFFFFF; + background-image: none; + /*background: #E8E8E8 url(../img/td_selected.gif) repeat-y 0 0px;*/ + color:#11116F; +} +.yui-dt-list tr.yui-dt-even td.yui-dt-selected, +.yui-dt-list tr.yui-dt-odd td.yui-dt-selected { + background-color: #FFFFFF; + background-image: none; + /*background: #E8E8E8 url(../img/td_selected.gif) repeat-y 0 0px;*/ + color:#11116F; +} + +/* pagination */ +.yui-pg-container, +.yui-dt-paginator { + display:block;margin:6px 0;white-space:nowrap; +} +.yui-pg-first, +.yui-pg-last, +.yui-pg-current-page, +.yui-dt-paginator .yui-dt-first, +.yui-dt-paginator .yui-dt-last, +.yui-dt-paginator .yui-dt-selected { + padding:2px 6px; +} +a.yui-pg-first, +a.yui-pg-previous, +a.yui-pg-next, +a.yui-pg-last, +a.yui-pg-page, +.yui-dt-paginator a.yui-dt-first, +.yui-dt-paginator a.yui-dt-last { + text-decoration:none; +} +.yui-dt-paginator .yui-dt-previous, +.yui-dt-paginator .yui-dt-next { + display:none; +} +a.yui-pg-page, +a.yui-dt-page { + border:1px solid #FFFFFF; + padding:2px 6px; + text-decoration:none; + background-color:#fff +} +.yui-pg-current-page, +.yui-dt-paginator .yui-dt-selected { + border:1px solid #fff; + background-color:#fff; +} +.yui-pg-pages { + margin-left:1ex; + margin-right:1ex; +} +.yui-pg-page { + margin-right:1px; + margin-left:1px; +} +.yui-pg-first, +.yui-pg-previous { + margin-right:3px; +} +.yui-pg-next, +.yui-pg-last { + margin-left:3px; +} +.yui-pg-current, +.yui-pg-rpp-options { + margin-right:1em; + margin-left:1em; +} diff --git a/html/css/default.css b/html/css/default.css new file mode 100644 index 0000000..e32b4bb --- /dev/null +++ b/html/css/default.css @@ -0,0 +1,616 @@ + +* { + margin: 0px; + padding: 0px; + font-size: 12px; +} + +body { + margin: 0px; + background-color: #88888B; + color: #444444; + font-size: small; + font-family: verdana, 'trebuchet ms', sans-serif; + text-align: center; + line-height: 140%; +} +img { + border: 0px; + margin: 0px; + padding: 0px; +} + +div.breaker { + clear: both; + height: 1px; + width: 100%; +} + +div.separator { + display:block; + background-image: url("../img/separator.gif") ; + background-repeat: repeat-x; + height:2px; + margin: 10px 0px; +} + +span.error { + color: #FF3366; + font-weight: bold; +} + +.accesskey { + text-decoration: underline; +} + +a { + color:#313d7a; + text-decoration:underline; +} +a:link { + color:#313d7a; + text-decoration:underline; +} +a:active { + color:#313d7a; + text-decoration:underline; +} +a:visited { + color:#761d7a; + text-decoration:underline; +} +a:hover { + color:#111d6a; + text-decoration:underline; +} + +/* �w�i -------------------------------------------------------------- */ +#margin_top, #main, #margin_bottom { + width:1000px; + position: relative; + margin: 0px auto; + text-align: left; + background-repeat: repeat; +} +#margin_top, #margin_bottom { + height:10px; + padding: 0px 10px; + background-repeat: no-repeat; +} +#margin_top { + background-image: url("../img/back_top.gif"); +} +#main { + padding: 1px 10px 0px 10px; + background-image: url("../img/back_middle.gif"); + background-repeat: repeat-y; + z-index: 10; +} +#margin_bottom { + background-image: url("../img/back_bottom.gif"); +} + +/* �w�b�_/�t�b�_ -------------------------------------------------------------- */ +#hesder { + width:1000px; + height : 50px; + background-image: url("../img/head.jpg"); + background-repeat: no-repeat; +} +#footer { + width:1000px; + height : 30px; + background-image: url("../img/foot.jpg"); + background-repeat: no-repeat; + text-align: center; + color: #e8e8e8; + padding-top: 20px; +} +#footer a { + color: #ccc; +} +#footer a:hover { + color: #fff; +} +#footer span.separator { + padding: 0px 3px; + color : #666; +} +/* main -------------------------------------------------------------- */ +#left { + /*margin-left: 0px;*/ + width:180px; + float: left; +} +#right { + margin-right: 10px; + width:810px; + float: right; +} + +/* page -------------------------------------------------------------- */ +div.page { + display: none; +} +div.desc { + color: #777777; +} +div.page_msg { + float: left; + height: 25px; + line-height: 23px; + /*border: 1px solid #FFFFFF; + padding: 0px 10px;*/ + color: #FF3366; +} +div.page_msg * { + vertical-align: middle; +} + +/* panel -------------------------------------------------------------- */ +div.panel_middle { + background-repeat: repeat-y; +} +div.panel_top, div.panel_bottom { + height: 10px; + background-repeat: no-repeat; +} + +/* 260 */ +div.panel_260 > div.panel_top, div.panel_260 > div.panel_bottom, div.panel_260 > div.panel_middle { + width: 280px; +} +div.panel_260 > div.panel_top { + background-image: url("../img/panel_260_t.gif"); +} +div.panel_260 > div.panel_middle { + background-image: url("../img/panel_260_m.gif"); +} +div.panel_260 > div.panel_bottom { + background-image: url("../img/panel_260_b.gif"); +} + +/* 300 */ +div.panel_300 > div.panel_top, div.panel_300 > div.panel_bottom, div.panel_300 > div.panel_middle { + width: 320px; +} +div.panel_300 > div.panel_top { + background-image: url("../img/panel_300_t.gif"); +} +div.panel_300 > div.panel_middle { + background-image: url("../img/panel_300_m.gif"); +} +div.panel_300 > div.panel_bottom { + background-image: url("../img/panel_300_b.gif"); +} + +/* 360 */ +div.panel_360 > div.panel_top, div.panel_360 > div.panel_bottom, div.panel_360 > div.panel_middle { + width: 380px; +} +div.panel_360 > div.panel_top { + background-image: url("../img/panel_360_t.gif"); +} +div.panel_360 > div.panel_middle { + background-image: url("../img/panel_360_m.gif"); +} +div.panel_360 > div.panel_bottom { + background-image: url("../img/panel_360_b.gif"); +} + +/* 380 */ +div.panel_380 > div.panel_top, div.panel_380 > div.panel_bottom, div.panel_380 > div.panel_middle { + width: 400px; +} +div.panel_380 > div.panel_top { + background-image: url("../img/panel_380_t.gif"); +} +div.panel_380 > div.panel_middle { + background-image: url("../img/panel_380_m.gif"); +} +div.panel_380 > div.panel_bottom { + background-image: url("../img/panel_380_b.gif"); +} + +/* 500 */ +div.panel_500 > div.panel_top, div.panel_500 > div.panel_bottom, div.panel_500 > div.panel_middle { + width: 520px; +} +div.panel_500 > div.panel_top { + background-image: url("../img/panel_500_t.gif"); +} +div.panel_500 > div.panel_middle { + background-image: url("../img/panel_500_m.gif"); +} +div.panel_500 > div.panel_bottom { + background-image: url("../img/panel_500_b.gif"); +} + +/* 620 */ +div.panel_620 > div.panel_top, div.panel_620 > div.panel_bottom, div.panel_620 > div.panel_middle { + width: 640px; +} +div.panel_620 > div.panel_top { + background-image: url("../img/panel_620_t.gif"); +} +div.panel_620 > div.panel_middle { + background-image: url("../img/panel_620_m.gif"); +} +div.panel_620 > div.panel_bottom { + background-image: url("../img/panel_620_b.gif"); +} + +/* 780 */ +div.panel_780 > div.panel_top, div.panel_780 > div.panel_bottom, div.panel_780 > div.panel_middle { + width: 800px; +} +div.panel_780 > div.panel_top { + background-image: url("../img/panel_780_t.gif"); +} +div.panel_780 > div.panel_middle { + background-image: url("../img/panel_780_m.gif"); +} +div.panel_780 > div.panel_bottom { + background-image: url("../img/panel_780_b.gif"); +} + +/* 140_660 */ +div.panel_140_660 > div.panel_top, div.panel_140_660 > div.panel_bottom, div.panel_140_660 > div.panel_middle { + width: 810px; +} +div.panel_140_660 > div.panel_top { + background-image: url("../img/panel_140_660_t.gif"); +} +div.panel_140_660 > div.panel_middle { + background-image: url("../img/panel_140_660_m.gif"); +} +div.panel_140_660 > div.panel_bottom { + background-image: url("../img/panel_140_660_b.gif"); +} + + +/* button -------------------------------------------------------------- */ +div.button { + height:25px; + float: left; + margin-right: 10px; +} +div.button * { font-size: 0px; } + +/* white line -------------------------------------------------------------- */ +div.wl { + height:3px; + background-image: url("../img/line_white.gif"); + background-repeat: repeat; +} + + +/* agent-editor -------------------------------------------------------------- */ +#agent-editor-file-name { + font-size: 12px; + padding-left: 15px; + background-image: url("../img/circle.gif"); + background-repeat: no-repeat; + background-position: 0px 3px; + margin-bottom: 5px; +} +#agent_edit_msg { + padding: 10px; + border: 1px dotted #999999; + width:480px; +} + +div.agent-property-editor { + padding: 10px 10px 10px 20px; + text-align:left; +} +div.agent-property-editor div.title { + margin-top: 5px; + color: #444444; + font-weight: bold; + padding-left: 15px; + /*background: #E2E2E2 url(../img/td_selected.gif) repeat-y 0 0px;*/ + background-image: url("../img/circle.gif"); + background-repeat: no-repeat; + background-position: 0px 3px; +} +div.agent-property-editor div.value { + margin-left: 10px; + margin-top: 3px; +} +div.agent-property-editor input { + width: 350px; +} +div.agent-property-editor div.value pre { + overflow: scroll; + margin-top: 5px; +} +div.agent-property-editor div.value pre, div.agent-property-editor div.value div.property-container { + border: 1px solid #bbbbbb; + margin-right: 10px; + padding: 10px; +} +div.agent-property-editor div.property-description { + margin-top: 3px; +} +div.agent-property-editor input.property-input { + width: 320px; + margin-left: 10px; +} +div.agent-property-editor div.property-value { + margin-left: 10px; +} +div.agent-property-editor .property-problem { + display : none; + color:#FF3366; + font-weight: bold; + margin: 2px 10px 5px 10px; +} + + +.problem { + color:#FF3366; + font-weight: bold; +} +#agent-file-list { + overflow: scroll; + width: 260px; +} +#agent-file-list div.node { + background-repeat: no-repeat; + background-position: 2px 1px; + padding: 0px 4px 0px 21px; + margin: 0px; +} +#agent-file-list div.directory { + background-image: url("../img/folder.png"); +} +#agent-file-list div.file { + background-image: url("../img/page_white_ruby.png"); +} +#agent-file-list div.agents { + background-image: url("../img/folder_user.png"); + font-weight: bold; +} +#agent-file-list div.shared_lib { + background-image: url("../img/folder_brick.png"); + font-weight: bold; +} +#agent-file-list div.selected { + background-color: #FFF; + color: #11116F; +} +/** side bar --------------------------------------------------------------------- */ +div.menu-1 { + margin-top: 15px; + margin-bottom: 2px; +} + +div.menu-2 { + margin-left: 1px; + line-height: 100%; +} + +div.process { + padding: 5px 0px 5px 28px; + line-height: 110%; + width:148px; +} +div.process *, div.process_selected * { + vertical-align: middle; +} +div.process_selected { + padding: 5px 0px 5px 28px; + line-height: 110%; + width:148px; + border:1px solid #339999; + background-image: url("../img/sidebar_back.gif"); + background-repeat: no-repeat; + background-color: #080808; + background-position: -10px 0px 0px 0px; +} +div.process div.name span.name { +} +div.process_selected div.name span a { + color: #F5F5F5; +} +div.process div.date, div.process div.state, div.process_selected div.date, div.process_selected div.state { + margin-top: 1px; + font-size: 10px; + color: #888885; +} +div.process div.detail, div.process_selected div.detail { + margin:2px 1px 2px 1px; + padding-left: 5px; +} +div.process div.detail { + border-left: 2px solid #ADADAA; +} +div.process_selected div.detail { + border-left: 2px solid #339999; +} + +div.progress { + margin-top: 1px; +} +span.process_delete, span.process_restart { + font-size: 10px; +} + +div.progress_bar { + margin-top: 1px; + float:left; + border: 1px solid #66CCFF; + width: 100px; + height: 8px; + background-image: url("../img/progressbar.gif"); + background-repeat: repeat-y; + background-position: -180px 0px; +} +div.progress_value { + float:left; + font-size: 10px; + margin-left: 3px; +} + +div.process_restart { + visibility: hidden; +} + +/** topic_path --------------------------------------------------------------------- */ +ul#topic_path{ + margin: 0px 0px 10px 20px; +} +ul#topic_path li { + display : inline; + padding: 0px 8px 0px 15px; + list-style: none; + background-image: url("../img/delta.gif"); + background-repeat: no-repeat; + background-position: 0px 2px; +} + +/** trade --------------------------------------------------------------------- */ +div#subpage-trade_summary div.category { + /*font-weight: bold;*/ + margin: 10px 0px 5px 0px; + padding-left: 15px; + background-image: url("../img/circle.gif"); + background-repeat: no-repeat; + background-position: 0px 3px; +} +table.values { + border-top: 1px solid #C5C5C5; + border-left: 1px solid #C5C5C5; + border-right: 1px solid #C5C5C5; +} +table.values td.label { + background-color: #D5D5D5; + vertical-align: middle; + padding: 3px 0px 3px 5px; + border-bottom: 1px solid #C5C5C5; + border-right: 1px solid #C5C5C5; +} +table.values td.value { + vertical-align: middle; + text-align: right; + padding: 3px 5px 3px 0px; + border-bottom: 1px solid #C5C5C5; +} +table.large { + width: 620px; +} +table.values td.large { + width: 200px; +} +table.small { + width: 300px; +} +table.values td.small { + width: 110px; +} + +span.win { + color : #FE4B7E; +} +span.lose { + color : #4B7EFF; +} +span.draw { + color : #978CD0; +} + +/** log --------------------------------------------------------------------- */ +div.log { + overflow:scroll; + font-size: 10px; + width: 620px; + height:500px; + margin-top: 10px; +} + +/** graph-setting --------------------------------------------------------------------- */ +div#subpage-graph_list { +} +div#subpage-graph_list div.agent { + margin: 10px 0px 5px 0px; + padding-left: 15px; + background-image: url("../img/circle.gif"); + background-repeat: no-repeat; + background-position: 0px 3px; +} +div#subpage-graph_list div.agent * { + /*vertical-align: middle;*/ +} +div#subpage-graph_list div.agent span.output_delete { + font-size: 10px; + padding-left: 5px; +} +div#subpage-graph_list table.graphs { + margin-left: 20px; +} +div#subpage-graph_list table.graphs input { + height:12px; + vertical-align:middle; +} +div#subpage-graph_list table.graphs label { + padding-left:3px; + line-height:12px; + vertical-align:middle; + font-size:12px; +} +div#subpage-graph_list table.graphs td.color { + padding-left: 10px; + width: 200px; +} + + +/** color picker --------------------------------------------------------------------- */ +div.picker { + margin-right: 5px; + float: left; + border:1px solid #BBBBBB; +} +div.picker_thumb { + width:12px; + height:12px; + border:1px solid #FFFFFF; +} +div.picker_picker { + border: 1px solid #BBBBBB; + background-color: #E2E2E2; + padding:10px; + visibility: hidden; + position: absolute; + z-index: 100; +} +table.picker { + border: 1px solid #FFFFFF; +} +table.picker div.block { + width:8px; + height: 8px; +} + + +/** dateinput --------------------------------------------------------------------- */ +div.dateinput_panel { + border: 1px solid #BBBBBB; + background-color: #E2E2E2; + padding:10px; + visibility: hidden; + position: absolute; + z-index: 100; +} + +/** date-select --------------------------------------------------------------------- */ +div#bt-create__range-summary { + padding: 10px; +} + + + +#debug { + text-align:left; + color:#FFFFFF; +} diff --git a/html/css/dialog.css b/html/css/dialog.css new file mode 100644 index 0000000..c0c3e5b --- /dev/null +++ b/html/css/dialog.css @@ -0,0 +1,77 @@ + +#dialog { + position:absolute; + width:400px; + z-index:200; + background-color : #E2E2E2; + background-repeat: no-repeat; + border: 1px solid #FFFFFF; +} +#dialog-body { + padding:20px; + display:block; +} +#dialog-header { + display:block; + position:relative; + width:400px; + padding:3px 6px 7px; + height:14px; + font-weight:bold +} +#dialog-title { + float:left +} +#dialog-close { + float:right; + cursor:pointer; + margin:3px 3px 0 0; + height:11px; + width:11px; + background:url("../img/dialog_close.gif") no-repeat; +} +#dialog-content { + margin-top: 10px; + text-align: left; +} +#dialog-content div.warn_msg{ + font-weight:bold; + color:#CC2222; + margin-bottom:10px; +} + +#dialog-separator { + display:block; + background-image: url("../img/separator.gif") ; + background-repeat: repeat-x; + height:2px; + width: 360px; + margin: 10px 0px; +} +#dialog-mask { + position:absolute; + top:0; + left:0; + min-height:100%; + width:100%; + background:#222222; + opacity:.80; + filter:alpha(opacity=80); + z-index:100 +} +#dialog-buttons { + float: right; +} +#dialog-buttons default { + border: 1px solid #FFFFFF; +} + +div.warn { + background:url("../img/dialog_warn.jpg") no-repeat; +} +div.info { + background:url("../img/dialog_info.jpg") no-repeat; +} +div.input { + background:url("../img/dialog_input.jpg") no-repeat; +} \ No newline at end of file diff --git a/html/css/treeview.css b/html/css/treeview.css new file mode 100644 index 0000000..98fe624 --- /dev/null +++ b/html/css/treeview.css @@ -0,0 +1,205 @@ +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.7.0 +*/ +.ygtvitem { + +} + +.ygtvitem table { + margin-bottom: 0; + border: none; +} + +.ygtvrow td { + border: none; + padding: 0; +} + +.ygtvrow td a { + text-decoration: none; +} + +.ygtvtn { + width: 18px; + height: 20px; + background: url(../img/yui/treeview-sprite.gif) 0 -5600px no-repeat; +} + +.ygtvtm { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 -4000px no-repeat; +} + +.ygtvtmh,.ygtvtmhh { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 -4800px no-repeat; +} + +.ygtvtp { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 -6400px no-repeat; +} + +.ygtvtph,.ygtvtphh { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 -7200px no-repeat; +} + +.ygtvln { + width: 18px; + height: 20px; + background: url(../img/yui/treeview-sprite.gif) 0 -1600px no-repeat; +} + +.ygtvlm { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 0px no-repeat; +} + +.ygtvlmh,.ygtvlmhh { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 -800px no-repeat; +} + +.ygtvlp { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 -2400px no-repeat; +} + +.ygtvlph,.ygtvlphh { + width: 18px; + height: 20px; + cursor: pointer; + background: url(../img/yui/treeview-sprite.gif) 0 -3200px no-repeat; +} + +.ygtvloading { + width: 18px; + height: 20px; + background: url(../img/loading.gif) 0 0 no-repeat; +} + +.ygtvdepthcell { + width: 18px; + height: 20px; + background: url(../img/yui/treeview-sprite.gif) 0 -8000px no-repeat; +} + +.ygtvblankdepthcell { + width: 18px; + height: 20px; +} + +.ygtvchildren { + +} + +* html .ygtvchildren { + height: 2%; +} + +.ygtvlabel,.ygtvlabel:link,.ygtvlabel:visited,.ygtvlabel:hover { + margin-left: 2px; + text-decoration: none; + background-color: white; + cursor: pointer; +} + +.ygtvcontent { + cursor: default; +} + +.ygtvspacer { + height: 20px; + width: 18px; +} + +.ygtvfocus { + background-color: #c0e0e0; + border: none; +} + +.ygtvfocus .ygtvlabel,.ygtvfocus .ygtvlabel:link,.ygtvfocus .ygtvlabel:visited,.ygtvfocus .ygtvlabel:hover + { + background-color: #c0e0e0; +} + +.ygtvfocus a,.ygtvrow td a { + outline-style: none; +} + +.ygtvok { + width: 18px; + height: 20px; + background: url(../img/yui/treeview-sprite.gif) 0 -8800px no-repeat; +} + +.ygtvok:hover { + background: url(../img/yui/treeview-sprite.gif) 0 -8844px no-repeat; +} + +.ygtvcancel { + width: 18px; + height: 20px; + background: url(../img/yui/treeview-sprite.gif) 0 -8822px no-repeat; +} + +.ygtvcancel:hover { + background: url(../img/yui/treeview-sprite.gif) 0 -8866px no-repeat; +} + +.ygtv-label-editor { + background-color: #f2f2f2; + border: 1px solid silver; + position: absolute; + display: none; + overflow: hidden; + margin: auto; + z-index: 9000; +} + +.ygtv-edit-TextNode { + width: 190px; +} + +.ygtv-edit-TextNode .ygtvcancel,.ygtv-edit-TextNode .ygtvok { + border: none; +} + +.ygtv-edit-TextNode .ygtv-button-container { + float: right; +} + +.ygtv-edit-TextNode .ygtv-input input { + width: 140px; +} + +.ygtv-edit-DateNode .ygtvcancel { + border: none; +} + +.ygtv-edit-DateNode .ygtvok { + display: none; +} + +.ygtv-edit-DateNode .ygtv-button-container { + text-align: right; + margin: auto; +} \ No newline at end of file diff --git a/html/img/auto_trade_off.gif b/html/img/auto_trade_off.gif new file mode 100644 index 0000000..d94a3ee Binary files /dev/null and b/html/img/auto_trade_off.gif differ diff --git a/html/img/auto_trade_on.gif b/html/img/auto_trade_on.gif new file mode 100644 index 0000000..396d8c6 Binary files /dev/null and b/html/img/auto_trade_on.gif differ diff --git a/html/img/back_bottom.gif b/html/img/back_bottom.gif new file mode 100644 index 0000000..4edaf67 Binary files /dev/null and b/html/img/back_bottom.gif differ diff --git a/html/img/back_middle.gif b/html/img/back_middle.gif new file mode 100644 index 0000000..0e2b7eb Binary files /dev/null and b/html/img/back_middle.gif differ diff --git a/html/img/back_top.gif b/html/img/back_top.gif new file mode 100644 index 0000000..767ca61 Binary files /dev/null and b/html/img/back_top.gif differ diff --git a/html/img/bin_closed.png b/html/img/bin_closed.png new file mode 100644 index 0000000..afe22ba Binary files /dev/null and b/html/img/bin_closed.png differ diff --git a/html/img/bin_empty.png b/html/img/bin_empty.png new file mode 100644 index 0000000..375b8bf Binary files /dev/null and b/html/img/bin_empty.png differ diff --git a/html/img/bt-create-title-1.gif b/html/img/bt-create-title-1.gif new file mode 100644 index 0000000..13cf3d4 Binary files /dev/null and b/html/img/bt-create-title-1.gif differ diff --git a/html/img/bt-create-title-2.gif b/html/img/bt-create-title-2.gif new file mode 100644 index 0000000..dfb4caf Binary files /dev/null and b/html/img/bt-create-title-2.gif differ diff --git a/html/img/bt-create-title-3.gif b/html/img/bt-create-title-3.gif new file mode 100644 index 0000000..0c56bc1 Binary files /dev/null and b/html/img/bt-create-title-3.gif differ diff --git a/html/img/button_add.gif b/html/img/button_add.gif new file mode 100644 index 0000000..f04fc05 Binary files /dev/null and b/html/img/button_add.gif differ diff --git a/html/img/button_add_gray.gif b/html/img/button_add_gray.gif new file mode 100644 index 0000000..49fe01b Binary files /dev/null and b/html/img/button_add_gray.gif differ diff --git a/html/img/button_add_over.gif b/html/img/button_add_over.gif new file mode 100644 index 0000000..8ca58b7 Binary files /dev/null and b/html/img/button_add_over.gif differ diff --git a/html/img/button_add_small.gif b/html/img/button_add_small.gif new file mode 100644 index 0000000..31c76f8 Binary files /dev/null and b/html/img/button_add_small.gif differ diff --git a/html/img/button_add_small_gray.gif b/html/img/button_add_small_gray.gif new file mode 100644 index 0000000..33a4710 Binary files /dev/null and b/html/img/button_add_small_gray.gif differ diff --git a/html/img/button_add_small_over.gif b/html/img/button_add_small_over.gif new file mode 100644 index 0000000..ab955fc Binary files /dev/null and b/html/img/button_add_small_over.gif differ diff --git a/html/img/button_apply.gif b/html/img/button_apply.gif new file mode 100644 index 0000000..f31ead2 Binary files /dev/null and b/html/img/button_apply.gif differ diff --git a/html/img/button_apply_gray.gif b/html/img/button_apply_gray.gif new file mode 100644 index 0000000..c0b0042 Binary files /dev/null and b/html/img/button_apply_gray.gif differ diff --git a/html/img/button_apply_over.gif b/html/img/button_apply_over.gif new file mode 100644 index 0000000..e3025b0 Binary files /dev/null and b/html/img/button_apply_over.gif differ diff --git a/html/img/button_calendar.gif b/html/img/button_calendar.gif new file mode 100644 index 0000000..85f6869 Binary files /dev/null and b/html/img/button_calendar.gif differ diff --git a/html/img/button_calendar_over.gif b/html/img/button_calendar_over.gif new file mode 100644 index 0000000..1354692 Binary files /dev/null and b/html/img/button_calendar_over.gif differ diff --git a/html/img/button_cancel.gif b/html/img/button_cancel.gif new file mode 100644 index 0000000..b06b90f Binary files /dev/null and b/html/img/button_cancel.gif differ diff --git a/html/img/button_cancel.jpg b/html/img/button_cancel.jpg new file mode 100644 index 0000000..916d7f9 Binary files /dev/null and b/html/img/button_cancel.jpg differ diff --git a/html/img/button_cancel_gray.gif b/html/img/button_cancel_gray.gif new file mode 100644 index 0000000..f6e41e9 Binary files /dev/null and b/html/img/button_cancel_gray.gif differ diff --git a/html/img/button_cancel_over.gif b/html/img/button_cancel_over.gif new file mode 100644 index 0000000..3ce1d69 Binary files /dev/null and b/html/img/button_cancel_over.gif differ diff --git a/html/img/button_cancel_over.jpg b/html/img/button_cancel_over.jpg new file mode 100644 index 0000000..d4cba9e Binary files /dev/null and b/html/img/button_cancel_over.jpg differ diff --git a/html/img/button_close.gif b/html/img/button_close.gif new file mode 100644 index 0000000..3d75ea4 Binary files /dev/null and b/html/img/button_close.gif differ diff --git a/html/img/button_close_gray.gif b/html/img/button_close_gray.gif new file mode 100644 index 0000000..8041a20 Binary files /dev/null and b/html/img/button_close_gray.gif differ diff --git a/html/img/button_close_over.gif b/html/img/button_close_over.gif new file mode 100644 index 0000000..6e543e9 Binary files /dev/null and b/html/img/button_close_over.gif differ diff --git a/html/img/button_mkcol.gif b/html/img/button_mkcol.gif new file mode 100644 index 0000000..34d11ac Binary files /dev/null and b/html/img/button_mkcol.gif differ diff --git a/html/img/button_mkcol_gray.gif b/html/img/button_mkcol_gray.gif new file mode 100644 index 0000000..9ef358d Binary files /dev/null and b/html/img/button_mkcol_gray.gif differ diff --git a/html/img/button_mkcol_over.gif b/html/img/button_mkcol_over.gif new file mode 100644 index 0000000..a34b066 Binary files /dev/null and b/html/img/button_mkcol_over.gif differ diff --git a/html/img/button_no.gif b/html/img/button_no.gif new file mode 100644 index 0000000..902464e Binary files /dev/null and b/html/img/button_no.gif differ diff --git a/html/img/button_no_gray.gif b/html/img/button_no_gray.gif new file mode 100644 index 0000000..e8008a9 Binary files /dev/null and b/html/img/button_no_gray.gif differ diff --git a/html/img/button_no_over.gif b/html/img/button_no_over.gif new file mode 100644 index 0000000..8923765 Binary files /dev/null and b/html/img/button_no_over.gif differ diff --git a/html/img/button_ok.gif b/html/img/button_ok.gif new file mode 100644 index 0000000..805b87a Binary files /dev/null and b/html/img/button_ok.gif differ diff --git a/html/img/button_ok_gray.gif b/html/img/button_ok_gray.gif new file mode 100644 index 0000000..ceaf7d8 Binary files /dev/null and b/html/img/button_ok_gray.gif differ diff --git a/html/img/button_ok_over.gif b/html/img/button_ok_over.gif new file mode 100644 index 0000000..4c005ce Binary files /dev/null and b/html/img/button_ok_over.gif differ diff --git a/html/img/button_remove.gif b/html/img/button_remove.gif new file mode 100644 index 0000000..88d5fa1 Binary files /dev/null and b/html/img/button_remove.gif differ diff --git a/html/img/button_remove_gray.gif b/html/img/button_remove_gray.gif new file mode 100644 index 0000000..2eff8c6 Binary files /dev/null and b/html/img/button_remove_gray.gif differ diff --git a/html/img/button_remove_over.gif b/html/img/button_remove_over.gif new file mode 100644 index 0000000..f6476bf Binary files /dev/null and b/html/img/button_remove_over.gif differ diff --git a/html/img/button_remove_small.gif b/html/img/button_remove_small.gif new file mode 100644 index 0000000..7e8a073 Binary files /dev/null and b/html/img/button_remove_small.gif differ diff --git a/html/img/button_remove_small_gray.gif b/html/img/button_remove_small_gray.gif new file mode 100644 index 0000000..133a35e Binary files /dev/null and b/html/img/button_remove_small_gray.gif differ diff --git a/html/img/button_remove_small_over.gif b/html/img/button_remove_small_over.gif new file mode 100644 index 0000000..9b1b9e5 Binary files /dev/null and b/html/img/button_remove_small_over.gif differ diff --git a/html/img/button_rename.gif b/html/img/button_rename.gif new file mode 100644 index 0000000..54d6220 Binary files /dev/null and b/html/img/button_rename.gif differ diff --git a/html/img/button_rename_gray.gif b/html/img/button_rename_gray.gif new file mode 100644 index 0000000..8e6c48e Binary files /dev/null and b/html/img/button_rename_gray.gif differ diff --git a/html/img/button_rename_over.gif b/html/img/button_rename_over.gif new file mode 100644 index 0000000..2fc0150 Binary files /dev/null and b/html/img/button_rename_over.gif differ diff --git a/html/img/button_save.gif b/html/img/button_save.gif new file mode 100644 index 0000000..8697ba9 Binary files /dev/null and b/html/img/button_save.gif differ diff --git a/html/img/button_save_gray.gif b/html/img/button_save_gray.gif new file mode 100644 index 0000000..c6b3ef7 Binary files /dev/null and b/html/img/button_save_gray.gif differ diff --git a/html/img/button_save_over.gif b/html/img/button_save_over.gif new file mode 100644 index 0000000..9d5fa3c Binary files /dev/null and b/html/img/button_save_over.gif differ diff --git a/html/img/button_start.gif b/html/img/button_start.gif new file mode 100644 index 0000000..e99b79c Binary files /dev/null and b/html/img/button_start.gif differ diff --git a/html/img/button_start_over.gif b/html/img/button_start_over.gif new file mode 100644 index 0000000..4fa2e46 Binary files /dev/null and b/html/img/button_start_over.gif differ diff --git a/html/img/button_update.gif b/html/img/button_update.gif new file mode 100644 index 0000000..94b4699 Binary files /dev/null and b/html/img/button_update.gif differ diff --git a/html/img/button_update_gray.gif b/html/img/button_update_gray.gif new file mode 100644 index 0000000..a748246 Binary files /dev/null and b/html/img/button_update_gray.gif differ diff --git a/html/img/button_update_over.gif b/html/img/button_update_over.gif new file mode 100644 index 0000000..920625e Binary files /dev/null and b/html/img/button_update_over.gif differ diff --git a/html/img/button_update_s.gif b/html/img/button_update_s.gif new file mode 100644 index 0000000..c4aef1d Binary files /dev/null and b/html/img/button_update_s.gif differ diff --git a/html/img/button_update_s_gray.gif b/html/img/button_update_s_gray.gif new file mode 100644 index 0000000..2489e48 Binary files /dev/null and b/html/img/button_update_s_gray.gif differ diff --git a/html/img/button_update_s_over.gif b/html/img/button_update_s_over.gif new file mode 100644 index 0000000..aa99a61 Binary files /dev/null and b/html/img/button_update_s_over.gif differ diff --git a/html/img/button_yes.gif b/html/img/button_yes.gif new file mode 100644 index 0000000..e5a9068 Binary files /dev/null and b/html/img/button_yes.gif differ diff --git a/html/img/button_yes_gray.gif b/html/img/button_yes_gray.gif new file mode 100644 index 0000000..18f8a5b Binary files /dev/null and b/html/img/button_yes_gray.gif differ diff --git a/html/img/button_yes_over.gif b/html/img/button_yes_over.gif new file mode 100644 index 0000000..2981612 Binary files /dev/null and b/html/img/button_yes_over.gif differ diff --git a/html/img/circle.gif b/html/img/circle.gif new file mode 100644 index 0000000..f1aa160 Binary files /dev/null and b/html/img/circle.gif differ diff --git a/html/img/control_play.png b/html/img/control_play.png new file mode 100644 index 0000000..0846555 Binary files /dev/null and b/html/img/control_play.png differ diff --git a/html/img/control_play_blue.png b/html/img/control_play_blue.png new file mode 100644 index 0000000..f8c8ec6 Binary files /dev/null and b/html/img/control_play_blue.png differ diff --git a/html/img/delta.gif b/html/img/delta.gif new file mode 100644 index 0000000..9d6ac04 Binary files /dev/null and b/html/img/delta.gif differ diff --git a/html/img/dialog_info.jpg b/html/img/dialog_info.jpg new file mode 100644 index 0000000..b349054 Binary files /dev/null and b/html/img/dialog_info.jpg differ diff --git a/html/img/dialog_input.jpg b/html/img/dialog_input.jpg new file mode 100644 index 0000000..c17529e Binary files /dev/null and b/html/img/dialog_input.jpg differ diff --git a/html/img/dialog_warn.jpg b/html/img/dialog_warn.jpg new file mode 100644 index 0000000..28f1a13 Binary files /dev/null and b/html/img/dialog_warn.jpg differ diff --git a/html/img/dt-arrow-dn.png b/html/img/dt-arrow-dn.png new file mode 100644 index 0000000..85fda0b Binary files /dev/null and b/html/img/dt-arrow-dn.png differ diff --git a/html/img/dt-arrow-up.png b/html/img/dt-arrow-up.png new file mode 100644 index 0000000..1c67431 Binary files /dev/null and b/html/img/dt-arrow-up.png differ diff --git a/html/img/folder.png b/html/img/folder.png new file mode 100644 index 0000000..784e8fa Binary files /dev/null and b/html/img/folder.png differ diff --git a/html/img/folder_brick.png b/html/img/folder_brick.png new file mode 100644 index 0000000..5dea976 Binary files /dev/null and b/html/img/folder_brick.png differ diff --git a/html/img/folder_user.png b/html/img/folder_user.png new file mode 100644 index 0000000..f021c3e Binary files /dev/null and b/html/img/folder_user.png differ diff --git a/html/img/foot.jpg b/html/img/foot.jpg new file mode 100644 index 0000000..b54125b Binary files /dev/null and b/html/img/foot.jpg differ diff --git a/html/img/h3_bt-create_0.gif b/html/img/h3_bt-create_0.gif new file mode 100644 index 0000000..4a08a95 Binary files /dev/null and b/html/img/h3_bt-create_0.gif differ diff --git a/html/img/h3_bt-create_1.gif b/html/img/h3_bt-create_1.gif new file mode 100644 index 0000000..d21c8e4 Binary files /dev/null and b/html/img/h3_bt-create_1.gif differ diff --git a/html/img/h3_bt-create_2.gif b/html/img/h3_bt-create_2.gif new file mode 100644 index 0000000..d692a94 Binary files /dev/null and b/html/img/h3_bt-create_2.gif differ diff --git a/html/img/h3_result_0.gif b/html/img/h3_result_0.gif new file mode 100644 index 0000000..e85acb8 Binary files /dev/null and b/html/img/h3_result_0.gif differ diff --git a/html/img/h3_result_1.gif b/html/img/h3_result_1.gif new file mode 100644 index 0000000..41c20b8 Binary files /dev/null and b/html/img/h3_result_1.gif differ diff --git a/html/img/h3_result_2.gif b/html/img/h3_result_2.gif new file mode 100644 index 0000000..c33c128 Binary files /dev/null and b/html/img/h3_result_2.gif differ diff --git a/html/img/h3_result_3.gif b/html/img/h3_result_3.gif new file mode 100644 index 0000000..2757137 Binary files /dev/null and b/html/img/h3_result_3.gif differ diff --git a/html/img/h3_result_4.gif b/html/img/h3_result_4.gif new file mode 100644 index 0000000..d692a94 Binary files /dev/null and b/html/img/h3_result_4.gif differ diff --git a/html/img/h3_result_5.gif b/html/img/h3_result_5.gif new file mode 100644 index 0000000..c7d2d8f Binary files /dev/null and b/html/img/h3_result_5.gif differ diff --git a/html/img/h3_result_6.gif b/html/img/h3_result_6.gif new file mode 100644 index 0000000..3f8f707 Binary files /dev/null and b/html/img/h3_result_6.gif differ diff --git a/html/img/h3_rt-setting_0.gif b/html/img/h3_rt-setting_0.gif new file mode 100644 index 0000000..406e55d Binary files /dev/null and b/html/img/h3_rt-setting_0.gif differ diff --git a/html/img/h3_rt-setting_1.gif b/html/img/h3_rt-setting_1.gif new file mode 100644 index 0000000..d692a94 Binary files /dev/null and b/html/img/h3_rt-setting_1.gif differ diff --git a/html/img/head.jpg b/html/img/head.jpg new file mode 100644 index 0000000..d74f391 Binary files /dev/null and b/html/img/head.jpg differ diff --git a/html/img/line-numbers.png b/html/img/line-numbers.png new file mode 100644 index 0000000..5e4a2ea Binary files /dev/null and b/html/img/line-numbers.png differ diff --git a/html/img/line_white.gif b/html/img/line_white.gif new file mode 100644 index 0000000..cb13f65 Binary files /dev/null and b/html/img/line_white.gif differ diff --git a/html/img/loading.gif b/html/img/loading.gif new file mode 100644 index 0000000..4cce7e4 Binary files /dev/null and b/html/img/loading.gif differ diff --git a/html/img/page_white_ruby.png b/html/img/page_white_ruby.png new file mode 100644 index 0000000..f59b7c4 Binary files /dev/null and b/html/img/page_white_ruby.png differ diff --git a/html/img/panel_100_bottom.gif b/html/img/panel_100_bottom.gif new file mode 100644 index 0000000..d05de9a Binary files /dev/null and b/html/img/panel_100_bottom.gif differ diff --git a/html/img/panel_100_middle.gif b/html/img/panel_100_middle.gif new file mode 100644 index 0000000..7bbfeaf Binary files /dev/null and b/html/img/panel_100_middle.gif differ diff --git a/html/img/panel_100_top.gif b/html/img/panel_100_top.gif new file mode 100644 index 0000000..71b0617 Binary files /dev/null and b/html/img/panel_100_top.gif differ diff --git a/html/img/panel_140_650_b.gif b/html/img/panel_140_650_b.gif new file mode 100644 index 0000000..2586391 Binary files /dev/null and b/html/img/panel_140_650_b.gif differ diff --git a/html/img/panel_140_650_m.gif b/html/img/panel_140_650_m.gif new file mode 100644 index 0000000..c9746fc Binary files /dev/null and b/html/img/panel_140_650_m.gif differ diff --git a/html/img/panel_140_650_t.gif b/html/img/panel_140_650_t.gif new file mode 100644 index 0000000..98dced4 Binary files /dev/null and b/html/img/panel_140_650_t.gif differ diff --git a/html/img/panel_140_660_b.gif b/html/img/panel_140_660_b.gif new file mode 100644 index 0000000..1b6e7ea Binary files /dev/null and b/html/img/panel_140_660_b.gif differ diff --git a/html/img/panel_140_660_m.gif b/html/img/panel_140_660_m.gif new file mode 100644 index 0000000..32dcba4 Binary files /dev/null and b/html/img/panel_140_660_m.gif differ diff --git a/html/img/panel_140_660_t.gif b/html/img/panel_140_660_t.gif new file mode 100644 index 0000000..9353d5c Binary files /dev/null and b/html/img/panel_140_660_t.gif differ diff --git a/html/img/panel_140_b.gif b/html/img/panel_140_b.gif new file mode 100644 index 0000000..96e68cc Binary files /dev/null and b/html/img/panel_140_b.gif differ diff --git a/html/img/panel_140_m.gif b/html/img/panel_140_m.gif new file mode 100644 index 0000000..2caa445 Binary files /dev/null and b/html/img/panel_140_m.gif differ diff --git a/html/img/panel_140_t.gif b/html/img/panel_140_t.gif new file mode 100644 index 0000000..40bf3f6 Binary files /dev/null and b/html/img/panel_140_t.gif differ diff --git a/html/img/panel_260_b.gif b/html/img/panel_260_b.gif new file mode 100644 index 0000000..089aacb Binary files /dev/null and b/html/img/panel_260_b.gif differ diff --git a/html/img/panel_260_m.gif b/html/img/panel_260_m.gif new file mode 100644 index 0000000..72057d7 Binary files /dev/null and b/html/img/panel_260_m.gif differ diff --git a/html/img/panel_260_t.gif b/html/img/panel_260_t.gif new file mode 100644 index 0000000..fb57f15 Binary files /dev/null and b/html/img/panel_260_t.gif differ diff --git a/html/img/panel_300_b.gif b/html/img/panel_300_b.gif new file mode 100644 index 0000000..f4ce758 Binary files /dev/null and b/html/img/panel_300_b.gif differ diff --git a/html/img/panel_300_m.gif b/html/img/panel_300_m.gif new file mode 100644 index 0000000..10faae3 Binary files /dev/null and b/html/img/panel_300_m.gif differ diff --git a/html/img/panel_300_t.gif b/html/img/panel_300_t.gif new file mode 100644 index 0000000..1fa360e Binary files /dev/null and b/html/img/panel_300_t.gif differ diff --git a/html/img/panel_320_b.gif b/html/img/panel_320_b.gif new file mode 100644 index 0000000..61ef553 Binary files /dev/null and b/html/img/panel_320_b.gif differ diff --git a/html/img/panel_320_m.gif b/html/img/panel_320_m.gif new file mode 100644 index 0000000..e657b4a Binary files /dev/null and b/html/img/panel_320_m.gif differ diff --git a/html/img/panel_320_t.gif b/html/img/panel_320_t.gif new file mode 100644 index 0000000..f5bcb04 Binary files /dev/null and b/html/img/panel_320_t.gif differ diff --git a/html/img/panel_360_b.gif b/html/img/panel_360_b.gif new file mode 100644 index 0000000..8106ab8 Binary files /dev/null and b/html/img/panel_360_b.gif differ diff --git a/html/img/panel_360_m.gif b/html/img/panel_360_m.gif new file mode 100644 index 0000000..0354d72 Binary files /dev/null and b/html/img/panel_360_m.gif differ diff --git a/html/img/panel_360_t.gif b/html/img/panel_360_t.gif new file mode 100644 index 0000000..188406a Binary files /dev/null and b/html/img/panel_360_t.gif differ diff --git a/html/img/panel_380_b.gif b/html/img/panel_380_b.gif new file mode 100644 index 0000000..c32d80e Binary files /dev/null and b/html/img/panel_380_b.gif differ diff --git a/html/img/panel_380_m.gif b/html/img/panel_380_m.gif new file mode 100644 index 0000000..97bdf29 Binary files /dev/null and b/html/img/panel_380_m.gif differ diff --git a/html/img/panel_380_t.gif b/html/img/panel_380_t.gif new file mode 100644 index 0000000..9a15003 Binary files /dev/null and b/html/img/panel_380_t.gif differ diff --git a/html/img/panel_500_b.gif b/html/img/panel_500_b.gif new file mode 100644 index 0000000..bafbf7b Binary files /dev/null and b/html/img/panel_500_b.gif differ diff --git a/html/img/panel_500_m.gif b/html/img/panel_500_m.gif new file mode 100644 index 0000000..5ba4aaa Binary files /dev/null and b/html/img/panel_500_m.gif differ diff --git a/html/img/panel_500_t.gif b/html/img/panel_500_t.gif new file mode 100644 index 0000000..981bd0c Binary files /dev/null and b/html/img/panel_500_t.gif differ diff --git a/html/img/panel_620_b.gif b/html/img/panel_620_b.gif new file mode 100644 index 0000000..1320402 Binary files /dev/null and b/html/img/panel_620_b.gif differ diff --git a/html/img/panel_620_m.gif b/html/img/panel_620_m.gif new file mode 100644 index 0000000..5f5bf04 Binary files /dev/null and b/html/img/panel_620_m.gif differ diff --git a/html/img/panel_620_t.gif b/html/img/panel_620_t.gif new file mode 100644 index 0000000..ff21359 Binary files /dev/null and b/html/img/panel_620_t.gif differ diff --git a/html/img/panel_780_b.gif b/html/img/panel_780_b.gif new file mode 100644 index 0000000..6a9fc80 Binary files /dev/null and b/html/img/panel_780_b.gif differ diff --git a/html/img/panel_780_m.gif b/html/img/panel_780_m.gif new file mode 100644 index 0000000..c44ba7e Binary files /dev/null and b/html/img/panel_780_m.gif differ diff --git a/html/img/panel_780_t.gif b/html/img/panel_780_t.gif new file mode 100644 index 0000000..1a7d1f0 Binary files /dev/null and b/html/img/panel_780_t.gif differ diff --git a/html/img/problem.gif b/html/img/problem.gif new file mode 100644 index 0000000..a95f05a Binary files /dev/null and b/html/img/problem.gif differ diff --git a/html/img/progressbar.gif b/html/img/progressbar.gif new file mode 100644 index 0000000..2d3692f Binary files /dev/null and b/html/img/progressbar.gif differ diff --git a/html/img/result-title-1-1.gif b/html/img/result-title-1-1.gif new file mode 100644 index 0000000..dec2696 Binary files /dev/null and b/html/img/result-title-1-1.gif differ diff --git a/html/img/result-title-1-2.gif b/html/img/result-title-1-2.gif new file mode 100644 index 0000000..c9acdbd Binary files /dev/null and b/html/img/result-title-1-2.gif differ diff --git a/html/img/result-title-2-1.gif b/html/img/result-title-2-1.gif new file mode 100644 index 0000000..dcc5356 Binary files /dev/null and b/html/img/result-title-2-1.gif differ diff --git a/html/img/result-title-2-2.gif b/html/img/result-title-2-2.gif new file mode 100644 index 0000000..7c40676 Binary files /dev/null and b/html/img/result-title-2-2.gif differ diff --git a/html/img/result-title-3-1.gif b/html/img/result-title-3-1.gif new file mode 100644 index 0000000..24a20f0 Binary files /dev/null and b/html/img/result-title-3-1.gif differ diff --git a/html/img/result-title-4-1.gif b/html/img/result-title-4-1.gif new file mode 100644 index 0000000..08e5bf0 Binary files /dev/null and b/html/img/result-title-4-1.gif differ diff --git a/html/img/rt-setting-title-1.gif b/html/img/rt-setting-title-1.gif new file mode 100644 index 0000000..5547fd1 Binary files /dev/null and b/html/img/rt-setting-title-1.gif differ diff --git a/html/img/rt-setting-title-2.gif b/html/img/rt-setting-title-2.gif new file mode 100644 index 0000000..0c56bc1 Binary files /dev/null and b/html/img/rt-setting-title-2.gif differ diff --git a/html/img/s.gif b/html/img/s.gif new file mode 100644 index 0000000..8434136 Binary files /dev/null and b/html/img/s.gif differ diff --git a/html/img/scroll.gif b/html/img/scroll.gif new file mode 100644 index 0000000..285d7f7 Binary files /dev/null and b/html/img/scroll.gif differ diff --git a/html/img/separator.gif b/html/img/separator.gif new file mode 100644 index 0000000..daf32e6 Binary files /dev/null and b/html/img/separator.gif differ diff --git a/html/img/sidebar_agent.png b/html/img/sidebar_agent.png new file mode 100644 index 0000000..78b33ae Binary files /dev/null and b/html/img/sidebar_agent.png differ diff --git a/html/img/sidebar_agent_edit.png b/html/img/sidebar_agent_edit.png new file mode 100644 index 0000000..817c3b9 Binary files /dev/null and b/html/img/sidebar_agent_edit.png differ diff --git a/html/img/sidebar_agent_edit_agent.png b/html/img/sidebar_agent_edit_agent.png new file mode 100644 index 0000000..b65dc6e Binary files /dev/null and b/html/img/sidebar_agent_edit_agent.png differ diff --git a/html/img/sidebar_agent_edit_agent_over.png b/html/img/sidebar_agent_edit_agent_over.png new file mode 100644 index 0000000..2bad05c Binary files /dev/null and b/html/img/sidebar_agent_edit_agent_over.png differ diff --git a/html/img/sidebar_agent_edit_agent_s.png b/html/img/sidebar_agent_edit_agent_s.png new file mode 100644 index 0000000..37bb45a Binary files /dev/null and b/html/img/sidebar_agent_edit_agent_s.png differ diff --git a/html/img/sidebar_agent_edit_over.png b/html/img/sidebar_agent_edit_over.png new file mode 100644 index 0000000..9c2ff39 Binary files /dev/null and b/html/img/sidebar_agent_edit_over.png differ diff --git a/html/img/sidebar_agent_edit_s.png b/html/img/sidebar_agent_edit_s.png new file mode 100644 index 0000000..2a1e40b Binary files /dev/null and b/html/img/sidebar_agent_edit_s.png differ diff --git a/html/img/sidebar_agent_edit_shared_lib.png b/html/img/sidebar_agent_edit_shared_lib.png new file mode 100644 index 0000000..ce20312 Binary files /dev/null and b/html/img/sidebar_agent_edit_shared_lib.png differ diff --git a/html/img/sidebar_agent_edit_shared_lib_over.png b/html/img/sidebar_agent_edit_shared_lib_over.png new file mode 100644 index 0000000..1dedea6 Binary files /dev/null and b/html/img/sidebar_agent_edit_shared_lib_over.png differ diff --git a/html/img/sidebar_agent_edit_shared_lib_s.png b/html/img/sidebar_agent_edit_shared_lib_s.png new file mode 100644 index 0000000..7fffcd1 Binary files /dev/null and b/html/img/sidebar_agent_edit_shared_lib_s.png differ diff --git a/html/img/sidebar_back.gif b/html/img/sidebar_back.gif new file mode 100644 index 0000000..91804a6 Binary files /dev/null and b/html/img/sidebar_back.gif differ diff --git a/html/img/sidebar_bt.png b/html/img/sidebar_bt.png new file mode 100644 index 0000000..4b8a770 Binary files /dev/null and b/html/img/sidebar_bt.png differ diff --git a/html/img/sidebar_bt_create.png b/html/img/sidebar_bt_create.png new file mode 100644 index 0000000..a59c0d2 Binary files /dev/null and b/html/img/sidebar_bt_create.png differ diff --git a/html/img/sidebar_bt_create_over.png b/html/img/sidebar_bt_create_over.png new file mode 100644 index 0000000..34d2bb6 Binary files /dev/null and b/html/img/sidebar_bt_create_over.png differ diff --git a/html/img/sidebar_bt_create_s.png b/html/img/sidebar_bt_create_s.png new file mode 100644 index 0000000..0559360 Binary files /dev/null and b/html/img/sidebar_bt_create_s.png differ diff --git a/html/img/sidebar_bt_result.png b/html/img/sidebar_bt_result.png new file mode 100644 index 0000000..ade447a Binary files /dev/null and b/html/img/sidebar_bt_result.png differ diff --git a/html/img/sidebar_bt_result_over.png b/html/img/sidebar_bt_result_over.png new file mode 100644 index 0000000..30ba3df Binary files /dev/null and b/html/img/sidebar_bt_result_over.png differ diff --git a/html/img/sidebar_bt_result_s.png b/html/img/sidebar_bt_result_s.png new file mode 100644 index 0000000..5c7178e Binary files /dev/null and b/html/img/sidebar_bt_result_s.png differ diff --git a/html/img/sidebar_result_rmt.png b/html/img/sidebar_result_rmt.png new file mode 100644 index 0000000..14af3b2 Binary files /dev/null and b/html/img/sidebar_result_rmt.png differ diff --git a/html/img/sidebar_result_rmt_over.png b/html/img/sidebar_result_rmt_over.png new file mode 100644 index 0000000..e808c99 Binary files /dev/null and b/html/img/sidebar_result_rmt_over.png differ diff --git a/html/img/sidebar_result_rmt_s.png b/html/img/sidebar_result_rmt_s.png new file mode 100644 index 0000000..1b22e49 Binary files /dev/null and b/html/img/sidebar_result_rmt_s.png differ diff --git a/html/img/sidebar_rt.png b/html/img/sidebar_rt.png new file mode 100644 index 0000000..1cbbcbe Binary files /dev/null and b/html/img/sidebar_rt.png differ diff --git a/html/img/sidebar_rt_setting.png b/html/img/sidebar_rt_setting.png new file mode 100644 index 0000000..435133d Binary files /dev/null and b/html/img/sidebar_rt_setting.png differ diff --git a/html/img/sidebar_rt_setting_over.png b/html/img/sidebar_rt_setting_over.png new file mode 100644 index 0000000..9d95cc3 Binary files /dev/null and b/html/img/sidebar_rt_setting_over.png differ diff --git a/html/img/sidebar_rt_setting_s.png b/html/img/sidebar_rt_setting_s.png new file mode 100644 index 0000000..816525e Binary files /dev/null and b/html/img/sidebar_rt_setting_s.png differ diff --git a/html/img/sprite.png b/html/img/sprite.png new file mode 100644 index 0000000..73634d6 Binary files /dev/null and b/html/img/sprite.png differ diff --git a/html/img/submenu_agents.png b/html/img/submenu_agents.png new file mode 100644 index 0000000..e822fd3 Binary files /dev/null and b/html/img/submenu_agents.png differ diff --git a/html/img/submenu_agents_over.png b/html/img/submenu_agents_over.png new file mode 100644 index 0000000..e63d198 Binary files /dev/null and b/html/img/submenu_agents_over.png differ diff --git a/html/img/submenu_agents_s.png b/html/img/submenu_agents_s.png new file mode 100644 index 0000000..51b85d0 Binary files /dev/null and b/html/img/submenu_agents_s.png differ diff --git a/html/img/submenu_graph.png b/html/img/submenu_graph.png new file mode 100644 index 0000000..1224199 Binary files /dev/null and b/html/img/submenu_graph.png differ diff --git a/html/img/submenu_graph_over.png b/html/img/submenu_graph_over.png new file mode 100644 index 0000000..c7755ac Binary files /dev/null and b/html/img/submenu_graph_over.png differ diff --git a/html/img/submenu_graph_s.png b/html/img/submenu_graph_s.png new file mode 100644 index 0000000..5c866e1 Binary files /dev/null and b/html/img/submenu_graph_s.png differ diff --git a/html/img/submenu_info.png b/html/img/submenu_info.png new file mode 100644 index 0000000..dae03cd Binary files /dev/null and b/html/img/submenu_info.png differ diff --git a/html/img/submenu_info_over.png b/html/img/submenu_info_over.png new file mode 100644 index 0000000..9a9fea5 Binary files /dev/null and b/html/img/submenu_info_over.png differ diff --git a/html/img/submenu_info_s.png b/html/img/submenu_info_s.png new file mode 100644 index 0000000..7d3af96 Binary files /dev/null and b/html/img/submenu_info_s.png differ diff --git a/html/img/submenu_log.png b/html/img/submenu_log.png new file mode 100644 index 0000000..1a93bb1 Binary files /dev/null and b/html/img/submenu_log.png differ diff --git a/html/img/submenu_log_over.png b/html/img/submenu_log_over.png new file mode 100644 index 0000000..740dad0 Binary files /dev/null and b/html/img/submenu_log_over.png differ diff --git a/html/img/submenu_log_s.png b/html/img/submenu_log_s.png new file mode 100644 index 0000000..09ffd41 Binary files /dev/null and b/html/img/submenu_log_s.png differ diff --git a/html/img/submenu_operation.png b/html/img/submenu_operation.png new file mode 100644 index 0000000..694afb1 Binary files /dev/null and b/html/img/submenu_operation.png differ diff --git a/html/img/submenu_operation_over.png b/html/img/submenu_operation_over.png new file mode 100644 index 0000000..111be23 Binary files /dev/null and b/html/img/submenu_operation_over.png differ diff --git a/html/img/submenu_operation_s.png b/html/img/submenu_operation_s.png new file mode 100644 index 0000000..b75d4e8 Binary files /dev/null and b/html/img/submenu_operation_s.png differ diff --git a/html/img/submenu_trade.png b/html/img/submenu_trade.png new file mode 100644 index 0000000..ffe8a39 Binary files /dev/null and b/html/img/submenu_trade.png differ diff --git a/html/img/submenu_trade_over.png b/html/img/submenu_trade_over.png new file mode 100644 index 0000000..ae775ed Binary files /dev/null and b/html/img/submenu_trade_over.png differ diff --git a/html/img/submenu_trade_s.png b/html/img/submenu_trade_s.png new file mode 100644 index 0000000..d13db35 Binary files /dev/null and b/html/img/submenu_trade_s.png differ diff --git a/html/img/td_over.gif b/html/img/td_over.gif new file mode 100644 index 0000000..91f17b3 Binary files /dev/null and b/html/img/td_over.gif differ diff --git a/html/img/td_over_d.gif b/html/img/td_over_d.gif new file mode 100644 index 0000000..db19acf Binary files /dev/null and b/html/img/td_over_d.gif differ diff --git a/html/img/td_selected.gif b/html/img/td_selected.gif new file mode 100644 index 0000000..92fab96 Binary files /dev/null and b/html/img/td_selected.gif differ diff --git a/html/img/thead.gif b/html/img/thead.gif new file mode 100644 index 0000000..0aaa068 Binary files /dev/null and b/html/img/thead.gif differ diff --git a/html/img/transparent.gif b/html/img/transparent.gif new file mode 100644 index 0000000..099c95f Binary files /dev/null and b/html/img/transparent.gif differ diff --git a/html/img/yui/treeview-sprite.gif b/html/img/yui/treeview-sprite.gif new file mode 100644 index 0000000..ad213f8 Binary files /dev/null and b/html/img/yui/treeview-sprite.gif differ diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..2908441 --- /dev/null +++ b/html/index.html @@ -0,0 +1,492 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +" + hightlighted_text + "
";
+ else
+ new_Obj.innerHTML= ""+ hightlighted_text +"";
+
+ t.content_highlight.parentNode.replaceChild(new_Obj, t.content_highlight);
+
+ t.content_highlight= new_Obj;
+ }
+
+ t.last_text_to_highlight= infos["full_text"];
+ t.last_hightlighted_text= hightlighted_text;
+
+ tps3=new Date().getTime();
+
+ if(t.settings["debug"]){
+ //lineNumber=tab_text.length;
+ //t.debug.value+=" \nNB char: "+_$("src").value.length+" Nb line: "+ lineNumber;
+
+ t.debug.value= "Tps optimisation "+(tps_end_opti-tps_start)
+ +" | tps reg exp: "+ (tpsAfterReg-tps_end_opti)
+ +" | tps opti HTML : "+ (tpsAfterOpti2-tpsAfterReg) + ' '+ ( doHtmlOpti ? 'yes' : 'no' )
+ +" | tps update highlight content: "+ (tps3-tpsAfterOpti2)
+ +" | tpsTotal: "+ (tps3-tps_start)
+ + "("+tps3+")\n"+ debug_opti;
+ // t.debug.value+= "highlight\n"+hightlighted_text;*/
+ }
+
+ };
+
+ EditArea.prototype.resync_highlight= function(reload_now){
+ this.reload_highlight=true;
+ this.last_text_to_highlight="";
+ this.focus();
+ if(reload_now)
+ this.check_line_selection(false);
+ };
diff --git a/html/js/edit_area/images/autocompletion.gif b/html/js/edit_area/images/autocompletion.gif
new file mode 100644
index 0000000..f3dfc2e
Binary files /dev/null and b/html/js/edit_area/images/autocompletion.gif differ
diff --git a/html/js/edit_area/images/close.gif b/html/js/edit_area/images/close.gif
new file mode 100644
index 0000000..679ca2a
Binary files /dev/null and b/html/js/edit_area/images/close.gif differ
diff --git a/html/js/edit_area/images/fullscreen.gif b/html/js/edit_area/images/fullscreen.gif
new file mode 100644
index 0000000..66fa6d9
Binary files /dev/null and b/html/js/edit_area/images/fullscreen.gif differ
diff --git a/html/js/edit_area/images/go_to_line.gif b/html/js/edit_area/images/go_to_line.gif
new file mode 100644
index 0000000..06042ec
Binary files /dev/null and b/html/js/edit_area/images/go_to_line.gif differ
diff --git a/html/js/edit_area/images/goto.png b/html/js/edit_area/images/goto.png
new file mode 100644
index 0000000..4a2f9d4
Binary files /dev/null and b/html/js/edit_area/images/goto.png differ
diff --git a/html/js/edit_area/images/help.gif b/html/js/edit_area/images/help.gif
new file mode 100644
index 0000000..51a1ee4
Binary files /dev/null and b/html/js/edit_area/images/help.gif differ
diff --git a/html/js/edit_area/images/help.png b/html/js/edit_area/images/help.png
new file mode 100644
index 0000000..5c87017
Binary files /dev/null and b/html/js/edit_area/images/help.png differ
diff --git a/html/js/edit_area/images/highlight.gif b/html/js/edit_area/images/highlight.gif
new file mode 100644
index 0000000..16491f6
Binary files /dev/null and b/html/js/edit_area/images/highlight.gif differ
diff --git a/html/js/edit_area/images/load.gif b/html/js/edit_area/images/load.gif
new file mode 100644
index 0000000..461698f
Binary files /dev/null and b/html/js/edit_area/images/load.gif differ
diff --git a/html/js/edit_area/images/move.gif b/html/js/edit_area/images/move.gif
new file mode 100644
index 0000000..d15f9f5
Binary files /dev/null and b/html/js/edit_area/images/move.gif differ
diff --git a/html/js/edit_area/images/newdocument.gif b/html/js/edit_area/images/newdocument.gif
new file mode 100644
index 0000000..a9d2938
Binary files /dev/null and b/html/js/edit_area/images/newdocument.gif differ
diff --git a/html/js/edit_area/images/opacity.png b/html/js/edit_area/images/opacity.png
new file mode 100644
index 0000000..b4217cb
Binary files /dev/null and b/html/js/edit_area/images/opacity.png differ
diff --git a/html/js/edit_area/images/processing.gif b/html/js/edit_area/images/processing.gif
new file mode 100644
index 0000000..cce32f2
Binary files /dev/null and b/html/js/edit_area/images/processing.gif differ
diff --git a/html/js/edit_area/images/redo.gif b/html/js/edit_area/images/redo.gif
new file mode 100644
index 0000000..3af9069
Binary files /dev/null and b/html/js/edit_area/images/redo.gif differ
diff --git a/html/js/edit_area/images/redo.png b/html/js/edit_area/images/redo.png
new file mode 100644
index 0000000..fdc394c
Binary files /dev/null and b/html/js/edit_area/images/redo.png differ
diff --git a/html/js/edit_area/images/reset_highlight.gif b/html/js/edit_area/images/reset_highlight.gif
new file mode 100644
index 0000000..0fa3cb7
Binary files /dev/null and b/html/js/edit_area/images/reset_highlight.gif differ
diff --git a/html/js/edit_area/images/save.gif b/html/js/edit_area/images/save.gif
new file mode 100644
index 0000000..2777beb
Binary files /dev/null and b/html/js/edit_area/images/save.gif differ
diff --git a/html/js/edit_area/images/save.png b/html/js/edit_area/images/save.png
new file mode 100644
index 0000000..99d532e
Binary files /dev/null and b/html/js/edit_area/images/save.png differ
diff --git a/html/js/edit_area/images/search.gif b/html/js/edit_area/images/search.gif
new file mode 100644
index 0000000..cfe76b5
Binary files /dev/null and b/html/js/edit_area/images/search.gif differ
diff --git a/html/js/edit_area/images/search.png b/html/js/edit_area/images/search.png
new file mode 100644
index 0000000..908612e
Binary files /dev/null and b/html/js/edit_area/images/search.png differ
diff --git a/html/js/edit_area/images/smooth_selection.gif b/html/js/edit_area/images/smooth_selection.gif
new file mode 100644
index 0000000..8a532e5
Binary files /dev/null and b/html/js/edit_area/images/smooth_selection.gif differ
diff --git a/html/js/edit_area/images/spacer.gif b/html/js/edit_area/images/spacer.gif
new file mode 100644
index 0000000..3884865
Binary files /dev/null and b/html/js/edit_area/images/spacer.gif differ
diff --git a/html/js/edit_area/images/statusbar_resize.gif b/html/js/edit_area/images/statusbar_resize.gif
new file mode 100644
index 0000000..af89d80
Binary files /dev/null and b/html/js/edit_area/images/statusbar_resize.gif differ
diff --git a/html/js/edit_area/images/undo.gif b/html/js/edit_area/images/undo.gif
new file mode 100644
index 0000000..520796d
Binary files /dev/null and b/html/js/edit_area/images/undo.gif differ
diff --git a/html/js/edit_area/images/undo.png b/html/js/edit_area/images/undo.png
new file mode 100644
index 0000000..6972c5e
Binary files /dev/null and b/html/js/edit_area/images/undo.png differ
diff --git a/html/js/edit_area/images/word_wrap.gif b/html/js/edit_area/images/word_wrap.gif
new file mode 100644
index 0000000..8f256cc
Binary files /dev/null and b/html/js/edit_area/images/word_wrap.gif differ
diff --git a/html/js/edit_area/keyboard.js b/html/js/edit_area/keyboard.js
new file mode 100644
index 0000000..71b3a7c
--- /dev/null
+++ b/html/js/edit_area/keyboard.js
@@ -0,0 +1,145 @@
+var EA_keys = {8:"Retour arriere",9:"Tabulation",12:"Milieu (pave numerique)",13:"Entrer",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"Verr Maj",27:"Esc",32:"Space",33:"Page up",34:"Page down",35:"End",36:"Begin",37:"Left",38:"Up",39:"Right",40:"Down",44:"Impr ecran",45:"Inser",46:"Suppr",91:"Menu Demarrer Windows / touche pomme Mac",92:"Menu Demarrer Windows",93:"Menu contextuel Windows",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Verr Num",145:"Arret defil"};
+
+
+
+function keyDown(e){
+ if(!e){ // if IE
+ e=event;
+ }
+
+ // send the event to the plugins
+ for(var i in editArea.plugins){
+ if(typeof(editArea.plugins[i].onkeydown)=="function"){
+ if(editArea.plugins[i].onkeydown(e)===false){ // stop propaging
+ if(editArea.isIE)
+ e.keyCode=0;
+ return false;
+ }
+ }
+ }
+
+ var target_id=(e.target || e.srcElement).id;
+ var use=false;
+ if (EA_keys[e.keyCode])
+ letter=EA_keys[e.keyCode];
+ else
+ letter=String.fromCharCode(e.keyCode);
+
+ var low_letter= letter.toLowerCase();
+
+ if(letter=="Page up" && !editArea.isOpera){
+ editArea.execCommand("scroll_page", {"dir": "up", "shift": ShiftPressed(e)});
+ use=true;
+ }else if(letter=="Page down" && !editArea.isOpera){
+ editArea.execCommand("scroll_page", {"dir": "down", "shift": ShiftPressed(e)});
+ use=true;
+ }else if(editArea.is_editable==false){
+ // do nothing but also do nothing else (allow to navigate with page up and page down)
+ return true;
+ }else if(letter=="Tabulation" && target_id=="textarea" && !CtrlPressed(e) && !AltPressed(e)){
+ if(ShiftPressed(e))
+ editArea.execCommand("invert_tab_selection");
+ else
+ editArea.execCommand("tab_selection");
+
+ use=true;
+ if(editArea.isOpera || (editArea.isFirefox && editArea.isMac) ) // opera && firefox mac can't cancel tabulation events...
+ setTimeout("editArea.execCommand('focus');", 1);
+ }else if(letter=="Entrer" && target_id=="textarea"){
+ if(editArea.press_enter())
+ use=true;
+ }else if(letter=="Entrer" && target_id=="area_search"){
+ editArea.execCommand("area_search");
+ use=true;
+ }else if(letter=="Esc"){
+ editArea.execCommand("close_all_inline_popup", e);
+ use=true;
+ }else if(CtrlPressed(e) && !AltPressed(e) && !ShiftPressed(e)){
+ switch(low_letter){
+ case "f":
+ editArea.execCommand("area_search");
+ use=true;
+ break;
+ case "r":
+ editArea.execCommand("area_replace");
+ use=true;
+ break;
+ case "q":
+ editArea.execCommand("close_all_inline_popup", e);
+ use=true;
+ break;
+ case "h":
+ editArea.execCommand("change_highlight");
+ use=true;
+ break;
+ case "g":
+ setTimeout("editArea.execCommand('go_to_line');", 5); // the prompt stop the return false otherwise
+ use=true;
+ break;
+ case "e":
+ editArea.execCommand("show_help");
+ use=true;
+ break;
+ case "z":
+ use=true;
+ editArea.execCommand("undo");
+ break;
+ case "y":
+ use=true;
+ editArea.execCommand("redo");
+ break;
+ default:
+ break;
+ }
+ }
+
+ // check to disable the redo possibility if the textarea content change
+ if(editArea.next.length > 0){
+ setTimeout("editArea.check_redo();", 10);
+ }
+
+ setTimeout("editArea.check_file_changes();", 10);
+
+
+ if(use){
+ // in case of a control that sould'nt be used by IE but that is used => THROW a javascript error that will stop key action
+ if(editArea.isIE)
+ e.keyCode=0;
+ return false;
+ }
+ //alert("Test: "+ letter + " ("+e.keyCode+") ALT: "+ AltPressed(e) + " CTRL "+ CtrlPressed(e) + " SHIFT "+ ShiftPressed(e));
+
+ return true;
+
+};
+
+
+// return true if Alt key is pressed
+function AltPressed(e) {
+ if (window.event) {
+ return (window.event.altKey);
+ } else {
+ if(e.modifiers)
+ return (e.altKey || (e.modifiers % 2));
+ else
+ return e.altKey;
+ }
+};
+
+// return true if Ctrl key is pressed
+function CtrlPressed(e) {
+ if (window.event) {
+ return (window.event.ctrlKey);
+ } else {
+ return (e.ctrlKey || (e.modifiers==2) || (e.modifiers==3) || (e.modifiers>5));
+ }
+};
+
+// return true if Shift key is pressed
+function ShiftPressed(e) {
+ if (window.event) {
+ return (window.event.shiftKey);
+ } else {
+ return (e.shiftKey || (e.modifiers>3));
+ }
+};
diff --git a/html/js/edit_area/langs/bg.js b/html/js/edit_area/langs/bg.js
new file mode 100644
index 0000000..d4cd77f
--- /dev/null
+++ b/html/js/edit_area/langs/bg.js
@@ -0,0 +1,73 @@
+/*
+ * Bulgarian translation
+ * Author: Valentin Hristov
+ * Company: SOFTKIT Bulgarian
+ * Site: http://www.softkit-bg.com
+ */
+editAreaLoader.lang["bg"]={
+new_document: "нов документ",
+search_button: "търсене и замяна",
+search_command: "търси следващия / отвори прозорец с търсачка",
+search: "търсене",
+replace: "замяна",
+replace_command: "замяна / отвори прозорец с търсачка",
+find_next: "намери следващия",
+replace_all: "замени всички",
+reg_exp: "реголярни изрази",
+match_case: "чуствителен към регистъра",
+not_found: "няма резултат.",
+occurrence_replaced: "замяната е осъществена.",
+search_field_empty: "Полето за търсене е празно",
+restart_search_at_begin: "До края на документа. Почни с началото.",
+move_popup: "премести прозореца с търсачката",
+font_size: "--Размер на шрифта--",
+go_to_line: "премени към реда",
+go_to_line_prompt: "премени към номера на реда:",
+undo: "отмени",
+redo: "върни",
+change_smooth_selection: "включи/изключи някой от функциите за преглед (по красиво, но повече натоварва)",
+highlight: "превключване на оцветяване на синтаксиса включена/изключена",
+reset_highlight: "въстанови оцветяване на синтаксиса (ако не е синхронизиран с текста)",
+word_wrap: "режим на пренасяне на дълги редове",
+help: "за програмата",
+save: "съхрани",
+load: "зареди",
+line_abbr: "Стр",
+char_abbr: "Стлб",
+position: "Позиция",
+total: "Всичко",
+close_popup: "затвори прозореца",
+shortcuts: "Бързи клавиши",
+add_tab: "добави табулация в текста",
+remove_tab: "премахни табулацията в текста",
+about_notice: "Внимание: използвайте функцията оцветяване на синтаксиса само за малки текстове",
+toggle: "Превключи редактор",
+accesskey: "Бърз клавиш",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Зареждане...",
+fullscreen: "на цял екран",
+syntax_selection: "--Синтаксис--",
+syntax_css: "CSS",
+syntax_html: "HTML",
+syntax_js: "Javascript",
+syntax_php: "PHP",
+syntax_python: "Python",
+syntax_vb: "Visual Basic",
+syntax_xml: "XML",
+syntax_c: "C",
+syntax_cpp: "C++",
+syntax_basic: "Basic",
+syntax_pas: "Pascal",
+syntax_brainfuck: "Brainfuck",
+syntax_sql: "SQL",
+syntax_ruby: "Ruby",
+syntax_robotstxt: "Robots txt",
+syntax_tsql: "T-SQL",
+syntax_perl: "Perl",
+syntax_coldfusion: "Coldfusion",
+syntax_java: "Java",
+close_tab: "Затвори файла"
+};
diff --git a/html/js/edit_area/langs/cs.js b/html/js/edit_area/langs/cs.js
new file mode 100644
index 0000000..d0dd55c
--- /dev/null
+++ b/html/js/edit_area/langs/cs.js
@@ -0,0 +1,67 @@
+editAreaLoader.lang["cs"]={
+new_document: "Nový dokument",
+search_button: "Najdi a nahraď",
+search_command: "Hledej další / otevři vyhledávací pole",
+search: "Hledej",
+replace: "Nahraď",
+replace_command: "Nahraď / otevři vyhledávací pole",
+find_next: "Najdi další",
+replace_all: "Nahraď vše",
+reg_exp: "platné výrazy",
+match_case: "vyhodnocené výrazy",
+not_found: "nenalezené.",
+occurrence_replaced: "výskyty nahrazené.",
+search_field_empty: "Pole vyhledávání je prázdné",
+restart_search_at_begin: "Dosažen konec souboru, začínám od začátku.",
+move_popup: "Přesuň vyhledávací okno",
+font_size: "--Velikost textu--",
+go_to_line: "Přejdi na řádek",
+go_to_line_prompt: "Přejdi na řádek:",
+undo: "krok zpět",
+redo: "znovu",
+change_smooth_selection: "Povolit nebo zakázat některé ze zobrazených funkcí (účelnější zobrazení požaduje větší zatížení procesoru)",
+highlight: "Zvýrazňování syntaxe zap./vyp.",
+reset_highlight: "Obnovit zvýraznění (v případě nesrovnalostí)",
+word_wrap: "toggle word wrapping mode",
+help: "O programu",
+save: "Uložit",
+load: "Otevřít",
+line_abbr: "Ř.",
+char_abbr: "S.",
+position: "Pozice",
+total: "Celkem",
+close_popup: "Zavřít okno",
+shortcuts: "Zkratky",
+add_tab: "Přidat tabulování textu",
+remove_tab: "Odtsranit tabulování textu",
+about_notice: "Upozornění! Funkce zvýrazňování textu je k dispozici pouze pro malý text",
+toggle: "Přepnout editor",
+accesskey: "Přístupová klávesa",
+tab: "Záložka",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Zpracovávám ...",
+fullscreen: "Celá obrazovka",
+syntax_selection: "--vyber zvýrazňovač--",
+syntax_css: "CSS",
+syntax_html: "HTML",
+syntax_js: "Javascript",
+syntax_php: "Php",
+syntax_python: "Python",
+syntax_vb: "Visual Basic",
+syntax_xml: "Xml",
+syntax_c: "C",
+syntax_cpp: "CPP",
+syntax_basic: "Basic",
+syntax_pas: "Pascal",
+syntax_brainfuck: "Brainfuck",
+syntax_sql: "SQL",
+syntax_ruby: "Ruby",
+syntax_robotstxt: "Robots txt",
+syntax_tsql: "T-SQL",
+syntax_perl: "Perl",
+syntax_coldfusion: "Coldfusion",
+syntax_java: "Java",
+close_tab: "Close file"
+};
diff --git a/html/js/edit_area/langs/de.js b/html/js/edit_area/langs/de.js
new file mode 100644
index 0000000..251ac50
--- /dev/null
+++ b/html/js/edit_area/langs/de.js
@@ -0,0 +1,67 @@
+editAreaLoader.lang["de"]={
+new_document: "Neues Dokument",
+search_button: "Suchen und Ersetzen",
+search_command: "Weitersuchen / öffne Suchfeld",
+search: "Suchen",
+replace: "Ersetzen",
+replace_command: "Ersetzen / öffne Suchfeld",
+find_next: "Weitersuchen",
+replace_all: "Ersetze alle Treffer",
+reg_exp: "reguläre Ausdrücke",
+match_case: "passt auf den Begriff" + content.replace(/^\r?\n/, ""; + } else { + this.selection_field.innerHTML= content; + } + this.selection_field_text.innerHTML = this.selection_field.innerHTML; + t2_1 = new Date().getTime(); + // check if we need to update the highlighted background + if(this.reload_highlight || (infos["full_text"] != this.last_text_to_highlight && (this.last_selection["line_start"]!=infos["line_start"] || this.show_line_colors || this.settings['word_wrap'] || this.last_selection["line_nb"]!=infos["line_nb"] || this.last_selection["nb_line"]!=infos["nb_line"]) ) ) + { + this.maj_highlight(infos); + } + } + } + t3= new Date().getTime(); + + // manage line heights + if( this.settings['word_wrap'] && infos["full_text"] != this.last_selection["full_text"]) + { + // refresh only 1 line if text change concern only one line and that the total line number has not changed + if( changes.newText.split("\n").length == 1 && this.last_selection['nb_line'] && infos['nb_line'] == this.last_selection['nb_line'] ) + { + this.fixLinesHeight( infos['full_text'], changes.lineStart, changes.lineStart ); + } + else + { + this.fixLinesHeight( infos['full_text'], changes.lineStart, -1 ); + } + } + + tLines= new Date().getTime(); + // manage bracket finding + if( infos["line_start"] != this.last_selection["line_start"] || infos["curr_pos"] != this.last_selection["curr_pos"] || infos["full_text"].length!=this.last_selection["full_text"].length || this.reload_highlight || !timer_checkup ) + { + // move _cursor_pos + var selec_char= infos["curr_line"].charAt(infos["curr_pos"]-1); + var no_real_move=true; + if(infos["line_nb"]==1 && (this.assocBracket[selec_char] || this.revertAssocBracket[selec_char]) ){ + + no_real_move=false; + //findEndBracket(infos["line_start"], infos["curr_pos"], selec_char); + if(this.findEndBracket(infos, selec_char) === true){ + _$("end_bracket").style.visibility ="visible"; + _$("cursor_pos").style.visibility ="visible"; + _$("cursor_pos").innerHTML = selec_char; + _$("end_bracket").innerHTML = (this.assocBracket[selec_char] || this.revertAssocBracket[selec_char]); + }else{ + _$("end_bracket").style.visibility ="hidden"; + _$("cursor_pos").style.visibility ="hidden"; + } + }else{ + _$("cursor_pos").style.visibility ="hidden"; + _$("end_bracket").style.visibility ="hidden"; + } + //alert("move cursor"); + this.displayToCursorPosition("cursor_pos", infos["line_start"], infos["curr_pos"]-1, infos["curr_line"], no_real_move); + if(infos["line_nb"]==1 && infos["line_start"]!=this.last_selection["line_start"]) + this.scroll_to_view(); + } + this.last_selection=infos; + } + + tend= new Date().getTime(); + //if( (tend-t1) > 7 ) + // console.log( "tps total: "+ (tend-t1) + " tps get_infos: "+ (t2-t1)+ " tps selec: "+ (t2_1-t2)+ " tps highlight: "+ (t3-t2_1) +" tps lines: "+ (tLines-t3) +" tps cursor+lines: "+ (tend-tLines)+" \n" ); + + + if(timer_checkup){ + setTimeout("editArea.check_line_selection(true)", this.check_line_selection_timer); + } + }; + + + EditArea.prototype.get_selection_infos= function(){ + var sel={}, start, end, len, str; + + this.getIESelection(); + start = this.textarea.selectionStart; + end = this.textarea.selectionEnd; + + if( this.last_selection["selectionStart"] == start && this.last_selection["selectionEnd"] == end && this.last_selection["full_text"] == this.textarea.value ) + { + return this.last_selection; + } + + if(this.tabulation!="\t" && this.textarea.value.indexOf("\t")!=-1) + { // can append only after copy/paste + len = this.textarea.value.length; + this.textarea.value = this.replace_tab(this.textarea.value); + start = end = start+(this.textarea.value.length-len); + this.area_select( start, 0 ); + } + + sel["selectionStart"] = start; + sel["selectionEnd"] = end; + sel["full_text"] = this.textarea.value; + sel["line_start"] = 1; + sel["line_nb"] = 1; + sel["curr_pos"] = 0; + sel["curr_line"] = ""; + sel["indexOfCursor"] = 0; + sel["selec_direction"] = this.last_selection["selec_direction"]; + + //return sel; + var splitTab= sel["full_text"].split("\n"); + var nbLine = Math.max(0, splitTab.length); + var nbChar = Math.max(0, sel["full_text"].length - (nbLine - 1)); // (remove \n caracters from the count) + if( sel["full_text"].indexOf("\r") != -1 ) + nbChar = nbChar - ( nbLine - 1 ); // (remove \r caracters from the count) + sel["nb_line"] = nbLine; + sel["nb_char"] = nbChar; + + if(start>0){ + str = sel["full_text"].substr(0,start); + sel["curr_pos"] = start - str.lastIndexOf("\n"); + sel["line_start"] = Math.max(1, str.split("\n").length); + }else{ + sel["curr_pos"]=1; + } + if(end>start){ + sel["line_nb"]=sel["full_text"].substring(start,end).split("\n").length; + } + sel["indexOfCursor"]=start; + sel["curr_line"]=splitTab[Math.max(0,sel["line_start"]-1)]; + + // determine in which direction the selection grow + if(sel["selectionStart"] == this.last_selection["selectionStart"]){ + if(sel["selectionEnd"]>this.last_selection["selectionEnd"]) + sel["selec_direction"]= "down"; + else if(sel["selectionEnd"] == this.last_selection["selectionStart"]) + sel["selec_direction"]= this.last_selection["selec_direction"]; + }else if(sel["selectionStart"] == this.last_selection["selectionEnd"] && sel["selectionEnd"]>this.last_selection["selectionEnd"]){ + sel["selec_direction"]= "down"; + }else{ + sel["selec_direction"]= "up"; + } + + _$("nbLine").innerHTML = nbLine; + _$("nbChar").innerHTML = nbChar; + _$("linePos").innerHTML = sel["line_start"]; + _$("currPos").innerHTML = sel["curr_pos"]; + + return sel; + }; + + // set IE position in Firefox mode (textarea.selectionStart and textarea.selectionEnd) + EditArea.prototype.getIESelection= function(){ + var selectionStart, selectionEnd, range, stored_range; + + if( !this.isIE ) + return false; + + // make it work as nowrap mode (easier for range manipulation with lineHeight) + if( this.settings['word_wrap'] ) + this.textarea.wrap='off'; + + try{ + range = document.selection.createRange(); + stored_range = range.duplicate(); + stored_range.moveToElementText( this.textarea ); + stored_range.setEndPoint( 'EndToEnd', range ); + if( stored_range.parentElement() != this.textarea ) + throw "invalid focus"; + + // the range don't take care of empty lines in the end of the selection + var scrollTop = this.result.scrollTop + document.body.scrollTop; + var relative_top= range.offsetTop - parent.calculeOffsetTop(this.textarea) + scrollTop; + var line_start = Math.round((relative_top / this.lineHeight) +1); + var line_nb = Math.round( range.boundingHeight / this.lineHeight ); + + selectionStart = stored_range.text.length - range.text.length; + selectionStart += ( line_start - this.textarea.value.substr(0, selectionStart).split("\n").length)*2; // count missing empty \r to the selection + selectionStart -= ( line_start - this.textarea.value.substr(0, selectionStart).split("\n").length ) * 2; + + selectionEnd = selectionStart + range.text.length; + selectionEnd += (line_start + line_nb - 1 - this.textarea.value.substr(0, selectionEnd ).split("\n").length)*2; + + this.textarea.selectionStart = selectionStart; + this.textarea.selectionEnd = selectionEnd; + } + catch(e){} + + // restore wrap mode + if( this.settings['word_wrap'] ) + this.textarea.wrap='soft'; + }; + + // select the text for IE (and take care of \r caracters) + EditArea.prototype.setIESelection= function(){ + var a = this.textarea, nbLineStart, nbLineEnd, range; + + if( !this.isIE ) + return false; + + nbLineStart = a.value.substr(0, a.selectionStart).split("\n").length - 1; + nbLineEnd = a.value.substr(0, a.selectionEnd).split("\n").length - 1; + range = document.selection.createRange(); + range.moveToElementText( a ); + range.setEndPoint( 'EndToStart', range ); + + range.moveStart('character', a.selectionStart - nbLineStart); + range.moveEnd('character', a.selectionEnd - nbLineEnd - (a.selectionStart - nbLineStart) ); + range.select(); + }; + + + + EditArea.prototype.checkTextEvolution=function(lastText,newText){ + // ch will contain changes datas + var ch={},baseStep=200, cpt=0, end, step,tStart=new Date().getTime(); + + end = Math.min(newText.length, lastText.length); + step = baseStep; + // find how many chars are similar at the begin of the text + while( cpt
") + "
" + content.replace(/^\r?\n/, ""; + } else { + elem.innerHTML= content; + } + + + endElem = _$('endTestFont'); + topOffset = endElem.offsetTop; + fixPadding = parseInt( this.content_highlight.style.paddingLeft.replace("px", "") ); + posLeft = 45 + endElem.offsetLeft + ( !isNaN( fixPadding ) && topOffset > 0 ? fixPadding : 0 ); + posTop = this.getLinePosTop( start_line ) + topOffset;// + Math.floor( ( endElem.offsetHeight - 1 ) / this.lineHeight ) * this.lineHeight; + + // detect the case where the span start on a line but has no display on it + if( this.isIE && cur_pos > 0 && endElem.offsetLeft == 0 ) + { + posTop += this.lineHeight; + } + if(no_real_move!=true){ // when the cursor is hidden no need to move him + dest.style.top=posTop+"px"; + dest.style.left=posLeft+"px"; + } + // usefull for smarter scroll + dest.cursor_top=posTop; + dest.cursor_left=posLeft; + // _$(id).style.marginLeft=posLeft+"px"; + }; + + EditArea.prototype.getLinePosTop= function(start_line){ + var elem= _$('line_'+ start_line), posTop=0; + if( elem ) + posTop = elem.offsetTop; + else + posTop = this.lineHeight * (start_line-1); + return posTop; + }; + + + // return the dislpayed height of a text (take word-wrap into account) + EditArea.prototype.getTextHeight= function(text){ + var t=this,elem,height; + elem = t.test_font_size; + content = text.replace(/&/g,"&").replace(/" + content.replace(/^\r?\n/, "
") + "